C#: A language alternative or just J--?, Part 1
What the new language for .Net and post-Java Microsoft means to you
By Mark Johnson, JavaWorld.com, 11/22/00
- Digg
- Reddit
- SlashDot
- Stumble
- del.icio.us
- Technorati
- dzone
Page 2 of 6
It's easy to be skeptical of C#, given its almost surreal similarity to Java in syntax, design, and even runtime behavior.
It looks almost as if, having failed to corrupt the Java marketplace with proprietary extensions and strategic omissions,
Microsoft has simply created a copy of Java, with a new name and a familiar market approach. This is at least not entirely
the case: in the context of COM and .Net, C# may well have a place in the world of Windows development.
Motivation for creating a new language
A new computer language could be created as part of a research project, to explore new system architectures or new ideas in
programming semantics, or to pull together advances from several other language projects to produce a more powerful language.
Innovations in computer technology often change basic assumptions about programming and system development, and new languages
arise to take advantage of new ideas. Special applications sometimes require new languages, which are tied intimately to the
domain in which they operate. General-purpose languages, however, are usually created either to address existing languages'
inadequacies, to fill some business need, or both.
For example, C++ was created as an extension of the C programming language, and was originally called "C with classes." Though
innovative and extremely powerful, C suffered from problems with scalability, code fragility, and memory management complexity,
among others. C++ was created as an object-oriented approach to solving those problems.
C++ has been widely accepted as a system development language, but its "improvements" came at the cost of increased complexity.
C, and to a lesser extent C++, are widely considered to be highly portable, exemplified by the portability of the Unix operating
system.
Portability between processors is different from portability between underlying operating system APIs. Different operating
systems factor access differently to similar system services. The resulting "impedance mismatch" (to appropriate a lousy metaphor)
creates a layer of complexity and potential software flaws in the software layer where the application accesses system services.
Anyone who has tried to create, for example, a GUI framework portable across platforms, understands this problem.
Java was created, in part, to address the issues of language complexity, memory management, and cross-platform portability.
Java also addresses the business needs of consumers and companies who want to leverage their existing hardware assets, instead
of being locked into a particular platform by an operating system vendor. Finally, the rise of the Internet and the ubiquity
of network computing make cross-platform portability and airtight security even more important.
C#, announced by Microsoft but not yet released, addresses technical and business problems that Microsoft has recently encountered.
Despite several attempts at simplification, the COM object programming framework has never been easy to use, and DCOM (Distributed
Component Object Model) adds yet another layer of difficulty. Thus, COM development has been mostly limited to highly trained
(and expensive) Windows C/C++ programmers, and Visual Basic users who have taken the time to learn to use a stripped-down
interface to COM. The C and C++ languages alone require a great deal of skill to be used effectively and safely; Visual Basic
has some object-oriented-like features, but is not a true object-oriented language.
- Digg
- Reddit
- SlashDot
- Stumble
- del.icio.us
- Technorati
- dzone
Resources
- Read Part 2 of "C#A Language Alternative or Just J--?," Mark Johnson (December, 2000) for an in-depth look into the semantic
differences and design choices between C# and Java
http://www.javaworld.com/javaworld/jw-12-2000/jw-1221-csharp2.html
- "Bits, Flames, and Links," Bobby Schmidt (MSDN Online, Sept. 29, 2000) -- gets you started experimenting with C#, and includes a generous resource list
http://msdn.microsoft.com/library/welcome/dsmsdn/deepc08172000.htm
- "C#, The Natural Progression," Michael Perry (JavaWorld, August 2000) -- a high-level article, reprinted from ITworld.com, that outlines the C# technology
http://www.javaworld.com/javaworld/jw-08-2000/jw-0804-itw-csharp.html
- ITworld.com and JavaWorld columnists duke it out (pardon the pun) on C# vs. Java
http://www.javaworld.com/jw-11-2000/jw-1122-letters.html
- "C# Under the Microscope" (Slashdot, Aug. 9, 2000) -- a good, quick analysis of C#. The hacker prattle following the article provides more heat than light, but
also the occasional worthwhile observation
http://slashdot.org/articles/00/08/09/1612254.shtml
- "Microsoft .Net vs. J2EE -- How Do They Stack Up?" Jim Farley (java.oreilly.com)
http://java.oreilly.com/news/farley_0800.html
- If you're running Windows 2000, download this "pre-beta" evaluation kit
- http://msdn.microsoft.com/downloads/default.asp?URL=/code/
sample.asp?url=/msdn-files/027/000/976/msdncompositedoc.xml
- "Deep Inside C#An Interview with Microsoft Chief Architect Anders Hejlsberg," John Osborn, (www.oreilly.co) -- a fascinating article with the designer of C#. Be sure to read the James Gosling interview mentioned here, since Gosling's
comments, it appears to me, were used out of context
http://windows.oreilly.com/news/hejlsberg_0800.html
- A preliminary injunction in the Sun vs. Microsoft case, from Northern California U.S. District Court
http://techlawjournal.com/courts/sunwvmsft/19981117ord.htm
- "Sharp New LanguageC# Offers the Power of C++ and Simplicity of Visual Basic," Joshua Trupin (MSDN Online, September 2000)
http://msdn.microsoft.com/msdnmag/issues/0900/csharp/csharp.asp
- "First Impressions of C#Java Killer or Java Wannabe," David Reilly (EarthWeb, Aug. 11, 2000):
- http://gamelan.earthweb.com/dlink.resource-jhtml.72.1082.|repository||softwaredev
|content|article|2000|08|10|SDreillycsharp1|SDreillycsharp1~xml.41.jhtml?cda=true
- "First Impressions of C#a Language Overview," David Reilly (EarthWeb, Aug. 22, 2000)
- http://gamelan.earthweb.com/earthweb/cda/dlink.resource-jhtml.72.1082.|repository||
softwaredev|content|article|2000|08|21|SDreillycsharp2|SDreillycsharp2~xml.41.jhtml?cda=true
- "Report from Microsoft PDC 2000," John Ruley (Byte.com, July 17, 2000) -- a first-hand report from the Microsoft Professional Developers Conference, where C# was presented
http://www.byte.com/feature/BYT20000714S0003
- "Microsoft Challenges Java with C Sharp," Charles Babcock, (Inter@ctive Week, July 3, 2000) -- includes news about potential C# standardization
http://www.zdnet.com/intweek/stories/news/0,4164,2597408,00.html
- "Java business conferenceSun cancels Java standard plans," John Cox (Network World Fusion Dec. 8, 1999) -- documents Sun's flip-flop on Java standardization
http://www.nwfusion.com/news/1999/1208std.html
- "Microsoft Pitches 'C sharp' Against Java," John Leyden (vnunet.com, June 27, 2000)
http://www.vnunet.com/News/1104875
- "Microsoft Cans Visual J++ Tool," John Geralds (vnunet.com, July 12, 2000) -- Surprise, surprise
http://www.vnunet.com/News/1106388
- "Microsoft .Net Plans Face Court Hurdle," John Leyden (vnunet.com, June 23, 2000) -- How will .Net play in the context of the antitrust case? Fear, uncertainty, and doubt, for those who just
can't get enough
http://www.vnunet.com/News/1104495
- A large list of C# programming articles
http://www.hitmill.com/programming/dotNET/csharp.html
- ECMA (European Computer Manufacturers Association) homepage
http://www.ecma.ch/
- ECMA News has a discussion of C#'s submission to ECMA
http://www.ecma.ch/ecma1/NEWS/NEWS.HTM#Two%20new%20projects%20for%20ECMA%20TC39
- "C Sharp Previews Sound Flat," Charles Babcock, (Inter@ctive Week, July 17, 2000) has a good competitive analysis
http://www.zdnet.com/intweek/stories/news/0,4164,2604273,00.html
- "Microsoft's .Net Strategy," Gopalan Suresh Raj (Oct. 13, 2000)
http://www.execpc.com/~gopalan/misc/viewpoint.html
- "C# Strikes a Chord", Jacques Surveyer (Dr. Dobb's Journal)
http://www.ddj.com/articles/2000/0065/0065g/0065g.htm
- "C# Is Pronounced 'See Sharp,'" Arthur Griffith (windows.oreilly.com)
http://windows.oreilly.com/news/seesharp_0700.html