C# Strikes a Chord
Blending New and Old Ideas
So what is C#'s genealogy ? Obviously like Java before it, C# borrows key concepts
from C++ like inheritance, interfaces, constructors, method signatures and overrides,
plus strong declarative typing and public/private/protected modes of data hiding.
It also borrows a substantial part of its operator and statement syntax directly
from C++. At the same time C# restores and adapts some C++ syntax that Java
took away, such as goto, foreach, namespaces, enum, and
especially struct with its clever "by-value" innovation. It appears with
unsafe and fixed, C# has made pointer arithmetic sufficiently
obnoxious that only diehard coders will use it - primarily for performance or
interfacing to existing COM and Win32 APIs. C# also restores operator overloading
and preprocessor statements while extending this latter concept to in-processing
attributes. This means that user defined attribute settings can be passed on
to the debugging, profiling, and executable environments.
But C# also borrows much from Java. It has a simple syntax with strong runtime type checking. Single inheritance derived from a master Object is carried to its logical conclusion with primitive types cleverly unified into the object model. C# goes with Java in adopting Unicode and standard bitsizes for primitive type in various hardware implementations. Like Java, C# passes on C++'s template, friend and union syntax and directions. Most important, C# capitalizes on the JVM idea production of intermediate code that is then compiled and executed in a managed environment that includes memory management, garbage collection, type-safe validations and other user-controlled exception checking. C#, in a key innovation over Java, extends the managed code environment to be parameter-passing rich and primitive-type unified so it can be programming/scripting language neutral (and, if Microsoft so chooses, also platform neutral as well).
|What do you think about C#?|
|Share your views in our forum.|
However, Java has a much more comprehensive, open source API base and some
clever deployment options for applets, servlets, beans and Enterprise JavaBeans.
It also has a commanding head start having become the programming language
of the Internet on the server side. With wide bandwidth coming available with
DSL and cable modems, Java is sure to see a renaissance on the client side with
more applets taking advantage of ten times greater download capacity and new
Java-robust browsers from Netscape and Opera. Already much project management,
OLAP and online learning software use sophisticated Java applets over the yawning
security, programming, cross platform compatibility and runtime performance
So will C# be just in time to ward off the Java wave? IDC, unlike Microsoft, which severely downplays Java usage, sees the number of Java developers growing at 30 percent per year starting from a 900,000 user base. Sun reports over 2.5 million downloads of the JDK from its site. Regardless of the numbers, C# will be, from a technical viewpoint, a very worthy competitor to Java. Perhaps Javasoft will see fit to steal back some of C#'s innovations, while Microsoft may want to be more open and cross platform with C#. Also Microsoft needs to reduce the six-to-nine months before release of Visual Studio.NET with full IDE development support for C#.
Whither VC++? It is obvious that C# is the driver in the new .NET Framework and executable environment. However, remember what C# and the .Net framework are designed to do promote interoperability and component reuse. The demos of Cobol, Eiffel, and the host of other "academic" programming languages at C# PDC debut showed just how effective C#, CLR, and .Net Framework can be at making any programming language a first-class player in the .NET Framework. So a lot of languages, including VC++, are going to get a positive shot in the arm from the C# enabled .Net Framework. These languages can now more readily interoperate while providing their own competitive advantage in specific developmental and/or runtime features. In sum, C# derives greatly from both C++ and Java, while adding its own distinctive language innovations. With its any-language interoperability and cross platform potential, C# has the capability to strike a very positive chord in the programming community.