Home
Archives
About us...
Advertising
Contacts
Site Map
 

ruby in steel

 

PROGRAMMING MILESTONES: MICROSOFT .NET

This is the first in an occasional series in which we shall look back upon some of the major moments in programming history. We begin this series with Microsoft .NET



Anders Hejlsberg

Microsoft launched the .NET Framework in 2001. This was intended to define the way in which we would all write programs for Windows and the Web in future. The .NET initiative followed hard on the heels of long disputes with Sun Microsystems regarding their Java language and Microsoft’s version of it. Microsoft’s Java had been named Visual J++ and its class library, the WFC (Windows Foundation Classes) had been largely designed by one Anders Hejlsberg - a former employee of Borland who was previously best known for the Pascal language products, Turbo Pascal, Borland Pascal and Delphi. When the plug was pulled on Visual J++, Hejlsberg was appointed chief architect of the C# language and a key designer of the .NET Framework.

Huw Collingbourne conducted this interview with Anders Hejlsberg at the time of the launch of .NET 1.0. See if you agree with Hejlsberg’s assessment of the important of .NET and how well the Framework has, to date, achieved its ambitions….

 

What exactly is .NET?

Hejlsberg: .NET is a vision with four tenets:
1. A new way of building distributed applications - XML Web Services.
2. New tools for building these applications - VS.NET
3. New infrastructure for running them - .NET Framework, .NET Enterprise Servers, etc.
4. Specific instances of such applications that Microsoft is implementing - e.g. .NET My Services 1 (a.k.a. Hailstorm)

Why do we need it?

Hejlsberg: Because it is the foundation for Microsoft's XML Web Services strategy which leverages the existing Internet infrastructure to enable machine-to-machine interaction and solve a fundamental business problem--integration. Previous generation methodologies for writing distributed applications, such as CORBA, simply do not scale beyond the local area network. Their dependence on high quality connectivity, short latencies, and proprietary protocols is fundamentally incompatible with the Internet. XML Web Services, on the other hand, leverage infrastructure that is already in place and has proven itself scalable. They run over HTTP and are easily accommodated by existing firewalls and web servers. And Web Services are not a proprietary Microsoft ploy--they are entirely based on standards such as XML and SOAP 2. The .NET strategy is about making it easier to build and run these standards-based Web Services.

Why did Microsoft decide to create a new language, C#? After all, aren't there already more than enough well established programming languages?

Hejlsberg: First, it is important to realize that the .NET platform supports multiple programming languages: C#, C++, VB, JScript, COBOL, Fortran, Eiffel, just to name a few.

That said, we hear over and over from our C++ customers that the price you pay for the incredible power of the language is often too high--you rarely need it, but you pay for it every day. Our customers would like us to trade off some of that power for increased productivity. And that's what C# does.

A key design goal for C# was to be the first component-oriented language in the C and C++ family. Today, we all program with components. Practically every programming environment in use has adopted a visual, component-oriented methodology. Indeed, the paradigm is so common that we talk about the PME (Property, Method, Event) model of programming. Yet, most programming languages have little or no support for components. For example, while C++ and Java allow you to have methods, these languages have no inherent notion of properties and events. Instead, you have to emulate them, in the case of Java using get/set method pairs for properties and complicated interface and adapter class schemes for events. In contrast, C# allows you to actually declare properties and events in your classes--they're every bit as natural as methods.

Another important design goal for C# was to provide a unified and extensible type system. For example, C# provides struct types that fill the hole between primitive types and classes, allowing efficient stack-based allocation of small data structures.

Also, during the design of C# we thought long and hard about a lot of issues relating to versioning. While a lot of these issues find their resolution in the runtime infrastructure, a surprising number of them have to be addressed by the programming language. The solutions that C# put in place for evolving base classes, method overload resolution, and explicit interface member declarations ensure that applications will be much more robust and durable.

What is it about C# that makes it particularly well suited to working with .NET?

Hejlsberg: Several things, but let me mention just a couple. First, C#'s support for attributes makes it incredibly easy to implement Web Services. Declarative information, such as how the fields of a class map onto XML elements, can simply be specified in-line in the source code in a completely extensible fashion. There is no need for .IDL files or other complicated schemes. Second, because C# doesn't require header files, C# code is very easy to embed in ASP.NET web pages.

Do you foresee C# taking over from C++ eventually?

Hejlsberg: No, I think both languages have their place. The history of programming languages teaches us several lessons; for example, that no single programming language will ever take over the world; and that no matter what we do, there's always another programming language around the corner. The key here is that .NET is a language neutral platform that not only allows us to choose from a variety of languages today, but also can accommodate the innovation that is sure to happen in the future.

If you could pick just one feature that gives C# an advantage over other languages and development tools, such as C++, Java and Delphi, what it be?

Hejlsberg: I'd have to say that it is the ease with which the combination of ASP.NET and C# allows me to create Web Services. Even for an existing site, by adding just a single .asmx file I can expose the underlying business logic both as HTML and as one or more Web Services. The barrier to entry is almost non-existent.

This interview was conducted in late summer, 2001


Footnotes

1 .NET My Services - formerly codenamed ‘HailStorm’ was launched in 2002. It comprised thirteen tools for use with Microsoft’s .NET Passport. For more information, see the 2001 interview on the Microsoft site with Bob Muglia, Group Vice President of the .NET Services Group

2 SOAP = ‘Simple Object Access Protocol’ or possibly ‘Service Oriented Access Protocol’ - based on XML, it is used for accessing web services. For a contemporary (2001) Microsoft viewpoint, see this article.

 

June 2005

 


Home | Archives | Contacts

Copyright © 2006 Dark Neon Ltd. :: not to be reproduced without permission