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. Собственно, далее лично у меня один вопрос к собравшимся, кто-нибудь из почтенных инженеров работал с этим языком? Про себя скажу, что я не работал. Хотя у меня когда-то была целая книжка по ПЛ/М. Однако я ее выкинул, когда пришел час Ч (вместе с книжкой по 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/ |