Я имел опыт программирования на PL/M80, но когда пытался делать проекты на PL/M51, то качество его генерации кода было настолько отвратительным, что пришлось согласится с коллегами и перейти на ассемблер. C очень сложно заставить оптимально использовать регистры какой-либо архитектуры, впрочем как и PL/M. Вероятнее всего такой язык и/или компилятор до сих пор не созданы. Так как при генерации кода он должен быть не двухпроходным, а многопроходным. Уровни оптимизации у PL/M задаются, но они не наглядны. Для 8080, не говоря уже о z80 есть множество трюков по оптимизации кода при "ручном программировании" на ассемблере, которые недоступны неинтеллектуальным С и PL/M. В годы их создания это могло быть обосновано ограничениями ресурсов инструментальных систем, на которых они выполнялись. Ныне же, когда они работают на мощнейших процессорах с огромной доступной памятью такая неинтеллектуальность ничем не оправдана. Требования "переносимости кода" тоже не совсем актуальны. Когда для 8 битного ретрокомпьютера меняются параметры "процессор" и "машина исполнения", то гораздо более интересна автоматизация по подмене библиотек и выдача предупреждении об отсутствии нужных ресурсов, то есть мощные внутренние библиотеки компилятора, поддерживающие различное "железо". С учетом расширения таких возможностей это интересное занятие.

