Reputation: 253
In the article (http://www.artima.com/intv/nonvirtualP.html) Anders Hejlsberg mentioned that versioning is one of the pillars of C# language design. Does anybody know what are other pillars?
Upvotes: 4
Views: 654
Reputation: 659994
I refer you to page one of the C# specification, which describes the important factors that went into the design of the language. A few quotes that indicate what some of the important factors were, and continue to be:
modern, object-oriented, and type-safe
--
immediately familiar to C, C++, and Java programmers.
--
Contemporary software design increasingly relies on software components in the form of self-contained and self-describing packages of functionality. Key to such components is that they present a programming model with properties, methods, and events; they have attributes that provide declarative information about the component; and they incorporate their own documentation. C# provides language constructs to directly support these concepts, making C# a very natural language in which to create and use software components.
--
Several C# features aid in the construction of robust and durable applications: Garbage collection [...] exception handling [...] type-safe design
--
C# has a unified type system. [...] values of any type can be stored, transported, and operated upon in a consistent manner
--
To ensure that C# programs and libraries can evolve over time in a compatible manner, much emphasis has been placed on versioning in C#’s design. Many programming languages pay little attention to this issue, and, as a result, programs written in those languages break more often than necessary when newer versions of dependent libraries are introduced. Aspects of C#’s design that were directly influenced by versioning considerations include the separate virtual and override modifiers, the rules for method overload resolution, and support for explicit interface member declarations.
Upvotes: 7