Overview
Like I mentioned on my main page, I've become a sort of unexpected
evangelist for .NET around Media Lab Europe.
I've worked with C# since late
2001, and used the .NET framework to develop
Symphony. I'd worked with Java
extensively
for the two
previous years, and have lots of C++
experience.
I haven't had the time to
flesh this page out, but just quickly, here are some of the things that
have most impressed me about working with .NET and developing in C#. C# is not only an
unusually intuitive language for
beginners, but as one continues to work with it, C# progressively reveals the
efficacy of its more advanced features.
Beginner reasons:
Rapid application development
Garbage collection - no memory
leak hassles, and a comparatively excellent collection algorithm.
Intuitive language features
like Properties
Linguistic familiarity for
Java and C++ programmers
Performance specs comparable
(usually superior) to similar languages
The C# language itself, with its mantra to "make
the intent explicit in situations which can easily lead to subtle bugs."
The quality of the .NET
framework, with its design that "make it hard for the developer to make
mistakes"
Common (possibly familiar)
development environment that handholds a new C# programmer through the learning phase
Intermediate reasons:
Easy interoperability with
native code to preserve or port existing systems
Language features like boxing and the common
type system that make developing code easier
Language features like
versioning (virtual, override) that make maintaining code easier
Ease of deployment - an .exe
and some .dll libraries
Powerful libraries being built
with the .NET technologies, e.g. Managed DirectX
Advanced reasons:
Event model makes certain
design patterns more intuitive (and in some cases simply makes them
feasable)
Metadata rules. It just
does.
Intro to C# Talk Slides
I gave a talk a
while back introducing C# to the lab. Here are
the Powerpoint slides.
Back then, I was really only into the "intermediate" phase :)