Компилятор языка PL/I
2021-08-10 12:17Оказывается, есть версия для Линукса i386, здесь: http://www.iron-spring.com/index.html
Для примера берём код известного теста Дональда Кнута "Man or boy", переписанный на PL/I.
Для примера берём код известного теста Дональда Кнута "Man or boy", переписанный на PL/I.
Компилируем, запускаем.morb: proc options (main) reorder;
dcl sysprint file;
dcl i fixed bin (31);
do i = 0 to 15;
put skip edit('i = ', i, a((i), x1, x2, x3, x4, x5))
(a(4), p'z9b', P'---,---,--9');
end;
a: proc(k, y1, y2, y3, y4, y5) returns(fixed bin (31)) recursive;
dcl k fixed bin (31);
dcl (y1, y2, y3, y4, y5) entry returns(fixed bin (31));
b: proc returns(fixed bin(31)) recursive;
k = k - 1;
return(a((k), b, y1, y2, y3, y4));
end b;
if k <= 0 then
return(y4 + y5);
else
return(b);
end a;
x1: proc returns(fixed bin (31)); return(1); end x1;
x2: proc returns(fixed bin (31)); return(-1); end x2;
x3: proc returns(fixed bin (31)); return(-1); end x3;
x4: proc returns(fixed bin (31)); return(1); end x4;
x5: proc returns(fixed bin (31)); return(0); end x5;
end morb;
$ plic morb.pli -o morb.o
$ ld -melf_i386 -z muldefs -Bstatic -e main morb.o -lprf -o morb
$ size morb
text data bss dec hex filename
167800 112896 528 281224 44a88 morb
$ ./morb
i = 0 1
i = 1 0
i = 2 -2
i = 3 0
i = 4 1
i = 5 0
i = 6 1
i = 7 -1
i = 8 -10
i = 9 -30
i = 10 -67
i = 11 -138
i = 12 -291
i = 13 -642
i = 14 -1,446
i = 15 -3,250

no subject
Date: 2021-08-10 23:02 (UTC)А это подарок для тех кто помоложе и не застал ни Algol, ни Fortran, ни Cobol и ни PL/1, а помнит только https://windows96.net
no subject
Date: 2021-08-10 23:25 (UTC)Даже Doom устанавливается и играет.
no subject
Date: 2021-08-10 23:31 (UTC)no subject
Date: 2021-08-11 00:10 (UTC)а его то и нет ;(
no subject
Date: 2021-08-11 00:59 (UTC)no subject
Date: 2021-08-11 08:22 (UTC)на совковых клонах ибм360 печатающие литеры мотыляло вверх-вниз, отчего бумажные варианты сорцов приобретали ещё большую своеобразность