Что заставляет компилятор работать медленно? - PullRequest
0 голосов
/ 04 июня 2018

Я обнаружил, что go невероятно быстро компилируется как язык компилятора по сравнению с другими языками, такими как c ++ или rust.Я думаю, что почти так же быстро, как и в переводе.Haskell медленнее, чем go для компиляции, даже если он похож на go, скомпилированный с помощью среды выполнения и сборщика мусора (я прав?).Я подозреваю, что сложность системы типов является основной причиной, поскольку в Haskell более сложная система типов, чем go.

Если кто-то хочет создать новый язык программирования, и его основным приоритетом является время компиляции, какие вещи он долженрассмотреть на этапах лексического, синтаксического и семантического анализа?

1 Ответ

0 голосов
/ 15 июня 2018

Разбор может быть довольно дорогим, и, как сказал предыдущий комментатор, вы хотите избежать повторения, если это возможно.Это одна из причин, почему некоторые языки используют систему модулей, а не заголовочные файлы в стиле C.Вместо включения файла несколько раз в другие исходные файлы и повторного анализа всего этого, вы должны скомпилировать модуль и экспортировать его функциональные возможности через какой-то интерфейс.

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

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