Если ваш компилятор на языке начальной загрузки работает хорошо и поддерживается, зачем его менять? Например, перепишите свой компилятор для самостоятельного хостинга в версии 1.5, что вызвало compile times to become much slower: явный ущерб, когда цель Go - быстрая компиляция.Есть ли практическая причина для компилятора для самостоятельного хостинга?
ответ
Одна практическая причина: сообщество. Люди, которые программируют на вашем языке, могут предпочесть программировать в компиляторе, если они написаны на одном языке. Если мой компилятор находится в Fortran/COBOL, и он генерирует Go
, я вряд ли привлечу разработчиков Go к компилятору.
Еще одна цепочка сборки, то есть зависимости. Если у вас есть компилятор, написанный на одном языке и генерирующий другой, у вас есть два набора тестов для написания, когда вы можете согласиться на один. Это также приводит к уменьшению барьера для входа, т. Е. Разработчикам не нужны знать несколько цепей инструментов и т. Д. Знание двух языков достаточно хорошо, чтобы быть компетентным составителем компилятора в обоих случаях - это тяжелая работа и сужает потенциальную аудиторию за помощью. Получение помощи очень важно для большинства проектов с открытым исходным кодом, и все, что увеличивает вашу потенциальную базу разработчиков, является определенным практическим преимуществом.
Вы также можете указать тестирование в качестве дополнительного преимущества. Если вы написали собственный хостинг-компилятор, вам нужно много чего сделать, чтобы язык был относительно легким (в отличие от потянув зубы) к собственному хосту, то есть File IO, манипуляции с строками, таблицам символов, деревьям и спискам и т. Д. Очевидно, что вы может выжить без них, но начинает писать компилятор намного сложнее. Этот вид сидит в своем собственном лагере для собак.
Это считается Rite of Passage
, но я не считаю это очень практичной причиной, если вы не можете доказать, что это привлекает разработчиков или какая-то другая причина для этого, возможно, хорошее отношение к достижению - это практическое преимущество, то есть вы менее вероятно, отказаться от него.
Там интересная тема на этом здесь ...
Для некоторых конкретных причин есть чтение Роба щук скользит почему они переместили компилятор Перейти к Go instead of C. Выводы в слайдах:
- Избавление от C было огромным авансом для проекта.
- Код чище, тестируемо, прост, удобен в работе.
- Новая единая цепочка инструментов уменьшает размер кода, повышает ремонтопригодность. Гибкая цепь инструментов, мобильность по-прежнему важны.
В зависимости от языка ваше перемещение и выгоды могут отличаться.
У любого внешнего инструмента также есть свои проблемы с версиями, а эффекты сообщества очень заметны не только у разработчиков, но еще больше в круге непосредственно снаружи Разработчики. Знающие пользователи, которым внезапно нужны двойные (или тройные) языковые навыки, чтобы изолировать ошибку и создать подробный отчет. (трижды, если библиотека времени выполнения написана на другом языке) –
https://en.wikipedia.org/wiki/Eating_your_own_dog_food –