Оберон-клуб «ВЄДАsoft» https://zx.oberon.org/forum/ |
|
Разработка игр и программ для ZX Spectrum на языке Оберон-2 https://zx.oberon.org/forum/viewtopic.php?f=10&t=18 |
Страница 1 из 1 |
Автор: | Zorko [ 21 апр 2012, 13:06 ] |
Заголовок сообщения: | Разработка игр и программ для ZX Spectrum на языке Оберон-2 |
Во-первых постараюсь ответить на наиболее часто задаваемый вопрос со стороны программистов — почему именно Оберон, а не Си/Си++ или более традиционный для платформы ZX Spectrum ассемблер. Я не собираюсь дискутировать на тему “асм круче Си” или “Настоящие перцы девелопят тока на асме”. После нешапочного знакомства с языком Оберон и разработки на нём некоторого количества программ разной сложности мне захотелось попробовать написать что-то на Обероне для той самой любимой и первой платформы, на которой я вырос. Дело осложняется тем, что компиляторов языка Оберон для процессора Z80 я не нашёл, и подозреваю, что в природе их нет вообще. Паскаль и Модула есть, хотя реализации оставляют желать лучшего, Си есть тем более, а вот Оберона нет. В результате и получилась технология, которой с удовольствием делюсь со всеми, кому это интересно. Оберон вообще очень интересный язык. Начнём с того, что это самый простой императивный современный ЯВУ, полное описание языка занимает меньше 30 страниц (с примерами). Здесь налицо стремление профессора Никлауса Вирта, автора языков Паскаль, Модула и Оберон, к простоте. В принципе, к этому же движется и промышленное программирование. Никто не будет спорить, что Java намного проще Си++, хотя считается более модной и мощной. Понятие мощности языка стало спекуляцией в гонке вооружений, то есть, простите, в гонке промышленных языков. В то же время в Обероне есть несколько уникальных возможностей, которые не проникли в Дельфи. Наиболее интересной из них конечно назову расширяемые записи — штука гораздо более простая и мощная, чем предоставляемые Дельфи и Модулой записи с вариантами. Честно признаюсь, что, несмотря на простоту, язык Оберон требует времени на подстройку к нему мышления, что с лихвой окупается большей структуризацией проекта и, соответственно, экономией времени при отладке. Первое время при работе на Обероне крайне не хватает адресной арифметики, за которую так сильно хочется уцепиться даже при работе с массивами, также не хватает беззнаковых типов данных, к которыми мы привыкли в Паскале и Си. Впрочем, предлагаемая мною технология разработки программ для Z80 сохраняет возможность работать с беззнаковыми типами, что для этого процессора повышает эффективность кода. Целью проекта, если можно так это назвать, является подтверждение, что мощности языка Оберон хватает не только для написания полновесных приложений для современных ОС и многоядерных процессоров, но и для очень скромных платформ, коей является Спекки. Минимальность языка, удобный и сбалансированный набор возможностей помогают достичь той оптимизации, до которой трудно додуматься, работая на Си или Паскале. Это тоже проверено. Набор встроенных типов в языке Оберон не велик, здесь принято по максимуму использовать тип INTEGER, соответствующий базовой разрядности платформы, а также SHORTINT — более усечённый вариант целого, и LONGINT — длинное целое. Все со знаком. Разумеется, такие типы лягут на внутреннюю архитектуру Z80 плохо, но предлагаемая технология разрешает использование типов:
SHORTINT {-128..127} CARDINAL {0..65535} INTEGER {-32768..32767} С вещественными типами я не экспериментировал, но, думаю, проблем здесь тоже не будет. |
Автор: | Zorko [ 16 авг 2012, 15:48 ] | ||
Заголовок сообщения: | Создание игр для ZX Spectrum — пособие от Alex Raider | ||
Очень любопытная презентация, советую ознакомиться. Надеюсь, Алекс не будет против, что я её здесь разместил. Сказанное очень подходит для программирования игр на Обероне, и не только для Спектрума. Приведу несколько цитат. Цитата:
- Определить какие модули понадобятся (меню, логика игры, графика, музыка, диск) - Правило: модуль должен выполнять свою и только свою задачу, никогда не решать “чужие задачи”
- Разбиение диктуется не чем-либо (регистры, команды, оптимизация..), а только строго логической необходимостью (абстракцией, архитектурой) - Блоки выполняются последовательно и иерархически (из блока блок) - Блоки пишутся независимыми друг от друга
- Определите что на входе блока (какие переменные) - Определите что на выходе блока (какие переменные) - Определите ЧТО с ними делает блок - Определите код блока (КАК делает)
- При этом не имеют чёткой глобальной картины - Разрабатывать нужно сверху-вниз, постепенно решая детали по мере необходимости и не теряя общей картины
- Оптимизируйте только там где надо – это скоростные, рутинные операции по выводу графики. Остальное, как правило, не нуждается в “специальной”, изощренной оптимизации. Достаточно “хорошего стиля”.
- Рамки помогают устранить путаницу - Нет рамок – программа становится “комом” или “спагетти”, в ней путаются, ее трудно понять - Иначе это называется программирование с интерфейсами
- Это сокращает время И Оберон имеет удобные абстракции, чтобы расставить акценты именно в правильном направлении. Модульность. Экспорт и импорт сущностей, как полный, так и частичный (только на чтение). Интерфейсы и сокрытие реализации. Очень чёткое разделение кода на низкий и высокий уровни (например, сам компилятор BlackBox знает, остаётся ли ещё код переносимым, или уже нет; и это знание проникает в экспортируемый интерфейс). Поймите, многое из этого возможно и на Си, но программисты на языке Си (особенно новички) обычно расставляют акценты совершенно иначе. Что это — магия Оберона? Или что-то другое? Я не знаю.
|
Автор: | Zorko [ 16 авг 2012, 22:09 ] |
Заголовок сообщения: | Создание игр для ZX Spectrum — пособие от Alex Raider |
В продолжение темы привожу табличку, которая показывает достоинства языка Оберон. Код: "OBERON"
* В Delphi такой экспорт полей компонентов можно реализовать через механизм свойств (property). ** Есть во всех диалектах языка Oberon, кроме Oberon-1. *** Некоторые шаги в этом направлении предприняты в BCB/Delphi VCL (и KOL/MCK) при визуальном построении GUI. |
Автор: | Zorko [ 14 дек 2012, 14:13 ] |
Заголовок сообщения: | Re: Разработка игр и программ для ZX Spectrum на языке Оберон-2 |
Насколько хорошо получается разрабатывать на языках высокого уровня для ZX? Сделать на Обероне игру типа Elite конечно вряд ли получится, — даже если хватит скорости, может не хватить памяти. Но Си уже давно и довольно успешно применяют для разработки для Спектрума. Вот здесь собраны ссылки на исходники игр для Спека, написанных в том числе и на Си — http://www.worldofspectrum.org/forums/showthread.php?t=40330 В основном для программирования для ZX в зарубежном мире широко используется z88dk, для него есть отличная графическая библиотека SpritePack. Но качество кодогенерации у z88dk всё-таки значительно похуже, чем у SDCC, использованного мною в качестве бэк-энда для среды программирования ZXDev. |
Автор: | Zorko [ 17 июн 2014, 02:38 ] | ||
Заголовок сообщения: | Re: Разработка игр и программ для ZX Spectrum на языке Оберон-2 | ||
Игра Earthraid с открытыми исходниками, написанная на Boriel Basic. Для меня интересна тем, что это пример хорошей игры, разработанной на чём-то отличном от асма.
|
Автор: | Zorko [ 17 сен 2015, 18:28 ] |
Заголовок сообщения: | Re: Разработка игр и программ для ZX Spectrum на языке Оберон-2 |
Программы и игры, разработанные с помощью Boriel Basic. Некоторые с открытыми исходниками: • ZX BASIC: Released Programs |
Автор: | prospero78su [ 05 фев 2017, 11:12 ] |
Заголовок сообщения: | Re: Разработка игр и программ для ZX Spectrum на языке Оберон-2 |
Вот и нам нужен толковый каркас, Олег. Графика -- №1. То, о чём мы с тобой говорили вчера)) |
Страница 1 из 1 | Часовой пояс: UTC + 2 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |