| |
Home
About Us
Achu's Page
Interests
Friends
Photos
Literature
Technical
Paintings
|
|
This article appeared on the
IT Glimpse magazine (2000) published by Computer Science Students
Association, Mahatma Gandhi University, Kerala. (Given here is the original
article I wrote.)
When I sat down to compile an
article for this magazine, my initial thoughts went with writing something
purely non-technical. There are at least three distinct advantages for not
writing technical material. First of them, you can write an article without
double-checking its technical accuracy. Second, you are not worried about
the breadth or width of the material presented. And third, it will have
relevance maybe even after, say, ten years. Do not get me wrong: I enjoy
writing technical material (in fact, that is part of my profession too), so,
writing a technical article is just like being in the office for me!
.NET is a rapidly evolving platform, and most of its development are still
in Beta form. The first stable bits of the .NET SDK were released at
Professional Developers’ Conference (PDC) in July 2000. Visual Studio 7
(called Visual Studio.NET), (which, I should admit, is a software
engineering marvel) has all the necessary ingredients to develop an
application for the .NET platform. Considering the fact that at Microsoft
things happen in the Internet time, by the time this article is published,
someone should have deployed an e-Commerce site with a million hits per day
using the C# (pronounced as C-Sharp)-Common Language Runtime (CLR)-ASP+
paradigm. Be forewarned though, that it could even be that what I picture
here may not be the building blocks of the final release of the product.
Well, don’t you think my beating around the bush is enough? OK, I can sense
it. In this short (and therefore, dangerous) article, I am going to tell you
what .NET really means and what would be its impact on the software design
in the enterprise development world, and how is it going to impact and
possibly re-shape writing code for the future.
What’s .NET?
If you are studying for a Computer Science degree, and if you haven’t heard
this question before, its time you did it. Bill Gates’ vision of Next
Generation Windows Services (NGWS) is slowly transformed into the next
version of COM+, i.e., COM+ 2.0, which is now being called as the .NET
Framework. In simpler terms, .NET Framework is Microsoft's next generation
platform for creating, deploying, and maintaining web services ranging from
simple client applications to the most complex distributed architectures.
.NET Framework is designed to make the Internet a true distributed computing
platform, providing a framework that allows computers, devices, and services
to collaborate.
.NET is a term that Microsoft is using to describe all of the new
innovations that Microsoft engineers have been working on over the course of
the last three or so years. It is a way to take the Windows DNA architecture
and all the Microsoft technologies, and making them work closely in a way to
make them Internet-enable in a very deep way. .NET describes that new world
of the Internet-enabled web services that give you a new way to stitch
applications together to make developers more productive, and helps to build
an entirely new and different kind of application that’s pretty hard to
build today. Sounds cool, doesn’t it?
C#: What the hell is that?
Many developers wish there was a language that was easy to write, read, and
maintain like Visual Basic, but that still provided the power and
flexibility of C++. C# is for those developers. Microsoft has built C# with
type-safety, garbage collection, simplified type declarations, versioning
and scalability support, and lots of other features that make developing
solutions faster and easier, especially for COM+ and web services. It is
like taking all the good stuff in Visual Basic and adding it to C++, while
trimming off some of the more arcane C and C++ traditions. Going forward, C#
is expected to be the best language from Microsoft for writing COM+ and
Windows-based programs for enterprise computing. I know what you are
thinking. Why wait, let’s discuss that right away!
What’s wrong with Java?
If you are a hardcore Java fan, stop reading this article now, and go
support Vinod Kambly’s inclusion to the Indian Cricket team. I am not yet an
evangelist for C# (Microsoft figured out that there are better people than
me to do that!), but let’s face the realities.
Even though Java's design changed enterprise software development, it
deviated significantly from C++ syntax, slowing Java's adoption by
enterprise C++ developers who found some of Java's design choices difficult
to swallow. In contrast, C# is C++ extended with Java-like features,
including automatic memory and object lifetime management, easy access to
external objects, and simplified object creation. Useful C++ concepts
abandoned by Java, including overloaded operators and reference arguments,
are maintained in C#. Pointers, banished from Java as the most dangerous of
C++'s features, are not removed from C# but are caged: pointers may be used
only in sections of code tagged as unsafe.
Although Java requires that C++ developers learn new ways of doing things,
most of the transition from C++ to C# is leaving out the object and memory
management code written into every C++ application. Allowing the use of
pointers and references gives C# developers direct, simple access to
facilities outside the .NET Framework, including 32-bit Windows DLLs. Unlike
Java, C# keeps most of the quirky and powerful C++ features developers seem
to like.
C# flew straight into the hands of the ECMA. So, customers and developers
will see non-Microsoft C# tools and compilers as well as contributions to
the language from other learned sources. This means that third parties
creating C# tools won't have to license the language from Microsoft, so the
cost of tools should remain low. In contrast, Sun Micro Systems withdrew
Java from the standards track, so only Sun can evolve Java.
Need another big reason? Microsoft would not attempt to port any Windows C++
application of consequence to Java, but converting many of them, probably in
stages, to C# seems to me as a definite possibility. The resulting
application would gain C#'s stability and .NET's cross-language portability.
Microsoft has invested considerable care in maintaining easy access to
current Windows facilities, even those such as COM, that are supplanted by
.NET.
Writing code for the future
Even in the Beta release of .NET SDK, you can write .NET applications in
C++, C#, Visual Basic, JavaScript, and Visual FoxPro. They produce the
intermediate byte code language called IL (intermediate language), and they
share a framework-defined set of architecture-independent data types.
Traditionally, developers choose a single language for each project so that
code from different developers will interconnect; .NET makes this
unnecessary. You can mix code from several languages with impunity because
there are no VB, C#, or JavaScript objects; there are only .NET objects, and
they're all connected. You can put C#, VB, C++, and JavaScript coders on one
project and let the .NET layer ensure that all the pieces get along.
Doesn’t this remind you of the days you assembled your favorite electronic
gadget and cried with joy because you thought allowing plugging in
components of your choice was the biggest freedom you ever imagined?
Read my other published
works:
Are You A Better Software Engineer?
Bill Gates has Become Rich, But My Windows Crashed Again!
The Good Doctor Prescribes You a Tablet
Try My Colored Glass |