ALGOL

АЛГОЛ
Парадигмапроцедурна, імперативна, структурна
Дата появи1958
ТворціРозроблена комітетом інженерів
Під впливом відFortran
Вплинула наПаскаль, Ada

АЛГОЛ або ALGOL (скорочення від англ. ALGOrithmic Language — алгоритмічна мова) — сімейство імперативних мов програмування, першу версію розроблено в середині 1950-х, і стала де факто стандартною мовою публікації алгоритмів на наступні 30 років. АЛГОЛ було розроблено для подолання деяких проблем, які були притаманні для Фортрана та дала поштовх для розвитку багатьох інших мов (серед них — Паскаль). У АЛГОЛ застосовувались операторні дужки, це перша мова, яка для їх розмежування застосувала пару begin та end. Фрагменти АЛГОЛ-подібного синтаксису досі використовуються у деяких нотаціях алгоритмів (Pidgin Algol).

Офіційні версії АЛГОЛу називають за роками, коли вони вперше були опубліковані. Існує три великі офіційні гілки сімейства АЛГОЛ:

  1. АЛГОЛ 58 — спочатку відомий як IAL (англ. International Algorithmic Language — Міжнародна Алгоритмічна Мова);
  2. АЛГОЛ 60 — версія 1963 року;
  3. АЛГОЛ 68 — версія 1973 року;

Ніклаус Вірт взяв АЛГОЛ 60 за основу для свого АЛГОЛ-В, перед тим як перейти до розробки Паскалю. АЛГОЛ-В мав би стати наступним поколінням АЛГОЛ, але комітет АЛГОЛ 68 віддав перевагу більш складному й розвиненому дизайну, перед спрощеним і прозорішим АЛГОЛ 60.

Історія

АЛГОЛ було розроблено спільним комітетом європейських та американських вчених на зустрічі 1958 року у Швейцарському Федеральному Інституті Технологій. Комітет визначив три різні синтаксиси: основний, публікації та реалізації. Різні синтаксиси дозволяли використовувати різні ключові слова та розділові знаки (коми та дефіси) для різних мов.

АЛГОЛ переважно використовувався для наукових досліджень у США та Європі. Його широке застосування було ускладнене відсутністю в його специфікації стандартного рішення для вводу-виводу даних та відсутністю інтересу з боку великих постачальників комп'ютерів. АЛГОЛ 60, попри те, став стандартом публікації алгоритмів та зробив вагомий внесок у розвиток подальших мов програмування.

Джон Бекус розробив нотацію Бекуса — метод опису мов програмування, прив'язаний до АЛГОЛу 58. Цей метод було переглянуто й розширено Пітером Науром для АЛГОЛу 60. За пропозицією Дональда Кнута його назву було змінено на нотацію Бекуса — Наура.

Як редактор першого бюлетеня АЛГОЛу, я брав участь у міжнародному обговоренні мови, та був обраний членом Європейської групи розробників у листопаді 1959. На цій посаді я був редактором звіту про АЛГОЛ 60, який став результатом зустрічі у Парижі у січні 1960 року.

— Пітер Наур

На зустрічі в Парижі (з 1 по 16 січня) також були присутні:

  • З Європи: Фрідріх Бауер, Пітер Наур, Гайнц Рутішаузер, Клаус Замелсон, Бернард Вакуі, Адріан ван Війнгаарден та Майкл Вуджер;
  • Зі Сполучених Штатів: Джон Бекус, Джулі Грін, Чарльз Катц, Джон Маккарті, Алан Перліс, Джосеф Генрі Вегстейн
Зустріч була виснажлива, довга та весела. Хтось нервував коли його гарні ідеї відкидались разом з поганими ідеями інших. Але старанність панувала весь період роботи. «Робота тринадцяти» була чудовою.

— Алан Перліс

І Джон Бекус, і Пітер Наур були також в комітеті, який розробив АЛГОЛ 60, як і Веллі Ферціг, який пізніше створив мову програмування Лого.

АЛГОЛ 60 надихнув розвиток багатьох мов, які його наслідували; вислів Тоні Гоара про нього, згодом став афоризмом:

Це мова, яка настільки випередила час, що стала не тільки розвитком її попередників, але й майже всіх її наступників

. Цей вислів інколи приписують Едсгеру Дейкстрі, який також брав участь у розробці першого компілятора для АЛГОЛ 60[джерело?].

Офіційні специфікації АЛГОЛ 60 та його реалізації

Існувало близько 70 поліпшень, розширень, розгалужень та підмов АЛГОЛ 60[1].

Великі системи Бюрро — стекові машини, розроблені для програмування на розширеному варіанті АЛГОЛ 60, відомому як Elliot ALGOL; їхня операційна система, MCP, була написана на Elliot ALGOL ще 1961 року. Корпорація Unisys досі[коли?] продає машини з цією назвою, які використовують MCP та підтримують набір компіляторів Elliot ALGOL.

Властивості

Офіційна специфікація АЛГОЛ 60 не містила можливостей вводу-виводу даних; різні реалізації компілятора визначали свої власні методи, які рідко були сумісні один з одним. На відміну, АЛГОЛ 68 мав розширену бібліотеку transput, для вводу-виводу даних.

АЛГОЛ 60 дозволяв два методи передачі параметрів: за значенням, та за назвою. Передача за назвою мала певні обмеження, на відміну від передачі за посиланням, що робило її небажаною для програмування на імперативних мовах. Наприклад, в АЛГОЛ 60 неможливо зробити процедуру, яка обмінює значення двох параметрів, якщо фактичними параметрами можуть бути цілі змінні та масив цілих.

Приклад коду (АЛГОЛ 60)

(Те, як виділений текст має бути написаний, залежить від конкретної реалізації, наприклад 'INTEGER' (включно з лапками) замість integer.)

procedure Absmax(a) Size:(n, m) Result:(y) Subscripts:(i, k);
    value n, m; array a; integer n, m, i, k; real y;
comment Найбільший по-модулю елемент матриці а, розміром n на m
заноситься до y, а його індекси до i та k;
begin integer p, q;
    y := 0; i := k := 1;
    for p:=1 step 1 until n do
    for q:=1 step 1 until m do
        if abs(a[p, q]) > y then
            begin y := abs(a[p, q]);
            i := p; k := q
            end
end Absmax

Це приклад того, як реалізувати таблицю, використовуючи Elliott 803 ALGOL .

 FLOATING POINT ALGOL TEST'
 BEGIN REAL A,B,C,D'

 READ D'

 FOR A:= 0.0 STEP D UNTIL 6.3 DO
 BEGIN
   PRINT PUNCH(3),££L??'
   B := SIN(A)'
   C := COS(A)'
   PRINT PUNCH(3),SAMELINE,ALIGNED(1,6),A,B,C'
 END'
 END'

PUNCH(3) направляє вивід на телетайп, а не на перфокарту.
SAMELINE запобігає поверненню каретки та забезпечує нормальне виведення рядка аргументів.
ALIGNED(1,6) форматований вивід 1 цифри до і 6 після коми.

Виведення Hello world у різних версіях

Варіативність та неможливість перенесення програм з однієї реалізації АЛГОЛ на іншу легко демонструється класичною програмою hello world.

АЛГОЛ 58 (IAL)

ALGOL 58 не мав методів вводу-виводу.

Сімейство АЛГОЛ 60

Оскільки АЛГОЛ 60 не мав стандартнизованих методів вводу-виводу інформації, на АЛГОЛі не існує програми hello world, яку можна було б переносити. Наступна програма може бути скомпільована та виконана на реалізації АЛГОЛ на мейнфреймі Unisys A-Series, і є спрощенням коду взятого з цього сайту (англ.).

BEGIN
  FILE F(KIND=REMOTE);
  EBCDIC ARRAY E[0:11];
  REPLACE E BY "HELLO WORLD!";
  WRITE(F, *, E);
END.

Альтернативний приклад із застосуванням Elliott Algol I/O. В Elliott Algol для позначення початку та кінця символьних констант вживають різні символи: ' та ’.

 program HiFolks;
 begin
    print 'Hello world’;
 end;

Наступна версія для Elliott 803 Algol (A104). Стандарт Elliott 803 використовував перфокарти з п'ятьма отворами, таким чином у коді було всього 25=32 символи. В ньому були лише літери верхнього регістру, майже не було розділових знаків, тому £ (англійський знак фунта) застосовувався для позначення початку рядка, а ? (знак питання) — для позначення кінця. Особливі послідовності брались у подвійні лапки (наприклад, ££L?? означало новий рядок на телетайпі).

  HIFOLKS’  
  BEGIN
     PRINT £HELLO WORLD££L??’
  END’

Версія вводу-виводу ICL 1900 Algol дозволяла введення інформації з паперової стрічки чи перфокарт. «Повний» режим паперової стрічки дозволяв літери нижнього регістру. Вивід здійсювався на принтер.

  'BEGIN'
     'WRITE TEXT'("HELLO WORLD");
  'END'

АЛГОЛ 68

«Algol 68 Report» було перекладено російською, німецькою, французькою та болгарською мовами.

У мові АЛГОЛ 68 методи вводу-виводу були узагальнено названі «Transput».

begin
  print(("Hello, world!",newline))
end

Або викорстовуючи спеціальний канал обміну:

begin
  putf((stand out,$gl$,"Hello, world!"))
end

Також АЛГОЛ 68 дозволяв програмувати із використанням ширших наборів символів, наприклад кириличного алфавіту, на БЕСМ-4.

begin
  print(("Вітання світу!",newline))
end

Примітка: радянський стандарт 1964 року ГОСТ 10859 дозволяв кодування 4-, 5-, 6- та 7-бітних символів на АЛГОЛ.

У публікаціях АЛГОЛ 68 зарезервовані слова були в нижньому регістрі, але друкувались напівжирним шрифтом чи підкреслено. Для полегшення програмування 7-бітних комп'ютерів, були «офіційні» методи виділяти зарезервовані слова, наприклад, використовуючи верхній регістр:

BEGIN
  print(("Hello, world!",newline))
END

Іноді програмісти були змушені повністю «ДУМАТИ У ВЕРХНЬОМУ РЕГІСТРІ» на комп'ютерах, які мали тільки 6-бітні символи, наприклад суперкомп'ютери CDC. В цьому випадку вищенаведений код мав писатися так:

'BEGIN'
  PRINT(("HELLO, WORLD!",NEWLINE))
'END'

Зарезервовані слова та заборонені ідентифікатори АЛГОЛ 60

Існує 35 зарезервованих слів у мові Великої системи Бюро: ALPHA, ARRAY, BEGIN, BOOLEAN, COMMENT, CONTINUE, DIRECT, DO, DOUBLE, ELSE, END, EVENT, FALSE, FILE, FOR, FORMAT, GO, IF, INTEGER, LABEL, LIST, LONG, OWN, POINTER, PROCEDURE, REAL, STEP, SWITCH, TASK, THEN, TRUE, UNTIL, VALUE, WHILE, ZIP.

Є 71 заборонений ідентифікатор: ACCEPT, AND, ATTACH, BY, CALL, CASE, CAUSE, CLOSE, DEALLOCATE, DEFINE, DETACH, DISABLE, DISPLAY, DIV, DUMP, ENABLE, EQL, EQV, EXCHANGE, EXTERNAL, FILL, FORWARD, GEQ, GTR, IMP, IN, INTERRUPT, IS, LB, LEQ, LIBERATE, LINE, LOCK, LSS, MERGE, MOD, MONITOR, MUX, NEQ, NO, NOT, ON, OPEN, OR, OUT, PICTURE, PROCESS, PROCURE, PROGRAMDUMP, RB, READ, RELEASE, REPLACE, RESET, RESIZE, REWIND, RUN, SCAN, SEEK, SET, SKIP, SORT, SPACE, SWAP, THRU, TIMES, TO, WAIT, WHEN, WITH, WRITE а також назви всіх внутрішніх функцій.

Джерела

  1. Архівована копія. Архів оригіналу за 27 вересня 2011. Процитовано 8 листопада 2007.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)

Посилання

Read other articles:

Lembaga Basa Jeung Sastra SundaTanggal pendirian20 September 1952Kantor pusatBandungKetuaDarpanSitus webLembaga Basa jeung Sastra Sunda Lembaga Basa jeung Sastra Sunda (LBBS; bahasa Indonesia: Lembaga Bahasa dan Sastra Sunda) adalah sebuah yayasan yang bertujuan untuk memelihara serta melestarikan bahasa dan sastra Sunda. LBBS didirikan di Bandung pada tanggal 20 September 1952. Dalam perkembangannya, Lembaga Basa jeung Sastra Sunda telah menerbitkan banyak kamus bahasa Sunda, buku pedoman Ej...

 

Danish draftsman and lithographer Portrait of Niels Christian Kierkegaard by Budtz Müller, 1882 Unfinished Sketch of Søren Kierkegaard by Niels Christian Kierkegaard, Royal Library, Denmark, c. 1840 Niels Christian Kierkegaard (24 September 1806 – 14 August 1882) was a Danish draftsman and lithographer.[1] Biography Kierkegaard was born in Copenhagen, Denmark. He was the son of Anders Andersen Kierkegaard and Karen Jørgensen and was a second cousin of the philosopher Søren...

 

Polish historian and lecturer (born 1956) Andrzej Friszke (2019). Andrzej Friszke (born 29 August 1956 in Olsztyn) is a Polish historian and lecturer. He specializes in the history of communist Poland and the democratic opposition to the communist regime. Friszke graduated in 1979 from the Department of History of the University of Warsaw. Since 1980 he has worked in the Club of Catholic Intellectuals in Warsaw. In 1981 he worked as a newspaper editor of the history section of the Solidarnoś...

Położenie Zagłębia Północnego na mapie Francji Kopalnia Charles Ledoux w Condé-sur-l’Escaut z lotu ptaka, fot. przed 1989 Zagłębie Północne – okręg przemysłowy w północno-wschodniej Francji (region Nord-Pas-de-Calais) z centrum w Lille, w pobliżu granicy belgijsko-francuskiej, powstały na bazie złóż węgla kamiennego. Rozwinęła się tu karbochemia i produkcja stali, a także przemysł włókienniczy, korzystający z miejscowych upraw lnu, a także importowanej wełny...

 

MulkanBupati BangkaPetahanaMulai menjabat 27 September 2018PresidenJoko WidodoGubernurErzaldi Rosman DjohanWakilSyahbudinPendahuluTarmizi saat Informasi pribadiLahir5 April 1974 (umur 49)Pusuk, Kelapa, Bangka Barat, Kepulauan Bangka BelitungKebangsaanIndonesiaPartai politik  PDI-PSunting kotak info • L • B Mulkan, S.H., M.H. (lahir 5 April 1974) adalah Bupati Bangka periode 2018—2023. Ia pernah menjabat sebagai Anggota DPRD Kabupaten Bangka. Riwayat Pendidik...

 

Bombing of railway station in Poland Tarnów train station bombingPart of Nazi terrorist attacks preceding invasion of PolandApproximately a third of the train station collapsed due to the bombing. Location of Tarnów in the interwar periodTarnów train stationTarnów train station (Tarnów)LocationTarnówDate28 August 1939 23:18WeaponsTwo time bombs hidden in suitcasesDeaths20Injured35PerpetratorsAntoni Guzy The Tarnów train station bombing was a deadly bombing carried out by a German sabot...

Neo-fascist movement in post-communist Romania You can help expand this article with text translated from the corresponding article in Romanian. (July 2022) Click [show] for important translation instructions. View a machine-translated version of the Romanian article. Machine translation, like DeepL or Google Translate, is a useful starting point for translations, but translators must revise errors as necessary and confirm that the translation is accurate, rather than simply copy-pasting...

 

Kaart van het sterrenbeeld Luchtpomp. Luchtpomp (Antlia, afkorting Ant) is een onopvallend sterrenbeeld aan de zuidelijke hemelkoepel tussen rechte klimming 9u25m en 11u03m en declinatie −24° en −40°. Op de breedte van de Benelux klimt de noordelijkste rand van Eugène Delporte's begrenzing van dit sterrenbeeld (de noordwestelijke hoek van de Luchtpomp) tot 14°30' boven de zuidelijke horizon. Het sterrenbeeld werd in 1752 ingevoerd door Lacaille.[1] De oorspronkelijke benaming ...

 

В списке объектов всемирного наследия ЮНЕСКО во Вьетнаме значатся 8 наименований (на 2014 год), это составляет 0,7 % от общего числа (1199 на 2023 год). 5 объектов включены в список по культурным критериям, 2 объекта — по природным, 1 объект — по смешанным. Бухта Халонг и ландшафтн...

Colonia y Protectorado de KeniaColony and Protectorate of Kenya Colonia y protectorado 1920-1963BanderaEscudo Himno: God Save the Queen/Kingnoicon¿Problemas al reproducir este archivo? Localización de Kenia (en rojo) Kenia en 1952Capital NairobiEntidad Colonia y protectorado • País Reino UnidoIdioma oficial Inglés • Otros idiomas suajili, kikuyu, kamba, luo, gusii, meru, nandi-markwetaPoblación (1956)   • Total 6 200 000 hab.Superficie hist. ...

 

2006 Italian filmMonamourDVD coverDirected byTinto BrassWritten byTinto BrassCarla CiprianiMassimiliano ZaninStarringAnna JimskaiaNela LucicMax ParodiCinematographyAndrea DoriaEdited byTinto BrassMusic byHeron BorelliRelease date 8 March 2006 (2006-03-08) Running time104 minutesCountryItalyLanguageItalian Monamour is a 2006 Italian erotic romance film directed by Tinto Brass and starring Anna Jimskaia. Plot Marta is a young Nymphomaniac housewife, married to a man named Dario, ...

 

Nigeria padaOlimpiadeKode IOCNGRKONKomite Olimpiade NigeriaSitus webwww.nigeriaolympiccommittee.orgMedali 3 11 13 Total 27 Penampilan Musim Panas195219561960196419681972197619801984198819921996200020042008201220162020Penampilan Musim Dingin20182022 Nigeria mula-mula ikut serta dalam Permainan Olimpiade pada 1952, dan telah mengirim para atlet untuk berkompetisi dalam setiap Olimpiade Musim Panas sejak itu, kecuali saat pemboikotan Olimpiade Musim Panas 1976. Negara tersebut berpartisipasi dal...

←→Февраль Пн Вт Ср Чт Пт Сб Вс     1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28           2023 год Содержание 1 Праздники и памятные дни 1.1 Национальные 1.2 Религиозные 1.2.1 Католицизм 1.2.2 Православие[2][3] 1.3 Именины 2 События 2.1 До XX века 2.2 XX век 2.3 XXI век 3 Родились 3.1 До XIX ...

 

Fictional character from Metal Gear series This article may require cleanup to meet Wikipedia's quality standards. The specific problem is: Reception is a mess and has several listicles that comment little about the character. Please help improve this article if you can. (July 2023) (Learn how and when to remove this template message) Fictional character The BossMetal Gear characterThe Boss as seen in Metal Gear Solid 3: Snake EaterFirst appearanceMetal Gear Solid 3: Snake Eater (2004)[1&...

 

This article uses bare URLs, which are uninformative and vulnerable to link rot. Please consider converting them to full citations to ensure the article remains verifiable and maintains a consistent citation style. Several templates and tools are available to assist in formatting, such as reFill (documentation) and Citation bot (documentation). (August 2022) (Learn how and when to remove this template message) Neighbourhood in Edmonton, Alberta, CanadaNorth GlenoraNeighbourhoodNorth GlenoraLo...

Bhaskaracharya Institute For Space Applications and GeoInformaticsMottoWe serve the SocietyEstablishedDecember 2003; 20 years ago (2003-12)LocationGandhinagar, Gujarat, IndiaAffiliationsGujarat Technological University[1]Websitebisag-n.gov.in BISAG Bhaskaracharya Institute for Space Applications and Geoinformatics (BISAG) is a national agency by the Government of Gujarat to facilitate to provide services and solutions in implementing map-based GeoSpatial Informa...

 

Artikel ini tidak memiliki referensi atau sumber tepercaya sehingga isinya tidak bisa dipastikan. Tolong bantu perbaiki artikel ini dengan menambahkan referensi yang layak. Tulisan tanpa sumber dapat dipertanyakan dan dihapus sewaktu-waktu.Cari sumber: Astronomi radio – berita · surat kabar · buku · cendekiawan · JSTOR Sebuah teleskop radio diKompleks Goldstone DSC Astronomi radio adalah cabang astronomi yang mempelajari fenomena benda angkasa melalui ...

 

Nueva Cabimas es una de las Urbanizaciones que conforman la ciudad de Cabimas en el estado Zulia (Venezuela). Pertenece a la parroquia Rómulo Betancourt. Ubicación Se encuentra entre los sectores 26 de Julio al norte (carretera J), Cumarebo al este (Av 34), Barrio 2 de Mayo al sur (av Principal Nueva Cabimas) y Los Medanos al oeste (Av 32). Zona Residencial Nueva Cabimas fue una urbanización nacida luego de la gran inundación ocurrida el 2 de mayo de 1959. Luego de ese aguacero que afect...

Запрос «Полевое орудие» перенаправляется сюда. На эту тему нужно создать отдельную статью. Советская 100-мм полевая пушка БС-3 в Королёве (Московская область). Полева́я артилле́рия[1] — вид сухопутных[2] артиллерийских сил и средств, которые действуют на поле боя ...

 

مرسوم فونتينبلو (بالفرنسية: Édit de Fontainebleau)‏ هو مرسوم أصدره لويس الرابع عشر ملك فرنسا في 22 أكتوبر عام 1685.[1][2][3] عرف هذا المرسوم أيضا باسم المرسوم الملغي لمرسوم نانت. مرسوم نانت إلغاء مرسوم نانت نتائج إلغاء مرسوم نانت يُشبِّه العديد من المؤرخين مرسوم إلغاء مرسوم ن...

 

Strategi Solo vs Squad di Free Fire: Cara Menang Mudah!