- The Journey to C#
- From C to C++ and Object-Oriented Programming
- Fun with Visual Basic
- Onto the Internet
- HTML Ancestry
- C#—Another Pyramid Scheme?
- C# Introduction and Overview
- Summary
C#Another Pyramid Scheme?
At this point you may be asking yourself, is C# really capable of combining the best features of today's popular languages? Will C# really prove itself to be the one solution for Windows application development, or is C# just another approach by Microsoft to woo you deeper into the Microsoft empire? The answer is this: no matter how you feel about Bill Gates, or Microsoft's marketing strategies, C# is an exciting new programming language that will sell itself.
ANSI C#?
The single reason for C's and C++'s widespread adoption is the ANSI (American National Standards Institute) standardization. Dennis Ritchie and Bjarne Stroustrup left enough gray areas in their original language descriptions that were it not for some committee uniformly filling in the gaps, both languages would have died a slow, incompatible death. When Microsoft disclosed the C# language reference, they simultaneously announced the language's proposed standardization. The proposal was formally submitted to the ECMA Technical Committee (TC) 39. This is the same committee that is standardizing ECMA-Script or JScript.
Assuming the committee members accept the submission and agree to standardize C#, vendors beyond Microsoft can eventually implement the language freely. This will allow vendors to implement both "Standard C#" and their own proprietary C# extensions, just as they implement Standard C and C++ along with their own extensions today. In this sense, the eventual C# standard should mimic the C and C++ standards' balance between portable behavior and vendor invention.
What is MSIL?
Somewhat similar to Java's or J++'s architecture independent byte code, the C# compiler outputs MSIL which stands for Microsoft Intermediate Language. Contrary to popular belief, a virtual machine (VM) or similar technology does not interpret this IL (Intermediate Language). Instead, the IL is converted to native code, either when its application loads, or on demand by one of several just-in-time compilers. Once this translation occurs, the executed code is native. C# is not the only language using IL. All .NET compilers can emit IL. In fact, Microsoft researched about 20 languages during IL design and development. And you should not be surprised to see IL changes in response to the needs of these, or other, language vendors.
Microsoft and the .NET
Microsoft's decade long-term goal has always been the vision of a world with "Information at Your Fingertips." In the past, accessing information was anything but easy: modems were connected at 4800 baud, most messages were sent by fax rather than email, and few people had even heard of the Internet. Although Microsoft envisioned a world in which people could connect with the information they wanted, when they wanted it, from whatever device they wanted, there was no idea what technologies would help make that a reality. The Microsoft .NET solution will revolutionize computing and communications by being the first platform that makes "Information at Your Fingertips" a reality.
With Microsoft .NET technology you will have access to a new generation of advanced software joining the best of computing and communications in a revolutionary new way. The effect will be to totally transform the Web and every other aspect of the computing experience. .NET enables developers, businesses, and consumers to harness technology on their terms. .NET will allow the creation of truly distributed Web services that will integrate and collaborate with a range of complementary services to help customers in ways that today's dotcoms can only dream of.
The fundamental idea behind .NET is that the focus is shifting from individual Web sites or devices connected to the Internet to constellations of computers, devices, and services that work together to deliver broader, richer solutions. People will have control over how, when, and what information is delivered to them. Computers, devices, and services will be able to collaborate with each other to provide rich services, instead of being isolated islands where the user provides the only integration. Businesses will be able to offer their products and services in a way that lets customers seamlessly embed them in their own electronic fabric.
Microsoft .NET will make computing and communicating simpler and easier than ever. It will spawn a new generation of Internet services, and enable tens of thousands of software developers to create revolutionary online services and businesses. It will put you back in control, and enable greater control of your privacy, digital identity, and data. And software is what makes it all possible. However, Microsoft's .NET technology will only succeed if others adopt this new standard.
C# and the .NET
C# is one of four languages Microsoft will initially bring to .NET, along with C++, Visual Basic, and JScript. Other vendors are developing languages for this platform including: APL, COBOL, Eiffel, Perl, Python, and Scheme. What allows such interoperability is the .NET Common Language Runtime, or CLR. Within this runtime, all languages share the following set of resources:
Object-oriented programming model (inheritance, polymorphism, exception handling, garbage collection)
Security model
Type system
All .NET base classes
Many .NET framework classes
Development, debugging, and profiling tools
Execution and code management
IL-to-native translators and optimizers
Remember, all of these resources are available to every .NET language, not just C#.
Common Language Specification (CLS)
For some programming languages the common type system is too large. For this reason, Microsoft is creating a subset of that system. The subset is codified as a set of rules in the Common Language Specification (CLS). Languages conforming to these rules allow you to easily create a base class in COBOL, derive an APL class from the base, create a container of derived objects in C#, and manipulate the container with a Visual Basic method.
CLS Extensions to Visual C++
While C++ programmers can target .NET and use all C++ features in their code, the C++ code cannot be verified safe by the .NET runtime. Currently, C++ does not use the CLS rules, and programs written in it face certain restrictions. To get around these restrictions, Microsoft is adding non-standard "managed extensions" to Visual C++. Code written with these extensions can be CLS-compliant.
The Importance of Interoperability
Many of today's top programmers believe interoperability will fundamentally change how we all choose languages and implement designs. The advantages of interoperability may spur the creation and design of other new languages. Finally, the Microsoft .NET solution may be the answer to those who want out from under the C/C++ language domination.