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

Твердыня модульных языков
Текущее время: 29 мар 2024, 17:53

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




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
СообщениеДобавлено: 13 мар 2013, 17:51 
Не в сети
Аватара пользователя

Сообщения: 1019
Откуда: Днепропетровская обл.
Рассуждения о развитии Оберон-технологий в сложившихся условиях.
Цитата:
XDev использует транслятор в Си, а меня интересует натив.
Я тоже не являюсь большим сторонником звена промежуточных представлений между языком и машинным кодом, из него генерируемым. Но сейчас в условиях такого маленького Оберон-социума тянуть:

    а) нативы большого и всё увеличивающегося количества старых и новых платформ, а заодно:
    b) форматы исполняемых файлов (ELF, PE, DEX, .class/JAR и т.п.)

Как мы понимаем, это попытка повторить то, что уже сделано на других средствах. Вечно плестись в хвосте как Mono за .NET'ом. Сначала смотрят чего делает MS, потом повторяют.

Если думаете, что сделать хороший кодогенератор можно быстро и малыми силами, то это блажь. Только два примера: Small Device C Compiler (довольно качественный кодогенератор для Z80, сделанный за многие годы активной коллективной работы, но и он далёк от совершенства! За последний месяц только я зарепортил туда 3 ошибки) и TinyCC (кодогенератор довольно неэффективный, но если хотите составить впечатление о сложности работы, то посмотрите в рассылке сколько туда постится баг-репортов! Над ним активно трудится команда — ~20 человек).

Не, если бы было человек 10 в команде разработки, тогда ладно. Но заинтересованных и отмотивированных. Так что связка с Си — перманентная временная мера, костыль, без которого пока не обойтись. Ведь построить компилятор с качеством кодогенерации, сопоставимым с XDS — невероятно сложная задача. А мы и так имеем массу компиляторов-поделок Оберона. Хорошо проделанный путь энтузиаста (часто самоучки). Но кодогенерация, расширяемость и прочее — часто не на высоте.

Вот и остаётся быть мечтателем, энтузиастом собственного кодогенератора или всё же прагматиком. И в этом свете путь трансляции в Си — не роскошь, а суровая необходимость. Но главное в другом. Я не испытываю большой тяги многие годы заниматься тонкостями кодогенерации, предпочитая сконцентрировать усилия на библиотеках и интеграции с существующими технологиями, в т.ч. и аппаратными, разумеется.

Ещё с XDev достигается одна важная цель — накопление массива исходников на Обероне (и библиотек на Си). Так проще связывать Оберон с готовыми мэйнстрим-средствами. Без этого Оберон будет вещь в себе. Сферические кони в вакууме.

Считаю всё же — лучше делать что-то через трансляцию в Си, чем просто вздыхать и ждать идеального Оберона с библиотеками и нативом под все платформы.

Теперь о достоинствах подхода через трансляцию в Си.

Любой несколькоязычный компилятор, уже не говоря если он кроссплатформенный, будь то даже XDS или GPCP имеет (сюрприз!) промежуточное представление кода. Только в XDS оно наглухо закрыто, а в GPCP — нет (но разбираться с ним всё равно никто не будет; эдакая морока). В то же время, готовое стандартизированное промежуточное представление в виде текста на языке Си имеет в глазах вопрошающего важный недостаток — его можно читать глазками и править. Очень интересно! Оказывается это недостаток. Отсутствие прямой генерации в натив, заметьте. Да если бы я ждал компилятора для Z80 в натив, то не было бы и этого форума!

Есть ещё на мой взгляд важный недостаток. Это медленная трансляция Си-программ. Тут уже ничего не поделаешь, приходится мириться. Зато: есть готовый аппарат, дающий механизмы формирования новых библиотек, готовые высококачественные кодогенераторы под массу платформ (включая ретро) и готовые линкеры в готовые форматы. Есть ещё один плюс: мы можем получить в ближайшем будущем в составе XDev два новых языка — это Компонентный Паскаль и Объектная Модула-2. И это всё через трансляцию в Си. А сколько времени мы бы ждали поддержки кодогенерации языка N именно в это внутреннее представление для малоизвестного и никому не нужного компилятора M?

А угадайте кто легче и скорее перейдёт барьер x86-64 — Active Oberon, BlackBox, ETH Oberon/OPCL, компиляторы Оберона-07 энтузиастов Акрона и Рифата, та даже XDS с их рулезным нативом, или всё-таки XDev с его трансляцией в Си? Тото же.

Вот вам и трансляция в Си, господа.

Остаётся конечно ещё вариант кодогенерации с использованием готовых бэк-эндов LLVM или GCC, но будьте спокойны: этим занимаются K John Gough (Gardens Point Component Pascal) и Benjamin Kowarsch (Modula-2 Revision 2010, Objective Modula-2). Думаю, у них получится это сделать лучше, чем смог бы я один (ведь когда я среди знакомых оберонщиков кинул клич как раз за реализацию этой идеи, чтобы собрать хотя бы ядро в пару человек — все предпочли отмолчаться, из чего я сделал вывод, что в основном текущий Оберон-социум слабоват на такие проекты; и надо искать для продвижения Оберонов другие пути).

Цитата:
Зачем программировать на Обероне с трансляцией в Си, если можно писать прямо на Си?
Я читал многообъёмные талмуды "Как не следует кодировать на Си" (Ален Голуб, Стив Макконнелл и другие гуру). Так вот Оберон — это не только удобный язык с приятным синтаксисом. Это ещё и шаблон правильного стиля кодирования, заданного языком довольно жёстко. Он может по вашей воле добавлять в код проверки на корректность там, где вам даже не придумается их вставить, причём сделает это автоматически. Впрочем, проблему надёжности кода начали осознавать и сишники, например, в TinyCC введена опция контроля границ массивов. В Обероне всё это есть уже давно.

Оберон — красивый и гармоничный язык, ставший таким не в последнюю очередь из-за разумного отказа от излишеств и рудиментов, к которым мы привыкли. У меня масса причин работать именно в контексте Оберон-технологий. Об этом можно говорить много и долго. Если вы с открытым умом приступите к изучению этой языковой платформы, вы поймёте её достоинства и самобытную её прелесть.

Но мы идём дальше. Мы не собираемся следовать установленным канонам, а пересматриваем их. И делаем это сознательно, с высоты полученного практического опыта. Поэтому языку Си отводится то место, где он сильнее всего — низкоуровневое программирование, где красиво смотрятся все эти #ifdef, #include и inline. Где наработана богатейшая традиция, на которой выросло не одно поколение системных программистов. Что является тормозом для новых парадигм (Оберон, я слышал, тоже очень неплох для системного программирования. Доказательств тому — масса).

Для высокоуровневой разработки я приемлю Оберон, и думаю добавить в него постепенно всё, что действительно понадобится в рамках этой языковой базы. И надеюсь, я буду не один пожинать плоды такого подхода. Да, нам нравится работать на Обероне. Мы признаём красоту идей Вирта и магию Оберона. Поэтому мы используем Си как плечи гиганта, на которых воздвигаем новую парадигму. Почему бы нет.

Поэтому, перефразируя тему: зачем писать на Си, если есть Оберон? :)

Цитата:
Дело в том, что я не сторонник дотошного следования стандарту языка Оберон. Мне нравится сам подход, исходный, так сказать, посыл. И не вижу ничего зазорного в том, чтобы что-то изменить в стандарте языка. Пусть в результате он будет Оберон 8, или совсем по другому называться, но главное суть — маленький, быстрый, модульный, строгий. В Обероне нет необходимости тянуть совместимость с прошлыми версиями. Даже Вирт эту совместимость не тянет. Это имеет смысл когда есть ОГРОМНЫЕ наработки. Сейчас всё идет с нуля.
Верно, подписываюсь под каждым словом.

И пересмотр стандарта я бы начал с уточнения FOR, как это предлагает Saferoll.


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 08 мар 2015, 13:04 
Не в сети

Сообщения: 12
Был еще oo2c, давным давно на нем я делал обработчик данных от цифровой телефонной станции huawei


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

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


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

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


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

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
© VEDAsoft Oberon Club