Р.У. Себеста - Основные копцепции языков программирования (2001) (1160794), страница 21
Текст из файла (страница 21)
Принятие отчета о языке АЕООЕ 58 Публикация в декабре 1958 гола отчета о языке АЕСО1 58 (Рег!Ь апд ЬатеЬоп) была встречена с большим энтузиазмом. В Соединенных Штатах новый язык представлялся скорее набором идей в области структуры языка программирования, чем универсальным языком программирования. Действительно.
отчет о языке А1СОЕ создавал впечатление не законченного продукта. а чернового документа. выставленного на международное обсуждение. Тем не менее, этот отчет лег в основу трех основных работ по разработке и реализации языков программирования. В Университете штата Мичиган был создан язык 76 Глава 2. Обзор основных языков программирования МАО (Агбеп е! а1.. !961). Американской военно-морской электронной группой (О. 5. Хача( Е(есггопгсз Огоцр) был создан язык ХЕЫАС (Нцзкеу е! а1.. 1963), Корпораш1я по разработке систем 5узгет Оече(ортепг Согрогабоп разработала и реализоваза язык )ОЧ(А1 (5Ьа~ч, 1963).
Название последнего языка — аббревиатура от "!и1ез' Оччп Чегз!оп оГГпе 1пгегпаг!опа1 А!8ебгагс Еапяцазе" (Собственная версия интернационазьного алгебраического языка. разработанная Жюлем). а сам он является единственной версией языка, основанного на языке А(.ОО158 и получившего широкое распространение (Жюлем был Жюль Шварц ()ц!ез 1.
5сйиапг), один из разработчиков языка ЮЧ!АЕ). Язык ЮЧ!АЕ стал широко используемым. поскольку он четверть столетия был официальным языком научных разработок ВВС США. Остальная часть вычислительного сообшества Соелиненных Штатов не была так благосклонна к новому языку. На первых порах корпорация! ВМ и ее главная научная группа БНАКЕ, похоже, приняли язык АЕООЕ 58. Корпорация 1ВМ начата его реализацию вскоре после публикации отчета, и группа 5НАКЕ сформироваза подкомитет 5НАйЕ 1АЕ для изучения этого языка. Позднее полкомитет предложил ассоциации АСМ стандартизировать язык А).ОО). 58, и таким образом корпорация 1ВМ реализовала его на всех компьютерах 700-й серии.
Тем не менее. энтузиазм вскоре спаз. Весной 1959 года и корпорация !ВМ, и группа 5НАйЕ. имевшие уже опыт работы с языком гОйТйАХ. решили, что с них достаточно проблем и расходов, чтобы начинать работу над новым языком. В середине 1959 года и корпорация 1ВМ, и группа 5НАКЕ, вложившие немалые срелства в язык ГОКТВАХ. решили поддержать именно этот проект и слелать его языком научных разработок для 700-й серии машин корпорации 1ВМ.
отказавшись, таким образом, от языка А(.ОО!. 58. 2.5.5. Процесс разработки языка Аа6ОЕ 60 На протяжении 1959 года язык А1001. 58 горячо обсужлался как в Европе. так и Соединенных Штатах. В европейском издании АХООГ. ВиПебн и в Соттигясабопз оГ'йе АСМ было опубликовано большое количество прелложений, касающихся изменений и дополнений к этому языку. В 1959 году на Интернациональной конференции по обработке информации (1пгегпабопа! СопГегепсе оп!пГоппайоп Ргосезгбпй) была представлена работа Цюрихского комитета, в которой Бэкус предложим новую форму для описания синтаксиса языков программирования, позднее названную формой Бэкуса-Наура (ВХг — Васйцз-Хацг Гопп).
Подробно она описана в главе 3. В январе 1960 года состоялась второе собрание комитета по разработке языка А(.ОО1, на этот раз в Париже. Это собрание должно было обсулить 80 прелложений, официально представленных на рассмотрение. При этом в разработку языка АЕООЕ был глубоко вовлечен Питер Наур (Резег Хацг) из Дании, несмотря на то. что он не являлся членом Цюрихской группы. Именно Наур создал и издавал АГ.ООГ. ВиПебн. Наур долгое время изучал работу Бэкуса. вводившую понятие формы ВХг. и пришел к заключению, что эту форму можно использовать для формального описания результатов собрания 1960 гола. После внесения в форму ВХг нескольких относительно небольших изменений Наур создал с ее помошью описание вновь прелложенного языка и передал его комитету 1960 года в начале совешания. 2.5. Первый шпг к совершенствованию: язык АИОь 60 2.5.6.
Обзор языка АЕ608. 60 Хотя собрание 1960 года длилось всего шесть дней, изменения, внесенные в язык А1ООЕ 58, были значительными. Среди важнейших новых разработок были следующие. ° Была введена концепция блочной стрултуры. Это позволило программистам локализовать части программ. вводя новые среды данных, или области видимости. ° Появилась возможность передавать параметры подпрограммам двумя новыми способами: передача по значению и передача по имени. ° Появилась возможность создания рекурсивных процедур. Описание языка АЕООЕ 58 не совсем ясно освещало этот вопрос.
Отметим. что. хотя для императивных языков подобная рекурсия н была новой, язык Е!БР в !959 году уже содержал рекурсивные функции. ° Появились автоматические (зсасссчсупаш!с) массивы. Автоматическим массивом называется такой массив, для которого диапазон или диапазоны изменения индексов определяются значениями переменных. Размер массива устанавливается во время его размещения в памяти. Это происходит в процессе выполнения программы при объявлении массива.
Автоматические массивы подробно описаны в главе 5. Были предложены, но не приняты еше несколько свойств, которые могли бы значительно повлиять или на успех, или на провал данного языка. Важнейшими среди них были операторы ввода-вывода с форматированием, которые не были приняты, поскольку считалось, что они будут значительно машинно-зависимыми. Отчет о языке АЕООЕ 60 был опубликован в мае !960 года (Нацг, 1960).
В описании языка все еше оставалось много неопределенностей, и на апрель !962 года в Риме была назначено третье собрание комитета, на рассмотрение которого и передавались все вопросы. На этом собрании группа занимачась только разрешением затруднений, никаких новых дополнений в язык не вносилось. Результаты собрания были опубликованы под названием "Кек!зес! Кероп оп !!се А!8ог!сСсгп!с Еапйиайе АЕООЕ 60" (" Переработанный отчет об алгоритмическом языке АЕООЬ 60") (Вас!сиз ас а!., 1962). 2.5.7. Оценка языка А8.ООЕ 60 Если судить по одним показателям, то язык АЕООЕ 60 имел ошеломительный успех, если по другим — был крупнейшим провалом.
Успехом. проявившимся практически немедленно, было то, что он стал единственным официальным средством представления алгоритмов в научной литературе и свыше 20 лет оставался таковым. Каждый императивный язык программирования, созданный после !960 года, что-то позаимствовал у языка АЕООЕ 60. Большинство из них прямо или косвенно являются потомками языка АЕООЕ60; в качестве примеров можно назвать языки Р1Л, Б!МШ.А 67, А1.601.67, АЬООЕ 68, С, Разсас, Ас(а, С++ и Зача, В процессе создания языков АЕООЕ 58/АЕООЬ 60 многое было сделано впервые.
Впервые интернациональная группа попыталась разработать язык программирования. Язык А).ООЬ был первым машинно-независимым языком. Он также был первым языком с формально описанным синтаксисом. Это успешное использование формы ВНЕ положило начало нескольким важным отраслям теории вычислительных систем: формальным языкам, теории синтаксического анализа и теории разработки компиляторов. В итоге, структура языка АЬООЕ 60 повлияла на машинную архитектуру.
Одним из самых 70 Глава 2. Обзор основных языков программирования выдающихся примеров этого является тот фалт, что расширенная версия этого языка использовалась в качестве системного языка в серии универсальных вычислительных машин компании Вцггоиб)г В5000. В6000 и В7000. которые были сконструированы с аппаратно-реализованным стеком лля эффективной реализаш(и блочной структуры и рекурсивных процедур языка. Рассмотрим обратную сторону мелази: в Соединенных Штатах язык А) ОО) 60 никогда не получил широкого распространения или хотя бы значительного использования. Даже в Европе он так и не стал доминирующим языком. Причин его неприятия множество.
Во-первых. некоторые свойства языка АЕООЕ 60 стали слишком гибкими; они затруднялн понимание и делали его реализацию неэффективной. Л>чшим примерол~ этого служит метод передачи полпрограммач параметров по имени, подробно описываемый в главе 8. Сложности реачизации языка АЕОО) 60 сформулироваз Р>тишаузер (Кц()з)зацзег. 1967), сказавший, что очень немногие (если таковые вообще есть) реализации содержат язык АЕООЕ 60 полностью. Отсутствие в языке операторов ввода-вывода было еше одной существенной причиной его неприятия, Зависимый от реализации ввод и вывод затруднял перенос программ на другие компьютеры.
Один из важнейших связанных с языком АЕООЕ 60 вклалов в компьютерные науки — форма В)Чà — также не способствовал широкому распространению языка. Хотя сейчас эта форма рассматривается как простое и элегантное средство описания синтаксической структуры. в 1960 голу она казалась странной и сложной. В заключение отметим.
что. хотя и существовало множество лр>тих проблем. закрепившийся в среде пользователей язык ГОКТКАН, а также отсутствие поллержки со стороны корпорации )ВМ, были. вероятно, решающими факторами провала языка А).ОО) 60 как языка широкого применения. Работа над языком АЕООЕ60 в действительности никогда не завершалась в том смысле. что неясности и неопределенности всегда были частью описания этого языка (Кпцбз, 1967). Ниже слелует пример программы на языке АЕООЕ 60. сошшепс Пример программы на языке АВООВ 60 Ввод: Целое число 11зг1еп, меньше 100, за которым следует набор целых чисел в количестве 11вг1еп Вывод: Количество введенных величин, которые больше их среднего арифметического; Ьеддп хпведег егкау 1п"11вг (1:99)) йпеедег 11вг1еп, соцпгег, вцш, ачегаде, гевц1г) вцш := 0; гевц1г := 0; геас(1пг (11вс1еп) ) 1Е [11вг1еп > О) а (11вг1еп с 100) Е)зеп Ьедз и оошшепс Считывание входных величин в массив и вычисление суммы; Юог соцптег := 1 евер 1 ипвх1 11вс1еп с1о Ьеддп геас(1пг (1пг11вг(соцпгег))) 2.5.