Microsoft Corp.’s July 11th unveiling of a new object-oriented programming language is allied to the company’s Dot-Net platform, but C# remains a bit of a mystery. The Full Monty on the language’s details are still missing in action.

There have been rumours that the impending C# (pronounced “C-sharp”) release is more about Microsoft’s desire to rid itself of Sun Microsystems and Java rather than an answer to criticisms of its tools strategy.

“C# shares the same C++ core as Java does, and Microsoft is positioning against Java as a competitor,” said Rob Enderle, an analyst with the Giga Information Group in Santa Clara, Calif. “It could compete with Java although it is a Microsoft-centric implementation. I think Microsoft is trying to distance itself from Sun and C# is its possible way out.”

There is evidence to support Enderle’s view. After all, up until Java burst onto the programming scene in 1995, Microsoft’s Visual Basic programming language boasted the highest rate of adoption. Coupled with the fact Sun and Microsoft appear to get along about as well as the Hatfields and McCoys of late, it’s not unreasonable to accept Enderle’s position.

According to Microsoft, C# adds value to C and Visual Basic programmers working with Microsoft’s application programming interfaces, as it is modelled after C++. For developers who don’t program in Java, this may be a welcome reprieve. The empire that Bill Gates built stated C# will enable millions of C and C++ developers to leverage existing skills to rapidly build XML-based Dot-Net applications. Moreover, Microsoft stated C# is designed to bring rapid development to the C++ programmer without sacrificing the power and control that has been a hallmark of C and C++. The language will also be included in the forthcoming release of Visual Studio 7.0 in late 2000.

C# is designed to work harmoniously with Simple Object Access Protocol (SOAP) for linking code across Web sites, in addition to allowing businesses – not just e-commerce-enhanced sites – to develop and deploy applications on the ‘net.

Michael Flynn, Microsoft Canada’s developer tools marketing manager in Mississauga, Ont., said C# goes beyond mirroring Java.

“C# is an extension of C++ in that it inherits the best of all languages,” he said. “It allows you to write code once without making mistakes…there are some (similar) architectural components of Java in C#, but whereas you import a package in Java, we import functionality modules.”

Insiders whisper the days are numbered for Visual J++ – Microsoft’s attempt to serve the Java community – as version 7.0 of Visual Studio is devoid of the language.

“[C#] bears the hallmarks of Java if that’s the goal,” said analyst Kevin Restivo of IDC Canada in Toronto. “It’s designed to be extensible, you write it once, anywhere, it’s convenient…integration is a key Microsoft feature with any application, so I don’t think it’s a replacement (for Visual J++). It remains to be seen if it’s an enhancement.”

Microsoft’s C# has been submitted to the ECMA – an international standards body for scripting languages – to adopt a standard for the new dialect. Standardizing C# will continue to drive broad industry support for it, Microsoft said. C# will also include support for XML, which is emerging as a core technology of the Microsoft Dot-Net initiative.

“C# is easy to use to write applications,” Flynn continued. “We’ve made the language simpler for developers to use. It’s an Internet-enabled program that allows anyone to leverage the ‘net, not just e-commerce sites. Every company can take advantage of this.”

Flynn was unclear as to whether or not C# was geared to go head-to-head with Java.

For his part, Restivo said C# shouldn’t be construed as a warning shot fired in Sun’s direction.

“I don’t think this is a shot across the bow so much as an answer to being able to write (code) once and run it anywhere at the users’ convenience,” he opined. “I don’t see C# as a direct competitor of Java’s; it seems to be more about programmers using the Dot-Net platform.”


C#, according to Microsoft, can:

Embrace emerging Web programming standards.

Leverage an extensive framework for building apps on the Microsoft Dot-Net platform; includes support for turning any component into a Web service that can be invoked over the ‘net from any application running on any platform.

Eliminate costly programming errors.

Eliminate the most common C++ programming errors by offering garbage collection to relieve the burden of manual memory management; variables in C# are auto initialized by the environment; variables are type safe.

Offer extensive interoperability.

Includes native support for the Component Object Model and Windows-based APIs; allows restricted use of native pointers.

Provides better mapping between processes.

Allows for typed, extensible metadata that can be applied to any object. A project architect can define domain-specific attributes and apply them to any language element classes and interfaces; tight coupling between the custom metadata and the program code strengthens the connection between the intended program behaviour and the actual implementation.