2016-04-07 2 views
2

Если ваш компилятор на языке начальной загрузки работает хорошо и поддерживается, зачем его менять? Например, перепишите свой компилятор для самостоятельного хостинга в версии 1.5, что вызвало compile times to become much slower: явный ущерб, когда цель Go - быстрая компиляция.Есть ли практическая причина для компилятора для самостоятельного хостинга?

+0

https://en.wikipedia.org/wiki/Eating_your_own_dog_food –

ответ

5

Одна практическая причина: сообщество. Люди, которые программируют на вашем языке, могут предпочесть программировать в компиляторе, если они написаны на одном языке. Если мой компилятор находится в Fortran/COBOL, и он генерирует Go, я вряд ли привлечу разработчиков Go к компилятору.

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

Вы также можете указать тестирование в качестве дополнительного преимущества. Если вы написали собственный хостинг-компилятор, вам нужно много чего сделать, чтобы язык был относительно легким (в отличие от потянув зубы) к собственному хосту, то есть File IO, манипуляции с строками, таблицам символов, деревьям и спискам и т. Д. Очевидно, что вы может выжить без них, но начинает писать компилятор намного сложнее. Этот вид сидит в своем собственном лагере для собак.

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

Там интересная тема на этом здесь ...

https://softwareengineering.stackexchange.com/questions/263651/why-are-self-hosting-compilers-considered-a-rite-of-passage-for-new-languages

Для некоторых конкретных причин есть чтение Роба щук скользит почему они переместили компилятор Перейти к Go instead of C. Выводы в слайдах:

  1. Избавление от C было огромным авансом для проекта.
  2. Код чище, тестируемо, прост, удобен в работе.
  3. Новая единая цепочка инструментов уменьшает размер кода, повышает ремонтопригодность. Гибкая цепь инструментов, мобильность по-прежнему важны.

В зависимости от языка ваше перемещение и выгоды могут отличаться.

+0

У любого внешнего инструмента также есть свои проблемы с версиями, а эффекты сообщества очень заметны не только у разработчиков, но еще больше в круге непосредственно снаружи Разработчики. Знающие пользователи, которым внезапно нужны двойные (или тройные) языковые навыки, чтобы изолировать ошибку и создать подробный отчет. (трижды, если библиотека времени выполнения написана на другом языке) –

Смежные вопросы