OberonCore
https://forum.oberoncore.ru/

Компиляция Оберона в Си - плюсы и особенно минусы
https://forum.oberoncore.ru/viewtopic.php?f=61&t=7001
Страница 1 из 1

Автор:  budden [ Понедельник, 16 Декабрь, 2024 00:17 ]
Заголовок сообщения:  Компиляция Оберона в Си - плюсы и особенно минусы

Плюсы, видимо, такие:
* лёгкая переносимость
* доступ к библиотекам
* компиляторы Си хорошо оптимизированы, поэтому можно ожидать высокого быстродействия

Минусы:

* когда вы пойдёте это сертифицировать, проверке подлежит весь стек, а не только обероновская часть. Значит, безопасность такой системы берётся по слабому звену, т.е. равна безопасности Си
* делать любую реализацию Оберона - это значит _отдавать_ в Оберон и _брать_ из Оберона. Отдаём в Оберон ещё плюс одну реализацию Оберона, а берём из Оберона его популярность (она на самом деле в какой-то степени есть и по сей день). Если Оберон транслируется через Си, значит, в каком-то смысле "Оберонщики не смогли". Не смогли сделать свой (пусть упрощённый) аналог gcc или llvm, покрывающий все платформы. А значит - эрозия изначальной жизненной силы Оберона, который был как раз "системный язык, но не Си, а лучше" и в этом был один из его основных смыслов. Для каждого проекта нужно оценить, что здесь перевешивает.
* Моё убеждение, исходящее из опыта, состоит в том, что двухэтажные конструкции такого рода всегда хуже одноэтажных. Сам по себе процесс двухэтапной компиляции означает, что у вас два лексера, два парсера, два способа сборки, две системы сообщения об ошибках, две системы обработки ошибок, двухэтапное отображение места ошибки в компиляции, два источника ограничений, два источника ошибок в самой реализации и всё это на самом деле надо знать, а разработчику языка поддерживать на плаву. Не получится обойтись знанием одного Оберона. Да, иногда они могут быть почти так же хороши, а иногда даже чуть лучше, но это либо стоит неимоверных усилий, либо обеспечена изоляция слоёв, как например программисту на Javascript можно не знать ассемблера, хотя js иногда транслируется для исполнения в машинный код.
* Сборка мусора. В Си нет способа обойти стек вычислений. Поэтому ометание стека либо не обеспечено (например, при консервативной сборке мусора, я показывал пример падения такой системы), либо делается по-хакерски с соответствующими рисками. Стек обероновских программ ещё можно как-то контролировать. Но такие системы имеют смысл, когда можно вызывать Си из Оберона и иногда даже наоборот. В этом случае стек представляет из себя смесь стеков разного сорта. Монолитные оберон-системы на железе лишены этой проблемы, поскольку там весь стек под контролем разработчика
* Производительность процесса компиляции. Понятно, что двойная компиляция будет кратно медленнее одинарной
* доступ к библиотекам озаначает вызов функций на Си из Оберона и обратно, т.е. вместо защищённых конструкций, таких, как массивы, нужно использовать незащищённые, такие, как указатели. При этом опасность работы с сишным кодом не только растекается по всему приложению, но и существует опасность повреждения обероновской кучи некорректно вызванным или некорректно написанным кодом на Си. Об это довольно легко сломать зубы.

Автор:  Виктор Мясников [ Понедельник, 16 Декабрь, 2024 20:13 ]
Заголовок сообщения:  Re: Компиляция Оберона в Си - плюсы и особенно минусы

Цитата:
Си это давно уже не просто язык программирования, но изученное и освоенное промежуточное представление, ничем не хуже внутреннего представления во многих хороших компиляторах; не идеальное, но хорошо известное (...)
Практика показывает, что, возможно к сожалению, стандартизация распространённых компиляторов Си далека от идеальной. Зачастую даже использование другой версии того же компилятора решает конкретную проблему, но это заставляет задуматься.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/