Ада Августа Байрон

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

МІНІСТЕРСТВО ОСВІТИ І НАУКИ РТ
РЕФЕРАТ
Ада Августа Байрон
Виконав
Ісламов А.А. група 2815б
Алмет'евськ 2008

Ада Августа Байрон

Навіть громадяни колишнього СРСР вже знають, що 10 грудня - День прав людини, заснований ООН на честь прийняття в 1948 році Загальної декларації прав людини (радянські часи саме існування цієї декларації замовчувалося). Загальновідомо також, що з 1901 року саме 10 грудня вручаються щорічні Нобелівські премії в пам'ять про їх засновника Альфреда Нобеля, який помер у цей день у 1896 році. Але є і ще одне, менш відоме, визначення для цієї дати, має, однак, саме пряме відношення до роду занять багатьох наших читачів, - 10 грудня названо Днем програміста на вшанування яка також у цей день першої представниці цієї дуже давньої професії Ади Серпні Лавлейс, єдиної дочки прославленого англійського поета Джорджа Гордона Байрона і його дружини Аннабелли Мілбенк.
Навіть громадяни колишнього СРСР вже знають, що 10 грудня - День прав людини, заснований ООН на честь прийняття в 1948 році Загальної декларації прав людини (радянські часи саме існування цієї декларації замовчувалося). Загальновідомо також, що з 1901 року саме 10 грудня вручаються щорічні Нобелівські премії в пам'ять про їх засновника Альфреда Нобеля, який помер у цей день у 1896 році. Порившись в календарях, енциклопедіях, довідниках, а також помандрувавши Інтернетом, можна виявити, що 10 грудня 1799 року, Франція перейшла на метричну систему заходів (у чому з ним до цих пір ніяк не можуть послідувати Сполучені Штати Америки), в 1828 році був заснований Санкт-Петербурзький технологічний інститут, що в цей день народилися російський поет Микола Некрасов, американська поетеса Емілі Дікінсон і українська письменниця Марко Вовчок, французькі письменник Ежен Сю і композитор Цезар Франк, британський фельдмаршал Харолд Александер, який здобув титул "Туніський", і радянський " діяч "недоброї пам'яті Андрій Вишинський, лауреат Нобелівської премії з літератури шведсько-німецька поетеса Неллі Закс, клоун Карандаш, хокейний тренер Анатолій Тарасов, диригент Юрій Темірканов, літературознавець і філософ Сергій Аверинцев і багато інших. Але є і ще одне, менш відоме, визначення для цієї дати, має, однак, саме пряме відношення до роду занять багатьох наших читачів, - 10 грудня названо Днем програміста на вшанування яка також у цей день першої представниці цієї дуже давньої професії Ади Серпні Лавлейс, єдиної дочки прославленого англійського поета Джорджа Гордона Байрона і його дружини Аннабелли Мілбенк.
Ада Августа Байрон народилася 10 грудня 1815 року; батьки її розлучилися, коли дівчинці було два місяці, і більше свого батька вона не бачила. Байрон присвятив дочки кілька зворушливих рядків "Паломництво Чайльд Гарольда", але при цьому в листі до своєї кузини заздалегідь турбувався: "Сподіваюся, що Бог нагородить її чим завгодно, але тільки поетичним даром ..." Ще менш планувала розвитку у дочки літературних схильностей мати, яку в світі за захопленість точними науками прозвали "принцесою паралелограмів". Ада отримала прекрасну освіту, в тому числі і в області математики. До 1834 року належить її перше знайомство з видатним математиком і винахідником Чарльзом Бебіджем (1791-1871), творцем першої цифрової обчислювальної машини з програмним управлінням, названої ним "аналітичної".
Машина Бебіджа була задумана як чисто механічний пристрій з можливим приводом від парового двигуна, але містила ряд фундаментальних ідей, характерних для сучасних комп'ютерів. У ній передбачалася робота з адресами і кодами команд, дані вводилися за допомогою перфокарт. Основи програмування також були закладені Бебіджем. Незважаючи на майже сорокарічний працю свого творця, машина так і не була добудована, випереджаючи не тільки потреби, а й технічні можливості свого часу. Багато з ідей Бебіджа просто не могли бути реалізовані на базі механічних пристроїв і були затребувані тільки через століття, з розробкою перших електронних обчислювальних машин. Зрозуміло, що сучасники ставилися до робіт Бебіджа як до, принаймні, екстравагантному дивацтва. Дружина відомого англійського математика того часу де Моргана, під керівництвом якої Ада Августа вивчала математику, так описувала їх перший візит до Бебіджа: "Поки частина гостей в здивуванні дивилася на це дивовижне пристрій з таким почуттям, з яким, кажуть, дикуни вперше бачать дзеркальце або чують постріл з рушниці, міс Байрон, зовсім ще юна, змогла зрозуміти роботу машини і оцінила велике достоїнство винаходи ". Бебідж знайшов в Аді як вдячну слухачку, але й вірного помічника. Він щиро прив'язався до дівчини, що була майже ровесницею його рано померлої дочки.
У 1835 р. Ада Байрон вийшла заміж за Вільяма, вісімнадцятого лорда Кінга, який став згодом першим графом Лавлейс. (У деяких російських публікаціях з титулом сімейства Лавлейс пов'язується слово ловелас; це помилка: Ловелас - ім'я героя популярного на початку минулого століття роману Річардсона "Кларисса Гарло", що було загальним для позначення тяганини, спокусника). Чоловік не мав нічого проти наукових занять дружини і навіть заохочував їх у них. Щоправда, високо цінуючи її розумові здібності, він журився: "Яким відмінним генералом ти могла б стати!" Поява дітей на час відволікло Аду від занять математикою, але на початку 1841 р. вона пише Бебіджа: "Я сподіваюся, що моя голова може виявитися корисною Вам в реалізації Ваших цілей та планів протягом найближчих трьох-чотирьох, а може бути, і більше років ".
На прохання Бебіджа, Ада зайнялася перекладом нарису італійського військового інженера Луї Фредеріко Менабреа (у майбутньому професора механіки Туринського університету, одного з лідерів боротьби за об'єднання Італії, з 1867 р. - її прем'єр-міністра і міністра закордонних справ). Менабреа в 1840 р., слухаючи в Турині лекції Бебіджа, докладно записав їх, і у своєму нарисі вперше дав повний опис аналітичної машини Бебіджа і його ідей програмування обчислень. Він писав: "Сам процес обчислення здійснюється за допомогою алгебраїчних формул, записаних на перфорованих картах, аналогічних тим, що використовуються в ткацьких верстатах Жаккара. Уся розумова робота зводиться до написання формул, придатних для обчислень, вироблених машиною, і якихось простих вказівок, як і послідовності ці обчислення мають здійснюватися ".
Леді Лавлейс не просто перевела нарис Менабреа, але і забезпечила його великими коментарями, які в сумі майже втричі перевищили обсяг оригінального тексту. Всі коментарі, їх загальна структура і зміст детально обговорювалися і узгоджувалися з Бебіджем. Відомий своєю нетерпимістю до чужої думки, Бебідж, тим не менше, був у захваті від оригінальних проробок своєї учениці: "Чим більше я читаю Ваші примітки, тим більше дивуюся Вашої інтуїції ... Мені не хочеться розлучатися з Вашим чудовим філософським розглядом моєї аналітичної машини ... "
Книга Менабреа з коментарями, підписаними ініціалами AAL (Ada Augusta Lovelace), вийшла в світ у серпні 1843 року. Віддаючи належне обом авторам, Бебідж писав: "Сукупність цих робіт (Менабреа і Лавлейс) для тих, хто може слідувати ходу їх міркувань, наочну демонстрацію того, що практично будь-які операції математичного аналізу можуть бути виконані з допомогою машини". При цьому Бебідж так до кінця і не примирився з концепцією Ади, яку згодом Тьюринг іменував шостим постулатом противників ідеї мислячої машини: "Аналітична машина не претендує на те, щоб створювати щось справді нове. Машина може виконувати лише те, що ми вміємо їй наказати ".
У коментарях Лавлейс було наведено три перші в світі обчислювальні програми, складені нею для машини Беббіджа. Найпростіша з них і найбільш детально описана - програма рішення системи двох лінійних алгебраїчних рівнянь з двома невідомими. При розборі цієї програми було вперше введено поняття робочих осередків (робочих змінних) і використана ідея послідовної зміни їх змісту. Від цієї ідеї залишається один крок до оператора присвоєння - однієї з основних операцій всіх мов програмування, включаючи машинні. Друга програма була складена для обчислення значень тригонометричної функції з багаторазовим повторенням заданої послідовності обчислювальних операцій; для цієї процедури Лавлейс ввела поняття циклу - однієї з фундаментальних конструкцій структурного програмування. У третій програмі, призначеної для обчислення чисел Бернуллі, були вже використані рекурентні вкладені цикли. У своїх коментарях Лавлейс висловила також чудову здогад про те, що обчислювальні операції можуть виконуватися не тільки з числами, але і з іншими об'єктами, без чого обчислювальні машини так би і залишилися всього лише потужними швидкодіючими калькуляторами.
Після завершення роботи над перекладом і коментарями Ада запропонувала Бебіджа, що вона буде консультувати осіб, зацікавлених у використанні обчислювальних машин, щоб Бебідж не відволікався від основної роботи з доведення своєї аналітичної машини. Але час для обчислювальних машин ще не прийшло, натовпу користувачів не поспішали отримати консультацію у леді Лавлейс, більш того - в 1842 р. уряд Британії відмовило Бебіджа у фінансовій підтримці його розробок. Бебідж був готовий на все, щоб роздобути необхідні гроші. Зокрема, разом з подружжям Лавлейс він захопився ідеєю створення "справді наукової, математичної" системи ставок на перегонах, яка давала б вірний виграш. Як і слід було очікувати, "система" не спрацювала і принесла тільки розчарування, але і великі фінансові втрати. Найбільш стійким її прибічником виявилася графиня Лавлейс - вона продовжувала завзято грати, навіть потай від чоловіка і Бебіджа, намагаючись удосконалити систему. На цьому вона втратила майже всі свої особисті кошти. До того ж, на початку 50-х років її здоров'я несподівано і різко погіршилося, і в 1852 р. Ада Лавлейс померла у віці 37 років, як і її батько, і була похована поряд з ним у фамільному склепі Байронов.
Ім'я Ади Лавлейс воскресло з небуття в середині 1930-х років у зв'язку з роботами англійського математика Алана Тьюрінга, переставив нас поняття логічної алгоритмічної структури, що отримала назву машини Тьюрінга, а також подальшим створенням перших електронних обчислювальних машин.
До кінця 1970-х років дослідження, проведені в міністерстві оборони США, виявили відсутність мови програмування високого рівня, який би підтримував всі основні етапи створення програмного забезпечення. Застосування різних мов програмування в різних додатках призводило до несумісності розроблюваних програм, дублювання розробок та іншим небажаним явищам, включаючи зростання вартості програмного забезпечення, багаторазово перевищує вартість самої обчислювальної техніки. Вихід з кризи вбачався у розробці єдиних мови програмування, середовища підтримки і методології застосування. Всі три складові цього проекту розроблялися дуже ретельно із залученням найбільш кваліфікованих фахівців різних країн. У травні 1979 р. переміг у конкурсі розробки мов визнано мову Ада, названий на честь Ади Серпні Лавлейс, і запропонований групою під керівництвом француза Жана Ишбиа. Прототипом цієї мови з'явився мова програмування, названий на честь Блеза Паскаля, який ще у віці дев'ятнадцяти років, в 1624 р., розробив проект "паскаліни" або, по-іншому, "Паскалева колеса" - першої механічної обчислювальної машини. З появою і широким поширенням персональних комп'ютерів мову Ада багато в чому втратив своє значення, проте до цих пір використовується як мова високого рівня для розробки програм, що працюють в реальному масштабі часу.
Цікаво, що на честь Ади Лавлейс названі в Америці також два невеликі міста - у штатах Алабама і Оклахома. У Оклахомі є і коледж її імені. Начебто б, - трохи, але, разом з тим, є люди, щиро вважають, що на сьогоднішній день слава (або, принаймні, популярність) Ади Лавлейс затьмарила славу її знаменитого батька, і що її внесок у світову цивілізацію, принаймні , порівняємо з внеском великого поета.
Ada - універсальна мова програмування, що включає в себе кошти для створення паралельних програм. Офіційна мова програмування Міністерства оборони США. Існує безліч компіляторів для самих різних платформ. Поточна версія: Ada-95
У справі розробки нових мов програмування багато суперечка - них моментів, прикладом яких може бути ADA - новітнє засіб програмування, розроблене Міністерством оборони США і відмінне надзвичайно великими можливостями. Мова програмування ADA, як відомо, був розроблений з метою заміни застарілих і все менше використовуваних мов, таких як COBOL і FORTRAN. Труднощі полягають у тому, що цикл заміни однієї мови програмування іншим охоплює період від 20 до 30 років і не починається до тих пір, поки ми не переконаємося на ділі, що нині існуючі мови більше не відповідають нашим вимогам. Ми можемо прискорити цей процес, почавши негайну заміну застарілих мов мовою ADA. При цьому, коли ми прийдемо до висновку, що ADA вже застарів, заміна на нього тільки лише встигне завершитися. У нового покоління розробників мов програмування з'явилася тенденція називати розроблені ними мови іменами реальних людей, а не вдаватися до звичайних акронимам. Так мову PASCAL отримав назву на честь першого творця рахункових машин, а мова ADA названий на честь першого програміста. ADA
Мова ADA названий на честь Августи Ади Байрон (Augusta Ada Byron), використовувався практично виключно Міністерством оборони та іншими урядовими органами США. Експерти відносили ADA до посередніх мов, оскільки він складний для вивчення (уряд не завжди керувався логікою). Цей мова була прийнято стандартом в урядових органах США і був затверджений Міністерством оборони в 1979 році.
Різновиди: Atree ADA, Janus ADA, Meridian ADA.
У справі розробки нових мов програмування багато спірних моментів, прикладом яких може бути ADA - новітнє засіб програмування, розроблене Міністерством оборони США і відмінне надзвичайно великими можливостями. Мова програмування ADA, як відомо, був розроблений з метою заміни застарілих і все менше використовуваних мов, таких як COBOL і FORTRAN.
Труднощі полягають у тому, що цикл заміни однієї мови програмування іншим охоплює період від 20 до 30 років і не починається до тих пір, поки ми не переконаємося на ділі, що нині існуючі мови більше не відповідають нашим вимогам. Ми можемо прискорити цей процес, почавши негайну заміну застарілих мов мовою ADA. При цьому, коли ми прийдемо до висновку, що ADA вже застарів, заміна на нього лише встигне завершитися.
У нового покоління розробників мов програмування з'явилася тенденція називати розроблені ними мови іменами реальних людей, а не вдаватися до звичайних акронимам. Так мову PASCAL отримав назву на честь першого творця рахункових машин, а мова ADA названий на честь першого програміста. Вирішивши назвати свій новий мову на честь якого-небудь людини, ми вибрали Чарльза Баббиджа, який помер у бідності, намагаючись закінчити створення першої ЕОМ. Нова мова, таким чином, названий на честь першого розробника систем, та її розробка проводиться, подібно розробкам самого Баббиджа, без визначеної фінансової підтримки, що, природно, дещо гальмує роботу.
Мова BABBAGE заснований на елементах мов, які були відкриті після того, як було завершено створення мови ADA.К. А.Р. Хоор у своїй лекції, яку Асоціація з обчислювальної техніки в 1980 році присудила йому премію Тьюринга, про два шляхи розробки програмного забезпечення. Один шлях полягає в тому, щоб зробити програму настільки простий, що стає цілком очевидно відсутність будь - яких недоліків. А інший шлях полягає в тому, щоб зробити програму настільки складною, що це виключало б будь-яку можливість будь-яких похибок. Розробники мови BABBAGE вибрали третій шлях, тобто створити мову, який містить лише явні недоліки. Програми на BABBAGE відрізняються такою низькою надійністю, що процедури профілактичного контролю можна починати доти, як інтеграція всієї системи завершиться. Це є гарантією постійного зростання попиту на продукцію розробників на ринку збуту в області обробки даних.
Як і в мові PASCAL в мові ADA використовується принцип "суворої друку" з метою уникнути появи помилок, які можуть бути результатом змішання різних типів даних. Розробники мови BABBAGE виступили на захист принципу "надійної друку" з тим, щоб уникнути помилок, що з'являються в результаті неправильного написання слів в програмі користувача. У наступних версіях мови BABBAGE стане можливим застосування "друку по сліпому методу", що дозволить задовольнити давно назрілі вимоги користувачів.
Спірним питанням, правильність рішення якого обговорюється багатьма розробниками мов програмування, є метод передачі параметрів у підфункції. Деякі розробники виступають на захист "виклику по імені", інші вважають за краще "виклик за значенням". У мові BABBAGE використовується новий метод - "виклик по телефону". Цей метод виявився особливо ефективним при передачі параметрів у процесі дистанційної обробки даних.
В основу мови ADA покладено ідею портативності. У процесі розробки мови BABBAGE розробниками враховується перш за все портативність апаратури. Зрештою, яка користь від ЕОМ, якщо замовник не може постійно мати машину під рукою або програмне забезпечення виявляється нестерпним.
Відомо, що розробка мови програмування проходить успішно, якщо вона знаходить фінансову підтримку з боку уряду. Розробка мови COBOL, наприклад, фінансувалася урядом, а мови ADA - Міністерством оборони. Після довгих переговорів Міністерство Охорони Здоров'я погодилася надати фінансову підтримку розробникам мови BABBAGE.
У мові ADA довго не допускалося використання підмов. В основу мови BABBAGE, для збільшення його гнучкості покладено можливість розширення мови. Кожен користувач може і повинен сам визначити розмір своєї версії мови програми. Спірне питання про розмір BABBAGE відпадає, тому що кожен користувач сам визначає розмір мови відповідно до його вимог. BABBAGE, таким чином, є ідеальним мовою для генерації версії компілятора у кожному окремому випадку.
Нижче наведені приклади, які можуть дати певне уявлення про мову BABBAGE.
У структурних мовами програмування заборонялася заміна операторів передачі управління GOTO і багатоходових умовних переходів більш простою структурою IF-THEN-ELSE. У мові BABBAGE є кілька нових операторів умовного переходу, які виконують роль кінцевих термів в структурі програми користувача:
WHAT IF (що й) використовується у мовах програмування; перехід виконується перед перевіркою контрольованого умови;
OR ELSE (інакше) наявність варіанта, як, наприклад, у фразі "Додати ці два числа, OR ELSE (або інакше)";
WHY NOT? (Чому ні?) Виконує код що йде в байдуже якому порядку;
WHO ELSE? (Хто ще?) Використовується для опитування під час операцій введення / виводу;
ELSEWHERE (десь в іншому місці) використовується для того, щоб вказати, що програма користувача знаходиться десь в іншому місці, тоді як він вважає, що вона тут;
GOING GOING GONE (йду йду пішов) використовується для запису неструктурних програм; виконує довільний перехід до іншої частини програми користувача; виконує роботу 10-ти операторів GOTO.
Протягом багатьох років в мовах використовувалися оператори FOR (протягом), DO UNTIL (виконувати до тих пір, поки), DO WHILE (виконувати в той час, як) та інших для позначення циклу (LOOP). Досліджуючи цей напрямок, розробники мови BABBAGE пропонують нижчезазначені оператори, які позначають цикл програми:
DON'N DO WHILE NOT (не виконувати попри) цей цикл не виконується, якщо контрольоване умова не є хибним (або якщо це полудень у П'ятницю);
DIDN'T DO (не виконувалося) цикл виконується один раз і припиняє подальше виконання будь-яких циклів;
CAN'T DO (неможливо робити) виконання циклу не може продовжуватися;
WON'T DO (відмова виконувати) центральний процесор призупиняє виконання програми, так виявляє похибки в коді виконуваного циклу програми; виконання програми може бути відновлено, якщо на пульті буде набрано "May I?" ("Можна мені?");
WIGHT DO (можна не виконувати) залежить від того, яке рішення буде прийнято центральним процесором; виконання, якщо CPU перебуває в робочому стані; припинення виконання, якщо CPU може зупинки, або якщо CPU може зупинки помилково;
DO ONTO OTHERS (у всьому, як хочете, щоб чинили з вами, так само чиніть і ви з іншими) використовується під час запису основного циклу систем, що працюють у режимі поділу часу, з метою використання в цих системах єдиного способу реалізації взаємовідносин між окремими користувачами;
DO BACH (зобразити Баха) використовується для запису тимчасових циклів для музики, що генерується за допомогою ЕОМ (визначення потрібного ритму).
У кожному структурному мові, що відповідає останнім вимогам, є оператор CASE для реалізації багатоходового розгалуження. Так було в мові ALGOL є оператор CASE з індексацією, а в мові PASCAL оператор з ідентифікацією. Тобто в цих мовах вибір не дуже великий. У мові BABBAGE, навпаки, є цілий
ряд операторів цього класу:
JUST IN CASE (про всяк випадок) призначений для обробки запасних пояснень та вводяться в останню хвилину відомостей; дозволяє користувачеві виконувати множення на нуль з метою виправлення, якщо випадково виконано розподіл на нуль; дозволяється також виконання зворотного (восстанавливающего) дії і після випадкового виконання множення ;
BRIFF CASE (випадок короткої записи) призначений для забезпечення стислості програми;
OPEN AND SHUT CASE (випадок "відкрити і закрити") при використанні цього оператора ніякого доказу правильності не потрібно;
IN ANY CASE (в будь-якому разі) цей оператор завжди означає робочий стан;
HOPELESS CASE (безнадійний випадок цей оператор завжди означає неробочий стан;
BASKET CASE (безвихідне стан) оператор справді означає безвихідне стан.
Співробітники, що входять до групи розробки мови BABBAGE, постійно працюють над новими особливостями мови, що буде сприяти невпинному зростанню рівня ефективності даного мови за його використання замовниками. Наприклад, розробники мови BABBAGE нині працюють над оператором
ALMOST EQUAL SIGN ("майже з однаковим знаком"), використовуваним для порівняння двох чисел з плаваючою комою. У роботі над цим новим нюансом вже вдалося подолати значні труднощі.
Ні одна мова, неважливо яким він є, не може бути використаний сам по собі. І на мови BABBAGE цілком необхідна детально розроблена операційна система. Після кількох спроб використовувати існуючі системи співробітники групи вирішили написати власну "віртуальну" операційну
систему. Будь-якому відома операційна система віртуальної пам'яті. Але співробітники групи з розробки мови BABBAGE спробували знайти трохи інакше рішення, зайшовши подалі.
Нова операційна система носить назву операційної системи віртуального часу (VTOS). У той час як системи віртуальної пам'яті забезпечують віртуальні властивості пам'яті ЕОМ, VTOS виконує ту ж функцію по відношенню до часу процесора.
У результаті ЕОМ може працювати з необмеженою кількістю завдань. Подібно системі віртуальної пам'яті, яка фізично зберігає частину даних до ЗУ на дисках, VTOS повинна також застосовувати деякі хитрощі для досягнення своєї мети. Хоча користувач впевнений, що його завдання виконуються в поточний момент часу, деякі з цих завдань у дійсності будуть виконуватися на наступному тижні.
Як можна бачити, мова BABBAGE все ще знаходиться в стадії розробки. Група співробітників для розробки мови BABBAGE потребує пропозиціях фахівців із нових засобів для цього нового потужного мови програмування. Автор статті, будучи одним із співробітників групи розробки, звертається до всіх, хто працює в області обробки даних за допомогою ЕОМ, з проханням надати підтримку групі з розробки нової мови програмування (будуть прийняті всі пропозиції від усіх осіб, які бажають взяти участь у роботі групи) .
Короткий вступ в мову Ада.
Можливо, у вас вже виникло запитання: "Навіщо знати і використовувати Аду?". У відповідь на це запитання Можу навести як мінімум три хороші причини:
1. Це просто! Я запам'ятав програму типу "Hello World" за кілька хвилин.
2. Це потужно! Ада була розроблена таким способом, щоб забезпечити всі запити програміста і придатна для вирішення практично будь-яких завдань.
3. Вона може бути використана як шлюз на більш важкий мову Сі; навіть враховуючи те, що синтаксис Ади дуже різниться з Сі, ці дві мови насправді подібні у багатьох своїх ідеях.
Передісторія Ади.
У далекому 1957, вчений Джон Бекас (John Backus) працював у той час у IBM розробив нову мову програмування, з метою полегшити рішення математичних і наукових проблем для інженерів, вчених і математиків. Ця мова, названий FORTRAN, що є скороченням слів FORmula TRANslation (трансляція формул), мав і має величезний успіх; навіть в даний час, через cорок років, він все так само активно використовують у розробці програм і продовжує розвиватися.
По іншу ж сторону Атлантики, в Європі, кілька вчених, які знали про існування Фортрану сформували комітет для створення власної мови здатного замінити його. Через всього лише місяць, у 1958 році, була завершена розробка нової мови програмування відомого тепер під ім'ям ALGOL, що є скороченням від слів ALGOrithmic Language (мова алгоритмів). Слідом за цим він був дуже швидко стандартизований.
Так як існує традиція називати стандарт мови за рік до якого він був створений, то й творці Алгола вирішили від неї не відходити назвавши його Алгол 58. Згодом люди з Європи роботи над Алголом, і через два роки з'явився новий покращений варіант - Алгол 60.
Алгол 60 зіграв дуже важливу роль в історії декількох мов використовуваних в даний час, до числа яких входить Ада. З Алгола 60 згодом вийшли три сімейства мов:
1. SIMULA, створений вченими з університету міста Осло в Норвегії.
2. CPL, створеного Кеном Томпсоном (Ken Thompson) з AT & T Bell Laboratories як інструмент для написання ОС MULTICS, яка стала попередницею Unix. CPL є безпосереднім предком С.
3. Останнім, що зовсім не означає гіршим, був Паскаль, написаний Никлаусом Віртом (Niklaus Wirth) зі Швейцарського Федерального Інституту Технологій в Цюріху з метою навчання студентів у коледжі. З якого надалі ми і отримали Аду.
Отже, тепер ми знаємо досить про попередників Ади, тому приступимо до безпосередньої історії створення цього прекрасного мови.
Конкурс.
У 60-ті-70-і роки Міністерство Оборони США (the United States Department of Defense) використовувало для своїх потреб більш ніж 2000 різних мов програмування (в основному для систем підвищеної надійності). Здебільшого це мови розроблені для виконання якогось конкретного завдання. У результаті Міністерством Оборони склалася Робоча Група з Мовам Високого Рівня (High-Order Language Working Group (HOLWG)), метою якої було знайти рішення створеного тоді, так званому, "кризи програмного забезпечення"
Члени Робочої Групи ухвалили, що для виходу із ситуації необхідно створення мови програмування, за допомогою якого можна буде зробити практично все, чи це системне програмування, штучний інтелект, і, що найбільш важливо, системи працюють в реальному часі й вбудовані системи. Системи реального часу це програми використовуються для таких речей як управління світлофорами на дорогах, самонавідних ракет, і сканерів штрих-кодів. Вбудованими ж називаються системи такі як маленькі комп'ютери вбудовуються в більшість сучасних машин, літаки, і навіть магнітофони.
Замість того щоб створювати нову мову самим, було вирішено провести конкурс. Було створено кілька команд, кожній з них був привласнений свій колір. За випадковим збігом обставин усі команди створили свої мову використавши Паскаль як основи. У результаті перемогла зелена команда - фірма Ханейвелл-Балл (Honeywell-Bull) з Франції. Познее, мова був названий "Пекла" на честь леді Ади Серпні Лавлейс (Lady Ada Augusta Lovelace), дочки відомого поета Байрона і асистентки математика Чарльза Байбіджа (Charles Babbage), який винайшов Аналітичну Машину. Леді Аду прийнято вважати першим програмістом.
У 1979, МО США створило перший чорновий варіант документації по Аді, потім мову був стандартизований в 1983 році. Зараз цей стандарт прийнято називати "Ада83", спочатку воно було під повним контролем з боку МО США, і ні хто не міг створити компілятор з мови без авторизації нього з боку Міністерства Оборони.
Проте все змінилося в 1987 році, коли МО США надало Аду в публічне розпорядження, і на мову був створений стандарт Міжнародного Інституту по Стандартизації (International Standards Organization (ISO)). До 1990 року з'явилося більше 200 перевірених на відповідність стандарту компіляторів з цієї мови, ще пізніше в 1995 році з'явився новий стандарт званий Ада95. Ада в редакції 95го року стала повністю об'єктно-орієнтовані мовою, а також оснащена дуже зручними засобами взаємодії з кодом написаним на Сі, Фортрані, Коболе та інших мовах.
Де взяти Аду?
Швидше за все ви думаєте, що компілятор для такого потужного як Ада мови стоїть дуже і дуже дорого, проте ви помиляєтеся, ви напевно здивуєтеся, але один з найбільш потужних і компіляторів з Ади95, GNAT (Gnu / New york University Ada Translator) не буде коштувати вам ні копійки (за винятком технічної підтримки, але тільки в тому випадку якщо ви захочете її мати).
GNAT можна скачати з FTP-сервера Нью-Йоркського Університету ftp:/ / cs. nyu. edu з каталогу / pub / gnat. У ньому містяться різні версії GNAT різних ОС наприклад Unix, включаючи SunOS / Solaris, Linux, NetBSD, SGI IRIX, IBM's AIX, DEC's Digital Unix.
Так само там існують версії GNAT'a для WinNT, Win95, MacOS, і навіть версія для DOS звана "EZ2Load".
Підручник.
Отже, Я думаю настав час приступати до справжньому навчання. Звичайно це не закінчений підручник, це просто короткий вступ, яке покаже вам базову структуру програми на мові Ада і дасть вам кілька готових до компіляції прикладів.
Спочатку Я хочу щоб читач дізнався що таке Ада. Так само як і її попередник Паскаль і її кузен Сі, Ада це структурний мову. Іншими словами, програма на Аді це організована послідовність різних секцій, в той час як в неструктурних мовах таких як Бейсік, ви можете писати що завгодно і де завгодно.
Також, Аді властива своя власна термінологія, і Я далі буду використовувати декілька таких слів, зі значенням яких можливо не знайомі:
пакет (package), назва файлу вихідного коду програми в якому зберігається певний набір пов'язаних за змістом команд, які роблять наприклад такі речі як друк тексту, математичні обчислення, і т.д. Вони в чомусь схожі на заголовки в мові Сі, але не є прямою аналогією:
змінна (variable), це іменована область пам'яті у якій може зберігається деяке значення, наприклад число, символ, або слово.
пропозиція або інструкція (statement), команда для виконання специфічної дії.
Усі програми на Аді мають таку базову структуру:
with Имя_Пакета; use Имя_Пакета;
procedure Імя_Процедури
Змінна: Некоторий_Тіп_Значеній;
begin
end Імя_Процедури;
Імя_Процедури часто є і ім'ям програми. (Прим перев: На відміну від Паскалі тут немає виділеного блоку begin - end, програмою може вважається будь-яка процедура бібліотечного рівня (тобто не вкладена в іншу процедуру / функцію) без параметрів).
Місце де написано Змінна: Некоторий_Тіп_Значеній є оголошенням змінної. Можливо ви запитаєте, а що означає "Некоторий_Тіп_Значеній"? Це означає якого типу значення можуть зберігається у змінній. Іншими словами, якщо ви хочете мати змінну для цілих чисел вам необхідно написати Variable: Integer;. Якщо вам потрібні числа з плаваючою комою, то Variable: Float, і т.д.
Крапки з коми використовуються для завершення оголошення змінної або в більш загальному випадку будь-якої пропозиції програми, дозволяючи вам розмістити на одному рядку більш одного оголошення змінної або пропозиції. (Прим перев: в Паскалі поділяють пропозиції, внаслідок є кілька виключень з правил! І як наслідок обраного підходу в Аді їх розміщення виготовляють більш інтуїтивному рівні).
Інструкція begin починає послідовність справжніх команд програми.
Предложеніе_1; і Предложеніе_1; насправді ні чого не означають в Аді; в реальну програму на їх місці будуть справжні команди, які і будуть виконувати необхідні нам дії.
Пропозиція end Імя_Процедури; завершує послідовність команд програми. Тепер Я можу сказати вам, що ця маленька "демо" програмка була потрібна, щоб просто показати вам структуру програми, але тепер ми можемо побачити і на справжню робочу програму. За традицією їй буде, можна сказати, класична; -) програма виводить "Hello World", яка зазвичай і використовується під час знайомства з новою мовою.
with Ada. Text_IO; use Ada. Text_IO;
procedure Hello_World is - А змінні нам тут не потрібні:)
begin Put ("Hello world!");
end Hello_World;
Пакет "Text_IO" містить безліч функцій для операцій введення / виводу; він використовується програмами яким необхідний висновок і отримання тексту.
Так само Я мушу зауважити заради чого треба писати "Ada." Перед "Text_IO". Оскільки Ада може взаємодіяти з безліччю мов - наприклад ви можете зв'язати зі своєю програмою процедури на Сі чи Коболе - і може трапиться так що у вас буде безліч бібліотек з сотнями пакетів, тому необхідно вказувати звідки їх брати.
(Прим перев: в Аді можна організувати набір пакетів у певну ієрархічну структуру зі взаємними зв'язками між кодом у них. У даному випадку Text_IO це дочірній пакет від пакета Ada).
Процедура (і програма в даному випадку) називається "Hello_World." Пропозиції "with" і "use" використовувати команди з них у нашій програмі. Якщо ви хочете запустити цю програму, ви можете зберегти її під ім'ям hello_world. ada. Зауваження: якщо ви використовуєте GNAT ви повинні зберегти його як hello_world. adb.
Оскільки ця програма не робить нічого, крім друку кількох слів на екрані, нам не треба було оголошувати ні яких змінних, тому місце у якому це звичайно робиться залишилося порожнім. Зверніть також увагу на подвійний прочерк (-) перед "А змінні нам тут не потрібні:)". Ці прочерки кажуть компілятору, що цей рядок коментар. Коментар це рядок тексту програми яку компілятор проігнорує. Тому якщо ви хочете додати рядок "А змінні нам тут не потрібні:)" в програмі і потім запустити її, ви зобов'язані додати перед нею подвійний прочерк, інакше компілятор подумає, що ви хотіли використовувати "А змінні нам тут не потрібні:)" як опис змінної, природно нічого не зрозуміє і видасть вам повідомлення про помилку. Пропозиція Put ("Hello world!"); Служить власне для друку тексту на екрані.
Навіть якщо вам здається, що використання дужок ускладнює справу, вони все одно потрібні. Ви не можете просто взяти і написати "Put" Hello world! ";"!
Так ж зауважте, що багато імена починаються з великих літер Notice also that many of the names begin with capital letters ("Text_IO" наприклад). Це-го не потрібно робити в обов'язковому порядку, але все ж таки бажано робити так для зручності читання ваших початкових кодів.
Наступна програма дещо складніше попередньої. Вона запитує у користувача його / її ім'я і далі друкує його на екрані поряд з іншим текстом:
with Ada. Text_IO; use Ada. Text_IO;
procedure Get_Name is Name: String (1.. 80);
Length: Integer;
Begin Put ("Введіть ім'я>");
Get_Line (Name, Length);
New_Line;
Put ("Привіт");
Put (Name (1. Length));
Put (", Я думаю вам сподобатися вивчати Аду!");
end Get_Name;
Як це все працює? Ми вже знаємо, що таке Text_IO, а пропозиція procedure Get_Name is говорить сама за себе
Змінна Name містить ім'я введене користувачем, а тип String (1.. 80) говорить компілятору про те, що Name це строкова змінна довгою до 80 символів. Друга змінна, Length, це ціле число використовується для зберігання дійсною довгі рядки введеної користувачем.
А тепер про інше: коли програма виконується, вона друкує "Введіть ім'я>", а потім чекає повернення від користувача. після того як він запровадить ім'я і натисне Enter програма пропускає рядок (New_Line;) і друкує "Привіт [ім'я користувача], думаю вам сподобатися вивчати Аду!".
Візуальне програмування на Аді?
Можливо у Вас виникло питання "А чи є до Ади графічне середовище розробки програм (IDE)?". Так, такі є, одне з них, під назвою ObjectAda, поставляється компанією Aonix, www. aonix. com (Прим. перекл: Даний продукт побудований у дусі IDE від Microsoft для Visual С + +)
ObjectAda існує у двох варіантах як MS Windows, так і для X-Windows (X-Windows це стандартна віконна графічна система ОС Unix)
Однак врахуйте, що це комерційний продукт, правда він доступний для вільного скачування в полегшеному варіанті і важить близько 60 ~ 70Mb.
Ada - це доведений до логічного завершення (на даному етапі розвитку _науки_ програмування) Pascal. Ada - універсальна мова програмування і надзвичайна засіб для software engineering. В рівній мірі придатна для написання "зубочисток" з 50 рядків на один-два прогони і у величезних особливо надійних систем реального часу. Жорстко визначена стандартом мови. У мову вмонтовані засоби паралельного програмування, підтримка різномовних модулів, обробка винятковий ситуацій. Розмови про її надмірної складності - маячня, викликаний тим, що вона випередила свій час років так 6. .10. Потужний інструмент не може бути простим - "Дублі ми прості" ((с) "Понеділок ...", Стругацькі), а й занадто складної її назвати не можу. Ada "е притаманні строгість, логічність, ортогональность, симетричність. Вона по-хорошому консервативна, незважаючи на те, що в неї були введені революційні концепції, не зрозумілі і прийняті сірими fortran-кодерами початку "80-их років, чим і пояснюється її порівняно мале поширення. Перший стандарт вийшов у "83, в 95 вийшов другий стандарт, що розширив і симметризовавший мову. Для Ada "и характерний дуже жорстке проходження стандарту, що робить програми на ньому порівняно легко переносяться з платформи на платформу. !) Аналогії: Ada - це Парфенон серед мов програмування, вона велична, вишукана, сувора і прекрасна. Якщо вважати, що Pascal це МіГ-21, то Modula-2 це (ранні версії) МіГ-29 і (нинішній стан) МіГ-33, а Ada'83 - Су-27, і Ada'95 - Су-37, і , продовжуючи аналогію, C - F-104, C + + - F-117 (much noise about nothing |)). > Q 2: А чим Ada95 відрізняється від Ada83? Наскільки я зрозумів,> Q 2: у Ada95 є ОВП? Ось ще відмінності: - ієрархічні бібліотеки (child units); - пасивні монітори поряд (protected records) з ​​активними (tasks); - додаткові кошти на управління паралеллизмом (асинхронна передача управління); - стандартні бібліотеки для найважливіших областей (системне програмування, системи реального часу , розподілені системи, інформаційні системи, чисельні розрахунки); - "дріб'язок" типу посилань на підпрограми і можливість пов'язувати повідомлення з порушених винятком;> Q 3: Я зрозумів, у Ada95 є ОВП? А як воно> Q 3: реалізується? Справжнє там ООП (як на функціональних> Q 3: мовами) або паскалі-сі подібне? "Паскалі-сі-подібне", хоча за формою на перший погляд сильно відрізняється.
Основний документ з Ada "е -" Language Reference Manual ", зазвичай називається просто" Стандарт "або" RM95 "(" RM 95 ", а то й просто" RM "), деякі як колись кажуть" LRM ", але це - загальноприйнята скорочення для стандарту Ади-83. Викладено, як повинно бути стандарту, сухувато, але суворо, з прикладами та посиланнями на суміжні питання. На відміну від двох-трьох інших "стандартів", які мені довелося подивитися, це, дійсно, Стандарт, а не міркування на тему про черговий версії компілятора і підручник програмування на базі цієї мови, але, між тим, він цілком придатний для читання . Другий документ - "Ada 95 Rationale" (зазвичай - "Rationale"). Це виклад і _обгрунтування_ базових _проектних__решеній_ мови (відповіді на питання "а чому зроблено саме так?") І демонстрація цих рішень у справі. Відповідно, більш вільне, ніж Стандарт, в чомусь менш повне, а де в чому більш ппространное. З розгорнутими прикладами, поясненнями, аналогіями і іншим вельми корисною "белетристикой". Читається як хороший детектив. Літературні достоїнства (без тіні іронії) цього документа відзначені як мною. Я б настійно рекомедовал цю книгу в якості саме _підручника_ для підготовленого і _мотивованого_ читача (такому читачеві немає сенсу витрачати час на традиційні університетські підручники), а RM використовувати як довідник.

Мова Ада - двадцять років потому

Коли вітчизняного ІТ-фахівця: "Що таке Ада?, Більшість лише здивовано здвигне плечима, а хтось навіть скаже, що це мертва мова, колись придуманий Пентагоном, а нині практично не використовується. На самому ж Ада і сьогодні - цілком благополучний і активно застосовується в різних галузях мову програмування. Щоправда, більшість російських програмістів знають про нього мало.
Напевно, кожен, кому доводилося користуватися чотирнадцятої лінією паризького метрополітену, дивувався, вперше побачивши потяг, в якому кабіни машиніста. Рух поїздів на цій лінії повністю управляється Ада-програмою.
Незважаючи ні на що, в окремих областях техніки Росія все ще "попереду планети всієї". І одна з них - конструювання і виробництво літаків-амфібій. Всесвітньо визнаним лідером у цій галузі є ТАНТК ім. Г.М. Берієва. Нещодавно це підприємство придбало засоби розробки бортового програмного забезпечення на базі мови Ада для використання при модернізації своєї останньої моделі Бе-200.
Між тим, більшість вітчизняних ІТ-фахівців у кращому випадку нічого не знають про мову Ада, в гіршому ж - мають зовсім невірне уявлення про Аді як про мову-монстра, колись придуманому Пентагоном для розробки військових систем, а нині остаточно забутому.

Трохи історії

Офіційним днем ​​народження мови програмування Ада вважати 17 лютого 1983 року - дату затвердження стандарту ANSI / MIL-STD-1815-A-1983.
Технічні та адміністративні заходи, що Міноборони як частина проекту зі створення та впровадження Ади, повністю запобігли появі і поширення діалектів мови. З 1983 року і по теперішній час індустріальні реалізації підтримують діючий стандарт Ади. Коли ж мова заходить про підмножинах Ади, то ці підмножини визначаються не реалізацією, а стандартами розробки конкретного класу систем.
У 1987 році стандарт ANSI без єдиного зміни затверджено в якості стандарту ISO (ISO / IEC 8652), а коли на початку 90-х років назріла необхідність перегляду стандарту, робота з перегляду також була проведена під керівництвом і кошти Міністерства оборони США. Стартував новий міжнародний проект, який завершився твердженням в кінці 1994-го і публікацією на початку 1995 року нової версії стандарту ISO / IEC 8652. Саме цей документ і є сьогодні визначенням мови програмування Ада.
У СРСР на початку 80-х років була створена Робоча група з мови програмування Ада при Державному комітеті з науки і техніки. Ретельно збиралася й аналізувалася вся відкрита інформація про проект, а зусиллями спеціальних служб добувалася і закрита інформація. Були організовані проекти з реалізації Ади для практично всіх використовувалися тоді архітектур ЕОМ, і деякі з них дуже успішними. Розпад СРСР поклав край цій діяльності. Сьогодні Ада використовується в Росії і СНД окремими ентузіастами.
Що таке Ада.
Всі сучасні індустріальні мови надають власне і той же базовий набір можливостей, розрізняючи не тим, що вони дозволяють робити, а тим, як саме вони дозволяють це робити. Проте Ада, принаймні, у двох аспектах розширює стандартний для сучасних мов набір можливостей. По-перше, Ада надає високорівневі засоби програмування асинхронних процесів. По-друге, є єдиною мовою, який без будь-яких застережень можна назвати модульним.
Приклад такий просто необхідний для того, щоб спростувати досить поширений міф про те, що Ада - великий, складний і "важкий" мову, придатний лише для написання надвеликих і надскладних систем. Насправді ж, Ада може застосовуватися для розробки невеликих і середніх програм з тим же успіхом, як і сучасні клони Сі, Паскаля, Бейсіка і Java. Так, класичний приклад програми "Hello, World!" Виглядає на Аді наступним чином:
Легко бачити, що код на Аді нагадує код на Паскалі, який був обраний як його прототипу. Перший рядок описує зв'язок даного компилируемого модуля з іншими модулями - вказується, що підпрограма Hello_World повинна компілюватися спільно з модулем Ada. Text_IO, який є компонентом визначеною бібліотеки.
Наступна програма визначає два асинхронних процесу [1]
У розділі локальних оголошень процедури Tasking_Example описується завдання Outputter (рядок 6, рядки з 8 по 17 містять тіло це завдання). Коли управління в процесі, відповідному процедурі Tasking_Example, доходить до рядка 20, перед тим, як виконати цей перший оператор, запускається процес, що відповідає завданню Outputter, після чого два цих процесу живуть і асинхронно виконуються незалежно один від одного. Виконання оператора затримки (рядки 14 і 20) полягає у припинення відповідного процесу на вказану кількість секунд. Таким чином, процес Tasking_Example припиняється на 20 секунд, а в цей час процес Outputter починає друкувати значення зростаючого на одиницю лічильника, припиняючи однією секунду після виведення кожного значення. Після закінчення 20 секунд процес Tasking_Example встановлює прапор Finished в положення "істина", в результаті завершується цикл в процесі Outputter. Специфікація змінної Finished як атомарної об'єкта даних (рядок 4) робить неможливим одночасне читання і зміна значення цієї змінної.
Далі представлений шаблон функції, що дозволяє покомпонентно складати два одномірних масиву. Цей шаблон може бути налаштований на довільний тип, є одновимірним масивом, для компонентів якого визначені операції присвоювання і складання ("складання" не зобов'язане бути арифметичним складанням).
Рядки 1-6 містять оголошення настраиваемой функції, а рядки 8-20 - її тіло. Змістовно, параметром налаштування є довільний одновимірний регулярний тип з не уточненими індексним діапазоном (рядок 4), про якого відомо лише, що тип компонента в нього довільний, проте до компонентів визначена операція присвоювання (рядок 2), тип індексу - довільний дискретний (рядок 4 ). Оскільки ми маємо покомпонентно складати два масиву, треба знати, що таке операція складання для типу компонентів. Так як це довільний тип, ми змушені передавати складання для типу компонента як формальний параметр настройки (рядок 5).
У тілі функції ми відразу ж перевіряємо, чи збігаються довжини операндів (рядок 12), інакше покомпонентное складання не має сенсу. Збіг довжин операндів не гарантує збіг індексних діапазонів, у циклі по індексному діапазону першого аргументу (рядок 15) слід щоразу обчислювати індекс відповідного компонента другого аргументу. Ми не можемо зробити це для типу Index, оскільки знаємо про нього лише, що він дискретний, тому переходимо від значення дискретного типу до його порядковому номеру (атрибут 'Pos), обчислюємо необхідний зрушення для порядкового номера і повертаємося до відповідного значенням типу Index ( атрибут 'Val).
Зауважимо, що параметри (настроюється) функції "+" Left і Right оголошено як мають тип Arr, індексний діапазон якого уточнено. Проте Left і Right - це формальні параметри, на місце яких за виклик (результату конкретизації) функції "+" будуть поставлено конкретні масиви з відомими індексними діапазонами. Ми ж у тілі функції "+" користуємося атрибутами масивів ('Range,' First, 'Length), що з об'єкта отримати інформацію про його індексному діапазоні.
Чому Ада?
Вибір мови для програмного проекту раніше був суто технічним питанням. Сьогодні це стало питанням стратегічної важливості, що має далекосяжні наслідки для успіху проекту. Перерахуємо деякі причини, завдяки яким мову Ада був обраний для реалізації програмних проектів різними компаніями, або зроблено обов'язковим для використання в рамках тендерів.
Бажання підвищити надійність системи, що розробляється, оскільки програмні дефекти можуть мати серйозні наслідки для здоров'я людей, економіки, екології і т.п. (Ада має вбудованими засобами забезпечення надійності).
Бажання знизити вартість розробки та супроводу системи.
Наявність міжнародних стандартів та наявність компіляторів мови практично для будь-якої платформи.
Переваги дисциплінованого підходу до розробки програмного забезпечення, які стають особливо істотними в міру збільшення обсягу та складності програмного забезпечення.

Ада і Сі

При проведенні порівняльних аналізів популярних мов переламане стільки копій, що сьогодні цю тему часто відносять до розряду "релігійних війн". Тому обмежимося лише посиланням на відому статтю [2], в якій робиться ряд красномовних висновків.
Розробка програм на мові Ада обходиться на 60% дешевше аналогічних програмних проектів, реалізованих на Си.
Програма на мові Ада має в 9 разів менше дефектів, ніж програма на Сі; програма на Сі + + має ще нижчі, ніж програма Сі, характеристики.
краще Сі як для досвідчених, так і для недосвідчених програмістів, а також для програмістів, що мають як максимальний, так і мінімальний рейтинг у своїй групі.
Трудомісткість вивчення мови Ада не вище трудомісткості вивчення Сі.
Програми на Аді надійніші, ніж програми на Сі.
В якості ілюстрації цих висновків, наведемо приклад розробки бортового програмного забезпечення літака C-130J відповідно до вимог Рівня А стандарту DO-178B [3]. При цьому констатувалося якість коду, в 10 разів перевищує середнє для програмного забезпечення Рівня А. Продуктивність праці зросла вчетверо щодо порівняних програмних проектів.

Ада та Java

У Microsoft були змушені включити в ліцензійні угоди для своїх операційних систем наступний пункт "Зауваження щодо підтримки мови Java ... Технологія Java не є стійкою до збоїв і призначена ... для використання в межах управляючих систем реального часу ..., в яких збій мови Java може спричинити за собою смерть, каліцтво, чи важкий шкоди інфраструктурі або навколишньому середовищу. Компанія Sun Microsystems, Inc. зобов'язала компанію Microsoft розмістити дане попередження ".
Зазначимо на статті [4] та [5], демонструють переваги мови Ада над Java.
"Пекельні" міфи.
Досить часто з Адою пов'язують набір стійких помилок, що перешкоджають як поширенню мови, так і свідомого вибору Ади в якості мови реалізації проекту.
Ада - мертва мова, на ньому нині не програмує. У дійсності, Ада впевнено займає нішу великих вбудованих систем з підвищеними вимогами до надійності. У порівнянні з "коробковими" продуктами для Windows, такі системи не так помітні, оскільки або перебувають в одному примірнику (який сенс тиражувати програму, що управляє рухом поїздів метро), чи поширюються як частина системи, в якому вони вмонтовані (бортове програмне забезпечення).
Ада - мова, призначена виключно для військових застосувань. Ада дійсно була розроблена за участю Міністерства оборони США, проте відсутні будь-які технічні, адміністративні або інші причини, що перешкоджають використанню Ади для розробки військових систем. Кількість "цивільних" проектів, заснованих на цій мові, сьогодні можна з кількістю "військових" проектів.
Ада - занадто великий і складний мову, для того щоб використовувати його в невеличкому проекті. Обсяг і складність всіх сучасних індустріальних мов практично однакові, і щоб переконатися в цьому, досить просто порівняти обсяг їх описів. Цей міф сходить до початку 80-х років, коли Аду зіставляли з Паскалем, Фортраном 77 або Бейсиком.
Програмістів, знають Аду, мало, вивчення мови з нуля вимагає надмірних зусиль і часу. Насправді ж, справжню труднощі представляє пошук фахівців, які розуміють специфіку вбудованих систем і здатних створювати якісні програми для них. Так, наприклад, компанія BAE, один з активних користувачів мови Ада, не вимагає від кандидатів знання цієї мови; замість цього шукаються люди, знайомі з вбудованими системами і процесами створення програмного забезпечення індустріального якості. Після найму таких людей потрібно два тижні для навчання їх мови Ада.
Наш особистий досвід показує, що програмістам, знайомим з тією чи іншою різновидом Паскаля, потрібно всього кілька днів, щоб почати розробляти нескладні програми на Аді.
Існуючі Ада-технології неефективні; і транслятори, і породжуваний ними код, відрізняються низькою продуктивністю. Цей міф також сходить до першої половини 80-х років, коли з'явилися перші реалізації Ади, фактично всього лише доводили "теорему існування Ада-транслятора, що відповідає стандарту". Досить провести ряд нескладних експериментів, запрограмувавши деяку модельну задачку на Аді, Паскалі і Сі / Сі + +, і порівнявши (при порівнянних параметрах компіляторів) потім швидкість компіляції, обсяг породжуваного коду і його виконання, щоб переконатися, що який-небудь специфічної неефективності , властивої Аді, просто не існує. Можна також відзначити, що система програмування GNAT при обсязі вихідних текстів більш 40 Мбайт, на 90% реалізована на Аді, та побудова її з вихідних текстів (у його ході вона тричі сама себе компілює) на сучасному ПК займає не більше півгодини.
Існуючі реалізації Ади вкрай дороги. Це правда, проте слід мати на увазі, що є публічно доступна версія системи програмування GNAT, яка безкоштовно й на цілком законних підставах може бути взята з програмного репозиторія Нью-йоркського університету разом з вихідними текстами.
Безкоштовний сир і як уникнути мишоловки.
GNAT (GNu Ada Translator) - многоплатформная реалізація мови Ада, існуюча на всіх сучасних індустріальних платформах і підтримує генерацію коду для популярних вбудованих архітектур. GNAT повністю реалізує стандарт Ади, включаючи ті бібліотеки, які стандартом класифікуються як необов'язкові. Крім власне Ада-транслятора, GNAT включає інструментарій, в якому зазначити розвинену інтегровану середу розробника і багатомовний графічний відладчик, що дозволяє, в тому числі, дослідити поведінку програм з асинхронними процесами. Транслятор та супутні інструменти можна використовувати як окремо, викликаючи їх з командного рядка, так і в рамках інтегрованої графічної середовища розробки Ада-програм. Всі компоненти GNAT, включаючи середовище розробки, мають один і той же інтерфейс на всіх платформах. Крім повної реалізації описуваних стандартом коштів GNAT пропонує багатий набір допускаються стандартом розширень. GNAT - реалізація Ади у багатомовному системі програмування gcc, що складається з набору компіляторів переднього плану для різних вхідних мов при загальному генераторі коду, що істотно спрощує розробку програм, що містять компоненти, реалізовані на різних мовах програмування.
GNAT з самого початку розроблявся і поширювався під ліцензією GPL. На жаль, з GPL також пов'язано безліч міфів. Так, багато хто вважає, що програми під GPL розробляються неорганізованими групами ентузіастів, розповсюджуються абсолютно безкоштовно; в результаті і надійність, і функціональність таких програм залишають бажати кращого, не дозволяють використовувати в скільки-небудь серйозних проектах. У випадку з GNAT це далеко не так. Для того щоб переконатися в цьому, досить переглянути список компаній, які уклали з його розробниками контракти на технічну підтримку: Boeing, British Aerospace, Lockheed, Ericsson, SAAB, Avionics і ін
Вільне надання демонстраційних версій - звичайна практика багатьох розробників програмного забезпечення. GNAT відрізняється тим, що перебуває у вільному доступі публічна версія є абсолютно повною версією технології, без яких-небудь юридичних чи технічних обмежень на її використання. Ряд серйозних проектів був успішно реалізований саме на базі публічних версій GNAT. Програмне забезпечення спускного апарату Beagle 2 європейської автоматичної станції Mars Exdivss, спрямовується в цей час до Марса, автоматизована станція документального зв'язку Міністерства оборони РФ. Єдиним недоліком публічних версій є те, що розробник не надає їм технічної підтримки.

Висновок

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

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Реферат
109.1кб. | скачати


Схожі роботи:
Лавлейс Аугуста Ада Кінг Lovelace Augusta Ada King леді Байрон
Мова АДА
Політична система принципату Августа
Ада Лавлейс Політ на крилах математики
Культура Стародавнього Риму епохи Октавіана Августа
Політична організація римської держави в період правління Октавіана Августа
Байрон і Пушкін
Байрон д. - Подвиг героя3
Байрон д. - Подвиг героя (2)
© Усі права захищені
написати до нас