Разница в дизайне компилятора для языков ООП - PullRequest
1 голос
/ 31 октября 2009

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

Например, Я обнаружил, что таблица типов построена по-другому.

1 Ответ

1 голос
/ 02 ноября 2009

Прежде чем приступить к изучению «дизайна компилятора», я думаю, что необходимо решить более фундаментальный вопрос «проектирования языка».

Должен ли язык быть статически типизированным? Динамически набранный? Ранняя / поздняя привязка или комбинация? Поддержка дженериков? Является ли вывод целью? Должны ли типы быть закрытыми или открытыми? Как должен работать подтип? (Следует ли вообще разрешать неявную подтипировку?) Ковариантность? Контрвариация? Одно наследование? MI? СИ с чертами? Явный член-выбор? Прототип (то есть, должно ли вообще существовать понятие «класс» и «экземпляр»?) Должны ли типы быть именными или основаны на сигнатурах членов? Однократная или многократная отправка? Участники призваны как первоклассные граждане или передача сообщений? Типы такие же, как классы? Есть ли различие между типами «value» и «reference»? И т. Д., И т. Д. И т. Д. ... и это только верхушка очень большого айсберга.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...