Перейти к содержимому

Algol 68 это какая версия языка

  • автор:

Алгол 68 и его влияние на программирование в СССР и России (часть 1)

В начале 60-х годов XX века сложилась следующая ситуация с языками программирования: в Америке — безраздельно царствовал Фортран, в Европе все большую популярность получал язык Алгол 60 [1], кстати, в его разработке принимали участие и американские учёные. Этот язык был довольно стройный, имел более- менее точное описание синтаксиса, в нём были некоторые новые интересные языковые черты (прежде всего, — рекурсия, чего не было в Фортране). В то же время язык обладал массой недостатков, как технических (например, использование целых числе в качестве меток) так и, собственно, языковых (например, никак не был стандартизован ввод/вывод, не была поддержана обработка литер и строк, а это уже в то время было довольно важной частью программирования, не было сложных структур данных). Поэтому авторы языка продолжили работу и в 1964 году выпустили Пересмотренное сообщение [2]. Чтобы организационно оформить эти работы, международная федерация IFIP (International Federation for Information Processing) в 1962 г. создала Рабочую группу Working Group 2.1 по алголоподобным языкам. После выпуска Пересмотренного сообщения об Алголе 60 эта группа приступила к разработке планов следующих языков программирования — наследников Алгола 60. Была выпущена так называемая Белая книга, которая содержала несколько очень интересных статей. Например, статья Ральфа Лондона, одного из создателей языка Alphard — в котором были некоторые предпосылки для доказательств корректности программ. В статье Барбары Дисков «Язык CLU» впервые были сформулировано понятие абстрактных типов данных. Была статья голландского ученого ван Вейнгаардена о двухуровневых грамматиках. Дело в том, что контекстно-свободные грамматики, которыми традиционно пользовались в то время, обычно в нормальной форме Бэкуса-Наура (Бэкус — разработчик Фортрана, а Наур — главный редактор сообщения об Алголе 60), были удобными и используются, кстати, до сих пор, но все-таки недостаточно сильными и выразительными, например, нельзя было описать контекст использования конструкции. Грамматики ван Вейнгаардена имеют двухуровневую структуру и по выразительной мощности эквивалентны машине Тьюринга, т.е. в принципе, с помощью такой грамматики можно описать любой алгоритм. На основе Белой книги, а именно, на основе предложения ван Вейнгаардена, было предложено создавать новый язык, существенно более точный, с более формализованный описанием не только синтаксиса, но и семантики. В результате, после многолетних дискуссий Рабочей группы (РГ) 2.1, в работе которой приняли участие множество известных ученых из Америки и Европы, в декабре 1968 года ПЧР приняла сообщение о языке Алгол 68 [3]. Надо сказать, что этот язык в ту пору был очень тяжельгм и трудным в понимании, поэтому РГ 2.1 продолжила свою работу, расширила состав авторов языка, и к 1973 году было подготовлено Пересмотренное сообщение об Алголе 68 [4], в котором на основе всех базовых идей исходного языка и грамматик ван Вейнгаардена был определен существенно более приемлемый язык, более простой в реализации.

Начало работ по Алголу 68 в СССР

В СССР первую информацию о работах по Алголу 68 привез член РГ 2.1, будущий академик, а тогда еще член-корреспондент АН СССР — Андрей Петрович Ершов из Академгородка (Новосибирск). Через него эта информация распространилась по стране, в том числе её получил мой научный руководитель доктор физ-мат наук Григорий Самуилович Цейтин, который в то время руководил лабораторией математической лингвистики НИИММ ЛГУ. Он принял активное участие в обсуждение языка, писал весьма дельные замечания авторам и удостоился благодарности в предисловии к публикации по Алголу 68. Понятно, что язык с новыми выразительными возможностями, с новым способом описания синтаксиса и семантики вызвал большой интерес среди программирующей общественности, стали формироваться группы, готовящиеся к его реализации. В первые годы, правда собственно до реализации дело не доходило. Например, группа математиков из Академгородка всерьез занялась переводом сообщения об Алголе 68 на русский язык. Понятно, что русское описание языка в стране, где много миллионов людей говорят по-русски, вещь важная. Я за этой работой только наблюдал и, первое время, не принимал участия. Честно скажу, мне казалось, что они слишком много времени тратят на выбор терминов, даже на обсуждение того, каким шрифтом какие термины должны быть опубликованы, а типографские возможности того времени были совсем не такими богатыми, как сейчас. Всё это вызывало массу трудностей, но это было как-то не интересно для меня. Из обсуждений того времени запомнился тот факт, что в русскоязычной литературе не было укоренившегося слова, обозначающего файл. Предлагались различные варианты переводы этого важного понятия: «тека» (от слова библиотека), «фонд» и так далее. Я помню, как шутил на эту тему Андрей Берс из Академогородка, что в русском языке есть только два слова, заканчивающихся на «-айл» — кайло и хайло, потом он всегда немножко молчал и с улыбкой добавлял: «ну, конечно, есть еще и Задыхайло». Задыхайло был очень известным советским программистом, не знаю, обижался ли он на эту шутку или нет, но я запомнил, что «-айл» это не очень русское окончание. Тем не менее, после долгих обсуждений был принят термин файл, которым мы пользуемся до сих пор. Кстати говоря, таких терминов в то время было принято довольно много, именно в связи с Алголом 68. Например, «сборка мусора». Первоначально казалось, что это совершенно не технический, не научный термин. Но, с другой стороны, это прямой перевод англоязычного термина garbage collection, довольно точно отражающего суть дела (в процессе динамического распределения памяти возникают участки памяти, на которые уже никто не ссылается, т.е. реальный мусор). Поэтому механизм, который уплотняет память, оставляет в памяти только те участки, на которые есть реальные ссылки это, действительно, сборка мусора. В основном перевод был работой Александра Федоровича Papa. Когда оригинальное сообщение об Алголе 68 было опубликовано (в 1969 г., так как официальное принятие осуществилось только в декабре 1968 г.), важно отметить, что уже в том же 1969 году в журнале «Кибернетика» вышел перевод сообщения об Алголе 68 [5], т е. все признавали, насколько важно иметь описание такого нового языка на русском языке.

Первые реализации Алгола 68 в СССР

У нас в Ленинграде Г.С. Цейтин собрал группу, состоящую из нескольких кандидатов наук и довольно большого количества студентов, которой предложил заниматься реализацией Алгола 68. Дело было новое, опыта программирования трансляторов не было ни у кого из нас. Борис Константинович Мартыненко, который в то время был руководителем лаборатории системного программирования, провел 10 месяцев в Дании на стажировке у Наура и принял участие в реализации транслятора с Алгола 60 GIER — одного из самых известных трансляторов на тот период. Насколько я знаю, он занимался лексическим анализатором (сканером, говоря в современных терминах). Конечно, он знал и общее устройство транслятора и даже читал курс в Университете на мат-мехе, который я на третьем курсе посещал. Итак, группа была сформирована, мы активно изучали язык. Язык был действительно довольно трудным для понимания, но мы были молодыми, мы были математиками и нам казалось, что это вполне естественно разбираться в сложных вещах. Разобрались, причем разобрались настолько, что находили ошибки в описании, писали авторам языка, получали ответы и продумывали реализацию. Первые полтора-два года эта работа носила чисто исследовательский характер, даже без возможностей для выхода на практическую реализацию транслятора. Так совпало, что примерно в то же самое время в СССР были развернуты работы по созданию системы ЕС ЭВМ. Это была полная копия серии ШМ/360, руководство страны надеялось совершить такой «китайский скачок», разом догнав американцев по номенклатуре вычислительных машин и, особенно, по набору прикладных программ для них. Я не хочу сейчас вдаваться в обсуждение. хорошо это были или плохо. Лично я считаю, что это было ошибкой — у нас была довольно сильная школа советских создателей ЭВМ, были довольно интересные программы, в том числе и трансляторы с языков высокого уровня, например, для ЭВМ «Минск». Были, как минимум, три транслятора с Алгола 60, выполненные по руководством С.С. Лаврова в Подлипках (ТА-1М), А.П. Ершова в Академгородке (Альфа-транслятор) и М.Р. Шура-Буры в Москве (ТА-2). Но решение было принято, машины серии ЕС начали проектировать, под это были отпущены определенные, довольно крупные финансовые ресурсы. В рамках процесса создания новых ЭВМ нам удалось получить финансирование для работ по отладочному транслятору с Алгола 68 для будущей ЕС ЭВМ (повторюсь, что ЕС ЭВМ в то время еще не было, она только проектировалась и разрабатывалась). Будучи студентом 5-го курса мат-меха я поехал в Москву для подписания договора с НИЦЭВТом. Так получилось, что старшие товарищи по разным причинам не смогли поехать, поэтому послали меня. Там я в первый раз встретился с А.П. Ершовым, который приехал ровно с той же целью — подписывать договор на создание транслятора с Алгола 68 для ЕС ЭВМ (проект Бета). На самом деле идея Ершова была существенно более глобальной — он хотел разработать семейство трансляторов с языков Алгол 68, PL/I, Симула 67 для разных машин, то есть реализовать идею UnCoL. Кстати, я только недавно узнал, что первые публикации по UnCoL (Universal Common Language) появились в Communications of ACM еще в 1958 году — идея при создании трансляторов с m языков на п ЭВМ изменить число компиляторов с m*n на m+n (сначала программы со всех входных языков переводятся на некий универсальный промежуточный язык, а потом из него делаются генераторы в коды разных ЭВМ). Эта идея довольно старая, но, насколько я знаю, в полном виде она до сих пор не была осуществлена. Ершов хотел заняться именно такой глобальной темой, и была достигнута договоренность между Ершовым и Цейтиным, что мы будем делать трансляторы со строго одинакового стандарта входного языка, но наш ленинградский транслятор будет играть роль отладочного, более-менее быстрого транслятора, а новосибирская система Бета будет глубоко оптимизирующим транслятором. Понятно, что наши коллеги из Академгородка хотели использовать опыт, который они накопили при проектировании и разработке транслятора Альфа с Алгола 60. Итак, работа из чисто научно-исследовательской превратилась в хозяйственно-договорную со строгими этапами и сроками. Не всем участникам нашей группы это понравилось. Одно дело, когда ты спокойно работаешь, пишешь статьи, выступаешь на конференциях, и никто на тебя не давит, никто не напоминает, что завтра приедут заказчики и им надо предъявить такой-то отчет. Совсем другое дело — производственная работа. Однако, в те годы мы все это понимали не слишком сильно. Вольница была довольно большая, в Университете каждый занимался, чем хотел, и, кстати, научные результаты от этого не только не страдали, но, может быть, даже и выигрывали. Но даже само слово «плановость» было для нас чуждым в то время. Так началась наша работа в тесном контакте с новосибирской группой. Эта работа приобрела и организационные формы.

Рабочая группа по Алголу 68

В рамках ГКНТ — Государственного комитета по науке и технике — была создана Рабочая группа, которую возглавил А.П. Ершов. Первое время его заместителем был Г.С. Цейтин. Примерно к 1975 году Цейтин во многом потерял интерес к этой сугубо практической работе, увлекся языками искусственного интеллекта, семантическими сетями и другими интересными вещами (например, языками проектирования поведения роботов) и постепенно стал отходить от работ по Алголу 68. Тогда Ершов назначил меня заместителем председателя Рабочей группы. Не скрою, это было очень лестно для меня, но это была не синекура — приходилось довольно много работать, и Ершов следил за тем, чтобы мы занимались существенно более широким кругом вопросов. Алгол 68 был в некоторой степени только поводом для встреч специалистов из разных городов, которые проходили 5-6 раз в год (чаще в Ленинграде и Академгородке, но и в других городах тоже, в Москве, Ростове, иногда в курортных местах, чтобы участникам был и дополнительный интерес отвлечься от основной работы и посетить заседание Рабочей группы). После выхода в 1973 году Пересмотренного сообщения об Алголе-68 в Рабочей группе началась интенсивная работа по подготовке его официального перевода на русский язык. В этом работе принимали участие практически все члены Рабочей группы, но основную роль играл Андрей Александрович Берс. Эта титаническая работа завершилась публикацией в 1979 году толстой книги — билистинга [6]. Слева был оригинальный текст, а справа — перевод. Еще раз повторю, что многие русские термины вводились практически впервые, поэтому было решено оставить английский текст для справок. Довольно часто Ершов давал членам Рабочей группы различные статьи на реферирование. Дело в том, что Ершов был одним из немногих советских специалистов, который реально мог выезжать за границу, посещать капиталистические страны — в те годы это было довольно трудно. Я помню, каким событием было, когда Цейтина отпустили на конференцию то ли в Румынию, то ли в Венгрию — даже такие поездки были в то время редкостью. А Ершов ездил, причем довольно свободно, у него были широкие связи в среде научной общественности, многие присылали ему свои статьи как уважаемому человеку. Ершов стремился, чтобы эти статьи не просто лежали на полке, раздавал их членам рабочей группы, мы их читали, а потом делали доклады на заседаниях рабочей группы и, главное, обсуждали эти статьи. Например, мне как-то раз Ершов поручил прочитать (и выступить с докладом по прочитанному материалу) статью С. Джонсона «Yet another compiler compiler» [7]. Сейчас все знают, что такое Yacc, то есть компилятор компиляторов — компилятор, который на входе получает грамматику языка, а на выходе — компилятор (на самом деле, только анализатор) с этого языка. Но в те годы это все было в новинку, и мне было очень интересно это прочитать. Или, например, статья Вулфа про оптимизации [8]. Он сделал оптимизирующий транслятор: вначале был придуман некий универсальный промежуточный язык (ПЯ), и любая оптимизация не меняла структуры текста на ПЯ, только добавлялись параметры в узлы графов, представляющих операторы программы. Была выполнена серия забавных экспериментов: было задано несколько оптимизаций, которые выполнялись в разной последовательности. Оказалось, что некоторые оптимизации надо выполнять несколько раз, так как применение одной оптимизации дает материал для других. Последовательность оптимизаций также влияет на качество кода — это была интересная статья, я ее изучил и потом рассказал о ней на заседании Рабочей группы. Также на заседаниях обсуждались различные учебные материалы по Алголу 68, сравнивались различные реализации. В СССР появилось довольно много групп, реализующих Алгол 68. Попробую перечислить эти группы (работа шла в 70-е годы XX века). Очень интересная группа работала в Киеве (научный руководитель — Екатерина Логвиновна Ющенко, среди авторов были Штетельмен, Штейнбук, Макогон). Эта группа реализовывала не столько транслятор, сколько некоторую базу данных, их интересовали Persistent Data (сохраняемые данные). Если пользователь заканчивал работу, он мог нажать специальную кнопку, и все данные, созданные в процессе сеанса, запоминались в некоторой базе данных, а в следующий раз можно было начать с прерванного места. Тогда это была довольно большая новинка и интересная работа, но для нас, для Рабочей группы по Алголу 68 это было отчасти посторонней работой. Например, группа в Киеве даже не перешла на Пересмотренное сообщение об Алголе 68, а продолжала работать в соответствии с первым Сообщением, которым позже уже никто не пользовался. Тем не менее, эта работа была интересна. Мне всегда очень нравилась работа московского ЦЭМИ (Центральный экономико-математический институт) под руководством Михаила Рувимовича Левинсона. Они разрабатывали транслятор с Алгола 68 для DEC-вской архитектуры PDP11 — тогда были советские копии СМ3, СМ4, СМ1420, и для этих машин москвичи сделали транслятор. Они предложили интересную идею отказаться от ограничений на область действия объектов, все данные размещать в куче, это давало возможность перейти к функциональным языкам (частичная параметризация, функции, выдаваемые в качестве результата вызовов других функций, и так далее). Тогда на первый план выходит, конечно, сборка мусора, и она занимает довольно большой процент времени счета, но, тем не менее, Левинсону и его коллегам удалось преодолеть эти трудности, и транслятор заработал. Очень интересная пионерская работа! Одной из наиболее удачных реализаций являлась работа другой московской группы под руководством Александра Николаевича Маслова, куда входили Валерий Броль, Владимир Гущин и Владимир Яковлев. Эти молодые люди реализовали транслятор с Алгола 68 для новой советской машины Эльбрус. Эльбрус мы все очень любили, поскольку это была одна из немногих в то время оригинальных советских машин. Злые языки, конечно, говорили, что Эльбрус чем-то похож на Burroughs, но, поскольку я хорошо знаю архитектуру этих двух машин, то считаю, что это именно злые языки — так как многие идеи Эльбруса были абсолютно оригинальными. Для этой хорошей машины был сделан транслятор с более-менее полного языка Алгол 68, и я даже участвовал в некой комиссии по приемке этого транслятора на Эльбрусе. Надо сказать, что этой группе было легче работать, так как Эльбрус — это high-level language (HLL)-computer, то есть компьютер, ориентированный на языки высокого уровня, и поэтому многие вещи, которые, например, нам на ЕС ЭВМ приходилось реализовывать многими командами (вырезки, циклы, вызовы процедур), в Эльбрусе реализовывались существенно проще — для всех этих конструкций были специальные машинные команды. Еще пару слов про Академгородок и группу Ершова. Первоначально входными языками в проекте Бета были Алгол 68, Симула 67 и PL/1, а целевыми машинами были ЕС ЭВМ и БЭСМ 6. Эта группа вела огромное количество исследований, были очень интересные публикации, интересные результаты, но до практического воплощения дошли только трансляторы для БЭСМ-6 с Симульг 67 и Паскаля (Георгий Степанов и Сергей Покровский) и транслятор с Модулы 2, который выполнил Леонид Захаров. Называлось еще подмножество языка Ада, который реализовал Сергей Тен, но у меня об этом трансляторе мало информации.

Транслятор А68 ЛГУ

Итак, мы реализовали транслятор с Алгола 68 на ЕС ЭВМ. Поскольку ЕС ЭВМ появилась только в 1974, а реально работающей машиной стала в 1975, то нам пришлось некоторое время работать на других машинах. Начали мы с польской ЭВМ Одра 1204, там был довольно хороший транслятор с Алгола 60, поэтому анализирующую часть транслятора с Алгола 68 мы написали на Алголе 60 и отлаживали на Одре 1204. Попутно пришлось решать довольно много новых задач в технике трансляции, например, даже структура компилятора оказалась нестандартной, нетрадиционной. В Алголе 68 можно описывать новые типы и операции над ними. Так вот, если написано m а;, то это может быть описанием переменой а, если m — тип, а может быть унарной операцией, если m — операция. Мы этого не поймем, пока не идентифицируем m. Но, чтобы идентифицировать m, нам надо составить таблицу всех описаний с учетом блочной структуры, а это невозможно сделать без синтаксического анализа. Получается некий замкнутый круг. У нас сразу было принято разделение труда — все конструкции были поделены между участниками группы (например, Цейтин взял себе вызов процедур и работал с параллельными предложениями. Это, действительно, самые трудные куски Алгола 68). Структурой компилятора в целом никто не занимался. Этим стал заниматься я и придумал некую схему из шести просмотров, которые чередуются (прямой, обратный) и в каждой прямой фазе собирается некоторая информация к концу конструкции, а на обратном просмотре эта информация передается к началу конструкции. Я предложил выполнить сначала некий первичный, более-менее примитивный синтаксический анализ только с целью проидентифицировать индикаторы видов и операций. Потом выполняется полный видовой анализ и генерация кода. В те годы даже опубликовать эти работы было практически негде — не было журналов по программированию. В 1975 году был образован академический журнал «Программирование», который издается до сих пор. Эго один из немногих отечественных журналов по нашей специальности, который индексируется в Web of Science и Scopus. Буквально во втором номере этого журнала опубликована моя статья «Процессы идентификации и структура компилятора с языка Алгол 68» [9]. Еще раз повторю, что на Одре работал только анализатор, генератор кода мы стали писать на языке макрогенератора ассемблера будущей ЕС ЭВМ, поскольку мы получили доступ к ее прообразу — к оригинальной американской машине IBM/360 — уж не знаю, какими путями удалось купить эти две машины (тогда были жесткие ограничения на поставку в СССР высокотехнологичной продукции), я даже помню их названия — Озон и Лотос. Они были установлены в НИЦЭВТЕ, головной организации, занимающейся разработкой ЕС ЭВМ, в Москве на Варшавском шоссе. Мы ездили туда еженедельно на 2-3 ночи. Конечно, днем на машинах работали москвичи, а ночное время давали нам, приезжим. Вначале это были чисто американские машины, затем рядом с каждым устройством стали ставить его аналог (рядом с оригинальным дисководом — немецкий, рядом с оригинальным устройством печати — болгарский аналог, что-то было из Чехословакии). В первое время эти аналоги работали довольно плохо, а так как мы работали ночами, за нами особенно не присматривали, мы научились быстро передергивать кабельные разъемы и работали только на оригинальных американских устройствах, чтобы особо не страдать. Конечно, это не приветствовалось, зато мы быстрее работали. То же можно сказать и про операционную систему. Пока коллеги из НИЦЭВТа прочитают версию программы операционной системы, пока разберутся, пока найдутся какие-то описания, уже выходила другая версия. В конце концов, в одном из американских университетов была разработана вообще другая операционная система VM (Virtual Machine). IBM купила эту систему у университета, доработала, сделала ее существенно более широкой по функциональности, но во много раз хуже по эффективности. Поэтому все передавали друг другу магнитную ленту с оригинальной операционной системой от университета, а не официальную IBM-овскую версию, которая была рекомендована компанией и НИЦЭВТом. Это было тяжелое время, на протяжении многих и многих недель надо было каждую неделю ночами работать на компьютере, это было очень непросто, и все мои старшие товарищи отошли от этой работы: еженедельные поездки в Москву с тяжелейшими чемоданами, набитыми колодами перфокарт (магнитные ленты появились и стали реально использоваться намного позже), проживание в гостинице, ночная работа отнимали много сил. Работать на новой технике, когда и спросить было не у кого при возникновении проблем, было и трудно, и интересно. В результате такой тяжелой работы мы сделали генерирующую часть из промежуточного языка в коды ЕС ЭВМ, всё как-то заработало. К этому времени у нас на мат-мехе уже появилась ЕС ЭВМ, причем это была первая машина такого класса (ЕС1030), поставленная в открытой, а не в военной организации — об этом даже писали ленинградские газеты. Наконец, мы решили перенести весь транслятор на ЕС ЭВМ, применив метод раскрутки — переписали генеририрующую часть на Алголе 68 и транслировали каждую из нескольких сот процедур сначала на Одре 1204, получали текст на ПЯ в виде перфоленты, которую потом несли на ЕС ЭВМ, вводили (это был текст на макроязыке) и транслировали с макроассемблера в коды ЭВМ. Эта работа заняла около года, в это время было найдено много ошибок в трансляторе — ведь это же шикарный, огромный тест на Алголе 68. Попутно выяснилось, что многие конструкции мы реализовали не слишком удачно. Например, мне запомнилась борьба за эффективность вызова. Первая реализация требовала 6 команд в порождении кода и 23 команды в подпрограмме. Работало это довольно медленно, мы предприняли большое количество усилий, чтобы ускорить процесс. Главный прорыв произошел тогда, когда мы, зная уже устройство UNIX, пустили динамическое распределение памяти справа налево, так что базовый регистр стал указывать и на вершину стека, и на статику текущей процедуры. В этих условиях нам удалось сделать так, чтобы на вызов приходилось полторы команды — одна четырехбайтовая и одна двухбайтовая команда и всего 11 команд в подпрограмме. В те годы, когда аналогичный транслятор с PL/I F занимал порядка 150 команд на каждый вызов, наш результат я оцениваю довольно высоко. Как только закончилась первая раскрутка, мы тут же приступили ко второй раскрутке, продолжая улучшать качество кода, уменьшая время трансляции и так далее. В результате, после трех раскруток, получился довольно приемлемый транслятор, которым начали пользоваться программисты, в первую очередь, из военных организаций, потому что именно там требовалась особо высокая надежность.

Влияние Алгола 68 на другие языки

Как известно, Алгол 68 мирового признания не получил. В академических кругах им пользовались, было реализовано несколько трансляторов в разных странах. Возможно, это связано с тем, что Алгол 68 действительно был тяжеловат для широкой публики, он был рафинированным языком для Академии (так на Западе называют сотрудников университетов и исследовательских центров). Возможно, тому есть и другие причины. Появился Паскаль, который занял нишу простых языков. Никлаус Вирт на симпозиуме, посвященном его собственному восьмидесятилетию, который я недавно посетил (кстати, сам Никлаус жив-здоров и до сих пор активно работает, его и сейчас весьма интересно слушать, его идеи до сих пор продуктивны), рассказал историю языков, как он её видит. Он был членом Рабочей группы 2.1 и только позже он вышел из нее вместе с Хоаром и Дейкстрой, подписав так называемый Minority Report (Мнение меньшинства). Позже он создал язык Паскаль как ответ на вызов Алгола 68 — как сделать выразительный, но простой язык. Как обычно, эта простота не далась даром. В нашей ленинградской группе, как только Паскаль появился, мы параллельно с нашими работами по Алголу 68 приступили к работам по созданию и транслятора с Паскаля (руководил этими работами Аркадий Попов). Мы сразу же наткнулись на кучу несоответствий. В стремлении упростить язык Вирт не обратил внимания на очень многие вещи. Например, Паскаль — язык с более-менее строгой типизацией. Целой переменной присвоить вещественное значение нельзя. Но, если процедура передается параметром другой процедуре, то корректность ее параметров уже никак не проверяется. Эго такая дырка в описании. Еще один пример — было опубликовано описание Паскаля на русском языке под редакцией известного программиста Д.Б. Подшивалова из Москвы. На слова: «Паскаль существенно превосходит по мощности Алгол 60» была сноска редактора: «С этим утверждением трудно согласиться, например, на Паскале трудно написать универсальную программу умножения матриц», так как в Паскале границы массива входят в его тип, так что, формально говоря, нужна своя процедура умножения матриц для массивов разных размеров [10]. Тем не менее, влияние Алгола 68, конечно же, очевидно, если смотреть на набор конструкций Паскаля. На мой взгляд, еще более ярким примером преемственности к Алголу 68 является язык С, опубликованный в 1972 году. В С, как и в Алголе 68, возможна выдача значения условным выражением, присваиванием, последовательностью операторов, а операция с накоплением а+=Ь — это же явно из Алгола 68 взято. Последовательные предложения, когда (а=ор1, Ь=ор2, выражение)+1 — это же чистая калька последовательного предложения из Алгола 68, только вместо «;» ставится «,». Эта конструкция очень удобна и используется, скажем, для передачи параметров когда в сложном выражении нужно попутно запомнить какие-то промежуточные результаты. Не могу закончить эту часть доклада, не вспомнив, что мне было довольно трудно внедрять Алгол 68 в СССР. Времена были такие, что, если не было какого-то западного аналога, то никто и говорить не хотел. Когда в США появился язык Ада, быстро ставший стандартом Министерства Обороны США, этот язык был очень далек от Фортрана и PL/I, но очень похож на Алгол 68 по мощи, по выразительной силе, по полной типизации и так далее. Появление языка Ада в Америке помогло мне с внедрением Алгола 68 в СССР. Я стал говорить: «Смотрите, а Америке появился язык с полной типизацией, вопросы надежности ПО выходят на первый план», и этот аргумент мне очень помогал при внедрении Алгола 68, особенно, в военных организациях СССР. Об авторе: Санкт-Петербургский государственный университет
Санкт-Петербург, Россия
а.terekhov@spbu.ru
Материалы международной конференции Sorucom 2014 (13-17 октября 2014)
Помещена в музей с разрешения авторов 13 ноября 2015

Алгол 68

Алго́л 68 (англ. Algol 68 от англ. algorithmic — алгоритмический и англ. language — язык) — процедурный императивный высокоуровневый язык программирования, потомок языка Алгол, существенно доработанный. Разрабатывался в период 1964-68 годов. Позиционировался как универсальный язык для описания произвольных алгоритмов обработки данных высокой сложности. Отличается большим объёмом, богатством возможностей и сложностью синтаксиса.

Особенности

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

Наиболее характерной особенностью синтаксиса Алгола-68 является возможность переопределения синтаксиса и операторов — программист может активно расширять язык в требуемом направлении, создавать собственные операции. Целью включения таких средств в язык было достижение максимальной выразительности и получение возможности удобного описания максимально абстрактных алгоритмов. За эти возможности, а также за наличие мощных операторов для обработки структур и массивов Алгол-68 иногда называют «языком сверхвысокого уровня».

Формально Алгол-68 является процедурным языком программирования, ориентированным на описание последовательности команд, но благодаря развитым средствам описания типов и операций он может быть использован для написания программ практически в любом стиле. Так, в приведённом ниже примере программа на Алголе-68 написана в функциональном стиле.

Эта программа реализует классический алгоритм «Решето Эратосфена» для поиска всех простых чисел меньше 100. nil означает null pointer (нулевой указатель) в других языках. Нотация x of y означает «доступ к x как к элементу struct или union y».

begin # Algol-68 prime number sieve, functional style # proc error = (string s) void: (print(( newline, " error: ", s, newline)); goto stop); proc one to = (int n) list: (proc f = (int m,n) list: (m>n | nil | cons(m, f(m+1,n))); f(1,n)); mode list = ref node; mode node = struct (int h, list t); proc cons = (int n, list l) list: heap node := (n,l); proc hd = (list l) int: ( l is nil | error("hd nil"); skip | h of l ); proc tl = (list l) list: ( l is nil | error("tl nil"); skip | t of l ); proc show = (list l) void: ( l isnt nil | print((" ",whole(hd(l),0))); show(tl(l))); proc filter = (proc (int) bool p, list l) list: if l is nil then nil elif p(hd(l)) then cons(hd(l), filter(p,tl(l))) else filter(p, tl(l)) fi; proc sieve = (list l) list: if l is nil then nil else proc not multiple = (int n) bool: n mod hd(l) ≠ 0; cons(hd(l), sieve( filter( not multiple, tl(l) ))) fi; proc primes = (int n) list: sieve( tl( one to(n) )); show( primes(100) ) end  

Ещё одна интересная особенность языка Алгол-68 — его «многоязычность» — в язык заложена возможность использования различных таблиц трансляции, что позволяет для каждого естественного языка определить свой набор ключевых слов Алгола-68. В результате программисты получают возможность писать программы ключевыми словами родного языка. Ниже приведён пример простейшей процедуры на Алголе-68, выполняющей вычисление даты, следующей за переданной в параметре, на двух языках: английском и немецком.

 # Next day date - english variant mode date = struct(Int day, string month, Int year); proc the day following = (date x) date: If day of x < length of month (month of x, year of x) then (day of x + 1, month of x, year of x) elif month of x = "December" then (1, "January", year of x + 1) else (1, successor of month (month of x), year of x) fi; 
 # Nachfolgetag - Deutsche Variante menge datum = tupel(ganz tag, wort monat, ganz Jahr); funktion naechster tag nach = (datum x) datum: wenn tag von x < monatslaenge(monat von x, jahr von x) dann (tag von x + 1, monat von x, jahr von x) wennaber monat von x = "Dezember" dann (1, "Januar", jahr von x + 1) ansonsten (1, nachfolgemonat(monat von x), jahr von x) endewenn; 

История языка

К 1960 году была закончена работа Комитета по языку высокого уровня IFIP (International Federation for Information Processing, Международная федерация по обработке информации), сформировавшего один из первых «классических» ЯВУ — Алгол. Алгол сразу же завоевал популярность, в первую очередь — в академических кругах Европы, не только как язык практического программирования, но и как универсальный язык описания вычислительных алгоритмов в научных работах. Но уже тогда было ясно, что Алгол не идеален и требует доработки. С одной стороны, в языке отсутствовали некоторые весьма желательные возможности, с другой — некоторые механизмы и конструкции Алгола использовались настолько редко, что встал вопрос об исключении их из языка для упрощения транслятора. В результате к 1962 году IFIP собрал из специалистов множества стран Западной Европы и Америки новый комитет по Алголу. Комитету было поставлено две задачи:

  • Согласовать и утвердить сокращённый вариант Алгола, в котором отсутствовали бы редко используемые конструкции исходного языка.
  • Создать язык-преемник Алгола с учётом известных достоинств и недостатков языка-предка.

Работа комитета длилась в течение шести лет — с 1962 по 1968 годы. Довольно быстро комитету удалось выполнить первую задачу — согласовать сокращённое подмножество Алгола, содержащее только широко используемые его элементы. Вопрос же о языке-преемнике решался в течение нескольких лет, в постоянных дискуссиях. Двое членов комитета: Чарльз Хоар из Оксфордского университета и Никлаус Вирт из Швейцарии (в то время он преподавал в США, в Станфордском университете) в 1965 году предложили комитету свой вариант нового языка, названного ими Algol-W. Он представлял собой умеренную переработку Алгола, очищенную от известных недостатков и дополненную минимумом необходимых возможностей. Будучи опубликован, проект был положительно оценён многими учёными, но комитет отклонил его. Предложений, различной степени проработанности, было много, часть из них отвергалась, часть была использована в проектировании языка. В декабре 1968 года в Мюнхене, на заседании комитета был официально представлен новый язык программирования, получивший название Алгол-68. Язык оказался чрезвычайно развитым, но при этом весьма объёмным и сложным. Даже опытные программисты испытывали затруднения в понимании «сообщения о языке», выпущенного комитетом.

Официальные документы комитета оценивают проделанную им работу положительно, хотя некоторые из членов комитета высказывались как о работе, так и о её результатах, крайне негативно. Из критиков языка наиболее известны вышеупомянутые Чарльз Хоар и Никлаус Вирт. Хоар ещё во время работы комитета критиковал проект за «неясность, сложность и сверхамбициозность». По завершении работы комитета Хоар, Вирт и ещё ряд учёных создали небольшой доклад, излагающий критику нового языка. В его резюмирующей части говорилось: «как инструмент надёжного создания сложных программ язык следует признать неудачным» (этот доклад был запрещён к распространению руководством IFIP). Впоследствии, в 1980 году, в своей Тьюринговской лекции Хоар подробно останавливался на работе комитета по Алголу-68, недостатках как процесса разработки языка, так и его самого.

Для описания языка был использован оригинальный формализм — двухуровневые грамматики ван Вейнгаардена. Это позволило добиться строгости описания (поскольку этот тип грамматик позволяет описывать в формальном виде контекстные условия, которые при описании языка в БНФ или РБНФ приходится передавать словесно), но ещё больше усложнило описание. Кроме того, по грамматикам ван Вейнгаардена крайне затруднительно прямо построить анализатор языка, поэтому исходное описание можно было рассматривать лишь как первоначальную форму спецификации синтаксиса, требующую серьёзной модификации для реального практического применения. Выбранный комитетом формализм описания языка предопределил сложности в его реализации. Процесс разработки компиляторов под новый язык оказался сложным и длительным, хотя в конечном итоге они были созданы и использовались.

Того успеха, который имел Алгол-60, Алгол-68 не достиг. В академических кругах он оказался не востребован из-за сложности и громоздкости, а в промышленном программировании не смог потеснить широко используемые в то время Фортран и Кобол. В Европе Алгол-68 в течение длительного времени использовал Британский королевский комитет по связи и радиолокации. В СССР существовали рабочие группы по разработкам на Алголе-68 (например, новосибирская под руководством академика Андрея Петровича Ершова, ленинградская под руководством Андрея Николаевича Терехова, московские под руководством Александра Николаевича Маслова и Михаила Рувимовича Левинсона). В Ленинградском государственном университете был создан компилятор и мощная система программирования на Алголе-68 для ЕС ЭВМ, эксплуатировавшаяся в течение многих лет. Тем не менее, широкого распространения язык также не получил.

Возможно, одним из факторов, предопределивших фактический провал Алгола-68, стало появление в начале 1970 годов нового поколения языков высокого уровня, среди которых особую роль сыграл Pascal — по сути, тот самый «улучшенный и дополненный вариант Алгола», которого ждали в академической среде от комитета по Алголу-68, но гораздо более простой. Его широкое распространение практически не оставило ниши для Алгола-68. Несмотря на неудачу, этот язык повлиял на разработчиков более поздних объектно-ориентированных языков, в частности C++, хотя многие возможности были отброшены, а часть — реализована другими способами. В 1977 году, когда комитет по языку программирования Министерства обороны США пришёл к выводу о необходимости разработки нового языка программирования встроенных систем, по решению комитета, предложения по будущему языку должны были базироваться на одном из языков PL/1, Pascal и Алгол-68. Таким образом, у Алгола-68 был шанс стать прародителем нового универсального языка, но этот шанс не осуществился: из 15 представленных на конкурс проектов все 4, отобранные на второй этап для доработки, были основаны на языке Pascal. После ещё одного этапа доработки лучший из этих проектов стал языком Ада.

Критика языка

Прежде всего, отрицательные отзывы касаются сложности синтаксиса Алгола-68. В частности, Хоар отмечал, что, отойдя от простоты языка-прародителя, новый язык совершенно не облегчает разработку программ. Как говорил Хоар, «члены комитета использовали постоянные задержки в его работе, чтобы втиснуть в будущий язык всё более сложные конструкции, вместо того, чтобы попытаться упростить его».

Критики отмечали также, что язык провоцирует разработчика на свободное неструктурное программирование с активным использованием собственных абстрактных категорий и обозначений. От этого код программы становился неудобочитаемым, что затрудняет групповую разработку программ и их сопровождение. Кроме того, чрезмерное обилие возможностей языка делало затруднительным полноценную реализацию компилятора.

Литература

  • «Практическое руководство по Алголу 68», Пейган Ф. Дж. Пер. с англ. — М., Мир, 1979—240 с.
  • «Пересмотренное сообщение об Алголе 68», ред. А. ван Вейнгаарден. Пер. с англ. — М., Мир, 1979—533 с.
  • «Алгол 68: Методы реализации», А. Н. Балуев и др., под ред. Г. С. Цейтина — Л. изд-во Ленингр. ун-та, 1976—224 с.
  • «Неформальное введение в Алгол 68», Ч. Линдси, С. ван дер Мюйлен. Пер. с англ., 1973—408 с.
  • Роберт В Себеста Глава 2.11. Ортогональная структура: язык ALGOL 68 // Основные концепции языков программирования = Concepts of Programming Languages. — 5-е изд. — М .: «Вильямс», 2001. — С. 672. — ISBN 5-8459-0192-8
  • Язык компьютера. — М .: Мир, 1989. — С. 163, 190, 194. — ISBN 5-03-001148-X
  • Brailsford, D.F. and Walker, A.N., Introductory ALGOL 68 Programming, Ellis Horwood/Wiley, 1979
  • McGettrick, A.D., ALGOL 68, A First and Second Course, Cambridge Univ. Press, 1978
  • Peck, J.E.L., An ALGOL 68 Companion, Univ. of British Columbia, October 1971
  • Tanenbaum, A.S., A Tutorial on ALGOL 68, Computing Surveys 8, 155—190, June 1976 and 9, 255—256, September 1977, [1]

Ссылки

  • Programming Algol 68 Made Easy
  • Из истории создания компилятора с Алгол 68
  • Диалог об Алголе-68 (Авторы просматривают архивные материалы и непринужденно беседуют)
  • Система программ динамической поддержки для транслятора с Алгола 68
  • Revised Report on the Algorithmic Language ALGOL 68 (англ.) — The official reference for users and implementors of the language
  • Revised Report on the Algorithmic Language ALGOL 68 (англ.) — HTML version of the above
  • Charles Lindsey’s paper on the development of ALGOL 68 for the 2nd History of Programming Languages conference proceedings (англ.)
  • Algol 68 Genie — a GNU GPL ALGOL 68 interpreter & compiler (англ.)
  • Algol68 Standard Hardware representation (англ.)

Алгол (язык)

АЛГО́Л (Algol, ALGOrithmic Language — алгоритмический язык), язык программирования высокого уровня. Существуют три последовательно сменявших друг друга версии языка: Алгол-58, Алгол-60, Алгол-68. Язык предназначен для записи алгоритмов, которые строятся в виде последовательности процедур, применяемых для решения поставленной задачи. Первая версия языка, Алгол-58, была разработана в конце весны 1958, преимущественно для решения численных задач.

Алгол подразделяется на три уровня: язык описаний, определяющий основные понятия, язык публикаций, позволяющий писать и обсуждать программы, и язык аппаратного уровня, реализуемый на компьютере. Одним из недостатков языка было отсутствие процедур ввода и вывода данных. Широкого признания ни Алгол-58, ни его преемник Алгол-60 не получили, но в них были реализованы множество идей, получивших применение и развитие в других языках. Это — блочная структура, позволяющая делить программы на замкнутые, независимые единицы; рекурсия — способность программ повторно обращаться к себе; формализованное определение синтаксиса — способа размещения слов в языке; вложенные контексты; описания переменных; определения способа передачи параметров.

В 1965 К. Хоар и Никлаус Вирт модифицировали Алгол-60. Эта версия, получившая название Алгол-W в честь Вирта (Wirth), была опубликована и приобрела большую популярность в университетских городках. Но комитет по Алголу ее отверг и сам занялся модификацией языка. В декабре 1968 Международным комитетом специалистов по информатике был создан Алгол-68, работая с которым, программисты могли писать ключевые слова на родном языке. Ключевые слова содержатся в таблице трансляции, хранящейся в памяти компьютера и используемой компилятором Алгола-68 для преобразования программ в машинный код.

Сохраняя стилистическую связь со своим предшественником, Алгол-68 отличается более широкими возможностями и общностью конструкций. Его особенностями являются развитая система типов, автоматическое приведение типов, средства описания параллельных процессов и синхронизации, формальное описание языка на основе двухуровневых грамматик. Стремление к формальной строгости и последовательности сделало Алгол-68 слишком громоздким и сложным. Он использовался в ограниченных масштабах только американскими программистами.

Алгол 68 Алго л 68 англ Algol 68 от англ algorithmic алгоритмический и англ language язык процедурный императивный высок

Алго́л 68 (англ. Algol 68 от англ. algorithmic — алгоритмический и англ. language — язык) — процедурный императивный высокоуровневый язык программирования, потомок языка Алгол, существенно доработанный. Разрабатывался в период 1964—1968 годов. Позиционировался как универсальный язык для описания произвольных алгоритмов обработки данных высокой сложности. Отличается большим объёмом, богатством возможностей и сложностью синтаксиса.

Алгол 68
Класс языка версия или издание [d] и язык программирования
Автор Адриан ван Вейнгаарден , Барри Майо [d] и Грегори Пек [d]
Разработчик Барри Майо [d] , Грегори Пек [d] , Корнелис Костер [d] и Адриан ван Вейнгаарден
Испытал влияние ALGOL Y [d] и ALGOL 60 [d]
Повлиял на BETA

Особенности Править

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

Наиболее характерной особенностью синтаксиса Алгола-68 является возможность переопределения синтаксиса и операторов — программист может активно расширять язык в требуемом направлении, создавать собственные операции. Целью включения таких средств в язык было достижение максимальной выразительности и получение возможности удобного описания максимально абстрактных алгоритмов. За эти возможности, а также за наличие мощных операторов для обработки структур и массивов Алгол 68 иногда называют «языком сверхвысокого уровня».

Формально Алгол 68 является процедурным языком программирования, ориентированным на описание последовательности команд, но благодаря развитым средствам описания типов и операций он может быть использован для написания программ практически в любом стиле. Так, в приведённом ниже примере программа на Алголе-68 написана в функциональном стиле.

Эта программа реализует классический алгоритм «Решето Эратосфена» для поиска всех простых чисел меньше 100. nil означает null pointer (нулевой указатель) в других языках. Нотация x of y означает «доступ к x как к элементу struct или union y».

begin # Algol-68 prime number sieve, functional style # proc error = (string s) void: (print(( newline, " error: ", s, newline)); goto stop); proc one to = (int n) list: (proc f = (int m,n) list: (m>n | nil | cons(m, f(m+1,n))); f(1,n)); mode list = ref node; mode node = struct (int h, list t); proc cons = (int n, list l) list: heap node := (n,l); proc hd = (list l) int: ( l is nil | error("hd nil"); skip | h of l ); proc tl = (list l) list: ( l is nil | error("tl nil"); skip | t of l ); proc show = (list l) void: ( l isnt nil | print((" ",whole(hd(l),0))); show(tl(l))); proc filter = (proc (int) bool p, list l) list: if l is nil then nil elif p(hd(l)) then cons(hd(l), filter(p,tl(l))) else filter(p, tl(l)) fi; proc sieve = (list l) list: if l is nil then nil else proc not multiple = (int n) bool: n mod hd(l) ? 0; cons(hd(l), sieve( filter( not multiple, tl(l) ))) fi; proc primes = (int n) list: sieve( tl( one to(n) )); show( primes(100) ) end

Ещё одна интересная особенность языка Алгол 68 — его «многоязычность» — в язык заложена возможность использования различных таблиц трансляции, что позволяет для каждого естественного языка определить свой набор ключевых слов Алгола-68. В результате программисты получают возможность писать программы ключевыми словами родного языка. Ниже приведён пример простейшей процедуры на Алголе-68, выполняющей вычисление даты, следующей за переданной в параметре, на двух языках: английском и немецком.

# Next day date - english variant mode date = struct(Int day, string month, Int year); proc the day following = (date x) date: If day of x < length of month (month of x, year of x) then (day of x + 1, month of x, year of x) elif month of x = "December" then (1, "January", year of x + 1) else (1, successor of month (month of x), year of x) fi; # Nachfolgetag - Deutsche Variante menge datum = tupel(ganz tag, wort monat, ganz Jahr); funktion naechster tag nach = (datum x) datum: wenn tag von x < monatslaenge(monat von x, jahr von x) dann (tag von x + 1, monat von x, jahr von x) wennaber monat von x = "Dezember" dann (1, "Januar", jahr von x + 1) ansonsten (1, nachfolgemonat(monat von x), jahr von x) endewenn;

История языка Править

К 1960 году была закончена работа Комитета по языку высокого уровня IFIP (International Federation for Information Processing, Международная федерация по обработке информации), сформировавшего один из первых «классических» ЯВУ — Алгол. Алгол сразу же завоевал популярность, в первую очередь — в академических кругах Европы, не только как язык практического программирования, но и как универсальный язык описания вычислительных алгоритмов в научных работах. Но уже тогда было ясно, что Алгол не идеален и требует доработки. С одной стороны, в языке отсутствовали некоторые весьма желательные возможности, с другой — некоторые механизмы и конструкции Алгола использовались настолько редко, что встал вопрос об исключении их из языка для упрощения транслятора. В результате к 1962 году IFIP собрал из специалистов множества стран Западной Европы и Америки новый комитет по Алголу. Комитету было поставлено две задачи:

  • Согласовать и утвердить сокращённый вариант Алгола, в котором отсутствовали бы редко используемые конструкции исходного языка.
  • Создать язык-преемник Алгола с учётом известных достоинств и недостатков языка-предка.

Работа комитета длилась в течение шести лет — с 1962 по 1968 годы. Довольно быстро комитету удалось выполнить первую задачу — согласовать сокращённое подмножество Алгола, содержащее только широко используемые его элементы. Вопрос же о языке-преемнике решался в течение нескольких лет, в постоянных дискуссиях. Двое членов комитета: Чарльз Хоар из Оксфордского университета и Никлаус Вирт из Швейцарии (в то время он преподавал в США, в Станфордском университете) в 1965 году предложили комитету свой вариант нового языка, названного ими Algol-W. Он представлял собой умеренную переработку Алгола, очищенную от известных недостатков и дополненную минимумом необходимых возможностей. Будучи опубликован, проект был положительно оценён многими учёными, но комитет отклонил его. Предложений различной степени проработанности, было много, часть из них отвергалась, часть была использована в проектировании языка. В декабре 1968 года в Мюнхене на заседании комитета был официально представлен новый язык программирования, получивший название Алгол 68. Язык оказался чрезвычайно развитым, но при этом весьма объёмным и сложным. Даже опытные программисты испытывали затруднения в понимании «сообщения о языке», выпущенного комитетом.

Официальные документы комитета оценивают проделанную им работу положительно, хотя некоторые из членов комитета высказывались как о работе, так и о её результатах крайне негативно. Из критиков языка наиболее известны вышеупомянутые Чарльз Хоар и Никлаус Вирт. Хоар ещё во время работы комитета критиковал проект за «неясность, сложность и сверхамбициозность». По завершении работы комитета Хоар, Вирт и ещё ряд учёных создали небольшой доклад, излагающий критику нового языка. В его резюмирующей части говорилось: «как инструмент надёжного создания сложных программ язык следует признать неудачным» (этот доклад был запрещён к распространению руководством IFIP). Впоследствии, в 1980 году, в своей Тьюринговской лекции Хоар подробно останавливался на работе комитета по Алголу-68, недостатках как процесса разработки языка, так и его самого.

Для описания языка был использован оригинальный формализм — двухуровневые грамматики ван Вейнгаардена. Это позволило добиться строгости описания (поскольку этот тип грамматик позволяет описывать в формальном виде контекстные условия, которые при описании языка в БНФ или РБНФ приходится передавать словесно), но ещё больше усложнило описание. Кроме того, по грамматикам ван Вейнгаардена крайне затруднительно прямо построить анализатор языка, поэтому исходное описание можно было рассматривать лишь как первоначальную форму спецификации синтаксиса, требующую серьёзной модификации для реального практического применения. Выбранный комитетом формализм описания языка предопределил сложности в его реализации. Процесс разработки компиляторов под новый язык оказался сложным и длительным, хотя в конечном итоге они были созданы и использовались.

Того успеха, который имел Алгол 60, Алгол 68 не достиг. В академических кругах он оказался не востребован из-за сложности и громоздкости, а в промышленном программировании не смог потеснить широко использовавшиеся в то время Фортран и Кобол. В каком-то смысле Алгол 68 повторил судьбу языка PL/1, разработанного в 1964 году комитетом под эгидой IBM для System/360 в качестве замены Фортрана и Кобола — в обоих случаях большие по численности комитеты, пытаясь удовлетворить потребности совершенно различных заинтересованных групп пользователей, включили в язык множество весьма мощных, но не использовавшихся всеми или даже большинством разработчиков средств, получив в результате мощный, но громоздкий, неуправляемый и трудно реализуемый инструмент. Если в случае с PL/1 это привело к фактическому распаду языка на подмножества (большинство, возможно, даже все компиляторы PL/1, существовавшие в мире, реализовывало только часть возможностей языка), то Алгол 68 всё-таки был реализован в полном объёме, но число таких реализаций оказалось крайне невелико и использование языка было довольно ограниченным. В Европе Алгол 68 в течение длительного времени использовал Британский королевский комитет по связи и радиолокации. В СССР существовали рабочие группы по разработкам на Алголе-68 (например, новосибирская под руководством академика Андрея Петровича Ершова, ленинградская под руководством Андрея Николаевича Терехова, московские под руководством Александра Николаевича Маслова и Михаила Рувимовича Левинсона). В Ленинградском государственном университете был создан компилятор и мощная система программирования на Алголе-68 для ЕС ЭВМ, эксплуатировавшаяся в течение многих лет. Тем не менее, широкого распространения язык также не получил.

Возможно, одним из факторов, предопределивших фактический провал Алгола-68, стало появление в начале 1970 годов нового поколения языков высокого уровня, среди которых особую роль сыграл Pascal — по сути, тот самый «улучшенный и дополненный вариант Алгола», которого ждали в академической среде от комитета по Алголу-68, но гораздо более простой. Его широкое распространение практически не оставило ниши для Алгола-68.

Несмотря на неудачу, Алгол 68 повлиял на разработчиков более поздних объектно-ориентированных языков, в частности, C++, хотя многие возможности были отброшены, а часть — реализована другими способами. В 1977 году, когда комитет по языку программирования Министерства обороны США пришёл к выводу о необходимости разработки нового языка программирования встроенных систем, по решению комитета предложения по будущему языку должны были базироваться на одном из языков PL/1, Pascal и Алгол 68. Таким образом, у Алгола-68 был шанс стать прародителем нового универсального языка, но этот шанс не осуществился: из 15 представленных на конкурс проектов все 4, отобранные на второй этап для доработки, были основаны на языке Pascal. После ещё одного этапа доработки лучший из этих проектов стал языком Ада.

Критика языка Править

Прежде всего, отрицательные отзывы касаются сложности синтаксиса Алгола-68. В частности, Хоар отмечал, что, отойдя от простоты языка-прародителя, новый язык совершенно не облегчает разработку программ. Как говорил Хоар, «члены комитета использовали постоянные задержки в его работе, чтобы втиснуть в будущий язык всё более сложные конструкции, вместо того, чтобы попытаться упростить его».

Критики отмечали также, что язык провоцирует разработчика на свободное неструктурное программирование с активным использованием собственных абстрактных категорий и обозначений. От этого код программы становился неудобочитаемым, что затрудняет групповую разработку программ и их сопровождение. Кроме того, чрезмерное обилие возможностей языка делало затруднительным полноценную реализацию компилятора.

Литература Править

  • Пейган Ф. Дж. Практическое руководство по Алголу 68 = A Practical Guide to ALGOL 68 / пер. с англ. А.Ф. Рара, под ред. А. П. Ершова. — М. : Мир, 1979. — 240 с.
  • Пересмотренное сообщение об Алголе 68 = Revised Report of the Algorithmic Language ALGOL 68 / ред. А. ван Вейнгаарден и др.; пер. с англ. А.А. Берса. — М. : Мир, 1979. — 533 с.
  • А. Н. Балуев и др. Алгол 68: Методы реализации / под ред. Г. С. Цейтина. — Л. : изд-во Ленингр. ун-та, 1976. — 224 с.
  • Ч. Линдси, С. ван дер Мюйлен. Неформальное введение в Алгол 68 / пер. с англ.. — М. : Мир, 1973. — 408 с.
  • Роберт В Себеста. Глава 2.11. Ортогональная структура: язык ALGOL 68 // Основные концепции языков программирования = Concepts of Programming Languages. — 5-е изд. — М. : «Вильямс», 2001. — С. 672. — ISBN 5-8459-0192-8.
  • Язык компьютера. — М. : Мир, 1989. — С. 163, 190, 194. — ISBN 5-03-001148-X.
  • ГОСТ 27974-88 — Язык программирования АЛГОЛ 68
  • ГОСТ 27975-88 — Язык программирования АЛГОЛ 68 расширенный
  • Brailsford, D.F. and Walker, A.N., Introductory ALGOL 68 Programming, Ellis Horwood/Wiley, 1979
  • McGettrick, A.D., ALGOL 68, A First and Second Course, Cambridge Univ. Press, 1978
  • Peck, J.E.L., An ALGOL 68 Companion, Univ. of British Columbia, October 1971
  • Tanenbaum, A.S., A Tutorial on ALGOL 68, Computing Surveys 8, 155—190, June 1976 and 9, 255—256, September 1977, [1](недоступная ссылка)

Ссылки Править

  • Tutorial — on the A68LGU compiler (a computer-printed text). -Date: 19.02.1981 от 3 декабря 2013 на Wayback Machine
  • Проект Open source Algol 68 implementations на сайте SourceForge.net
  • Programming Algol 68 Made Easy от 3 сентября 2013 на Wayback Machine
  • Из истории создания компилятора с Алгол 68 от 17 января 2020 на Wayback Machine
  • Диалог об Алголе-68 (Авторы просматривают архивные материалы и непринужденно беседуют) от 31 октября 2007 на Wayback Machine
  • (англ.) — The official reference for users and implementors of the language
  • (англ.) — HTML version of the above
  • Charles Lindsey’s paper on the development of ALGOL 68 for the 2nd History of Programming Languages conference proceedings от 3 декабря 2005 на Wayback Machine(англ.)
  • Algol68 Standard Hardware representation от 2 января 2014 на Wayback Machine(англ.)
  • History of ALGOL от 3 июля 2010 на Wayback Machine
  • Проставить сноски, внести более точные указания на источники.
  • Оформить список литературы.

После исправления проблемы исключите её из списка. Удалите шаблон, если устранены все недостатки.

Википедия, чтение, книга, библиотека, поиск, нажмите, истории, книги, статьи, wikipedia, учить, информация, история, скачать, скачать бесплатно, mp3, видео, mp4, 3gp, jpg, jpeg, gif, png, картинка, музыка, песня, фильм, игра, игры

Дата публикации: Октябрь 06, 2023, 20:58 pm
Самые читаемые

Дружинино (Псковская область)

Другая женщина (фильм, 2014)

Драшусов, Владимир Николаевич

Драхенфельс (баронский род)

Драфт НХЛ 1998 года

Драфт НБА 2019 года

Драматический театр Балтийского флота

Дракино (Московская область)

Драгоценные зёрна (фильм)

Дранишников, Владимир Александрович

© Copyright 2021, Все права защищены.

Algo l 68 angl Algol 68 ot angl algorithmic algoritmicheskij i angl language yazyk procedurnyj imperativnyj vysokourovnevyj yazyk programmirovaniya potomok yazyka Algol sushestvenno dorabotannyj Razrabatyvalsya v period 1964 1968 godov Pozicionirovalsya kak universalnyj yazyk dlya opisaniya proizvolnyh algoritmov obrabotki dannyh vysokoj slozhnosti Otlichaetsya bolshim obyomom bogatstvom vozmozhnostej i slozhnostyu sintaksisa Algol 68Klass yazyka versiya ili izdanie d i yazyk programmirovaniyaAvtor Adrian van Vejngaarden Barri Majo d i Gregori Pek d Razrabotchik Barri Majo d Gregori Pek d Kornelis Koster d i Adrian van VejngaardenIspytal vliyanie ALGOL Y d i ALGOL 60 d Povliyal na BETA Soderzhanie 1 Osobennosti 2 Istoriya yazyka 3 Kritika yazyka 4 Literatura 5 SsylkiOsobennosti PravitNesmotrya na shozhest nazvaniya i oficialnuyu preemstvennost po otnosheniyu k yazyku Algol 60 Algol 68 unasledoval ot nego lish nekotorye elementy sintaksisa i sushestvenno otlichaetsya ot yazyka predshestvennika prezhde vsego nalichiem bolshogo chisla dopolnitelnyh sintaksicheskih sredstv i izobrazitelnyh vozmozhnostej V chastnosti on vklyuchaet vstroennye v yazyk sredstva organizacii parallelnyh vychislenij operacii so strukturami kak s edinymi obektami matrichnye operacii Naibolee harakternoj osobennostyu sintaksisa Algola 68 yavlyaetsya vozmozhnost pereopredeleniya sintaksisa i operatorov programmist mozhet aktivno rasshiryat yazyk v trebuemom napravlenii sozdavat sobstvennye operacii Celyu vklyucheniya takih sredstv v yazyk bylo dostizhenie maksimalnoj vyrazitelnosti i poluchenie vozmozhnosti udobnogo opisaniya maksimalno abstraktnyh algoritmov Za eti vozmozhnosti a takzhe za nalichie moshnyh operatorov dlya obrabotki struktur i massivov Algol 68 inogda nazyvayut yazykom sverhvysokogo urovnya Formalno Algol 68 yavlyaetsya procedurnym yazykom programmirovaniya orientirovannym na opisanie posledovatelnosti komand no blagodarya razvitym sredstvam opisaniya tipov i operacij on mozhet byt ispolzovan dlya napisaniya programm prakticheski v lyubom stile Tak v privedyonnom nizhe primere programma na Algole 68 napisana v funkcionalnom stile Eta programma realizuet klassicheskij algoritm Resheto Eratosfena dlya poiska vseh prostyh chisel menshe 100 nil oznachaet null pointer nulevoj ukazatel v drugih yazykah Notaciya x of y oznachaet dostup k x kak k elementu struct ili union y begin Algol 68 prime number sieve functional style proc error string s void print newline error s newline goto stop proc one to int n list proc f int m n list m gt n nil cons m f m 1 n f 1 n mode list ref node mode node struct int h list t proc cons int n list l list heap node n l proc hd list l int l is nil error hd nil skip h of l proc tl list l list l is nil error tl nil skip t of l proc show list l void l isnt nil print whole hd l 0 show tl l proc filter proc int bool p list l list if l is nil then nil elif p hd l then cons hd l filter p tl l else filter p tl l fi proc sieve list l list if l is nil then nil else proc not multiple int n bool n mod hd l 0 cons hd l sieve filter not multiple tl l fi proc primes int n list sieve tl one to n show primes 100 end Eshyo odna interesnaya osobennost yazyka Algol 68 ego mnogoyazychnost v yazyk zalozhena vozmozhnost ispolzovaniya razlichnyh tablic translyacii chto pozvolyaet dlya kazhdogo estestvennogo yazyka opredelit svoj nabor klyuchevyh slov Algola 68 V rezultate programmisty poluchayut vozmozhnost pisat programmy klyuchevymi slovami rodnogo yazyka Nizhe privedyon primer prostejshej procedury na Algole 68 vypolnyayushej vychislenie daty sleduyushej za peredannoj v parametre na dvuh yazykah anglijskom i nemeckom Next day date english variant mode date struct Int day string month Int year proc the day following date x date If day of x lt length of month month of x year of x then day of x 1 month of x year of x elif month of x December then 1 January year of x 1 else 1 successor of month month of x year of x fi Nachfolgetag Deutsche Variante menge datum tupel ganz tag wort monat ganz Jahr funktion naechster tag nach datum x datum wenn tag von x lt monatslaenge monat von x jahr von x dann tag von x 1 monat von x jahr von x wennaber monat von x Dezember dann 1 Januar jahr von x 1 ansonsten 1 nachfolgemonat monat von x jahr von x endewenn Istoriya yazyka PravitK 1960 godu byla zakonchena rabota Komiteta po yazyku vysokogo urovnya IFIP International Federation for Information Processing Mezhdunarodnaya federaciya po obrabotke informacii sformirovavshego odin iz pervyh klassicheskih YaVU Algol Algol srazu zhe zavoeval populyarnost v pervuyu ochered v akademicheskih krugah Evropy ne tolko kak yazyk prakticheskogo programmirovaniya no i kak universalnyj yazyk opisaniya vychislitelnyh algoritmov v nauchnyh rabotah No uzhe togda bylo yasno chto Algol ne idealen i trebuet dorabotki S odnoj storony v yazyke otsutstvovali nekotorye vesma zhelatelnye vozmozhnosti s drugoj nekotorye mehanizmy i konstrukcii Algola ispolzovalis nastolko redko chto vstal vopros ob isklyuchenii ih iz yazyka dlya uprosheniya translyatora V rezultate k 1962 godu IFIP sobral iz specialistov mnozhestva stran Zapadnoj Evropy i Ameriki novyj komitet po Algolu Komitetu bylo postavleno dve zadachi Soglasovat i utverdit sokrashyonnyj variant Algola v kotorom otsutstvovali by redko ispolzuemye konstrukcii ishodnogo yazyka Sozdat yazyk preemnik Algola s uchyotom izvestnyh dostoinstv i nedostatkov yazyka predka Rabota komiteta dlilas v techenie shesti let s 1962 po 1968 gody Dovolno bystro komitetu udalos vypolnit pervuyu zadachu soglasovat sokrashyonnoe podmnozhestvo Algola soderzhashee tolko shiroko ispolzuemye ego elementy Vopros zhe o yazyke preemnike reshalsya v techenie neskolkih let v postoyannyh diskussiyah Dvoe chlenov komiteta Charlz Hoar iz Oksfordskogo universiteta i Niklaus Virt iz Shvejcarii v to vremya on prepodaval v SShA v Stanfordskom universitete v 1965 godu predlozhili komitetu svoj variant novogo yazyka nazvannogo imi Algol W On predstavlyal soboj umerennuyu pererabotku Algola ochishennuyu ot izvestnyh nedostatkov i dopolnennuyu minimumom neobhodimyh vozmozhnostej Buduchi opublikovan proekt byl polozhitelno ocenyon mnogimi uchyonymi no komitet otklonil ego Predlozhenij razlichnoj stepeni prorabotannosti bylo mnogo chast iz nih otvergalas chast byla ispolzovana v proektirovanii yazyka V dekabre 1968 goda v Myunhene na zasedanii komiteta byl oficialno predstavlen novyj yazyk programmirovaniya poluchivshij nazvanie Algol 68 Yazyk okazalsya chrezvychajno razvitym no pri etom vesma obyomnym i slozhnym Dazhe opytnye programmisty ispytyvali zatrudneniya v ponimanii soobsheniya o yazyke vypushennogo komitetom Oficialnye dokumenty komiteta ocenivayut prodelannuyu im rabotu polozhitelno hotya nekotorye iz chlenov komiteta vyskazyvalis kak o rabote tak i o eyo rezultatah krajne negativno Iz kritikov yazyka naibolee izvestny vysheupomyanutye Charlz Hoar i Niklaus Virt Hoar eshyo vo vremya raboty komiteta kritikoval proekt za neyasnost slozhnost i sverhambicioznost Po zavershenii raboty komiteta Hoar Virt i eshyo ryad uchyonyh sozdali nebolshoj doklad izlagayushij kritiku novogo yazyka V ego rezyumiruyushej chasti govorilos kak instrument nadyozhnogo sozdaniya slozhnyh programm yazyk sleduet priznat neudachnym etot doklad byl zapreshyon k rasprostraneniyu rukovodstvom IFIP Vposledstvii v 1980 godu v svoej Tyuringovskoj lekcii Hoar podrobno ostanavlivalsya na rabote komiteta po Algolu 68 nedostatkah kak processa razrabotki yazyka tak i ego samogo Dlya opisaniya yazyka byl ispolzovan originalnyj formalizm dvuhurovnevye grammatiki van Vejngaardena Eto pozvolilo dobitsya strogosti opisaniya poskolku etot tip grammatik pozvolyaet opisyvat v formalnom vide kontekstnye usloviya kotorye pri opisanii yazyka v BNF ili RBNF prihoditsya peredavat slovesno no eshyo bolshe uslozhnilo opisanie Krome togo po grammatikam van Vejngaardena krajne zatrudnitelno pryamo postroit analizator yazyka poetomu ishodnoe opisanie mozhno bylo rassmatrivat lish kak pervonachalnuyu formu specifikacii sintaksisa trebuyushuyu seryoznoj modifikacii dlya realnogo prakticheskogo primeneniya Vybrannyj komitetom formalizm opisaniya yazyka predopredelil slozhnosti v ego realizacii Process razrabotki kompilyatorov pod novyj yazyk okazalsya slozhnym i dlitelnym hotya v konechnom itoge oni byli sozdany i ispolzovalis Togo uspeha kotoryj imel Algol 60 Algol 68 ne dostig V akademicheskih krugah on okazalsya ne vostrebovan iz za slozhnosti i gromozdkosti a v promyshlennom programmirovanii ne smog potesnit shiroko ispolzovavshiesya v to vremya Fortran i Kobol V kakom to smysle Algol 68 povtoril sudbu yazyka PL 1 razrabotannogo v 1964 godu komitetom pod egidoj IBM dlya System 360 v kachestve zameny Fortrana i Kobola v oboih sluchayah bolshie po chislennosti komitety pytayas udovletvorit potrebnosti sovershenno razlichnyh zainteresovannyh grupp polzovatelej vklyuchili v yazyk mnozhestvo vesma moshnyh no ne ispolzovavshihsya vsemi ili dazhe bolshinstvom razrabotchikov sredstv poluchiv v rezultate moshnyj no gromozdkij neupravlyaemyj i trudno realizuemyj instrument Esli v sluchae s PL 1 eto privelo k fakticheskomu raspadu yazyka na podmnozhestva bolshinstvo vozmozhno dazhe vse kompilyatory PL 1 sushestvovavshie v mire realizovyvalo tolko chast vozmozhnostej yazyka to Algol 68 vsyo taki byl realizovan v polnom obyome no chislo takih realizacij okazalos krajne neveliko i ispolzovanie yazyka bylo dovolno ogranichennym V Evrope Algol 68 v techenie dlitelnogo vremeni ispolzoval Britanskij korolevskij komitet po svyazi i radiolokacii V SSSR sushestvovali rabochie gruppy po razrabotkam na Algole 68 naprimer novosibirskaya pod rukovodstvom akademika Andreya Petrovicha Ershova leningradskaya pod rukovodstvom Andreya Nikolaevicha Terehova moskovskie pod rukovodstvom Aleksandra Nikolaevicha Maslova i Mihaila Ruvimovicha Levinsona V Leningradskom gosudarstvennom universitete byl sozdan kompilyator i moshnaya sistema programmirovaniya na Algole 68 dlya ES EVM ekspluatirovavshayasya v techenie mnogih let Tem ne menee shirokogo rasprostraneniya yazyk takzhe ne poluchil Vozmozhno odnim iz faktorov predopredelivshih fakticheskij proval Algola 68 stalo poyavlenie v nachale 1970 godov novogo pokoleniya yazykov vysokogo urovnya sredi kotoryh osobuyu rol sygral Pascal po suti tot samyj uluchshennyj i dopolnennyj variant Algola kotorogo zhdali v akademicheskoj srede ot komiteta po Algolu 68 no gorazdo bolee prostoj Ego shirokoe rasprostranenie prakticheski ne ostavilo nishi dlya Algola 68 Nesmotrya na neudachu Algol 68 povliyal na razrabotchikov bolee pozdnih obektno orientirovannyh yazykov v chastnosti C hotya mnogie vozmozhnosti byli otbrosheny a chast realizovana drugimi sposobami V 1977 godu kogda komitet po yazyku programmirovaniya Ministerstva oborony SShA prishyol k vyvodu o neobhodimosti razrabotki novogo yazyka programmirovaniya vstroennyh sistem po resheniyu komiteta predlozheniya po budushemu yazyku dolzhny byli bazirovatsya na odnom iz yazykov PL 1 Pascal i Algol 68 Takim obrazom u Algola 68 byl shans stat praroditelem novogo universalnogo yazyka no etot shans ne osushestvilsya iz 15 predstavlennyh na konkurs proektov vse 4 otobrannye na vtoroj etap dlya dorabotki byli osnovany na yazyke Pascal Posle eshyo odnogo etapa dorabotki luchshij iz etih proektov stal yazykom Ada Kritika yazyka PravitPrezhde vsego otricatelnye otzyvy kasayutsya slozhnosti sintaksisa Algola 68 V chastnosti Hoar otmechal chto otojdya ot prostoty yazyka praroditelya novyj yazyk sovershenno ne oblegchaet razrabotku programm Kak govoril Hoar chleny komiteta ispolzovali postoyannye zaderzhki v ego rabote chtoby vtisnut v budushij yazyk vsyo bolee slozhnye konstrukcii vmesto togo chtoby popytatsya uprostit ego Kritiki otmechali takzhe chto yazyk provociruet razrabotchika na svobodnoe nestrukturnoe programmirovanie s aktivnym ispolzovaniem sobstvennyh abstraktnyh kategorij i oboznachenij Ot etogo kod programmy stanovilsya neudobochitaemym chto zatrudnyaet gruppovuyu razrabotku programm i ih soprovozhdenie Krome togo chrezmernoe obilie vozmozhnostej yazyka delalo zatrudnitelnym polnocennuyu realizaciyu kompilyatora Literatura PravitPejgan F Dzh Prakticheskoe rukovodstvo po Algolu 68 A Practical Guide to ALGOL 68 per s angl A F Rara pod red A P Ershova M Mir 1979 240 s Peresmotrennoe soobshenie ob Algole 68 Revised Report of the Algorithmic Language ALGOL 68 red A van Vejngaarden i dr per s angl A A Bersa M Mir 1979 533 s A N Baluev i dr Algol 68 Metody realizacii pod red G S Cejtina L izd vo Leningr un ta 1976 224 s Ch Lindsi S van der Myujlen Neformalnoe vvedenie v Algol 68 per s angl M Mir 1973 408 s Robert V Sebesta Glava 2 11 Ortogonalnaya struktura yazyk ALGOL 68 Osnovnye koncepcii yazykov programmirovaniya Concepts of Programming Languages 5 e izd M Vilyams 2001 S 672 ISBN 5 8459 0192 8 Yazyk kompyutera M Mir 1989 S 163 190 194 ISBN 5 03 001148 X GOSTyGOST 27974 88 Yazyk programmirovaniya ALGOL 68 GOST 27975 88 Yazyk programmirovaniya ALGOL 68 rasshirennyjLiteratura na anglijskom yazykeBrailsford D F and Walker A N Introductory ALGOL 68 Programming Ellis Horwood Wiley 1979 McGettrick A D ALGOL 68 A First and Second Course Cambridge Univ Press 1978 Peck J E L An ALGOL 68 Companion Univ of British Columbia October 1971 Tanenbaum A S A Tutorial on ALGOL 68 Computing Surveys 8 155 190 June 1976 and 9 255 256 September 1977 1 nedostupnaya ssylka Ssylki PravitTutorial on the A68LGU compiler a computer printed text Date 19 02 1981 Arhivnaya kopiya ot 3 dekabrya 2013 na Wayback Machine Proekt Open source Algol 68 implementations na sajte SourceForge net Programming Algol 68 Made Easy Arhivnaya kopiya ot 3 sentyabrya 2013 na Wayback Machine Iz istorii sozdaniya kompilyatora s Algol 68 Arhivnaya kopiya ot 17 yanvarya 2020 na Wayback Machine Dialog ob Algole 68 Avtory prosmatrivayut arhivnye materialy i neprinuzhdenno beseduyut Arhivnaya kopiya ot 31 oktyabrya 2007 na Wayback Machine Sistema programm dinamicheskoj podderzhki dlya translyatora s Algola 68 Revised Report on the Algorithmic Language ALGOL 68 angl The official reference for users and implementors of the language Revised Report on the Algorithmic Language ALGOL 68 angl HTML version of the above Charles Lindsey s paper on the development of ALGOL 68 for the 2nd History of Programming Languages conference proceedings Arhivnaya kopiya ot 3 dekabrya 2005 na Wayback Machine angl Algol68 Standard Hardware representation Arhivnaya kopiya ot 2 yanvarya 2014 na Wayback Machine angl History of ALGOL Arhivnaya kopiya ot 3 iyulya 2010 na Wayback MachineDlya uluchsheniya etoj stati zhelatelno Prostavit snoski vnesti bolee tochnye ukazaniya na istochniki Oformit spisok literatury Posle ispravleniya problemy isklyuchite eyo iz spiska Udalite shablon esli ustraneny vse nedostatki Istochnik https ru wikipedia org w index php title Algol 68 amp oldid 133140347

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *