Channels ▼

C# Strikes a Chord

C# Strikes a Chord

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.

1 | 2 | 3 | 4 | 5 | 6

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.