What is.NET, and what is it for?

For a long time, from many forums, videos, on the topic of programming, I often hear about .net framework how to use it in different languages (most often in C#), but what it is for, why it is needed, and where it is needed, I did not understand.
And yes, is it worth teaching this business to teach, or is it already a lost cause?

 1
Author: Wart Vader, 2019-08-22

1 answers

Pro .NET has written many books, so it is difficult to describe it in the format of the answer to the question. However, in as simple words as possible:


What is it .NET?

.NET is a large multi-component system (which, by the way, also has many incarnations). It includes a set of specifications (for an internal language, IL, for example), an execution environment for this language (it is called the CLR-Common Language Runtime, a common language runtime), a basic library (Base Class Library) - the minimum required set of objects, many objects of the System namespace are described in BCL, a set of compilers of various languages (C#, VB.NET, F#, C++, JavaScript... There are really a lot of them, someone even tried to write a compiler for Java).

Why you need it .NET?

An important property of net is that a program or library written in any language with CLR support can then be used in any other language with CLR support. (For example C#+F# is often found in the same project).
The word Framework in the name means that .NET abstracts the programmer from the computer hardware. Programmer under .NET interacts with .NET, and all the work on optimizations, memory management, and compatibility in general lies with the framework.
By the way, running the program on different computers and even on different operating systems is also one of the tasks that .NET decides.

How to use it .NET?

.NET is widely used in the web on backend (Asp.NET), is gaining popularity on the front (Blazor), is popular in the game industry, at least in the indie sphere (Unity), it is used in machine learning (ML.NET) and Data Science in general. The vast majority of Windows applications (as well as a significant part of Windows itself (its high-level components) are written in .NET) for applications: (Windows Forms, WPF, UWP, cross-platform library is slowly gaining popularity Avalonia), on .NET develops mobile applications (both Android and iOS) (Xamarin), and is used in embedded systems.
In short, you can do almost anything on it, if you want.

An important detail is the zoo of implementations and generalizing technologies: .NET Framework, .NET Core, .NET Standard, Mono, and guys like AOT compiler in Xamarin for iOS and il2cpp in Unity. And many of the items listed above just differ in the used runtime. On this one the topic has a bad article on habr with good comments.
In short, the topic is complex, but this digression is necessary to answer the question ...

Whether it is worth teaching .NET?

It depends a lot on what you want. The only thing I can say for sure is .The NET Framework is already outdated and has come to replace it .NET Core (the current version is Core 3.0). Teach.NET Framework is useless only if you don't want to find a job in some rotten corporation that is clumsy so much so that it can't move on for many years .NET Core. In short, if you are not a fan of supporting Legacy.
As it is, the promising areas are listed above, and it makes sense to study something in this area if you have an interest.

Also, Image (deprecated) structures .NET [Wikipedia]


Phew, the comment was wild. I could make a lot of mistakes (I myself am a narrow specialist, but I work on .NET), so if someone notices the jambs-don't feel free to correct it.

 4
Author: bearpro, 2019-08-22 10:51:17