1.3 .NET Programming Languages
.NET has been designed to support
multiple languages. Microsoft anticipates that most Visual Basic
developers will want to carry on using the syntax they are familiar
with, and will therefore stick with Visual Basic .NET. But developers with
a C++ background are encouraged to change to
a new language called C#. The problem with C++ is it is
designed to support a very low-level style of programming—it
fully supports all the classic C idioms, and C has often been
described as a machine-independent assembly language. The low-level
nature of C++ does not sit well with the new high-level nature of the
CLR and the class libraries. (Visual Basic does not have this problem
because it has always been a relatively high-level language.)
Although C++ is supported in .NET, it is not being pushed as the
language of choice for erstwhile C++ developers. Instead, Microsoft
has created a new language called C#. Designed by Anders Hejlsberg
(creator of Delphi), C# is a language with syntax based on C++, but
that works natively with exactly the same set of abstractions as the
CLR provides. Just as C++ was the natural choice for developers who
wanted to write code that was at home in the Win32 world, C# is a
great choice for .NET programming, because it was designed to be a
perfect match for the CLR. Its syntactic origins mean that anyone
familiar with C or C++ (or Java) can learn C# very quickly.
For the most part, C# is like C++ without the low-level grunge. In
fact, it is possible to use C-style features like pointers even in
C#, although you need to turn off the relevant safety catches on the
compiler before it will let you do this. However, this is mostly to
make sure that C++ developers don't feel emasculated
by moving to C#. While it is comforting for C++ veterans to know that
pointers are still there if required, in practice, it is extremely
rare to need to use these features in C#.
All example code in this book is presented in both C# and Visual
Basic .NET, because the majority of Windows applications will be
written in one or the other of these languages in the future.
|