10 причин освоїти мову Ada, якщо ви вже знаєте C ++ або Java

Фахівців з Аді на пострадянських просторах - одиниці. А область застосувань цієї мови в світі по "абсолютною величиною" величезна (прім.автора: мається на увазі в грошовому еквіваленті), хоча у відносному вимірі може здаватися скромною. Це практично все ПЗ критичного призначення (не рахуючи "війни") це авіоніка, атомна енергетика, керуючі системи в інших промислових галузях, часто вбудовані, до яких на Java, ну ніяк, що не під'їдеш!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

вибір індустрії

Так, мова 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;" на цільову платформу відображаються ідентичним чином. Природно, при цьому використовується рантайм з нульовим профілем, і відповідно ряд можливостей мови, які потребують підтримки часу виконання, відключені або як мінімум обрізані.

Природно, при цьому використовується рантайм з нульовим профілем, і відповідно ряд можливостей мови, які потребують підтримки часу виконання, відключені або як мінімум обрізані

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

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

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

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

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

Мова Ada перевершує С ++ і Java

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

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

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

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

- виконувані специфікації і контрактне програмування (Ada 2012 - вся ці пре- і пост-умови і різноманітні інваріанти).

- виконувані специфікації і контрактне програмування (Ada 2012 - вся ці пре- і пост-умови і різноманітні інваріанти)

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

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

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

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

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

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

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

Багато років тому, на лекціях NATO Крістофер Страча, один з авторів CPL сказав: «Те, як люди вчаться програмувати, огидно. Вони знову і знову вчаться каламбурити. Вони використовують операції зсуву замість множення, заплутують код використовуючи бітові маски і числові літерали, і взагалі кажуть одне, коли мають на увазі щось зовсім інше. Я думаю, у нас не буде інженерного підходу до розробки програмного забезпечення до тих пір, поки у нас не закріпляться професійні стандарти про те, як писати програми. А досягти цього можна лише починаючи навчання програмуванню з того, як писати програми належним чином. Я переконаний, що в першу чергу необхідно почати говорити саме те, що ви хочете сказати, а не щось інше ».

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

безпечний синтаксис

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

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

Не вважайте за рекламу AdaCore, але якщо ви зібралися спробувати програмувати на мові Ada, то у вашому розпорядженні - абсолютно безкоштовно і легально перебуває GPL-версія системи програмування GNAT, яка є не демо-версією з обрізаної функціональністю, а практично тієї ж версією що використовується в той же самий час в індустрії. Більш того, безкоштовно можна спробувати навіть крос-компілятор для arm-elf (STM32F4DISCOVERY і тому подібні) і варіант адаптований для Raspberry Pi 2.

Ви не будете самотні в процесі вивчення мови 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.

Однак не випадково ж багато проектів в областях, де ціна помилки може бути не просто висока, а неприйнятно висока, вибрали і продовжують вибирати мову програмування Ada?
А як ще може бути зроблена добре відома мені річ?
Чи легко в С ++ програмувати, не використовуючи класи?
Для мови Ada відповідь на питання "А що таке Integer?
А що таке int в С ++?

Уважаемые партнеры, если Вас заинтересовала наша продукция, мы готовы с Вами сотрудничать. Вам необходимо заполнить эту форму и отправить нам. Наши менеджеры в оперативном режиме обработают Вашу заявку, свяжутся с Вами и ответят на все интересующее Вас вопросы.

Или позвоните нам по телефонам: (048) 823-25-64

Организация (обязательно) *

Адрес доставки

Объем

Как с вами связаться:

Имя

Телефон (обязательно) *

Мобильный телефон

Ваш E-Mail

Дополнительная информация: