Вот такой концептуальный вопрос возник: как лучше делать в Обероне взаимодействие с внешним миром? То есть с функционалом писанным на других языках.
...
Как думаете, что лучше?
Конечно второй вариант предпочтительнее. Если нужно скрещивать исходный язык с одним целевым языком/протоколом, то можно использовать первый подход. С появлением новых целевых языков, при первом подходе, исходный язык сильно разрастётся, в директивах компилятору будет трудно разобраться, исчезнет простота и наглядность.
Второй подход предпочтительнее и тем, что его сложность не зависит от количества целевых языков, а простота и наглядность программного кода не утрачивается. Сама библиотека-преобразователь может быть написана на третьем языке, отличном от исходного и целевого языка. Генерацией таких библиотек может заниматься отдельное программное обеспечение, которое нацелено на то, чтобы вызовы, протоколы, константы, типы из исходного языка преобразовывать в вызовы, протоколы, константы, типы целевого языка для данной исполнительской платформы (ОС).