Алгол 68

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

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

Особенности

Несмотря на схожесть названия и официальную преемственность по отношению к языку Алгол 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 on 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] (недоступная ссылка)

Ссылки

Read other articles:

Questa voce sull'argomento centri abitati della California è solo un abbozzo. Contribuisci a migliorarla secondo le convenzioni di Wikipedia. Segui i suggerimenti del progetto di riferimento. BellcomuneBell – Veduta LocalizzazioneStato Stati Uniti Stato federato California ConteaLos Angeles TerritorioCoordinate33°58′42.29″N 118°10′58.47″W / 33.978414°N 118.182908°W33.978414; -118.182908 (Bell)Coordinate: 33°58′42.29″N 118°10′58.47″W&#...

 

 

Peucetian tomb in Ruvo di Puglia, Italy Fresco from the tomb depicting dancing Peucetian women The Tomb of the Dancers or Tomb of the Dancing Women (Italian: Tomba delle danzatrici) is a Peucetian tomb in Ruvo di Puglia, Italy. It was discovered in the Corso Cotugno necropolis in November 1833.[1] The date of its construction is uncertain, dates ranging from the end of the fifth century BC[2] to the mid-fourth century BC[1] have been proposed. In any case, the tomb's f...

 

 

Governmental designation for Alaska from 1884 to 1912 This article is about Alaska during the period of 1884 to 1912. For other uses of the term, see Alaska's at-large congressional district and United States District Court for the District of Alaska. This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: District of Alaska – news ·...

1864 naval skirmish in the American Civil War This article includes a list of general references, but it lacks sufficient corresponding inline citations. Please help to improve this article by introducing more precise citations. (October 2017) (Learn how and when to remove this template message) Bahia IncidentPart of the American Civil WarCutting out the Florida from Bahia, Brazil by USS Wachusett.DateOctober 7, 1864LocationPort of Salvador, Bahia, Empire of BrazilResult Union victory Capture...

 

 

Daniele De Rossi De Rossi bersama Italia pada tahun 2012Informasi pribadiNama lengkap Daniele De Rossi[1]Tanggal lahir 24 Juli 1983 (umur 40)[1]Tempat lahir Rome, ItaliaTinggi 1,84 m (6 ft 1⁄2 in)[2]Posisi bermain Gelandang bertahanKarier junior1997–2000 Ostia Mare2000–2001 AS RomaKarier senior*Tahun Tim Tampil (Gol)2001–2019 AS Roma 459 (43)2019–2020 Boca Juniors 5 (0)Total 466 (44)Tim nasional2001 Italia U-19 3 (2)2002 Italia U-20 4...

 

 

British entrepreneur and artificial intelligence researcher (born 1976) SirDemis HassabisCBE FRS FREng FRSADemis Hassabis at the Royal Society admissions day in London, July 2018Born (1976-07-27) 27 July 1976 (age 47)London, England, UKNationalityBritishEducation Queen Elizabeth's School, Barnet Christ's College, Finchley Alma mater University of Cambridge (BA) University College London (PhD) Known for DeepMind AlphaGo AlphaFold Awards Breakthrough Prize in Life Sci...

Voce principale: Mantova Football Club. Associazione Calcio MantovaStagione 1952-1953Sport calcio Squadra Mantova Allenatore Antenore Marmiroli (1ª-18ª) Aldo Biffi (19ª-34ª) Presidente Giuseppe Rea Serie C10º posto. Maggiori presenzeCampionato: Mosca, Turrini (33) Miglior marcatoreCampionato: Mosca (7) StadioStadio Danilo Martelli 1951-1952 1953-1954 Si invita a seguire il modello di voce Questa voce raccoglie le informazioni riguardanti l'Associazione Calcio Mantova nelle competiz...

 

 

Domenico Alberto Azuni Domenico Alberto Azuni (Sassari, 3 agosto 1749 – Cagliari, 23 gennaio 1827) è stato un giurista e magistrato italiano del Regno di Sardegna e del Primo Impero francese. Indice 1 Biografia 2 Opere 2.1 In italiano 2.2 In francese 3 Titoli 4 Onorificenze 5 Note 6 Bibliografia 7 Voci correlate 8 Altri progetti 9 Collegamenti esterni Biografia Targa nella casa natale di Azuni Nacque nel 1749 a Sassari da famiglia medio borghese, nella casa all'angolo tra Via al Duomo e Vi...

 

 

此條目可参照英語維基百科相應條目来扩充。 (2021年5月6日)若您熟悉来源语言和主题,请协助参考外语维基百科扩充条目。请勿直接提交机械翻译,也不要翻译不可靠、低品质内容。依版权协议,译文需在编辑摘要注明来源,或于讨论页顶部标记{{Translated page}}标签。 约翰斯顿环礁Kalama Atoll 美國本土外小島嶼 Johnston Atoll 旗幟颂歌:《星條旗》The Star-Spangled Banner約翰斯頓環礁�...

Charlotte Amalie Harbor, Saint Thomas, U.S. Virgin Islands The economy of the United States Virgin Islands is primarily dependent upon tourism, trade, and other services, accounting for nearly 60% of the Virgin Island's GDP and about half of total civilian employment. Close to two million tourists per year visit the islands.[1] The government is the single largest employer. The agriculture sector is small, with most food being imported. The manufacturing sector consists of rum distil...

 

 

密西西比州 哥伦布城市綽號:Possum Town哥伦布位于密西西比州的位置坐标:33°30′06″N 88°24′54″W / 33.501666666667°N 88.415°W / 33.501666666667; -88.415国家 美國州密西西比州县朗兹县始建于1821年政府 • 市长罗伯特·史密斯 (民主党)面积 • 总计22.3 平方英里(57.8 平方公里) • 陸地21.4 平方英里(55.5 平方公里) • ...

 

 

Katedral SendaiGereja Katedral Santo Petrus dan Santo Paulus di Sendai司教座 – 仙台カテドラル 聖ペトロ・聖パウロ聖堂Katedral SendaiLokasiSendaiNegaraJepangDenominasiGereja Katolik RomaSejarahDedikasiSanto Petrus dan Santo PaulusArsitekturStatusKatedralStatus fungsionalAktifAdministrasiKeuskupanKeuskupan Sendai Katedral Sendai atau yang bernama lengkap Gereja Katedral Santo Petrus dan Santo Paulus di Sendai (Jepang: 司教座 – 仙台カテドラル 聖ペトロ・...

Artemis Fowl Buku pertama dalam seri Artemis FowlPengarangEoin ColferBahasaInggirsGenreFantasiPenerbitViking Press/Disney HyperionTanggal terbit2001–sekarangJenis mediaSampul tebal, sampul tipis, dan buku lisan Artemis Fowl seri novel yang ditulis oleh Eoin Colfer. Ceritanya adalah tentang seorang penjahat cerdas yang berusaha mengumpulkan uang melalui berbagai tindakan kriminal. Sejauh ini, ada tujuh buku dalam seri ini;[1] yang pertama diterbitkan pada tahun 2001.[1&...

 

 

بريان هوتون هودجسون (بالإنجليزية: Brian Houghton Hodgson)‏  معلومات شخصية الميلاد 1 فبراير 1800(1800-02-01)برستبوري[1]  الوفاة 23 مايو 1894 (94 سنة) [2]لندن  مواطنة المملكة المتحدة لبريطانيا العظمى وأيرلندا مملكة بريطانيا العظمى (–1 يناير 1801)  عضو في الجمعية الملكية،  والجمعي�...

 

 

1977 studio album by Billy JoelThe StrangerStudio album by Billy JoelReleasedSeptember 29, 1977 (1977-09-29)RecordedJuly–August 1977StudioA & R, New York CityGenre Rock[1] pop rock[2] Length42:34LabelColumbiaProducerPhil RamoneBilly Joel chronology Turnstiles(1976) The Stranger(1977) 52nd Street(1978) Singles from The Stranger Movin' Out (Anthony's Song)Released: September 1977[3] Just the Way You AreReleased: November 1977 She's Always a ...

Social doctrine Part of a series onCatholic social teachingEmblem of the Holy See Overview Social teachings of the papacy Distributism Solidarity Subsidiarity Tranquillitas ordinis Pope Leo XIII Rerum novarum Pope Pius XI Divini redemptoris Mit brennender Sorge Non abbiamo bisogno Quadragesimo anno Pope Pius XII Social teachings Pope John XXIII Mater et magistra Pacem in terris Second Vatican Council Dignitatis humanae Gaudium et spes Pope Paul VI Octogesima adveniens Populorum progressio Pop...

 

 

هذه المقالة يتيمة إذ تصل إليها مقالات أخرى قليلة جدًا. فضلًا، ساعد بإضافة وصلة إليها في مقالات متعلقة بها. (سبتمبر 2019) الهفهاف بن المهنّد الهفهاف بن المهند الراسبي الأزدي البصري معلومات شخصية مكان الميلاد مدينة البصرة الوفاة 10 محرم سنة 61 هـ، الموافق 10 أكتوبر 680 م.كربلاء الإق...

 

 

Canadian National Baptist ConventionAbbreviationCNBCClassificationEvangelicalTheologyBaptistAssociationsBaptist World Alliance, Evangelical Fellowship of CanadaHeadquartersCochrane, Alberta, CanadaOrigin1985Congregations429Members17,116Official websitecnbc.ca The Canadian National Baptist Convention (formerly Canadian Convention of Southern Baptists) is a Baptist Christian denomination in Canada. It is affiliated with the Baptist World Alliance and the Evangelical Fellowship of Canada. The he...

1931 film The SqueakerDirected byMartin FričKarel LamačWritten byEdgar Wallace (novel)Rudolph CartierEgon EisOtto EisProduced byKarel LamačStarringLissy ArnaKarl Ludwig DiehlFritz RaspCinematographyOtto HellerEdited byAlwin EllingHeinz RitterProductioncompanyOndra-Lamac-FilmDistributed bySüd-FilmRelease date 30 July 1931 (1931-07-30) Running time70 minutesCountryGermanyLanguageGerman The Squeaker (German: Der Zinker) is a 1931 German crime film directed by Martin Frič and ...

 

 

1988 film by Gary Sherman Poltergeist IIITheatrical release posterDirected byGary ShermanWritten by Gary Sherman Brian Taggert Based onCharactersby Steven SpielbergProduced byBarry BernardiStarring Tom Skerritt Nancy Allen Heather O'Rourke Zelda Rubinstein CinematographyAlex NepomniaschyEdited byRoss AlbertMusic byJoe RenzettiProductioncompanyMetro-Goldwyn-MayerDistributed byMGM/UA Communications Co. (United States)United International Pictures (International)Release date June 10, 1...