PC-01 Lviv
http://pc01.lviv.ua/forum/

PL/M
http://pc01.lviv.ua/forum/viewtopic.php?f=20&t=342
Page 1 of 1

Author:  liberation [ 02 Jan 2017, 19:24 ]
Post subject:  PL/M

Случился Новый Год, друзья! Вышел новый номер журнала "Downgrade", где опубликована замечательная статья Алексея Завгороднего (aka Kakos_Nonos) "КРОСС КОМПИЛЯТОРЫ ДЛЯ INTEL 8080". Статья солидная, но сегодня предметом нашего внимания будет раздел "Все плохо?". В этом разделе рассказывается, что не все так плохо на самом деле, что существует язык программирования, который изначально разрабатывался с оглядкой на специфику процессора i8080 (тогда как тот же Си разрабатывался с оглядкой на мини-ЭВМ PDP-11). Имя этому языку PL/M. Собственно, далее лично у меня один вопрос к собравшимся, кто-нибудь из почтенных инженеров работал с этим языком?

Про себя скажу, что я не работал. Хотя у меня когда-то была целая книжка по ПЛ/М.

Image

Однако я ее выкинул, когда пришел час Ч (вместе с книжкой по PL/1). Даже не помню, чтобы я тогда ее прочел. Еще помню, что под CP/M-80 у меня точно не было транслятора этого языка.

Сейчас я погуглил литературу по ПЛ/М, без проблем кое-что нашел, в том числе и русскоязычное. Что могу сказать? Язык действительно простой, теплый и ламповый, но не без чудинок. Пока меня поразили оператор DO - CASE, я даже не знаю, как такое можно было учудить, отсутствие рекурсии для процедур и оператор CALL TIME. Но я не сдаюсь и продолжаю чтение.

p.s.
Отыскалась хорошая обзорная статья по сабжу (это кроме Вики). Приведу интригующую цитату:

"Язык процедурный, со строгой типизацией данных, имеет блочную структуру и правила видимости имён. Достоинство языка – его компактность. Интеловский компилятор с PL/M-80 создавал при трансляции очень компактный объектный код с коэффициентом расширения 6, то есть один оператор языка заменялся при трансляции в среднем шестью ассемблерными командами. Аналогично, объ ё мный коэффициент объектного кода по сравнению с эквивалентным ассемблерным лежал в пределах 1,2—1,3. То есть полученный после трансляции объектный код занимал в 1,2 раза больше памяти, нежели код программы, написанной на ассемблере i8080."

p.p.s.
А вот здесь есть всякое, относящееся к этому языку.

Author:  liberation [ 05 Jan 2017, 11:47 ]
Post subject:  Re: PL/M

Еще прибыло материалу - Знакомство с CP/M80: программирование, где тоже идет речь о PL/M, и The PLMX Compiler.

Читать старые доки еще в простом .txt формате - просто роскошь. )

p.s.
Кросскомпилятор со страницы z80pack отлично собрался под Линуксом, пришлось только поставить компилятор Фортрана. )))
Настоящий олдскул.

Author:  sadfsdfsdaf [ 28 Jul 2020, 14:16 ]
Post subject:  Re: PL/M

PL/M это сильно обрезанная версия PL/1, а вот PL/1 это "чёрт в ступе" - там, как и в АДА есть всё - мультизадачность, конкуррентное выполнение и т.п. В своё время IBM его так и не смогли довести до ума, а поскольку по дизайну он был несколько устаревший к моменту выхода, то его потом вытеснили другие языки. Что от него осталось в PL/M сказать не могу.

p.s. отсутствие рекурсии - это преднамеренная "фича", тогда остальные языки были такими-же (например Фортран), тут дело в том, что вся память отводится на этапе компиляции и стек не нужен, что в свою очередь повышает надёжность (такая вещь, как динамическое переполнение стека, становится невозможной). Кстати, для встраиваемого программирования на Си это проблема, т.к. управлять стеком из программы невозможно (нельзя перехватить и обработать исключение по доступу к нему и т.п.), поэтому во многих системах используют свой параллельный стек. Например, стандартная реализация qsort() как правило использует массив фиксированного размера (зависит от максимального доступного в системе ОЗУ, по факту он невелик, т.к. его размер это логарифм от объёма) и не осуществляет рекурсивный вызов самой себя.

Page 1 of 1 All times are UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/