С#: що це за мова та де її використовують
Від Білла Гейтса до Fall Guys.
Ще у 80-х студент Гарварда Білл Гейтс разом зі своїм другом створили компанію Microsoft. Тоді ніхто не знав, до чого це призведе. Сьогодні чисельність компанії налічує 180 тис. співробітників. ОС Microsoft Windows поширена на 90% комп'ютерів.
Гейтс запрограмував хрестики-нулики на шкільному комп’ютері в 13 років. Але в нульових перед Microsoft стояло складніше завдання. У світі з’явився інтернет ― треба було вчитися створювати інструменти для веброзробки. Для цього в компанії зробили платформу .NET, основною мовою якої став C#.
На C# пишуть не тільки для Web. Це ще вікна на Windows, ігри і навіть машинне навчання. Розповідаємо про сфери застосування мови.
Як з’явився С#
С# — об’єктно-орієнтована мова програмування. Її назва читається як «сі шарп». Шарп — нота до-дієз у музиці (дієз = підвищення на пів тон). Тобто C# — це оновлення, покращення мови C.
С — епохальна мова програмування, що виникла в 70-х. Вона змогла замінити асемблер і стала основою для інших мов. Після Сі вийшов ще С++ (сі-плюс-плюс), що підтримує парадигми об’єктно-орієнтованого та узагальненого програмування. С++ — досі популярна мова програмування.
У 1995 році компанія Sun Microsystems створила мову Java. Її зробили з урахуванням граматики С++. Головною «фішкою», що відрізняє цю мову від інших, стало ось що. До перетворення на машинний код програма на Java спочатку перекладалася на байт-код. Це робило мову Java незалежною від апаратного пристрою машини. А ще розробники додали туди підтримку вебу, щоби можна було взаємодіяти з інтернетом: програмувати клієнт-серверні програми, отримувати дані з інтернету та обмінюватися ними.
Microsoft треба було скласти конкуренцію Sun і також працювати з вебом. Мільйони рядків коду в Microsoft були написані внутрішніми мовами (в основному С і С++). Тому просто так перейти на Java було неможливо. Звідси виникла ідея створення платформи для вебу. Так виникла Microsoft.NET Framework.
.NET використовує власну проміжну (між кодом програміста й машинним) мову, що виконує ту ж функцію, що й байт-код для Java-машини. Для.NET можна писати кількома Microsoft-мовами, але C# — основна мова платформи.
Чим С# відрізняється від Java і C++
C#, як і C++ — нащадок мови С: базові конструкції мов схожі. Нове в C# — це об’єктно-орієнтована парадигма: наявність класів і об’єктів. Можна створювати класи з властивостями — робити це синтаксично дуже зручно. Реалізовано основні принципи ООП: наслідування, інкапсуляція та поліморфізм.
С# — це мова, яка має сувору типізацію. У ній є автоматичний збір сміття — програмісту не потрібно дбати про ручне звільнення пам’яті. У мові згодом запровадили динамічне зв’язування, асинхронні методи, шаблони.
Основна відмінність мов С++ та С# — у рівні складності та цілях.
У коді на С++ є специфічні для цієї мови покажчики на змінні, в C# цього немає. У С++ збір сміття ручний, а С# — автоматичний. Код С++ компілюється відразу машинний код, С# — у проміжний байт-код. Нарешті, С# історично пов’язаний з.NET, а С++, як швейцарський ніж, використовують у будь-яких ситуаціях.
Ще одна відмінність — у С# немає множинного успадкування класів. Це допуск ситуації, коли один клас є нащадком одразу кількох різних класів. У С# від цього вирішили відмовитися для простоти.
Синтаксис С# зручніше, ніж С++. Написання коду на C++ вимагає глибокого розуміння, як влаштована ця мова всередині, а C# — набір готових модулів на вирішення завдань.
C# схожий на Java і є його основним конкурентом. Вони розвивають концепції мови C++, водночас спрощуючи її. Ці дві мови дуже близькі за своєю філософією, проте є низка технічних тонкощів, що відрізняють один від одного. Вони пов’язані з тим, що C# розроблялася саме під екосистему Microsoft, тоді як Java замислювалася як відкрите opensource-середовище. Наприклад, це різні підходи до реалізації параметризованих типів, відсутність C# перевірених винятків.
Де застосовують С#
Більшість програм та сервісів для вебу, пов’язаних із продуктами Microsoft, написано на C#. Відомий сайт stackoverflow.com написаний на C# із використанням фреймворку.NET. Подібним методом зроблені сайти Microsoft і Dell.
С# застосовується для розробки десктопних Windows-додатків. Наприклад, Microsoft Visual Studio, Paint.NET написані на C#. Платформа.NET, точніше, Windows Forms лежить у основі Skype, Microsoft Office, Photoshop.
Геймдев-розробники знають про рушій Unity. Він використовується для створення 2D та 3D комп’ютерних ігор. Програмування в Unity дає змогу зосередитися на контенті гри, не торкаючись багатьох технічних деталей. Воно робиться переважно на C#. Ігри Rust, Hearthstone, Fall Guys та інші зроблені в Unity з використанням C#. Крім цього, він дає змогу взаємодіяти з DirectX — набором компонентів для графіки та звуку в іграх.
C# також використовується для розробки мобільних додатків. Є платформи (наприклад, Xamarin), о дають змогу запускати код C# на різних операційних системах, включно з мобільними OS Android та iOS Ось список топових додатків, написаних на Xamarin.
У 2018 до програмного середовища.NET додали бібліотеку ML.NET, яка дає змогу користуватися моделями машинного навчання. Вона поступається бібліотекам на Python за кількістю документації, але зручна та часом використовується в продакшені.