2013-03-26 2 views
1

я ковыряться в машинописи компиляторе и нашел это любопытное заявление в языковой спецификации:машинописи Язык реализация

машинописи компилятор реализован в машинописном

даже возможно ли это? Я должен полагать, что tsc (TypeScript Compiler) должен был быть в значительной степени разработан в Javascript, но, возможно, мне что-то не хватает.

+1

Ну, набор компиляторов GCC (для C, C++ и т. Д.) Написан в основном на языках C и C++, поэтому TypeScript не является единственным экземпляром «компилятора для X, написанного на X». Очевидно, что в начале должен был использоваться другой компилятор до тех пор, пока код не был бы до точки, где его можно было бы считать «самообслуживанием», но эта идея на самом деле не такая необычная ... – twalberg

ответ

4

Это правда. You can read the code yourself.

Ключ к загрузке такого языка как то, что вы делаете start в JavaScript, постепенно рефакторинг кода в TypeScript при добавлении языковых функций. Это было очень долгое время, хотя, поскольку компилятор TypeScript был чистым JS. Очевидно, что это вызывает некоторую боль всякий раз, когда ломаются дизайнерские решения (если вы ткнете в тестовых окнах, вы увидите ссылки на такие вещи, как «oldclass» и «es6class» и другие исторические странности).

+1

Быть самостоятельным гордости для большинства дизайнеров или сообществ. См .: http://en.wikipedia.org/wiki/Bootstrapping_%28compilers%29 –

+2

Речь идет не только о гордости, но и о мощном инструменте самооценки – Sebastian

+0

Существует также альтернатива циклическому бутстрапу: * растущий * язык , Но я сомневаюсь, что этот подход будет работать поверх всего, что основано на JavaScript. –

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