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
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
|