XPL0
XPL0 — это язык программирования который по сути представляет собой нечто среднее между Pascal и C. , Он чем-то похож на Паскаль, но работает больше как C. Он был создан в 1976 году Питером Дж. Р. Бойлом, который хотел использовать язык высокого уровня для своего микрокомпьютера и хотел чего-то более сложного, чем BASIC , который в то время был доминирующим языком для персональных компьютеров.
XPL0 основан на PL/0 , примере компилятора из книги «Алгоритмы + Структуры данных = Программы» Никлауса Вирта . Первый компилятор XPL0 был написан на языке ALGOL . Он генерировал инструкции для псевдомашины, которая была реализована в качестве интерпретатора на компьютере Digital Group на базе 6502 микропроцессора . Компилятор был преобразован из ALGOL в XPL0, после чего его можно было скомпилировать и запустить на микрокомпьютере.
XPL0 вскоре доказал свою ценность в различных продуктах на базе 6502. В противном случае код этих встроенных систем был бы написан на языке ассемблера , что гораздо более утомительно.
Бойл использовал XPL0 для написания дисковой операционной системы под названием Apex. Начиная с 1980 года он продавался вместе с XPL0 как альтернатива Apple DOS для компьютера Apple II, основанного на 6502.
С тех пор XPL0 был реализован на дюжине процессоров и было добавлено множество функций. Теперь существуют оптимизирующие компиляторы машинного кода с 32-битными целыми числами вместо исходных 16-битных версий. с открытым исходным кодом Компиляторы для Windows и MS-DOS на ПК и Linux на Raspberry Pi доступны по ссылке ниже.
Примеры
[ редактировать ]Вот как на XPL0 закодирована традиционная программа Hello World:
code Text=12; Text(0, "Hello World!")
Text — это встроенная процедура, которая выводит строку символов. Ноль (0) указывает, куда отправить строку. В этом случае он отправляется на экран дисплея, но его можно легко отправить на принтер, в файл или через последовательный порт, используя другой номер.
В XPL0 все имена должны быть объявлены до их использования. командного слова Код связывает имя Text со встроенной подпрограммой номер 12, которая выводит строки. Существует около сотни таких встроенных процедур, которые предоставляют такие возможности, как ввод и вывод, графика и триггерные функции.
32-битные версии компиляторов автоматически вставляют объявления кода, поэтому приведенную выше программу можно просто записать так:
Text(0, "Hello World!")
Алгоритм TPK представляет собой пример, который можно сравнить с другими языками:
func real F(T); real T; return sqrt(abs(T)) + 5.*Pow(T, 3.); int I; real Y, A(11); [for I:= 0 to 10 do A(I):= RlIn(0); for I:= 10 downto 0 do [Y:= F(A(I)); if Y > 400. then [IntOut(0, I); Text(0, " TOO LARGE")] else [IntOut(0, I); RlOut(0, Y)]; CrLf(0); ]; ]
Графика была особенностью XPL0 с тех пор, как он появился на компьютере Apple II.
int X, Y, Color; [SetVid($101); \set video mode to 640x480x8 repeat for Y:= 0 to 128-1 do for X:= 0 to 128-1 do Point(X, Y, X or Y xor Color); Color:= Color+1; DelayUS(50_000); \0.05 seconds until ChkKey; ]
Ссылки
[ редактировать ]- Фиш, Ларри (февраль 1979 г.). «Блочно-структурированный язык для микрокомпьютеров». Килобод , с. 24.