CHAPTER 1 THE PHILOSOPHY OF .NET
There are a number of ways to answer this question. First, we programmers are a very particular lot
when it comes to our choice of programming language. Some of us prefer languages full of semicolons
and curly brackets with as few language keywords as possible. Others enjoy a language that offers more
human-readable syntactic tokens (such as Visual Basic). Still others might want to leverage their
mainframe skills while moving to the .NET platform (via the COBOL .NET compiler).
Now, be honest. If Microsoft were to build a single “official” .NET language derived from the BASIC
family of languages, can you really say all programmers would be happy with this choice? Or, if the only
“official” .NET language was based on Fortran syntax, imagine all the folks out there who would ignore
.NET altogether. Because the .NET runtime couldn’t care less which language was used to build a block
of managed code, .NET programmers can stay true to their syntactic preferences and share the compiled
code among teammates, departments, and external organizations (regardless of which .NET language
others choose to use).
Another excellent byproduct of integrating various .NET languages into a single, unified software
solution is the simple fact that all programming languages have their own sets of strengths and
weaknesses. For example, some programming languages offer excellent intrinsic support for advanced
mathematical processing. Others offer superior support for financial calculations, logical calculations,
interaction with mainframe computers, and so forth. When you take the strengths of a particular
programming language and then incorporate the benefits provided by the .NET platform, everybody
wins.
Of course, in reality the chances are quite good that you will spend much of your time building
software using your .NET language of choice. However, once you master the syntax of one .NET
language, it is very easy to learn another. This is also quite beneficial, especially to the software
consultants of the world. If your language of choice happens to be C# but you are placed at a client site
that has committed to Visual Basic, you are still able to leverage the functionality of the .NET
Framework, and you should be able to understand the overall structure of the code base with minimal
fuss and bother.
An Overview of .NET Assemblies
Regardless of which .NET language you choose to program with, understand that despite the fact that
.NET binaries take the same file extension as unmanaged Windows binaries (*.dll or *.exe), they have
absolutely no internal similarities. Specifically, .NET binaries do not contain platform-specific
instructions, but rather platform-agnostic Intermediate Language (IL) and type metadata. Figure 1-3
shows the big picture of the story thus far.
Figure 1-3. All .NET-aware compilers emit IL instructions and metadata
9