Mazdaywik/Refal-05

Удалить интерпретируемый код

Closed this issue · 0 comments

Эта задача — подзадача для #1.

Интерпретируемый код и код прямой кодогенерации дублируют друг друга, что противоречит минималистичности. Соответственно, надо один из них удалить.

  • Интерпретируемый код (работа Сухарева/Дрогунова) на рассматриваемом этапе развития Простого Рефала представляет собой константный массив внутри функции на Си++.
  • Код прямой кодогенерации — просто код на Си++.

Если отказываться от кода прямой кодогенерации, то генерация Си++ всё равно останется (с константными массивами). Придётся переходить к файлам байткода и к отдельному интерпретатору (как это сделано, например, в Рефале-5 или Рефале-5λ). Это снизит гибкость: чтобы добавить новую функцию, нужно будет менять кодогенератор, парсер байткода и интпретатор вместо кодогенератора и рантайма. Это лишит удобного интерфейса с языком Си/Си++ (подход Рефала-5λ совсем не минималистичен).

Поэтому предлагается отказаться от интерпретации. Простой Рефал, генерирующий код на Си++, концептуально закончен, а интерпретация «прицеплена сбоку».

Более того, частично код интерпретации уже удалён — история проекта была переписана, коммиты Игоря Дрогунова и связанные с ними мои коммиты просто туда не попали. Значит, достаточно удалить код Вадима Сухарева, которого сравнительно немного.

Другая причина удаления кода Сухарева и Дрогунова — лицензионная. Чтобы в лицензии честно написать, что код мой, я должен удалить весь чужой код.