10 Причин освоїти мову ada, якщо ви вже знаєте c або java

Версія для друку

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

Так що у програміста-практика причин вивчати Ada немає просто тому, що він не знайде роботу, де б це стало в нагоді. Те ж саме - для керівника проекту, плюс до того проблема - він не знайде тлумачних виконавців. Коло, на жаль, замкнулося. Однак Сергій Рибін, к.т.н., старший науковий співробітник НИВЦ МГУ і консультант компанії AdaCore EU вУкаіни сформулював 10 технічних і ідейно-філософських причин, за якими варто було б вивчити мову Ada.

10 Причин освоїти мову ada, якщо ви вже знаєте c або java

Мова Ada - унікальне явище в інформаційних технологіях

Завжди корисно знати і розуміти історію розвитку своєї професійної області. Ada в програмної інженерії - явище унікальне. Це єдина мова, яку:

  • був задуманий як засіб вирішення важливої ​​проблеми, причому існування і специфіка цієї проблеми були ретельно досліджені до того;
  • був розроблений систематично, починаючи з вироблення детальних технічних вимог до мови;
  • був розроблений в ході ретельно і грамотно організованого міжнародного конкурсу;
  • відразу побачив світ у вигляді американського національного стандарту, який дуже швидко був затверджений як стандарт ISO;
  • засоби контролю відповідності реалізацій стандарту були готові раніше, ніж виникла перша реалізація нової мови;
  • в результаті у Ada ніколи не було, немає і не буде, діалектів і версій, слово "Ada" в кожен момент часу позначала для всіх один і той же - то, що написано в стандарті мови, і кожен компілятор реалізовував (з точністю до помилок ) саме це;
  • еволюція мови здійснюється шляхом перегляду його міжнародного стандарту з близькою до 100% відсотків сумісністю (збереження працездатності існуючого коду);

Якісь із перерахованих пунктів справедливі і для інших мов, але все разом - тільки для Ada.

Наприклад, Ada - єдиний з мов програмування, який:

10 Причин освоїти мову ada, якщо ви вже знаєте c або java

Мова Ada - це філософія і ідеологія програмування

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

Істотним елементом «Пекельної філософії» є те, що з точки зору мови Ada і Ada-програміста розробка програми - це не створення коду, а визначення набору абстракцій відповідного рівня, які відповідали різним компонентам і аспектам розв'язуваної задачі, з подальшим використанням цих абстракцій. Причому мова Ada націлює програміста на створення надійних і захищених абстракцій, тобто тих, які мають рівно тими і ТІЛЬКИ тими властивостями, які від них потрібні, і НЕ ДОЗВОЛЯЮТЬ використовувати себе некоректним чином. В результаті більшість проблем, які в разі інших мов виявляються в результаті болісних годин, а то й днів, проведених в отладчике, в разі Ади будуть швиденько виявлені компілятором на ранніх етапах створення коду.

З технічної точки зору з моменту свого виникнення і для всіх наступних ревізій стандарту Ada є унікальним об'єднанням в рамках однієї мови технічних засобів і можливостей, кожне з яких саме по собі унікальним не є.

10 Причин освоїти мову ada, якщо ви вже знаєте c або java

Так, мова Ada виник з ініціативи Пентагону для їх проектів. Але це вже - далека історія. Зараз ніхто нікого не змушує використовувати мову програмування Ada. Однак не випадково ж багато проектів в областях, де ціна помилки може бути не просто висока, а неприйнятно висока, вибрали і продовжують вибирати мову програмування Ada?

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

Зв'язка Jovial-Ada, досить ефективно використовується в авіоніки вже сьогодні, в недалекому майбутньому однозначно не матиме конкурентів у сфері створення програм для вбудованих бортових систем військового профілю. Особливо після провалу проекту літака F-35. Ставка на мови програмування С і C ++ - фатальна помилка допущена при створенні літака F-35.

ВУкаіни є достатній досвід використання мови Ada, взяти хоча розробку програмного забезпечення для літака Іл-96-300, літака-амфібії Беліев Бе-200 і космічної станції Альфа, автоматизована станції документального зв'язку Міністерства оборони Укаїни. українською компанією AVD Systems.

українська компанія AVD Systems - є постачальником рішень в Україні та СНД для відповідальних вбудованих комп'ютерних систем, апаратних і програмні компонентів, засобів розробки таких фірм як: Esterel Technologies, Wind River, AdaCore. Продукцію саме цих фірм вибрав концерн «приладобудування».

Франція традиційно використовує мову програмування Ada, починаючи з роботизованою 14 лінії метро в Парижі - в поїздах цієї лінії немає машиніста. Французький автопром в останні кілька років також активно переходять на системи проектування з коду генератором для мови Ada. Це ж відбувається і в Японії. Китай також став интесивно вивчати мову програмування Ada.

Ось що повідомив KV.by Василь Фофанов співробітник фірми AdaCore:

«... Поки що ми бачимо якраз навпаки, що до нас ідуть нові сектори індустрії, з якими ми раніше взагалі не мали ніякого діла, саме тому що вони починають втрачати контроль за складністю своїх систем, і хочуть повчитися у авіації. Медичні прилади, автомобілі. Так автомобілі. У нас люди не вилазять з японських відряджень, ця країна у нас на радарі кілька років тому була відсутня взагалі ... Ada і С ++ цілком взаємозамінні. Але статистика показує, що проекти на С ++ мають серйозні проблеми із забезпеченням якості, і мають більш високу вартість життєвого циклу на рядок коду.

Звичайно. Зв'язок з багатомільярдними втратами найпряміша. А також з тим фактом, що регламентують органи теж починають прокидатися і готуються припечатує автобудівників такими ж вимогами по сертифікації як в авіації / Желдора. По-старому відповідно робити вже не можна, а вчитися в інших місцях, крім як у вже вміють це робити областей - ніде. ... Компілятор Ada генерує такий же асемблерний код, як і C. Чи не "схожий", а просто такий же, аж до розподілу регістрів. І у нас є компілятор для пристроїв рівня tinyAVR і їм подібних. Проблем ніяких немає, бо зрозуміло що "if (a == b).;" і "if a = b then. end if;" на цільову платформу відображаються ідентичним чином. Природно, при цьому використовується рантайм з нульовим профілем, і відповідно ряд можливостей мови, які потребують підтримки часу виконання, відключені або як мінімум обрізані.

10 Причин освоїти мову ada, якщо ви вже знаєте c або java

Ви знайдете зіставні можливості при альтернативної реалізації

Всі сучасні індустріальні мови програмування надають більш-менш порівнянні можливості, розрізняючи не стільки тим, * що * вони дозволяють робити, скільки тим, * як саме * вони це дозволяють. Вивчивши мову Ada, ви отримаєте знання про те, як ще може бути організована система типів, модульність і роздільна компіляція, як можуть бути реалізовані парадигми ООП в порівнянні з тими мовами, що ви знаєте.

Так, наприклад, Ada надає повноцінні можливості ООП, але разом з тим в мові немає синтаксично оформленого поняття класу, традиційного для ООП. Ada показує, що віртуальні операції абсолютно необов'язкові для забезпечення динамічного поліморфізму, для цього цілком достатньо диспетчеризації, яка може виявитися більш ефективною. І т.д. Подібне знання (а як ще може бути зроблена добре відома мені річ?) Ніколи не буде зайвим.

Мови насправді безсоромно "крадуть" ідеї один у одного. Зараз про це практично не говорять уже, але С ++ списав свої класи з пакетів Ada -83.

10 Причин освоїти мову ada, якщо ви вже знаєте c або java

Насправді пункт 4 - брехня. Ada вміє все, що вміють її прямі конкуренти (С ++, Java) - і ще багато чого корисного і цікавого, чого її конкуренти не вміють в принципі. Зокрема:

- високорівневі засоби керування асинхронними процесами (як конструкції мови, а не бібліотечні виклики!) з можливістю вибору процесом варіантів поведінки в залежності від ситуації;

- ієрархічна модульність, що дозволяє мінімізувати перекомпіляції і, що ще можливо, розвивати існуючий код, не руйнуючи захищені абстракції;

- система підтип і пов'язаний з нею механізм винятків;

10 Причин освоїти мову ada, якщо ви вже знаєте c або java

Ви можете використовувати різні типи технологій програмування

Ada дозволяє легко виділяти технологічні підмножини залежно від розв'язуваної задачі. Наприклад, не потрібно вам ООП - так і забудьте про нього! І це не буде вам коштувати ніяких додаткових незручностей. При цьому ви як і раніше зможете створювати і використовувати в своєму коді надійні захищені абстракції.

Чи легко в С ++ програмувати, не використовуючи класи?

10 Причин освоїти мову ada, якщо ви вже знаєте c або java

Мова Adaвиражает, то, що думає програміст

Незважаючи на те, що Ada вміє істотно більше, ніж конкуренти, сама мова влаштований куди простіше і зрозуміліше конкурентів. Досить порівняти обсяги стандартів Ada і С ++. Більш того, опис Ada "замкнуто" в тому сенсі, що не використовує міфічних понять, подібних "простору імен" в С ++. Всі особливості семантики мови описані в термінах структурних компонент коду, тобто - синтаксису.

Все зумовлене оточення Ada-програми також описується в термінах мови - у вигляді набору специфікацій пакетів, написаних на Ada. Для мови Ada відповідь на питання "А що таке Integer?" - рівно такий же, як і на питання про будь-якому іншому типі, можна пальцем показати те місце, де Integer визначено.

А що таке int в С ++?

Ми повинні навчитися виражати, то, що ми думаємо. І мова Ada дозволяє нам висловити це ясно, і в цьому, в кінцевому рахунку, його сила.

10 Причин освоїти мову ada, якщо ви вже знаєте c або java

У Ada - простий, зрозумілий, легко Новомосковскемий синтаксис, який істотно знижує ризик ситуацій, коли випадкова помилка призводить до того, що код не стає формально неправильним, але істотно змінюється його семантика.

10 Причин освоїти мову ada, якщо ви вже знаєте c або java

Є GPL-версія системи програмування GNAT

10 Причин освоїти мову ada, якщо ви вже знаєте c або java

Ви не будете самотні в процесі вивчення язикаAda

У Харківському національному університеті імені В.Н.Каразіна раз на два роки проходить міжнародна конференція «Комп'ютерне моделювання в наукоємних технологіях». На секціях цієї конференції можна виступити з доповіддю.

Також на Україні щорічно проводиться англомовна міжнародна конференція Dependable Systems, Services Technologies (DESSERT). У DESSERT є секція присвячена застосуванню мови програмування Ada і інших мов для критичних до безпеки і надійності додатків Workshop on Ada Technology and Language Diversity (AdaLanD WS).

Компанії AdaCore EU / USA для ВНЗ підтримує програму GAP (The GNAT Academic Program. Encouraging the use of Ada in Academia). Є кілька англомовних форумів.

KV.by дякує учасникам ADA-RU, які взяли активну участь в обговоренні теми статті і поділилися своїм досвідом практичного застосування мови Ada.