.NET
BCL (Base Class Library) - це серце Framework Class Library, що включає простір імен System
і усі базові класи: Console, String, Int32, DataTime, Random +1000 класів, що використовуються
і для віконних програм, і для сайтів, і для мобільних програм.
В щоденній роботі ми використовуємо саме BCL, а все інше ми тягнемо з менеджера пакетів NuGet.
Framework Class Library = BCL + WinForm + WPF + Xamarin +
Windows Store App + WebForm + + ASP.NET + Desktop + Xbox...
Вже йде розділення на різні технології: вікна, мобільні, інтернет.
Framework
CLR (Common Language Runtime) - програма, яка потрібна для запуску ваших програм написаних на С#. Ваш код транслюється (перетворюється) в проміжний байт-код
Intermediate Language (il, cil, msil), який і виконує програма clr.exe (що іде з Windows).
Машинний код створюється під час виконання програми (Runtime), цей тип компіляції називається (Just in Time) і його робить JIT-компілятор (що іде з CLR).
Мінус: при запуску така програма працю повільніше за С++.
Плюс : працює всюди, де є CLR і не треба робити збірки під різні архітектури процесорів:
86x, 64x, ARM.
Ми наче запускаємо програму в пісочниці, що дає змогу використати Garbage Collection.
Інші мови можуть конвертуватися в IL-код: C++/CLI, F#, J#, IronPhyton, VB.NET, Delphi.NET... Але тут є обмеження специфікації, наприклад C++/CLI код не може містити множинного успадкування.
CTS (Common Type System) - це система загальних типів у IL-коді, що визначає спосіб оголошення, використання і керування типами в середовищі CLR.
CLS (Common Language Specification) - обмежена специфікація IL-коду, що дає змогу одночасно використовувати багато мов програмування.
NGen.exe - конвертує IL в бінарний код.