C#. Історія появи мови програмування C# та технології Microsoft .NET

Історія появи мови програмування C# та технології Microsoft .NET. Причини виникнення, переваги та недоліки Microsoft .NET


Зміст


Пошук на інших ресурсах:

1. Технології програмування, що базуються на C-орієнтованих мовах. Історія та етапи розвитку. Мова програмування C

До C-орієнтованих мов програмування належать такі відомі мови як C++, C#, Java. Частина синтаксису мов була задіяна у багатьох інших мовах, наприклад, таких як Kotlin, JavaScript, PHP, Python.

Першою мовою сімейства C-орієнтованих мов була мова програмування C. Мова була розроблена у 1972 році відомим вченим Денісом Рітчі. Мова базувалась на структурному підході до програмування і вирішувала проблеми кризи програмного забезпечення тих часів. Таким чином, 1972 рік став роком початку розвитку великого сімейства мов програмування, введенні нового синтаксису порівняно з мовою Паскаль, забезпеченні більш гнучкого структурованого коду тощо. Автор цієї статті та цього сайту також народився у цьому році.

При структурному підході до програмування програма розбивалась на модулі (частини) які взаємодіяли між собою. Доброю практикою вважалось що один модуль повинен містити код розв’язку однієї задачі чи підзадачі у загальній системі взаємодії між модулями всього проекту. Розміри модуля доцільно робити обмеженими, оскільки, при зростанні кількості функцій у модулі ускладнювалось його сприйняття в цілому, що призводило до збільшення помилок.
Розширення програми здійснювалось додаванням нових модулів з новим функціоналом.

Для правильної побудови програми особливо важливе місце займали етапи проектування та розробки. Помилки, зроблені на цих етапах, могли в майбутньому значно ускладнити “супровід” програми а також її подальший розвиток.

Основний недолік проектів написаних мовою C було значне ускладнення при збільшенні розмірів програмних проектів (масштабів проекту). Це було наслідком так званого імперативного програмування, при якому отримання результату досягалось шляхом виконання послідовності інструкцій, що змінювала стан програми.

У мові C були введені базові елементи, які у мовах-нащадках (C++, C#, Java) отримали подальший розвиток. До цих елементів відносяться структури, об’єднання, зчислення, макроси тощо. Крім того, у порівнянні з іншими мовами які існували на той час, мова C поєднувала гнучкість, потужність та зручність. Це служило запорукою успіху та появі нових мов програмування.

 

2. Мови програмування C++ та Java

Подальший розвиток C-орієнтовані мови отримали в 1979 році з появою мови C++, яка була розроблена Б’ярном Страуструпом. Ця мова реалізувала парадигму об’єктно-орієнтованого підходу в програмуванні і стала розвитком мови C. У мові C++ синтаксис був повністю запозичений з мови C. Мова C++ додавала до мови C нові об’єктно-орієнтовані можливості.

Але з плином часу в області програмного забезпечення з’являлись нові вимоги які потребували змін в технологіях та появи нових мов програмування. На ці вимоги вплинув потужний розвиток мереж, зокрема мережі Інтернет. Як наслідок сучасна програма потрібна була забезпечувати:

  • міжплатформенну переносність програмного забезпечення;
  • зручну передачі проектів по мережам;
  • скорочення часу розробки програмного забезпечення тощо.

Програмне забезпечення повинно працювати коректно на будь-якій платформі (Windows, UNIX, Linux, Mac OS та інші). Основним тут є відсутність конфліктів з операційною системою при перенесенні застосунку з однієї операційної системи на іншу.

Як наслідок, у 1991 році компанією Sun Microsystems було реалізовано рішення цієї проблеми з допомогою нової мови програмування “Oak”, яка пізніше отримала назву Java. Автором мови Java вважається Джеймс Гослінг.
Щоб забезпечити кроссплатформенність потрібна наявність інтегрованого середовища виконання Java. Для забезпечення виконання додатків на Java, операційна система повинна мати відповідне встановлене програмне забезпечення що адаптує Java-додаток під потреби конкретної операційної системи. Для кожної операційної системи компанією Sun було розроблено відповідний варіант середовища виконання. Завдяки цьому міжплатформенна переносимість для Java-додатків є однією з найкращих серед відомих технологій.
Однак, використання технологій, що базуються на мові програмування Java не вирішувало всіх проблем. Прикладами цього можуть бути проблема міжмовної взаємодії, низька швидкість виконання Java-додатків (уповільнена робота на малопродуктивних платформах).
Синтаксис мови Java доповнює синтаксис мови C++ новими ключовими словами що розширюють її можливості, та, в деяких випадках, спрощує елементи які ускладнюють розуміння коду і можуть бути замінені більш спрощеними конструкціями.
Однак, розробники мови Java відмовились від багатьох сучасних мовних засобів. Прикладами цього є відсутність структур та властивостей, можливості перевантаження операторів, зміни в управлінні параметрами функцій та інше.

 

3. Мова програмування C# і платформа .NET

Після появи мови програмування Java продовжилось створення C-орієнтованих мов.
У 2000 році компанія Microsoft анонсувала про появу нової мови програмування під назвою C#. Головним архітектором мови вважається Андерс Хейлсберг, який також є автором Turbo Pascal, Delphi, TypeScript. Ця мова пропонувала багатший набір мовних засобів та механізмів порівняно з Java.

У мові C# реалізовано позитивні сторони попередніх мов C, C++, Java. Синтаксис C# перейняв основу синтаксису C++. Крім того, тут введено нові елементи, зокрема властивості, модифікатори що використовуються в параметрах функцій, індексатори тощо.

Мова C# є складовою платформи .NET та її зв’язуючою ланкою. Платформа .NET є концепцією компанії Microsoft для розвитку засобів розробки програмного забезпечення. В основі технології лежить сукупність програмних модулів, які входять в набір засобів під назвою Microsoft .NET Framework. З допомогою цього програмного набору в операційній системі Windows виконуються .NET-застосунки.

 

4. Причини виникнення платформи Microsoft .NET

До причин виникнення технології .NET можна віднести наступні:

  • забезпечення міжплатформенної переносимості. Розвиток глобальної мережі Internet та засобів комунікації вимагали необхідність створення застосунків (додатків, програмних рішень), які могли б виконуватись на будь-якому комп’ютері незалежно від архітектури операційної системи;
  • потреба в спрощенні процесу розгортання програмного забезпечення. Сучасне програмне забезпечення потребує правильного супроводу. Це означає, що з’являються нові версії програм, які не повинні конфліктувати з попередніми версіями. Процес супроводу є досить частим, а тому потребує максимальної оперативності;
  • потреба в створенні середовища виконання програмних рішень. Таке середовище створює необхідні умови для безпечного виконання різноманітних програм, вирішує проблеми контролю розподілу ресурсів в операційній системі;
  • забезпечення необхідних комунікаційних можливостей у відповідності з існуючими стандартами завдаки створенню відповідної технології розробки програмних рішень;
  • забезпечення міжмовної інтеграції. Тут мається на увазі створення такого програмного коду, який інтегрується з кодом, що створений з використанням інших технологій.

 

5. Переваги та недоліки платформи Microsoft .NET

З появою технології Microsoft .NET було вирішено ряд актуальних проблем. Ці проблеми вирішують передачу додатку по системах комунікації та його розгортування на клієнтській машині незалежно від відстані розміщення.

До переваг цієї технології відносяться:

  • ефективне вирішення проблеми міжмовної взаємодії. Це досягається шляхом реалізації механізмів, що дозволяють імпортувати програмні модулі зі збірок, які написані на інших мовах програмування. Також слід відмітити приведення даних “невідомих” або “специфічних” типів до відповідних типів загальної системи типів .NET Framework. Всі ці можливості примножуються наявністю відповідного спеціалізованого програмного забезпечення;
  • вирішення проблеми розгортання застосунків (додатків). При цьому всі застосунки є архітектурно неалежні. Процес розгортання досягається шляхом компілювання застосунків не у виконавчий код, а в проміжний код. Цей проміжний код називається Common Intermediate Language (CIL або IL). Після того, як сформовано проміжний код, команда запуску програми викликає компіляцію проміжного коду у виконавчий код з врахуванням особливостей архітектури того комп’ютера, на якому відбувається компіляція. Цей процес забезпечується з допомогою так званої JIT-компіляції (Just In Time Compilation);
  • розмір .NET-застосунків є невеликим. Це пояснюється тим, що всі необхідні бібліотеки базових класів (Base Class Library) містяться на кожному клієнтському комп’ютері. Тут передбачається, що .NET Framework обов’язково має бути встановлений на комп’ютері клієнта для коректної роботи .NET-застосунку. Таким чином, .NET-застосунок не зберігає усі необхідні бібліотеки в своєму вихідному коді. Ці бібліотеки підключаються під час запуску застосунку, і, як результат, розмір .NET-застосунку є мінімальним;
  • використання єдиного середовища часу виконання додатків – CLR (Common Language Runtime). Завдяки цьому середовищу є можливим використання безпечного (керованого) програмного коду (Managed Code). В безпечному коді середовище виконання саме керує виділенням пам’яті та різного роду ресурсів, а також керує доступом до них. Завдяки цьому у розробника зменшується кількість проблем шляхом уникнення додаткового програмування задач керування пам’яттю, розподілу ресурсів тощо. Таким чином програміст безпосередньо зосереджується на розв’язанні поставленої задачі.

Однак, не всі проблеми були вирішені цією технологією. Нижче перераховано недоліки технології Microsoft .NET:

    • міжплатформенна переносимість .NET-застосунків добре придатна тільки для сімейства операційних систем Windows. Для інших операційних систем (наприклад Linux), розроблений застосунок потребує модифікації в якій буде враховано відмінності в архітектурах цих систем. Це є найбільш суттєвим недоліком платформи Microsoft .NET;
    • перший запуск застосунку (додатку) відбувається з затримкою. Це пов’язано з тим, що компіляція відбувається після запуску застосунку. Тут розглядається випадок, якщо застосунок вже готовий до виконання і не містить синтаксичних помилок. Однак, другий, третій і наступні запуски додатку відбуваються швидко, тому що вже сформовано виконавчий файл (у тимчасовій директорії) і повторна компіляція не потрібна. У випадках, якщо формується нова версія застосунку або виконавчий файл буде видалено, то відбудеться перекомпіляція, після якої перший запуск знову буде уповільнений;
    • відносно уповільнене виконання застосунку. Причин цьому є декілька. По-перше, це інтегроване середовище виконання, яке забирає частину системних ресурсів на власні потреби. По-друге, це використання середовища виконання як посередника між ресурсом та застосунком з метою забезпечення безпеки. Середовище отримує посилання на ресурс від застосунку і повертає цей ресурс застосунку. Якби застосунок звертався до ресурсу безпосередньо, то виконання би пришвидшилось.

 


Споріднені теми