Тема выделена из ветки http://zx.pk.ru/showthread.php?t=18336
Здесь я попытаюсь ответить на вопрос Alone Coder’а “Почему Оберон?” – размещу мысли об Оберонах как языковой и технологической платформе, простой для освоения, экономичной, выразительной, корпоративно-нейтральной и достаточно хорошо абстрагированной от железа. Тема специально содержит претенциозный заголовок, так как создаётся для активного обсуждения (или для флейма; кто как понял) Оберонов в роли Спектрума как простой программной (языковой) платформы. Обероны приходят на место Спектруму, как достаточный для творческих личностей минимум, способный стать катализатором в раскрытии творческих способностей и задатков оных личностей, если таковые имеются.
В Оберонах действительно есть к чему приложить руку. Здесь ещё не сказано последнее слово, есть много открытых направлений работы, например, я сделал биндинги библиотеки SDL для КП https://sourceforge.net/projects/sdl-for-oberon/, начал портировать на КП библиотеку KOL http://forum.oberoncore.ru/viewtopic.php?f=47&t=2829 (кстати, на базе этой библиотеки сделан эмулятор Спектрума EmuZWin), участвую в развитии GUI-библиотеки OVCL http://zx.oberon2.ru/ovcl.htm для компилятора OPCL, участвую в команде по развитию компилятора OPCL https://sourceforge.net/projects/opcl. Всё на некоммерческих началах, на правах энтузиаста.
Потребительский подход к Оберону или творческий, исследовательский? Оберон – не для потребителей, в отличии от Java и .NET. Здесь маленько другое. Там – конкуренция и корпоративность. Здесь – полигон для изучения языковых средств. Там – выживаемость и реклама. Здесь мне не платят ни копейки за рекламу Оберон-технологий, даже не надейтесь. Можно совместить там и здесь? Можно попробовать. Надо развивать подход. Например, продвинутые средства для построения GUI на ETH Oberon для мэйнстрим-систем мы ещё только делаем, поэтому говорить о написании GUI-приложений для Windows на Обероне с помощью компилятора OPCL ещё рановато.
Что ещё общего у Спека и Оберона – простота. Научиться сознательно применять его – около месяца, при условии активного использования. Научиться сознательно применять его достоинства перед другими технологиями – этому можно учиться всю жизнь. Кстати, полагаете, потенциал Спектрума уже полностью раскрыт? О постижении пределов Оберон-потенциала тоже остаётся только догадываться. Смотрите аналогию. Появилось железо классического Спека с 48 кб. Какие игры на нём делались сперва? Правильно, типа Manic Miner. Это потом уже появились Alien 8, Blade Warrior, Fairlight, Dizzy и Nether Earth. Это был путь развития программерской мысли на зафиксированном железе. А потом появились мегадемы, видео на Спеке, Fido/ZXNet и прочее. Конечно, железо уже было слегка другое, но проц практически тот же. Не считая режима Turbo. И люди всё время искали как избавиться от ассемблера, ибо понимали насколько трудно, медленно и чревато ошибками на нём работать. “Ненавижу асм, меня на него блевать тянет” (с) В.С.Медноногов
Господа, в соседней дружественной ветке некоторых людей смущает наличие в цепочке трансляторов Ofront/SDCC промежуточного представления программы на языке Си, но почему тогда не смущает трансляция SDCC не прямо в машкод, а для начала в ассемблер? А почему не смущает такая неуклюжая и столь малоподходящая для разворачивания на других платформах форма для представления высокоуровневых алгоритмов как асм Z80? Даже Оберон в этом смысле куда как нагляднее.
Если хочется увековечить алгоритм или хотя бы иметь его в наглядном и понятном виде для осязания и дальнейшего совершенствования, то нужно платформенно-нейтральное представление. Тут Оберон (возможно, слегка модифицированный) подходит отлично. А ещё платформы сменяют друг друга. 30 лет назад буяли MSX и ZX, потом реванш взял DOS. Вспоминается GameBoy, а ещё совсем-совсем недавно много говорили о PalmOS. Сегодня мы видим угасающую популярность платформы J2ME и возрастающую – Android. В этом свете Оберон я рассматриваю как инструмент, позволяющий автоматически развернуть алгоритмы на любой из перечисленных платформ (включая Спектрум), пусть не на 100% эффективно, но оцените саму возможность. А асм 80 в этом свете выглядит глупой частностью, хотя не здесь об этом будет сказано. В лице Оберона я обрёл языковую платформу, которая ложится на другие платформы. Спектрум-наработки можно и должно с помощью Оберона превращать в вечность, которую удастся развернуть на других платформах. Это не будет альтернативой эмуляторам. Эмуляцию Спектрума или процессора Z80 на других платформах я не рассматриваю хотя бы потому, что это очень ограниченное по своим возможностям решение, начиная с организации экрана, заканчивая мелким адресным пространством и страничной организацией памяти. Я люблю Спектрум, но давайте признаем, что плоская модель памяти, которую невозможно было реализовать в 80-х ввиду дороговизны памяти и отсутствия её больших объёмов вообще, единственно удобна. Страницы создают огромное количество проблем для программиста. Поэтому, если возникнет желание доработать готовую или начатую для Спектрума игру, мы неизбежно столкнёмся с необходимостью переноса её на язык X [подставить массово навязываемое] и платформу Y [подставить массово продаваемое]. Если же наша игра останется в коде Z80 и на базе кода с эмуляцией, её убьёт если не количество ограничений на связку эмулированного кода с неэмулированным, то хотя бы путаница во внутреннем устроении.
Оберон-технологии – это прокрустово ложе для попыток быстро закодить плохо продуманные и плохо спроектированные решения. Этим оно здорово не нравится в начале освоения. Я бы выделил три вещи, которые больше всего не нравятся в Оберонах новичкам (ровно так же, как они не нравились в начале и мне).
1. Отсутствие беззнаковых типов
2. Отсутствие макропроцессора и #ifdef
3. Присутствие автоматического управления памятью и наличие сборки мусора (мы просто не знаем что с этим делать)
Надо думать, если мы будем реализовать Оберон для Z80, то первые 2 пункта придётся ввести однозначно, а третий столь же однозначно убрать.
Далее начинаешь потихоньку понимать, что, в принципе, деление на знаковые и беззнаковые типы в идеальном языке должно быть поручено умному компилятору, также как и освобождение памяти. Вобщем, много начинаешь понимать по ходу того, как разбираешься и много-много программируешь.
В заключение несколько ссылок. Извините, если повторяюсь. Мне не хотелось бы вступать в дискуссии, если Вы их не прочтёте (устал многим объяснять одно и то же). Согласен, читать многовато, но чтиво весьма интересное.
Свердлов С.З. Арифметика синтаксиса
http://uni-vologda.ac.ru/cs/syntax/index.html
http://uni-vologda.ac.ru/cs/syntax/ariphm.htm
http://oberon2005.oberoncore.ru/paper/arith.pdf
Джозеф Темпл. Oberon против C++
http://oberon2005.oberoncore.ru/paper/templ.pdf
Свердлов С.З. Язык программирования Си# – критическая оценка
http://uni-vologda.ac.ru/~c3c/articles/CScritics.htm
Руслан Богатырёв. Оберон как эсперанто программирования
http://www.computer-museum.ru/histsoft/ober_esp.htm
http://oberon2005.oberoncore.ru/paper/obe_esp.pdf
Потопахин В.В. Почему Паскаль (Газета 'Информатика' № 06-2008)
http://inf.1september.ru/article.php?ID=200800604
Свердлов С.З. Оберон – воплощение мечты Никлауса Вирта
http://uni-vologda.ac.ru/~c3c/articles/dream.htm
http://www.software.unn.ac.ru/zonnon/files/oberon.doc
http://oberon2005.oberoncore.ru/paper/obe_drm.pdf
Свердлов С.З. Маленький большой язык Оберон
http://www.pcweek.ru/themes/detail.php?ID=43403
http://oberon2005.oberoncore.ru/paper/obe_lang.pdf
Руслан Богатырёв. Гадание на кофейной гуще
http://oberon2005.oberoncore.ru/paper/obe_java2.pdf
Руслан Богатырёв. Java на марше
http://oberon2005.oberoncore.ru/paper/obe_java6.pdf
Руслан Богатырёв. Никлаус Вирт – патриарх надёжного программирования
http://www.osp.ru/pcworld/2004/03/102.htm
http://oberon2005.oberoncore.ru/paper/wirth.pdf
Руслан Богатырёв. Modula, Oberon и Java (Интервью с Д.Лесковым и В.Михеевым)
http://oberon2005.oberoncore.ru/paper/obe_java7.pdf
Руслан Богатырёв. Судьба Оберона
http://oberon2005.oberoncore.ru/paper/obe_fate.html
http://oberon2005.oberoncore.ru/paper/obe_fate.pdf
Руслан Богатырёв. О программировании и выборе языка для представления алгоритмов
http://web-pascal.narod.ru/stat/oprog.htm
М.Франц. Java – критическая оценка
http://www.osp.ru/pcworld/1997/08/56.htm
http://oberon2005.oberoncore.ru/paper/obe_java1.pdf
М.Франц. Динамическая кодогенерация: ключ к разработке переносимого программного обеспечения
http://www.uni-vologda.ac.ru/oberon/...t/otherfly.htm
Никлаус Вирт. Долой 'жирные' программы
http://www.osp.ru/os/1996/06/27.htm
http://oberon2005.oberoncore.ru/paper/fatprog.pdf
Никлаус Вирт. От Modula к Oberon
http://www.ict.edu.ru/ft/004781/m2_obe.pdf
К.Пешио. Никлаус Вирт о культуре разработки ПО
http://www.osp.ru/os/1998/01/41.htm
http://oberon2005.oberoncore.ru/paper/sftcult.pdf
Никлаус Вирт. Преподавание информатики – потерянная дорога
http://www.inr.ac.ru/~info21/texts/2...-Aarhus/ru.htm
Никлаус Вирт. Хорошие идеи – взгляд из Зазеркалья
http://citforum.ru/programming/digest/wirth/
Юрг Гуткнехт. Проект Oberon. Разработка операционной системы и компилятора
http://notabenoid.com/book/20826
Ханспетер Мёссенбёк. Плюсы и минусы ООП
http://uni-vologda.ac.ru/oberon/infoart/plus&min.htm
С.Губанов. Секреты модульных систем
http://oberoncore.ru/articles/gubanov/
А.Е.Недоря. Расширяемая переносимая система программирования, основанная на биязыковом подходе
http://kronos.iis.nsk.su/sites/defau...es/Nedorya.pdf
А.Е.Недоря. Перенацеливаемый оптимизирующий Модула-2 - Оберон-2 компилятор
http://oberon2005.oberoncore.ru/paper/obe_ned.pdf
Поттосин И.В. Российские исследования по ЯП и трансляции
http://oberon2005.oberoncore.ru/paper/rus_trn.pdf
Вива, Оберон!