Оберон-клуб «ВЄДАsoft»

Твердыня модульных языков
Текущее время: 17 сен 2019, 02:51

Часовой пояс: UTC + 2 часа




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
СообщениеДобавлено: 21 апр 2012, 13:06 
Не в сети
Аватара пользователя

Сообщения: 967
Откуда: Днепропетровская обл.
Во-первых постараюсь ответить на наиболее часто задаваемый вопрос со стороны программистов — почему именно Оберон, а не Си/Си++ или более традиционный для платформы ZX Spectrum ассемблер. Я не собираюсь дискутировать на тему “асм круче Си” или “Настоящие перцы девелопят тока на асме”. После нешапочного знакомства с языком Оберон и разработки на нём некоторого количества программ разной сложности мне захотелось попробовать написать что-то на Обероне для той самой любимой и первой платформы, на которой я вырос. Дело осложняется тем, что компиляторов языка Оберон для процессора Z80 я не нашёл, и подозреваю, что в природе их нет вообще. Паскаль и Модула есть, хотя реализации оставляют желать лучшего, Си есть тем более, а вот Оберона нет. В результате и получилась технология, которой с удовольствием делюсь со всеми, кому это интересно.

Оберон вообще очень интересный язык. Начнём с того, что это самый простой императивный современный ЯВУ, полное описание языка занимает меньше 30 страниц (с примерами). Здесь налицо стремление профессора Никлауса Вирта, автора языков Паскаль, Модула и Оберон, к простоте. В принципе, к этому же движется и промышленное программирование. Никто не будет спорить, что Java намного проще Си++, хотя считается более модной и мощной. Понятие мощности языка стало спекуляцией в гонке вооружений, то есть, простите, в гонке промышленных языков.

В то же время в Обероне есть несколько уникальных возможностей, которые не проникли в Дельфи. Наиболее интересной из них конечно назову расширяемые записи — штука гораздо более простая и мощная, чем предоставляемые Дельфи и Модулой записи с вариантами.

Честно признаюсь, что, несмотря на простоту, язык Оберон требует времени на подстройку к нему мышления, что с лихвой окупается большей структуризацией проекта и, соответственно, экономией времени при отладке. Первое время при работе на Обероне крайне не хватает адресной арифметики, за которую так сильно хочется уцепиться даже при работе с массивами, также не хватает беззнаковых типов данных, к которыми мы привыкли в Паскале и Си. Впрочем, предлагаемая мною технология разработки программ для Z80 сохраняет возможность работать с беззнаковыми типами, что для этого процессора повышает эффективность кода.

Целью проекта, если можно так это назвать, является подтверждение, что мощности языка Оберон хватает не только для написания полновесных приложений для современных ОС и многоядерных процессоров, но и для очень скромных платформ, коей является Спекки. Минимальность языка, удобный и сбалансированный набор возможностей помогают достичь той оптимизации, до которой трудно додуматься, работая на Си или Паскале. Это тоже проверено. Набор встроенных типов в языке Оберон не велик, здесь принято по максимуму использовать тип INTEGER, соответствующий базовой разрядности платформы, а также SHORTINT — более усечённый вариант целого, и LONGINT — длинное целое. Все со знаком. Разумеется, такие типы лягут на внутреннюю архитектуру Z80 плохо, но предлагаемая технология разрешает использование типов:

    SHORTCARD {0..255}
    SHORTINT {-128..127}
    CARDINAL {0..65535}
    INTEGER {-32768..32767}

С вещественными типами я не экспериментировал, но, думаю, проблем здесь тоже не будет.


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 16 авг 2012, 15:48 
Не в сети
Аватара пользователя

Сообщения: 967
Откуда: Днепропетровская обл.
Очень любопытная презентация, советую ознакомиться. Надеюсь, Алекс не будет против, что я её здесь разместил. Сказанное очень подходит для программирования игр на Обероне, и не только для Спектрума. Приведу несколько цитат.
Цитата:
    - При проектировании разбиваем на жесткие блоки/модули/слои, каждый со своей конкретной задачей
    - Определить какие модули понадобятся (меню, логика игры, графика, музыка, диск)
    - Правило: модуль должен выполнять свою и только свою задачу, никогда не решать “чужие задачи”

    - Код разбивается на блоки-модули (процедуры, вызываемые по CALL)
    - Разбиение диктуется не чем-либо (регистры, команды, оптимизация..), а только строго логической необходимостью (абстракцией, архитектурой)
    - Блоки выполняются последовательно и иерархически (из блока блок)
    - Блоки пишутся независимыми друг от друга

    - Блок как “чёрный ящик” (BlackBox)
    - Определите что на входе блока (какие переменные)
    - Определите что на выходе блока (какие переменные)
    - Определите ЧТО с ними делает блок
    - Определите код блока (КАК делает)

    - Если всё разбито правильно и на независимые модули, то у модулей можно прозрачно менять “техники”, реализацию

    - Часто страдают от разработки снизу-вверх, углубляясь в детали
    - При этом не имеют чёткой глобальной картины
    - Разрабатывать нужно сверху-вниз, постепенно решая детали по мере необходимости и не теряя общей картины

    - Часто программисты ZX-Spectrum страдают от бессмысленной, запредельной оптимизации всего и везде
    - Оптимизируйте только там где надо – это скоростные, рутинные операции по выводу графики. Остальное, как правило, не нуждается в “специальной”, изощренной оптимизации. Достаточно “хорошего стиля”.

    - Необходимо насильно вводить и поддерживать логические рамки-границы
    - Рамки помогают устранить путаницу
    - Нет рамок – программа становится “комом” или “спагетти”, в ней путаются, ее трудно понять
    - Иначе это называется программирование с интерфейсами

    - Когда есть хорошее разбиение на модули и все данные (интерфейсы) заранее описаны, отдельный модуль может исполнять отдельный человек
    - Это сокращает время

И Оберон имеет удобные абстракции, чтобы расставить акценты именно в правильном направлении. Модульность. Экспорт и импорт сущностей, как полный, так и частичный (только на чтение). Интерфейсы и сокрытие реализации. Очень чёткое разделение кода на низкий и высокий уровни (например, сам компилятор BlackBox знает, остаётся ли ещё код переносимым, или уже нет; и это знание проникает в экспортируемый интерфейс). Поймите, многое из этого возможно и на Си, но программисты на языке Си (особенно новички) обычно расставляют акценты совершенно иначе. Что это — магия Оберона? Или что-то другое? Я не знаю.


Вложения:
Комментарий к файлу: Создание игр для ZX Spectrum
MAKEGAME.zip [27.62 КБ]
Скачиваний: 401
Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 16 авг 2012, 22:09 
Не в сети
Аватара пользователя

Сообщения: 967
Откуда: Днепропетровская обл.
В продолжение темы привожу табличку, которая показывает достоинства языка Оберон.
Код: "OBERON"
  1. +==============================+========+=======+========+
  2. | | Pascal | C/C++ | Oberon |
  3. +==============================+========+=======+========+
  4. | Экспорт только для чтения | Нет* | Нет | Есть** |
  5. | | | | |
  6. | Автоматическая генерация | | | |
  7. | интерфейсов модулей | Нет*** | Нет***| Да |
  8. | | | | |
  9. | Автоматическая синхронизация | | | |
  10. | модулей и их интерфейсов | Нет | Нет | Да |
  11. | | | | |
  12. | Явное разделение кода на | | | |
  13. | переносимый и непереносимый | | | |
  14. | (автоконтроль компилятором) | Нет | Нет | Да |
  15. +==============================+========+=======+========+

* В Delphi такой экспорт полей компонентов можно реализовать через механизм свойств (property).
** Есть во всех диалектах языка Oberon, кроме Oberon-1.
*** Некоторые шаги в этом направлении предприняты в BCB/Delphi VCL (и KOL/MCK) при визуальном построении GUI.


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 14 дек 2012, 14:13 
Не в сети
Аватара пользователя

Сообщения: 967
Откуда: Днепропетровская обл.
Насколько хорошо получается разрабатывать на языках высокого уровня для ZX? Сделать на Обероне игру типа Elite конечно вряд ли получится, — даже если хватит скорости, может не хватить памяти. Но Си уже давно и довольно успешно применяют для разработки для Спектрума. Вот здесь собраны ссылки на исходники игр для Спека, написанных в том числе и на Си — http://www.worldofspectrum.org/forums/showthread.php?t=40330

В основном для программирования для ZX в зарубежном мире широко используется z88dk, для него есть отличная графическая библиотека SpritePack. Но качество кодогенерации у z88dk всё-таки значительно похуже, чем у SDCC, использованного мною в качестве бэк-энда для среды программирования ZXDev.


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 17 июн 2014, 02:38 
Не в сети
Аватара пользователя

Сообщения: 967
Откуда: Днепропетровская обл.
Игра Earthraid с открытыми исходниками, написанная на Boriel Basic. Для меня интересна тем, что это пример хорошей игры, разработанной на чём-то отличном от асма.


Вложения:
Earthraid.gif
Earthraid.gif [ 5.38 КБ | Просмотров: 15680 ]
Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 17 сен 2015, 18:28 
Не в сети
Аватара пользователя

Сообщения: 967
Откуда: Днепропетровская обл.
Программы и игры, разработанные с помощью Boriel Basic. Некоторые с открытыми исходниками:

ZX BASIC: Released Programs


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 10 янв 2017, 18:51 
Не в сети
Аватара пользователя

Сообщения: 967
Откуда: Днепропетровская обл.
How to Write a Game in Boriel’s ZX Basic

Churrera

Как написать свою игру?
Создай свою собственную игру на ZX Spectrum. Часть 1
Создай свою собственную игру на ZX Spectrum. Часть 2
Создай свою собственную игру на ZX Spectrum. Часть 3
Создай свою собственную игру на ZX Spectrum. Часть 4
Создай свою собственную игру на ZX Spectrum. Часть 5
Создай свою собственную игру на ZX Spectrum. Часть 6
Создай свою собственную игру на ZX Spectrum. Часть 7
Создай свою игру на ZX Spectrum. Часть 7b — Небольшое отступление
Создай свою игру на ZX Spectrum. Часть 7c — Ещё немного о новой Чуррере
Создай свою игру на ZX Spectrum. Часть 8 — Начинаем работу со скриптами
Создай свою игру. Часть 9 — Базовые скрипты


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 05 фев 2017, 11:12 
Не в сети
Администратор
Аватара пользователя

Сообщения: 86
Вот и нам нужен толковый каркас, Олег. Графика -- №1. То, о чём мы с тобой говорили вчера))

_________________
Действия профессионала предсказуемы. Но в мире полно любителей!


Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 2 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Тех.поддержка phpBB