Оберон-клуб «ВЄДАsoft» https://zx.oberon.org/forum/ |
|
О трансляции Оберона в Си (И зачем писать на Обероне, если есть Си?) https://zx.oberon.org/forum/viewtopic.php?f=46&t=93 |
Страница 1 из 1 |
Автор: | Zorko [ 13 мар 2013, 17:51 ] |
Заголовок сообщения: | О трансляции Оберона в Си (И зачем писать на Обероне, если есть Си?) |
Рассуждения о развитии Оберон-технологий в сложившихся условиях. Цитата: XDev использует транслятор в Си, а меня интересует натив. Я тоже не являюсь большим сторонником звена промежуточных представлений между языком и машинным кодом, из него генерируемым. Но сейчас в условиях такого маленького Оберон-социума тянуть:
Как мы понимаем, это попытка повторить то, что уже сделано на других средствах. Вечно плестись в хвосте как 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. |
Автор: | Kubanych [ 08 мар 2015, 13:04 ] |
Заголовок сообщения: | Re: О трансляции Оберона в Си (И зачем писать на Обероне, если есть Си?) |
Был еще oo2c, давным давно на нем я делал обработчик данных от цифровой телефонной станции huawei |
Страница 1 из 1 | Часовой пояс: UTC + 2 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |