Хостинг от HOST PROM - это надежное место для Ваших проектов !

 


 

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

(Род. 10 декабря 1815 года )

Даже граждане бывшего СССР уже знают, что 10 декабря - День прав человека, учреждённый ООН в честь принятия в 1948 году Всеобщей декларации прав человека (в советские времена само существование этой декларации замалчивалось). Общеизвестно также, что с 1901 года именно 10 декабря вручаются ежегодные Нобелевские премии в память об их учредителе Альфреде Нобеле, умершем в этот день в 1896 году. Но есть и ещё одно, менее известное, определение для этой даты, имеющее, однако, самое прямое отношение к роду занятий многих наших читателей, - 10 декабря названо Днём программиста в честь родившейся также в этот день первой представительницы этой не слишком древней профессии Ады Августы Лавлейс, единственной дочери прославленного английского поэта Джорджа Гордона Байрона и его супруги Аннабеллы Милбэнк.

 

Даже граждане бывшего СССР уже знают, что 10 декабря - День прав человека, учреждённый ООН в честь принятия в 1948 году Всеобщей декларации прав человека (в советские времена само существование этой декларации замалчивалось). Общеизвестно также, что с 1901 года именно 10 декабря вручаются ежегодные Нобелевские премии в память об их учредителе Альфреде Нобеле, умершем в этот день в 1896 году. Порывшись в календарях, энциклопедиях, справочниках, а также попутешествовав по Интернету, можно обнаружить, что 10 декабря 1799 года Франция перешла на метрическую систему мер (в чём за ней до сих пор никак не могут последовать Соединённые Штаты Америки), в 1828 году был основан Санкт-Петербургский технологический институт, что в этот день родились русский поэт Николай Некрасов, американская поэтесса Эмили Диккинсон и украинская писательница Марко Вовчок, французские писатель Эжен Сю и композитор Цезарь Франк, британский фельдмаршал Харолд Александер, получивший титул "Тунисский", и советский "государственный деятель" недоброй памяти Андрей Вышинский, лауреат Нобелевской премии по литературе шведско-немецкая поэтесса Нелли Закс, клоун Карандаш, хоккейный тренер Анатолий Тарасов, дирижёр Юрий Темирканов, литературовед и философ Сергей Аверинцев и многие другие. Но есть и ещё одно, менее известное, определение для этой даты, имеющее, однако, самое прямое отношение к роду занятий

многих наших читателей, - 10 декабря названо Днём программиста в честь родившейся также в этот день первой представительницы этой не слишком древней профессии Ады Августы Лавлейс, единственной дочери прославленного английского поэта Джорджа Гордона Байрона и его супруги Аннабеллы Милбэнк.

Ада Августа Байрон родилась 10 декабря 1815 года; родители её расстались, когда девочке было два месяца, и больше своего отца она не видела. Байрон посвятил дочери несколько трогательных строк в "Паломничестве Чайльд Гарольда", но при этом в письме к своей кузине заранее беспокоился: "Надеюсь, что Бог наградит её чем угодно, но только не поэтическим даром..." Ещё менее намерена была способствовать развитию у дочери литературных наклонностей мать, которую в свете за увлечённость точными науками прозвали "принцессой параллелограммов". Ада получила прекрасное образование, в том числе и в области математики. К 1834 году относится её первое знакомство с выдающимся математиком и изобретателем Чарльзом Бэбиджем (1791-1871), создателем первой цифровой вычислительной машины с программным управлением, названной им "аналитической".

Машина Бэбиджа была задумана как чисто механическое устройство с возможным приводом от парового двигателя, но содержала ряд фундаментальных идей, характерных для современных компьютеров. В ней предусматривалась работа с адресами и кодами команд, данные вводились с помощью перфокарт. Основы программирования также были заложены Бэбиджем. Несмотря на почти сорокалетний труд своего создателя, машина так и не была достроена, опережая не только потребности, но и технические возможности своего времени. Многие из идей Бэбиджа просто не могли быть реализованы на базе механических устройств и оказались востребованы только спустя столетие, с разработкой первых электронных вычислительных машин. Понятно, что современники относились к работам Бэбиджа как к, по крайней мере, экстравагантному чудачеству. Супруга известного английского математика того времени де Моргана, под руководством которого Ада Августа изучала математику, так описывала их первый визит к Бэбиджу: "Пока часть гостей в изумлении глядела на это удивительное устройство с таким чувством, с каким, говорят, дикари первый раз видят зеркальце или слышат выстрел из ружья, мисс Байрон, совсем ещё юная, смогла понять работу машины и оценила большое достоинство изобретения". Бэбидж нашёл в Аде не только благодарную слушательницу, но и верного помощника. Он искренне привязался к девушке, бывшей почти ровесницей его рано умершей дочери.

В 1835 г. Ада Байрон вышла замуж за Уильяма, восемнадцатого лорда Кинга, ставшего впоследствии первым графом Лавлейс. (В некоторых русских публикациях с титулом семейства Лавлейс связывается слово ловелас; это ошибка: Ловелас - имя героя популярного в начале прошлого века романа Ричардсона "Кларисса Гарло", ставшее нарицательным для обозначения волокиты, соблазнителя). Муж не имел ничего против научных занятий супруги и даже поощрял её в них. Правда, высоко ценя её умственные способности, он сокрушался: "Каким отличным генералом ты могла бы стать!" Появление детей на время отвлекло Аду от занятий математикой, но в начале 1841 г. она пишет Бэбиджу: "Я надеюсь, что моя голова может оказаться полезной Вам в реализации Ваших целей и планов в течении ближайших трёх-четырёх, а может быть, и более лет".

По просьбе Бэбиджа, Ада занялась переводом очерка итальянского военного инженера Луи Фредерико Менабреа (в будущем профессора механики Туринского университета, одного из лидеров борьбы за объединение Италии, с 1867 г. - её премьер-министра и министра иностранных дел). Менабреа в 1840 г., слушая в Турине лекции Бэбиджа, подробно записал их, и в своём очерке впервые дал полное описание аналитической машины Бэбиджа и его идей программирования вычислений. Он писал: "Сам процесс вычисления осуществляется с помощью алгебраических формул, записанных на перфорированных картах, аналогичных тем, что используются в ткацких станках Жаккара. Вся умственная работа сводится к написанию формул, пригодных для вычислений, производимых машиной, и неких простых указаний, в какой последовательности эти вычисления должны производиться".

Леди Лавлейс не просто перевела очерк Менабреа, но и снабдила его обширными комментариями, которые в сумме почти втрое превысили объём оригинального текста. Все комментарии, их общая структура и содержание подробно обсуждались и согласовывались с Бэбиджем. Известный своей нетерпимостью к чужому мнению, Бэбидж, тем не менее, был в восторге от оригинальных проработок

своей ученицы: "Чем больше я читаю Ваши примечания, тем более поражаюсь Вашей интуиции... Мне не хочется расставаться с Вашим превосходным философским рассмотрением моей аналитической машины..."

PRIVATE "TYPE=PICT;ALT="

КнигаМенабреа с комментариями, подписанными инициалами A. A. L. (Ada AugustaLovelace), вышла в свет в августе 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

нуждается в  предложениях  специалистов по новым средствам для

этого нового  мощного  языка программирования.  Автор статьи,

являясь одним из сотрудников группы разработки, обращается ко

всем, кто  работает  в области обработки данных с помощью ЭВМ,

с просьбой  оказать поддержку группев разработке нового языка

программирования  (будут приняты  все предложения от всехлиц,

желающих принять участие в работе группы).

 

Краткое введение в язык Ада

Eric DeArment,Team Ada ejd@efn.org

Возможно,у вас уже возник вопрос: "Зачем знать и использовать Аду?". В ответна этот вопрос Я могу привести как минимум три хороших причины:

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 yorkUniversity 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

 

       Предложение_1;

       Предложение_2;

 

     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

 



Страниц (5):  [1] 2 3 4 5

 


Быстрый хостинг
Быстрый хостинг - Скорость современного online бизнеса

 

Яндекс.Метрика

Load MainLink_Second mode.Simple v3.0:
Select now URL.REQUEST_URI: webknow.ru%2Fkibernetika_00087.html
Char set: data_second: Try get by Socet: webknow.ru%2Fkibernetika_00087.html&d=1
					  

Google

На главную Авиация и космонавтика Административное право
Арбитражный процесс Архитектура Астрология
Астрономия Банковское дело Безопасность жизнедеятельности
Биографии Биология Биология и химия
Ботаника и сельское хозяйство Бухгалтерский учет и аудит Валютные отношения
Ветеринария Военная кафедра География
Геодезия Геология Геополитика
Государство и право Гражданское право и процесс Делопроизводство
Деньги и кредит Естествознание Журналистика
Зоология Издательское дело и полиграфия Инвестиции
Иностранный язык Информатика, программирование Исторические личности
История История техники Кибернетика
Коммуникации и связь Косметология Краткое содержание произведений
Криминалистика Криптология Кулинария
Культура и искусство Культурология Литература и русский язык
Литература зарубежная Логика Логистика
Маркетинг Математика Медицина, здоровье
Международное публичное право Частное право Отношения
Менеджмент Металлургия Москвоведение
Музыка Муниципальное право Налоги
Наука и техника Новейшая история Разное
Педагогика Политология Право
Предпринимательство Промышленность Психология
Психология, педагогика Радиоэлектроника Реклама
Религия и мифология Риторика Сексология
Социология Статистика Страхование
Строительство Схемотехника Таможенная система
Теория государства и права Теория организации Теплотехника
Технология Транспорт Трудовое право
Туризм Уголовное право и процесс Управление
Физика Физкультура и спорт Философия
Финансы Химия Хозяйственное право
Цифровые устройства Экологическое право Экология
Экономика Экономико-математическое моделирование Экономическая география
Экономическая теория Этика Юриспруденция
Языковедение Языкознание, филология

design by BINAR Design