If we want to learn any .NET Supported Programming Language, then we do not have to learn the whole .NET Framework. Because .NET Framework and .NET Supported Programming Languages are two completely different concepts. Actually, we can basically divide the .NET Framework into three parts:
- .NET Supported Programming Language
- .NET Framework
- .NET Platform or CLR
Where .NET Supported, Programming Language is the programming language, using whose Code Syntaxes we develop .NET Framework Based Applications. These Programming Languages have a direct relationship with the .NET Framework and Platform because the .NET Framework provides a library of different types of Predefined Classes to easily meet the needs of different types of applications being developed.
Although generally, the .NET Framework is modified only when a new type of requirement has to be fulfilled and to meet a new type of requirement when a concept is implemented in the .NET Platform or a new namespace. Or if the class is defined, then the programming language is also modified to make the .NET Supported Programming Language aware of the new type of Functionality.
But this does not mean that whenever the .NET Framework is modified by adding a Namespace or Class to the .NET Framework, the .NET Supported Programming Language will also have to be modified.
That is why when the 1.1 version of the .NET Framework was launched; then no new feature was added in the 1.2 version of C#.NET because no such new functionality was added in the 1.1 version of the .NET Framework, Which would have needed to be made aware of C# 1.2.
Similarly, making any change in the .NET Framework does not mean that any kind of change is necessary for the .NET Platform or CLR also. That is why when version 2.0 of the CLR was defined, after that the versions 2.0, 3.0, and 3.5 of the .NET Framework were launched, and all three versions were completely dependent on CLR 2.0. Whereas even after the launch of .NET Framework 3.0 and 3.5 Versions, no change was made in the version of C# Programming Language.
That is to say, if any change is made in the .NET Platform or CLR, then it is an indication that some kind of change is being made in the way the .NET application is run. At the same time, any change in the .NET Framework is an indication that a new Functionality has been added to the Framework.
Therefore, if a change is made in the CLR, then it is possible that something should be changed in both the .NET Framework and the .NET Supported Programming Language. Similarly, if there is any change in the .NET Framework, then it is possible that there may be some kind of change in the programming language as well.
But making any change in Programming Language does not mean that changes should be made in .NET Framework and .NET Platform as well. Similarly, changing the .NET Framework does not mean that the .NET Platform should also be changed. We can easily understand this whole process as given below:
As we can understand from this picture that if any kind of modification is done in the .NET Framework, then it is not necessary that there should be any kind of modification in the way of running the CLR, i.e., .NET Application.
But if any kind of change is made in any part of .NET Platform or CLR, then there is a possibility that there will be some kind of change in .NET Framework and Programming Language and in the form of change in .NET Framework. New classes and new namespaces can be added, while new features can be appended to the programming language.
As shown in the above picture, .NET Framework 2.0, 3.0, and 3.5 were launched with CLR 2.0, while 2.0 and 3.0 versions of C# Programming Language were launched. With CLR 2.0, frameworks of three different versions and C# programming language of two different versions could be launched because they are not tightly bound to each other.
Changing the CLR alone does not necessitate the creation of new namespaces and new classes, but the .NET Platform has many parts, of which the CLR is also a part. Therefore, due to changes in any part of the .NET Platform, there may be a need to modify the .NET Framework and C# Programming Language.
This is the reason that three .NET Framework Versions and two C# Programming Language Versions could be launched with CLR 2.0 because, in these three versions, not the CLR but any other part of the .NET Platform was changed.
Since Base Class Library is also a part of .NET Platform, new features can be appended to .NET Framework and C# Programming Language by adding new Namespace and new Classes to this Base Class Library.
This is the reason that without changing CLR 2.0, it was possible to launch 3.0 and 3.5 versions of .NET Framework even by appending some new namespaces such as LINQ, WPF, WCF, WF, etc. to the Base Class Library, while There was no need to modify CLR 2.0 while adding new features to the .NET Framework and C# Programming Language.
In this way, if put in simple words, .NET Platform, .NET Framework, and .NET Programming Language, all three can be updated at their own level, and all three are not completely dependent on each other.
But on updating the .NET Platform, there is a lot of possibilities that the .NET Framework has to be changed, and on changing the .NET Framework, there is a lot of possibilities that the .NET Programming Language will also have to be updated.
But it is not necessary to update the .NET Framework on changing the Programming Language, and it is not necessary to update the .NET Platform on changing the .NET Framework.
No .NET Programming Language is capable of developing a complete application on its own level and of developing any application; it needs to use various Core Classes of .NET Framework and other FCL classes. Therefore, if there is any change in the .NET Framework in any way, then it is very likely that the programming language needs to be modified according to that change.
Similarly, any programming language always creates .NET Application Assembly to run on .NET Platform, i.e., CLR, so if there is any kind of change in .NET Platform, then definitely Programming Language and .NET Framework. It becomes necessary to update both. Because Programming Language creates Application Program for .NET Platform only using .NET Framework.
Since the features of Generics, Partial Types, Anonymous Methods, Iterators, Nullable Types, Private Setters and Delegates were to be appended in .NET Supported Programming Languages, CLR 2.0 was designed by modifying the CLR. Also, .NET Framework 1.1 was completely redesigned to make .NET 2.0 because .NET 1.1 did not know about these new features defined by CLR 2.0 for .NET Supported Programming Languages.
Similarly, .NET Supported Programming Languages had to append the features of Implicit Type Local Variables, Object and Collection Initializers, Auto Implemented Properties, Anonymous Types, Extension Methods, Query Expressions, Lambda Expressions, Expression Trees and Partial Methods, that’s why only. NET Framework 3.0 and 3.5 designed. There was no need to modify the CLR here because, in .NET Supported Programming Languages, these features could be achieved by modifying the BCL classes and adding new classes to the BCL.
Similarly, the features of Dynamic Binding, Named and Optional Arguments, Generic Co and Contravariance, and Embedded Interop Types (“NoPIA”) in .NET Supported Programming Languages were to be appended, so only CLR 4.0 was designed. Here the CLR needed to be modified because, in .NET Supported Programming Languages, these features could not be achieved by modifying BCL classes or adding new classes in BCL.
However, to get the .NET Supported Programming Languages provided by the Modified CLR, the .NET Framework also had to be modified, and the .NET Framework 4.0 Design was designed, in which the necessary classes were defined to meet these new types of requirements.
While .NET Supported Programming Languages had to append the features of Asynchronous Methods and Caller Info Attributes, that is why only CLR 4.5 was designed. Here too, CLR needed to be modified because, in .NET Supported Programming Languages, these features could not be achieved by modifying BCL classes or adding new classes in BCL.
Also, to get the .NET Supported Programming Languages provided by the Modified CLR, the .NET Framework also had to be modified, and the .NET Framework 4.5 Design was designed, in which the necessary classes were defined to meet these new types of requirements.
In this way, to understand the core concepts of programming language, it is not necessary that we also understand the different classes of .NET Framework. Rather, we can easily understand the Core Concepts of .NET Supported Programming Languages even by using the classes of some Base Class Library related to the Core Functionalities of Programming Language.