PDA

Просмотр полной версии : Язык программирования XPL0



Oleg N. Cher
08.01.2024, 17:50
XPL0, по сути, представляет собой нечто среднее между Pascal и C. Он чем-то похож на Pascal, но работает больше как C. Первоначально он был создан в 1976 году Питером Дж. Р. Бойлом, который разработал его для работы на микропроцессоре 6502 в качестве альтернативы BASIC. Рассказ о его ранней истории находится здесь (https://www.6502group.org/hist6502.html).

Хотя XPL0 означает нулевой уровень экспериментального программирования, он находится далеко за пределами экспериментальной стадии и, будем надеяться, считается намного выше нулевого уровня. Название сохранено по историческим причинам. Язык основан на PL/0, примере компилятора Никлауса Вирта в его книге «Алгоритмы + Структуры данных = Программы». За прошедшие годы версии XPL0 были портированы на множество разных компьютеров.

XPL0 похож на Паскаль и C. Хотя он и не является массовым, с годами он оказался чрезвычайно полезным. Он использовался для написания всего: от операционных систем для компьютеров на базе 6502 и 68000 до коммерческих программ для компьютеров на базе 8088 (ПК) и встроенных программ для PIC и других микроконтроллеров. С момента своего появления на 6502 он постоянно модернизировался и распространялся на другие процессоры, такие как 8080, 6800, PDP-10, IBM-360, пару самодельных машин, 65802, 680x0, PIC, Ubicom и, в первую очередь, Семейство 80x86, используемое IBM-совместимыми ПК.

Если вы увлекаетесь C, XPL0 может вам не понравиться. Он не имеет всех возможностей других языков. Обычно это не проблема, и это облегчает изучение языка.

XPL0 ни в коем случае не является ущербным. Это язык с блочной структурой, поддерживающий рекурсию. Он имеет два типа данных: целое число и число с плавающей запятой двойной точности («reals» — с математическим сопроцессором и без него). Даже небольшая 16-битная версия допускает пространство кода и данных размером более 64 КБ. Он обеспечивает универсальный ввод-вывод устройств для консоли, принтеров, файлов и последовательных портов. Он позволяет использовать неограниченные массивы и сложные структуры данных с использованием указателей. Он допускает до восьми уровней вложенности процедур и функций. Он имеет условную компиляцию, включаемые файлы, отдельно скомпилированные модули, возможность вставки ассемблерного кода, встроенные графические и тригонометрические процедуры, peek/poke и работу с портами ввода-вывода.

Цель здесь не в том, чтобы убедить вас использовать XPL0, а просто в том, чтобы сделать этот язык доступным. XPL0 — это важная часть работы, которая продолжает оставаться полезной, несмотря на множество других языков программирования.

Полностью совместимая с Windows версия XPL0, называемая EXPL, доступна здесь (http://www.fountainware.com/EXPL/index.htm).

Последняя активность по XPL0 наблюдалась на Raspberry Pi, который доступен здесь (http://www.xpl0.org/rpi/index.html).

XPL0

Менее загадочный, чем CМенее строгий, чем ПаскальБолее мощный, чем BASICТри компилятора: Интерпретирующий. Родной. ОптимизирующийУтилита перекрестных ссылокБиблиотечные процедурыМножество примеров программ140-страничное руководство с указателем и приложением
Оптимизирующий компилятор генерирует код примерно в два раза быстрее и вдвое меньше по размеру, чем неоптимизирующий собственный компилятор.

Доступен исходный код компиляторов и встроенных процедур.

На сайте по языку XPL0 (https://xpl0.org/) представлено множество примеров программ и игр.

0xDEAD
08.01.2024, 19:45
Есть подозрение, что языков программирования для Спектрума уже существует больше, чем выпущенных экземпляров Спектрума. Причем, количество программ, написанных на этих языках, стремится к нулю.

jerri
08.01.2024, 21:31
Доступен исходный код компиляторов и встроенных процедур.

На сайте по языку XPL0 (https://xpl0.org/) представлено множество примеров программ и игр.

А точно все?


Хмм. Нам не удаётся найти этот сайт.

Мы не можем подключиться к серверу xpl0.org. Возможно, вы хотели перейти на www.xpl0.org?

Oleg N. Cher
09.01.2024, 04:15
Да, как-то туговато он открывается и, кажется, без https. У кого ещё не открылось?

80073

- - - Добавлено - - -


стремится к нулю."Мне не надо - значит никому не надо". Может Вы просто человек не того склада? Вы такими постами просто демонстрируете узость своего мышления. Идите в хекс кодах покодьте, может полегчает.

0xDEAD
09.01.2024, 10:04
Да, именно так. Я человек не того склада, чтобы раз в неделю восторженно демонстрировать ОЧЕРЕДНОЙ мертвый язык программирования. Чем это плохо? Где и кому это так сильно жмет?


Идите в хекс кодах покодьте, может полегчает
В принципе, я тоже послать способен. И даже не кодить. Надо?

Oleg N. Cher
09.01.2024, 15:29
А Вы понимаете свою роль могильщика в данной теме? Аналогия. Допустим, кто-то сконструировал железку и пытается тут про неё рассказывать. А тут появляется такой вот умник и начинает затирать "так у неё ж 0 юзеров". И именно такие вот могильщики препятствуют распространение знаний про старые языки, которые на данном форуме более чем уместны. И разговор даже вместо того, чтобы мирно затихнуть, превращается в срач. И именно вот такой умник в своё время пришёл и начал обсирать мою деятельность, брать на слабо, что нет Оберона для ZX. Я выкатил, как смог, Оберон для ZX. И чего? Опять же, мёртвый язык, мёртвое всё, никому не надо бла бла стопицот мух никак не могут ошибаться. Вам не отвратительна ваша роль в этом? Не лучше ли идти в свою тему, которая Вам интересна, а эту просто тупо оставить в покое?

Допустим, Вы радостно сыграли у себя в голове похороны по Вирту и заодно Паскалю, и всем остальным "мёртвым" языкам, порвали три баяна, всё как полагается. И не собираетесь больше ничем этим пользоваться. Зачем нужно всю эту скотомогильню выплёскивать в массы? У нас ретро-сообщество. Выйдите с нашими интересами на какой-нить форум программистов и услышите много тёплых слов про давно мёртвый Спектрум. И чего? Нам не конструировать железок и не пытаться заинтересовать друг друга чем-то неизвестным доселе? Я вот про XPL0 не знал. И, уверен, многие не слышали. Но мне это интересно. А Вы пришли с лопатой и гробом. Спасибо за это огромное, надеюсь, воздастся.

0xDEAD
09.01.2024, 17:12
Я понимаю свою роль могильщика в данной теме. Более того - я понимаю, что этим языкам и место в могиле - по крайней мере, для Спектрума. И поэтому, сильно не комплексую.

Зачем нужно всю эту скотомогильню выплёскивать в массы?
А зачем в массы выплескивать всю эту скотомогильню - обероны, паскали, форты, XPL0 и прочую чушь, которая, возможно, на других платформах и работоспособна - но не на примитивном 8-битном Спектруме? Оно там не работало, не работает, и работать не будет. Не потому, что оно "плохое" само по себе, а потому, что это языки более высокого уровня, чем Ассемблер, и требуют поддержки конкретной платформы с конкретным железом со стороны компилятора, чего нет. А абстрактный старый язык в вакууме интересен как абстрактный язык в вакууме - не более того.


Не лучше ли идти в свою тему, которая Вам интересна, а эту просто тупо оставить в покое?
Нет, не лучше. Я пока что поприсутствую здесь, чтобы иметь возможность наблюдать, как на XPL0 напишут 300 игр, 500 системных программ и 92 ОС. Мне довольно интересно будет это все наблюдать, после чего я пойму, как я заблуждался, и сам яростно начну программировать на XPL0, и жизнерадостно компилировать то, что я напрограммирую, в уме или на бумажке, а потом вбивать результат компиляции в спектрум в хекс-кодах, как и было мне посоветовано, так как ассемблер - это ассемблер, а ЯВУ это ЯВУ. Ассемблер уже начал утомлять.
А пока что можно наблюдать, что сайт по языку XPL0 даже не открывается. По крайней мере, по приведенной выше ссылке. Начало многообещающее.


надеюсь, воздастся
Карма испортится, что ли?

Но - к черту теорию.
Text(0, "Hello World!") - где и как я могу проанализировать, как это откомпилируется для Спектрума, чтобы оценить качество генерируемого кода?

Oleg N. Cher
09.01.2024, 18:17
Ну смотрите. Я имею моральное право делать на ретро-форуме посты про ретро-языки. Кто-то оспорит это моё право?

Форум не предоставляет механизмов, чтобы Вам не было видно то, что Вам не интересно. Тут напрашивается вопрос, чего Вы от меня хотите? Чтобы я покаялся и осознал? "Дорогие одмины, пожалусто удолите с вашего некро-форума мою некро-тему и некро-посты по некро-языку XPL0, шобы не мозолить глаза 0xDEAD"? Попросить прощения за то, что Вам было неинтересно? Помилуйте, я Вас и близко не знаю, так же, как и Ваших предпочтений. Нет, я могу конечно Вас игнорировать, но со стороны покажется, что мне нечего сказать под ливнем Ваших аргументов. А сказать есть что. И, наконец, третий способ - сраться. То есть, отстаивать то, что тема по XPL0 имеет право быть здесь на форуме. Есть ли шансы, что кто-то вспомнит что-то полезное по теме? Несомненно. А игры и ОС на XPL0 есть. Я пару игр вчера смотрел. Все с исходниками. То, что Вы их не будете смотреть - это уже как бы и не мои проблемы. Но я должен оспорить, что да, они всё-таки есть. Не для 8-битного Спектрума, так и форум не только по Спеку.

Лучше подскажите мне как я должен поступить с Вами и Вам подобными, которые пришли со своим очень ценным мнением. Вы не хотите поступить сообразно логике форума? В неинтересных для меня темах я ничего не пишу. А Вам всё не так. Сайт не открывается, ОС и игры сами не пишутся. А чтобы писались - надо культивировать именно благоприятное мнение о языках. А Ваш путь - надуть губки и в лучшем случае кодить на асме. Вы ведь ничего не предлагаете, чтобы избавиться от кодинга на асме хотя бы частично? Вас всё устраивает? А меня не устраивает. Меня интересуют ЯВУ, способные работать для ретро-платформ. Я ищу единомышленников, людей, которым это тоже интересно. Поэтому я буду постить то, что сочту нужным. В рамках тематики форума.

XPL0 не самый интересный язык для 8-биток. Cowgol намного интереснее выглядит. А Вы почему-то думаете, что раз пост про ретро-язык, то надо его непременно брать вместо асма и он будет на 200% лучше асма. Да откуда такая бредовая идея? Не надо брать это вместо асма. Просто попытайтесь понять, что не всем любителям попрограммировать для ретро хочется кодить на асме.

Да, и не всё света в окошке, что Спектрум. Извините, что разочаровал.

Smalovsky
09.01.2024, 18:19
Oleg N. Cher, у меня сайт не открылся. Под какие системы пригоден компилятор(Виндовс,Амига и пр.)? Возможна ли компиляция кода независимого от ОС? Какие процессоры поддерживаются(z80,ez80,arm,powerpc) ? Есть ли в языке структуры( записи), объекты, указатели? Есть ли инлайн-ассемблер и запуск машинных кодов?
--------------------
Если тебе интересны языки смешивающие си и Паскаль, советую тебе копнуть в сторону Шарма https://en.wikipedia.org/wiki/Charm_(programming_language)

Это язык для РискОС на распберри пае или оригинале.

0xDEAD
09.01.2024, 18:19
Тут напрашивается вопрос, чего Вы от меня хотите?
Пояснить, где и как я могу проанализировать, как это
Text(0, "Hello World!")
откомпилируется для Спектрума, чтобы оценить качество генерируемого кода.

Oleg N. Cher
09.01.2024, 18:26
Языка XPL0 для Спектрума я не встретил. Но вроде бы есть для CP/M. А вообще разбирайтесь сами, потом мне расскажете.

Smalovsky, Вы задаёте вопросы, на которые есть ответ в первом посте.

Я в Украине, у меня рунет вообще не открывается, так я ж не плачу, VPN юзаю.

0xDEAD
09.01.2024, 18:27
А вообще разбирайтесь сами, потом мне расскажете.
Потрясающе.

Oleg N. Cher
09.01.2024, 18:29
Опять идея, что раз я дал пост по языку, то я его непременно знаю от и до и у меня все ответы, а я просто ёрничаю и не хочу отвечать? Опять бред. Нет у меня никаких ответов. Свободный поиск, господа. Вспомните 80-е. Инета нема, есть перепечатки с кривыми ошибками.

Smalovsky
09.01.2024, 18:38
Oleg N. Cher,

С момента своего появления на 6502 он постоянно модернизировался и распространялся на другие процессоры, такие как 8080...
Возможно подойдёт для PMD85 и ZX8080( если Мик доделает), клонов Специалиста и других советских ЭВМ.

Trol73
09.01.2024, 22:32
Для программирования под ретро-платформы хотелось бы иметь компилятор чего-то ассемблерно-подобного, но компилятор "нормальный" и современный. Т.к. сам ассемблер придумали чёрти-знает когда, во времена жалких килобайт памяти у ЭВМ, и тогда этот язык обеспечивал хороший компромисс между читаемостью кода для человека и легкостью его парсинга для машины. Сейчас, когда нет недостатка памяти, хотелось бы вместо этих ужасных мнемоник использовать более удобочитаемые конструкции, ориентированные на восприятие именно человеком. Но, при этом, дающие полный контроль над кодом на уровне регистров.
А любой ЯВУ для ретро-платформ - это куча генеримого *****кода. А по*****кодить можно и под современные компутеры на каком-нибудь условном питоне )

Oleg N. Cher
10.01.2024, 00:27
Да, я во многом согласен с Вами. Но можно приблизиться к качеству асма, если язык достаточно низкоуровневый, но в то же время и более абстрактный. Взять Cowgol, ну можно же запилить ему практически идеальную кодогенерацию. Фрейма стека не нужно, есть арифметика разрядности 1, 2 и 4 байта (в Паскале и Си байтовой нет).

Ну вот как Sphinx C--. Там можно было писать оперируя высокоуровневыми понятиями, но имея доступ к регистрам напрямую.

- - - Добавлено - - -

А вообще мне хочется переносимости, пусть даже ценой #ifdef ZX, если иначе нельзя.