OOP Course
Сьогодні

Підрозділ 1.1

Роль платформи

Пояснює місце .NET у розробці на C#, роль платформи, CLR, бібліотек і загальну логіку виконання програм.

1.1. Роль платформи

Коли говорять про C#, майже завжди поруч з'являється слово .NET. Це не випадково: C# — це мова програмування, а .NET — це платформа, на якій ця мова найчастіше використовується. Мова описує синтаксис, типи, класи, методи, оператори та правила написання програм. Платформа дає середовище виконання, бібліотеки, інструменти збирання, систему пакетів і набір технологій для різних типів застосунків.

Тому C# і .NET — не одне й те саме. C# — це мова. .NET — це екосистема, у якій ця мова розкривається найповніше. Порівняти можна так: C# — це мова книги, а .NET — бібліотека, видавництво і типографія разом.

Шлях коду від рядка до виконання

Код, написаний програмістом, не виконується процесором безпосередньо. Він проходить кілька перетворень:

Шлях C#-коду від вихідного файлу до машинного коду

  1. Компілятор C# перетворює .cs-файл у проміжне подання — CIL (Common Intermediate Language) разом із метаданими. Результат зберігається у збірці (.dll або .exe).
  2. CLR (Common Language Runtime) завантажує збірку під час запуску.
  3. JIT-компілятор (Just-In-Time) перетворює CIL на машинний код конкретного процесора — саме в момент першого виклику методу.

Така архітектура дає дві переваги одночасно: кросплатформовість (одна збірка запускається на Windows, Linux і macOS) і продуктивність (машинний код адаптований до конкретного процесора).

Перший рядок C#, який пише кожен студент:

— вже використовує бібліотеку платформи. Тип Console не є частиною синтаксису мови; це клас стандартної бібліотеки .NET.

Що дає .NET програмісту

.NET бере на себе роботу, яку в низькорівневих мовах програміст змушений контролювати самостійно. Платформа не просто запускає програму — вона організовує її виконання:

Що робить .NET Що це означає на практиці
Автоматичне керування пам'яттю (GC) Не потрібно вручну виділяти і звільняти пам'ять для об'єктів
JIT-компіляція Код оптимізується під конкретний процесор під час запуску
Перевірка типів Багато помилок виявляється ще на етапі компіляції
Єдина модель винятків Помилки обробляються уніфіковано через try...catch
Стандартна бібліотека Готові класи для рядків, колекцій, файлів, мережі, JSON тощо
Кросплатформовість Один і той самий код працює на Windows, Linux, macOS

Для студента це означає просту річ: на початку курсу можна зосередитися на логіці програми, класах, методах і структурі коду, а не на ручному виділенні пам'яті та деталях роботи з операційною системою.

Підтримка кількох мов

CLR не прив'язана лише до C#. На платформі .NET також використовують F#, Visual Basic та інші мови, які компілюються у спільне проміжне подання CIL. Завдяки цьому різні мови можуть:

  • використовувати одні й ті самі бібліотеки .NET;
  • взаємодіяти в межах одного рішення;
  • покладатися на єдиний runtime і GC.

Наприклад, одна частина великої системи може бути написана на C#, інша — на F#, а спільні бібліотеки — використовуватися обома. У реальних проєктах такий підхід зустрічається, коли різні команди обирають мову під конкретні задачі.

Кросплатформовість

Сучасний .NET є кросплатформовим. Застосунки на C# можна створювати для Windows, Linux, macOS, хмарних середовищ, контейнерів, мобільних і вебсценаріїв. Звісно, не кожна технологія працює всюди: WPF і Windows Forms орієнтовані на Windows, тоді як ASP.NET Core, консольні застосунки та серверні рішення запускаються на будь-якій підтримуваній ОС.

Для навчального курсу це важливо практично: студент може писати код у Windows, Linux або macOS, використовувати .NET CLI, запускати консольні програми й працювати без прив'язки до конкретної IDE.

Стандартна бібліотека класів

Одна з найсильніших сторін .NET — велика стандартна бібліотека. У ній уже є готові типи для роботи з рядками, датами, колекціями, файлами, потоками, мережею, JSON, базами даних, асинхронністю та багатьма іншими задачами.

Всі ці можливості — string, DateTime, List<T> — не є частиною синтаксису мови C#; це класи стандартної бібліотеки .NET.

Різноманітність технологій

Екосистема .NET: типи застосунків

На .NET можна створювати різні типи програм:

  • Консольні застосунки — початок будь-якого навчання; дозволяють зосередитися на логіці
  • Бібліотеки класів — код, який використовують інші проєкти
  • ASP.NET Core — вебзастосунки та REST API
  • Blazor — інтерактивні вебінтерфейси на C# замість JavaScript
  • WPF / Windows Forms — настільні програми для Windows
  • .NET MAUI — кросплатформові мобільні та настільні застосунки
  • Worker Service — фонові служби та мікросервіси

У цьому курсі ми починаємо з консольних застосунків — вони дозволяють не відволікатися на інтерфейс і зосередитися на головному: типах, об'єктах, класах, методах, інкапсуляції, наслідуванні та поліморфізмі.

Три рівні, які важливо розрізняти

У процесі вивчення C# і .NET важливо чітко розуміти, до якого рівня належить та чи інша річ:

  1. Синтаксис C#if, for, class, new, override, оператори, лямбди, LINQ
  2. Стандартна бібліотека .NETConsole, List<T>, DateTime, Math, File
  3. Архітектура власної програми — класи, що ви пишете самостійно: Patient, Doctor, Clinic

Плутанина між цими рівнями — поширена помилка на початку. Наприклад, питання «чому int — це клас?» стосується рівня платформи (у .NET int є псевдонімом System.Int32), а не синтаксису мови.

Автоматичне керування пам'яттю

Важлива особливість .NET — автоматичне збирання сміття (garbage collection, GC). Коли програма створює об'єкти, вони займають пам'ять у купі. Коли об'єкти більше не використовуються — CLR може звільнити цю пам'ять автоматично, без участі програміста.

Це не означає, що про ресурси взагалі не треба думати. Файли, мережеві підключення та підключення до баз даних все одно потрібно закривати коректно. Але більшість повсякденної роботи з пам'яттю для об'єктів бере на себе платформа.

Для порівняння: у C++ програміст сам відповідає за те, коли виділити пам'ять (malloc/new) і коли її звільнити (free/delete). У C# типовий навчальний код виглядає простіше, бо CLR контролює життєвий цикл керованих об'єктів.

Підсумок

  • C# — мова програмування з багатою системою типів, ООП, LINQ, async/await
  • .NET — платформа: середовище виконання (CLR), стандартна бібліотека та екосистема технологій
  • CLR виконує керований код: JIT-компілює CIL, керує пам'яттю через GC, обробляє винятки
  • Стандартна бібліотека дає готові класи для типових задач — рядки, колекції, файли, мережа
  • Для цього курсу .NET — робоче середовище, у якому ми поступово переходимо від простих інструкцій до повноцінного об'єктно-орієнтованого проєктування
Розроблено Tomka Yurii · © 2026 ·