vak: (Default)
[personal profile] vak
Была ли жизнь до динозавров? Что там вообще шевелилось? 😀 Я не имею в виду теоретически, а чем реально программисты пользовались.

Жизнь была, хотя и в странных формах. С 1959 года существовал MAD, то есть Michigan Algorithm Decoder. Вполне развитый для того времени язык программирования. К примеру, на MAD был написан MAIL (ставший впоследствии /usr/bin/mailx) и RUNOFF (ставший потом nroff/troff). Описание языка: MAD-manual.pdf.

Для иллюстрации вот рекурсивная функция вычисления факториала. Конструкции языка многословные, зато суть сразу понятные. Имена функций, в отличие от переменных, обязаны заканчиваться точкой.
            EXTERNAL FUNCTION (N)
NORMAL MODE IS INTEGER
ENTRY TO FACT.
WHENEVER N .E. 0, FUNCTION RETURN 1
SAVE RETURN
SAVE DATA N
T1 = FACT.(N-1)
RESTORE DATA N
RESTORE RETURN
FUNCTION RETURN T1*N
END OF FUNCTION
Несколько лет назад известный товарищ Эрик Рэймонд воссоздал компилятор MAD. Сайт проекта: gitlab.com/esr/mad. Попробуем запустить вышеприведённый факториал. Добавим главную вызывающую процедуру:
            DIMENSION LIST(100)
NORMAL MODE IS INTEGER
SET LIST TO LIST
BACK READ FORMAT IN, NR
PRINT FORMAT OUT, NR, FACT.(NR)
TRANSFER TO BACK
VECTOR VALUES IN = $I2*$
VECTOR VALUES OUT = $4H0N= I3,14HN FACTORIAL= I11*$
END OF PROGRAM
Компилируем, запускаем:
$ mad factmain.mad factfunc.mad 
$ ./factmain
6

N= 6N FACTORIAL= 720
10

N= 10N FACTORIAL= 3628800
Работает в лучшем виде. MAD транслируется в Си, который дальше компилируется в нативный бинарник.

Исторический факт: известная Элиза, первая программа, общавшаяся на естественном языке, была изначально написана на языке SLIP (варианте Лиспа), который сам был написан на MAD. Исходный код той Элизы: 1966_01_CACM_article_Eliza_script.txt.
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org