Удалить интерпретируемый код
Closed this issue · 0 comments
Эта задача — подзадача для #1.
Интерпретируемый код и код прямой кодогенерации дублируют друг друга, что противоречит минималистичности. Соответственно, надо один из них удалить.
- Интерпретируемый код (работа Сухарева/Дрогунова) на рассматриваемом этапе развития Простого Рефала представляет собой константный массив внутри функции на Си++.
- Код прямой кодогенерации — просто код на Си++.
Если отказываться от кода прямой кодогенерации, то генерация Си++ всё равно останется (с константными массивами). Придётся переходить к файлам байткода и к отдельному интерпретатору (как это сделано, например, в Рефале-5 или Рефале-5λ). Это снизит гибкость: чтобы добавить новую функцию, нужно будет менять кодогенератор, парсер байткода и интпретатор вместо кодогенератора и рантайма. Это лишит удобного интерфейса с языком Си/Си++ (подход Рефала-5λ совсем не минималистичен).
Поэтому предлагается отказаться от интерпретации. Простой Рефал, генерирующий код на Си++, концептуально закончен, а интерпретация «прицеплена сбоку».
Более того, частично код интерпретации уже удалён — история проекта была переписана, коммиты Игоря Дрогунова и связанные с ними мои коммиты просто туда не попали. Значит, достаточно удалить код Вадима Сухарева, которого сравнительно немного.
Другая причина удаления кода Сухарева и Дрогунова — лицензионная. Чтобы в лицензии честно написать, что код мой, я должен удалить весь чужой код.