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
gaps presented by JavaScript and VBScript.
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.