Вступ в C#

C# (читається як “сі шарп”) – проста, потужна, статично типізована, об’єктно орієнтована мова програмування від компанії Microsoft. C# входить до сімейства мов програмування C, синтаксис мови буде знайомим програмістам, що працювали з C, C++, Java та JavaScript.

Перша версія мови C# була створена в 1998-2001 роках, групою інженерів Microsoft під керівництвом Андреса Гейлсберга та Скотта Вільтаумота, як основна мова програмування платформи Microsoft .Net.

C# увібрав в себе найкращі властивості попередників – мов C, C++, Modula, Object Pascal, спираючись на практичний досвід їх використання. Деякі проблематичні моделі, що до цього використовувались у мовах програмування, зокрема множинне спадкування класів(яке використовується у мові С++), були свідомо виключені.

В багатьох відношеннях мова C# дуже схожа на Java, це відображено в синтаксисах та основних поняттях цих мов програмування.

Історія виникнення

Назва мови C# трактується як наступне покоління розвитку С++, а символ # – символізує “++++”. Спочатку в назві фігурував дієз - “♯”(англійською sharp), однак через відсутність цього символу на клавіатурі, використовується знак для позначення номеру “#”. Загалом назву мови можна позначати обома символами.

Розробка мови C# розпочалася в грудні 1998 року, та готувався до випуску разом з продуктами групи Millenium. Проект мав назву COOL(C-style Object Oriented Language), та розроблявся як аналог Java від компанії Oracle. C# був анонсований, широкому загалу, в 2000 році, як основна мова платформи Microsoft .Net Framework. В цьому ж році з’явилася перша загальнодоступна бета-версія.

Перша фінальна версія мови програмування C# була випущена в 2002 році разом з середовищем інтегрованої розробки програмного забезпечення Visual Studio .Net.

Подібно до Java, C# отримав наступні концепції:

  • віртуальна машина – платформа .Net виконує програму подібно до віртуальної машини від Java;
  • байт-код – програмний код компілюється в проміжкову мову MSIL(Microsoft Intermediate Language), а вже потім перетворюється на машинну мову, в залежності від платформи на якій запускається програма;
  • керований код – оскільки програми, написані на C#, виконуються виключно у віртуальному середовищі CLR(Common Language Runtime), це дає змогу контролювати виконання програми та у будь який момент зупинита її, а також контролювати використання пам’яті програмою, за необхідності - збільшувати, чи видаляти частини пам’яті, які використовує програма.

Версії мови C#

Версія 1

В першу версію мови увійшли:

  • властивості – конструкції подібні до полів класу, основною відмінністю від останніх є те, що при звертанні до властивостей виконуються методи get set;
  • індексатори – подібні до властивостей, але на вхід приймають індекс, як це реалізовано в масивах;
  • події – парадигми програмування, в якій на виконання програми залежить від дій користувача(взаємодія за допомогою пристроїв вводу), повідомлень отриманих від інших програм, потоків чи операційної системи;
  • цикли – конструкції, що дозволяють багатократно повторювати частини коду;
  • делегати – класи, які зберігають в собі посилання на методи;
  • структури – типи даних, які можуть містити набори значень відповідних типів.

Крім наведених, мова отримала деякі можливості, які були відсутні в Java:

  • беззнакові типи даних;
  • оператор goto;
  • перевантаження(перевизначення) операторів;
  • передача в метод параметрів за посиланням;
  • методи з різним числом параметрів(реалізується шляхом перевантаження);

В C# також залишилася можливість, хоча і дуже обмежена, використовувати вказівники.

Версія 2

В цю версію мови увійшли такі нововведення:

  • можливість розділити один клас на декілька фізичних файлів;
  • nullable типи даних, які позначаються як тип?, наприклад double? d = null;
  • узагальнені типи даних, або generics, які підтримуються на рівні CLR;
  • ітератор yield;
  • анонімні методи;
  • новий оператор “??”, який є спрощеною формою тернарного оператора, для перевірки об’єкта на null. Записи x = o1 != null ? o1 : o2; та x = o1 ?? o2 ідентичні;

Версія 3

  • підтримка LINQ(language integrated query) – синтаксису, що дозволяє використовувати запити, подібні до SQL, до різних типів даних;
  • створення об’єкту з одночасною ініціалізацією полів;
  • лямбда вирази;
  • неявна типізація, шляхом введення ключового слова var;
  • анонімні типи даних;
  • методи розширення;

Версія 4

Найважливим нововведенням став тип даних dynamic, який дозволив реалізовувати пізнє зв’язування об’єктів, для використання з:

  • динамічно типізованими мовами Python, Ruby;
  • автоматизацією продуктів Microsoft Office чрез використання COM-об’єктів;

Крім цього в мову увійшли наступні можливості:

  • бібліотека для роботи з паралельними завданнями;
  • клас MemoryCache для кешування даних;
  • класи мультипоточних колекцій в System.Collections.Concurrent;

Версія 5

Ця версія розширилась набором класів для роботи з асинхронними операціями. З’явились ключові слова async, await, а такох TAP шаблон(Task-based Asynchronous Pattern).

Версія 6

Всі зміни, що увійшли в цю версію мови С#, є синтаксичним цукром – спрощують написання конструкцій.

  • ініціалізація властивостей зі значеннями (public int Number { get; set; } = 42;);
  • інтерполяція рядків, дозволила використання імен змінних при побудові рядків (text = $“Hello {name}”);
  • лямбда-вирази для спрощеного запису методів (public int Sqr(int a) => a*a;);
  • імпорт статичних класів;
  • ініціалізація Dictionary;
  • Елвіс (null умовний) оператор - “?.”
  • оператор nameof, що повертає назву елемента, який в нього передано;
  • await в catch і finally блоках;
  • фільтри виключень.

Версія 7

  • бінарні літерали – для запису чисел у двійковій формі (0b0001);
  • локальні функції;
  • кортежі (tuples), які дозволяють методу повернути декілька значень одночасно;
  • співставлення з шаблоном (pattern matching) – дозволяє писати конструкції if(x is int i);
  • можливість повертати посилання на об’єкт.

Платформа .Net

Як Ви бачите, мова C# та платформа .Net постійно розвивається, вбираючи в себе найкращі практики використання мов програмування.

Багатомовність

Окрім C#, середовище CLR підтримує багато інших мов програмування, зокрема в Microsoft розробляють Visual Basic .Net та F#. Крім цього існують .Net реалізації мов: Delphi.Net, IronPython, IronRuby, Boo, PascalABC.Net.

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

.Net дозволяє розробляти програмне забезпечення під різні операційні системи: Windows, MacOS, Linux, Android, iOS. Mono – реалізація .Net для Linux. Середовища для розробки: Visual Studio, Visual Studio Code, Unity3D, Xamarin, SharpDevelop, MonoDevelop покривають всі операційні системи і технології, та дозволяють розробляти мабільні, настільні(desktop), Web, вбудовані(embedded) додатки та сервіси.

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

Середовище CLR та бібліотеки класів .Net Framework включають в себе основу для багатьох технологій, які розробники можуть використовувати при створенні продуктів. Зокрема LINQ, EntityFramework, ADO.Net – технології, що використовуються для роботи з даними. Технології WindowsForms, WPF, ASP.Net, ASP.Net MVC – для створення desktop та Web додатків.

Дивіться також: