Алгол
Материал из Википедии — свободной энциклопедии
Алго́л (англ. Algol от англ. algorithmic — алгоритмический и англ. language — язык), название ряда языков программирования, применяемых при составлении программ для решения научно-технических задач на ЭВМ. Разработан в 1958-60 (Алгол-58, Алгол-60); усовершенствован в 1964-68 Алгол 68. Алгол относится к языкам высокого уровня (high-level language) и позволяет легко переводить алгебраические формулы в программные команды. Алгол был популярен в Европе, в том числе СССР, в то время как сравнимый с ним Фортран был распространен в США и Канаде, однако он оказал заметное влияние на все разработанные позднее языки программирования, и, в частности, на язык Pascal.
Обычно под понятием Алгол подразумевается язык Алгол-60, в то время как Алгол 68 рассматривается как самостоятельный язык. Даже когда язык Алгол почти перестал использоваться для программирования, он ещё оставался официальным языком для публикации алгоритмов.
Содержание |
[править] История
Алгол был разработан комитетом, в который входили европейские и американские учёные. Для Алгола было разработано три разных синтаксиса — для ссылок, публикаций и приложений. Разница в синтаксисах состояла в разрешении использовать национальные ключевые слова и десятичной точки (или запятой, в зависимости от локальных стандартов).
Джон Бэкус разработал нормальную форму Бэкуса, как формальный способ описания алгоритмических языков, с помощью которой была составлена спецификация для языка Алгол 58. После усовершенствований, которые предложил Питер Наур, возникла форма Бэкуса-Наура, которая использовалась для спецификации языка ALGOL 60. Кроме Бэкуса и Наура в комитет по языку Алгол вошёл также Уолли Фойрцойг, который позже создал язык Лого.
Язык Алгол был принят фирмой Burroughs Corporation в их моделях, начиная с B5000 — этот язык получил название Elliott ALGOL На компьютерах LGP-30 использовался язык Dartmouth ALGOL 30.
[править] Свойства языка
Официальный язык Алгол-60 лишён операторов ввода-вывода, поэтому каждая реализация решала ввод=вывод совершенно по разному.
В Алголе было предложено два способа передачи параметров в подпрограмму — по имени и по значению.
[править] Пример кода на языке Алгол-60
procedure Absmax(a) Size:(n, m) Result:(y) Subscripts:(i, k); value n, m; array a; integer n, m, i, k; real y; comment Максимальный элемент матрицы a, размера 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, Word для реализации Dartmouth ALGOL 30 см. ссылку.
BEGIN FILE F (KIND=REMOTE); EBCDIC ARRAY E [0:11]; REPLACE E BY "HELLO WORLD!"; WHILE TRUE DO BEGIN WRITE (F, *, E); END; END.
Это альтернативная реализация для Elliott Algol.
program HiFolks; begin print "Hello world"; end;
[править] См. также
[править] Ссылки на английском языке
- A BNF syntax summary of ALGOL 60
- «The Emperor’s Old Clothes» — Hoare’s 1980 ACM Turing Award speech, which discusses ALGOL history and his involvement
- «803 ALGOL» The manual for Elliott 803 ALGOL.