Language Roots

Where does C# get its roots?

Most C# developers would say it’s a descendant of C++, but is that the case?  Did we really get our heritage from C and C++?

Here’s a comparison for you:

  C++ C# Modula-3
Single Inheritance   X X
Multiple Inheritance X    
Interfaces   X X
Safe/Unsafe Code   X X
Generics   X X
Templates X    
Garbage Collection   X X
Exceptions   X X

While some of the features above are more runtime features than language features (say, garbage collection), I think they are valid for the comparison.  The choice to exclude memory management features from the language dictates (to an extent) the runtime environment.  I’ll save that for another post sometime I suppose.

Oh, and Modula-3 also shipped with an AST (Abstract Syntax Tree) implementation.  CodeDOM anyone?

For the interested, you can take a quick glance at the following language families:

  • BCPL (Basic Combined Programming Language)- The family to which C and C++ belong
    • ALGOL – The family to which Modula-3 and C# belong (along with its .NET siblings)
      • The mathematics based languages, such as Lisp</ul> It seems that a large portion of what we think of as Microsoft’s .NET was really designed by Digital (later to become Compaq, later to become HP).

      An interesting side note of Modula-3 is that simplicity was a major goal of the language.  The designers gave themselves a mandate to produce a language which could adequately be described in 50 pages or less.

Running Microsoft Excel on a Scalable Computing Grid