Welcome to this C# tutorial. With the introduction of the .NET framework, Microsoft included a new language called C# (pronounced C Sharp). C# is designed to be a simple, modern, general-purpose, object-oriented programming language, borrowing key concepts from several other languages, most notably Java.
C# could theoretically be compiled to machine code, but in real life, it’s always used in combination with the .NET framework. Therefore, applications written in C#, requires the .NET framework to be installed on the computer running the application. While the .NET framework makes it possible to use a wide range of languages, C# is sometimes referred to as THE .NET language, perhaps because it was designed together with the framework.
C# is an Object Oriented language and does not offer global variables or functions. Everything is wrapped in classes, even simple types like int and string, which inherits from the System.Object class.
In the following chapters, you will be guided through the most important topics about C#.
C# is a somewhat new language on the scene considering the first compilers widely known like Fortran in the fifties with a possible even older but less well known one by Konrad Zuse in the forties. But it is a very mature language with several versions. The first version came out in 2002, and now the current version is 7, so it has been rapidly advancing with wonderful features.
A compiler at its heart is a language translator. It converts in a series of steps for instance C code to something the machine can understand. For C#, it translates it into an intermediate form called intermediate language that is meant to be able to run on several platforms unlike a compiler that goes from a high-level language like C++ to machine code or assembly which is just above machine code. Assembly is mostly just text mnemonics for the different instructions a processor understands, so it is still platform dependent.
You need a compiler for serious projects because it gives you high level constructs to work with and ways of grouping functionality that make it easier to program. Each language, even machine language, gives you a set of features that allow you to control your machine. The higher the level, the more you get done with less code, and thus often it is easier. The tradeoff is that lower level allows more fine-tuned to control.
The ideal is for the programmer to use the highest-level ways first, and only go down to low level when absolutely necessary. Security and other anti-malware is such an area where known assembly and hardware architecture are going to come more into play than say making a word processor.