Алгол

Алго́л (англ. 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 B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 Home