Вам так сразу код выдать - новый проект на Oberon горит?
Т.к. имеется коммерческий интерес - код обязательно будет выложен в открытом доступе, но только когда что то будет реально готовое (к Новому Году - но точную дату не скажу). Пока что все на этапе ресерча, пункты будут уточнятся. Работа ведется в свободное время.
# Рабочее название "Portal"
## Исходный язык - Oberon-07
Исходя из прочитанной информации был выбран Oberon-07. Мотивы думаю пояснять не надо, т.к. все тут очевидно должно быть.
Важное примечание - если в Oberon-07 есть привязанные к типу процедуры (не до конца еще разобрался) - эта возможность не реализуется - как ненужная сущность.
## Требования к реализации
Транслятор должен быть написан на Oberon - чтобы было тру (по крайней мере его первая версия). Необходимо найти подходящую реализацию - чтобы любой желающий без проблем мог установить инструменты и подключится к разработке.
Зависимости минимальны - модули In, Out (и возможно какойто модуль для работы с файлами).
На данный момент этим условиям соответствует XDS x86.
- Модуль tokenizer - преобразует символы в токены (типизирванные записи)
- Каждая реализация транслятора отдельный исполнимый файл (типа portal2go, portal2php и т.д) - преобразует токены в конструкции целевого языка и выдает код.
### Этапы работы транслятора
Cкрипт на bash или makefile
- опционально - проверка исходного кода Oberon, реализуется средствами какого-то сущесвующего компилятора, например XDS
- если ошибок компиляции нет - запускается транслятор, читает c входного потока код Oberon, выводит в выходной поток код целевой платформы.
В дальнейшем доработка до вывода AST скорее всего в XML, может в json (надо разобратся какие есть пути получения кода целевого языка из ast тогда реализовывать нужный формат)
## Возможные целевые языки
### Основные требования - какие то пункты могут отсутствовать для конкретного целевого языка
- достаточно низкоуровневый
- простой и распространенный
- кроссплатформенный
- средства компиляции в исполнимые файлы не требуют установки (распаковываются в любую папку и настраиваются необходимые переменные окружения) т.е. не требует прав администратора и доступа к пакетному менеджеру и его наличия.
- не требует установки рантайма
- возможность формировать читабельный исходный код
### Основные языки - с чем точно планируется продолжатся работа
#### Go - golang-book.ru
- достоинства - отличные средства для реализации приложений работающих с сетью и масштабирование многопоточных программ из коробки.
- основной недостаток языка и что мне лично не нравится в Go есть "типа ООП", но не ООП (это собственно и является причиной необходимости транслятора) - видимо сказалось портирование наработок гугла на "С с классами" в стиле языка Oberon-2. и вся библиотека Go принуждает писать в таком виде (пример
https://golang.org/pkg/net/url/)
#### С - clang.llvm.org
- достоинство - в отличии от gcc есть готовые сборки компиляторов под различные платформы, не требующих установки
http://releases.llvm.org/download.html, так же есть уже готовые проекты транслятора oftont+ или voc - подключится к проекту и адаптировать при необходимости под clang под свои требования сборки
### Дополнительные
#### PHP - php.net
- простая широкораспространненная платформа для web
- добавлена типизация
http://php.net/manual/ru/functions.argu ... ion.strict- активное развитие и усовершенствование языка, ведутся работы над JIT
- так же через компилятор для .NET peachpie.io - получаем исполнимый код для .NET
#### Rust - rust-lang.org
- более безопасный и низкоровневый, без ООП. как целевая платформа более персективен чем Go
- недостаток - не достаточно стабилен и пока сложен для освоения
#### Kotlin - kotlinlang.org
- достоинства - присутcтвуют функции как отдельная сущность - что позволит упростить реализацию транслятора нежели чем транслировать в java
- так же уже есть возможность и для браузера компилировать в js - в перспективе может улучшат качество генерируемого кода
- недостаток - требует наличия jvm (и возможно sdk)
## Конечная цель
В идеале должно получится что то типа
http://haxe.org/use-cases/, но на тру-языке. Распространение Oberon в массы и коммерческое применение для широкого круга задач.