C# is a new programming language from Microsoft designed specifically to
target the .NET Framework. Microsoft's .NET Framework is a runtime environment
and class library that dramatically simplifies the development and deployment of modern, component-based applications.
C# is a new programming language from Microsoft designed specifically to
target the .NET Framework. Microsoft's .NET Framework is a runtime environment
and class library that dramatically simplifies the development and deployment of
modern, component-based applications.
When the .NET Framework and C# language compiler were shipped in final form
in January 2002, both platform and programming language had already garnered
much industry attention and widespread use among Microsoft-centric early
adopters. Why this level of success? Certainly, the C# language and the .NET
Framework address many of the technical challenges facing modern developers as
they strive to develop increasingly complex distributed systems with
ever-shrinking schedules and team sizes.
However, in addiction to its technical merits, one of the main reasons for
the success that the language and platform has enjoyed thus far is the
unprecedented degree of openness that Microsoft has shown. From July 2000 to
January 2002, the .NET Framework underwent an extensive public beta that allowed
tens of thousands of developers to "kick the tires" of the programming
environment. This allowed Microsoft to both solicit and react to developer
community feedback before finalizing the new platform.
Additionally, the key specifications for both the language and the platform
have been published, reviewed, and ratified by an international standards
organization called the European Computer Manufacturers Association (ECMA).
These standardization efforts have led to multiple third-party initiatives that
bring the C# language and the .NET platform to non-Microsoft environments. They
have also prompted renewed interest among academics in the use of Microsoft
technologies as teaching and research vehicles.
Lastly, although the language and platform are shiny and new, the foundations
for the C# language and the .NET Framework have been years in the making,
reaching back more than half a decade. Understanding where the language and
platform have come from gives us a better understanding of where they are
headed.
The C# Language
Reports of a new language from Microsoft first started surfacing in 1998. At
that time the language was called COOL, and was said to be very similar to Java.
Although Microsoft consistently denied the reports of the new language, rumors
persisted.
In June 2000, Microsoft ended the speculation by releasing the specifications
for a new language called C# (pronounced "see-sharp"). This was rapidly followed
by the release of a preview version of the .NET Framework SDK (which included a
C# compiler) at the July 2000 Professional Developer's Conference (PDC) in
Orlando, Florida.
The new language was designed by Anders Hejlsberg (creator of Turbo Pascal
and architect of Delphi), Scott Wiltamuth, and Peter Golde. Described in the C#
Language Specification as a "...simple, modern, object-oriented, and type-safe
programming language derived from C and C++," C# bears many syntactic
similarities to C++ and Java.
However, focusing on the syntactic similarities between C# and Java does the
C# language a disservice. Semantically, C# pushes the language-design envelope
substantially beyond where the Java language was circa 2001, and could
rightfully be viewed as the next step in the evolution of component-oriented
programming languages. While it is outside the scope of this book to perform a
detailed comparison between C# and Java, we urge interested readers to read the
widely cited article "A Comparative Overview of C# and Java," by co-author Ben
Albahari, available at http://genamics.com/developer/csharp_comparative.htm.
The .NET Framework
The Microsoft .NET Framework consists of two elements: a runtime environment
called the Common Language Runtime (CLR), and a class library called the
Framework Class Library (FCL). The FCL is built on top of the CLR and provides
services needed by modern applications.
While applications targeting the .NET Framework interact directly with the
FCL, the CLR serves as the underlying engine. In order to understand the .NET
Framework, one first must understand the role of the CLR.