W TypeScript repository on GitHub i zgodnie z GitHub repozytorium tylko zawarte 100,0% maszynopis (.TS pliki)Jak jest napisane TypeScript 100.0% w TypeScript?
Jak to działa? oraz w jaki sposób TypeScript sam może sam skompilować się do JavaScript?
W TypeScript repository on GitHub i zgodnie z GitHub repozytorium tylko zawarte 100,0% maszynopis (.TS pliki)Jak jest napisane TypeScript 100.0% w TypeScript?
Jak to działa? oraz w jaki sposób TypeScript sam może sam skompilować się do JavaScript?
To się nazywa compiler bootstrapping i jest powszechne z wielu powodów, z których niejednokrotnie język, który piszesz, jest często najlepiej dopasowanym językiem do zrozumienia pojęć, które wprowadzasz w języku, który piszesz ...
Jeśli przyjrzeć się artykułowi, większość głównych języków ma własne kompilatory (C, C++). Oznacza to, że używasz dużej ilości kodu za pomocą nowego kompilatora, co jest dobrym sprawdzianem funkcjonalności. W zwykłym przypadku piszesz kompilator, ponieważ chcesz nowego języka z pewną przewagą nad twoim aktualnym językiem, więc możliwość skorzystania z tych korzyści podczas pisania kompilatora ma sens.
Pierwsze podanie będzie musiało być napisane w istniejącym języku, ale gdy już masz kompilator, możesz użyć go do skompilowania następnej wersji i tak dalej. Oczywiście ogranicza to twój kompilator do używania tylko funkcji z wersji n-1
, ale ponieważ kontrolujesz kompilator, który powinien być drobnym problemem. Cytowanie Wikipedii:
Główne części kompilatora języka C++ zostały napisane w podgrupie C++, które mogą być kompilowane zarówno przez g ++ jak i Microsoft Visual C++.
Ponieważ TypeScript jest nadzbiorem JavaScript, kompilator mógłby (teoretycznie) zostać napisany we współużytkowanej składni i skompilowany pod jednym z nich. Nie wierzę, że tak jest w tym przypadku, ale związek daje dobry język wyjściowy dla początkowego kompilatora.
Ale, zgodnie z artykułem, nadal potrzebuje niektórych języków ojczystych (tutaj JavaScript), aby skompilować jakąś część nadzbioru JavaScript (typeScript). A w Githubie są też pliki js ... – M98
@Kermani, ale ponieważ Maszynka do pisania jest nadzbiorem JavaScript, możesz napisać poprawny program JS w TS, skompilować go, a następnie użyć go do kompilacji programu TS używając więcej funkcji językowych, i tak dalej. Technicznie rzecz biorąc, może to być TS w dół. Większość innych transpilerów nie jest ścisłymi supersetami (myślę o C i C++), więc nie mogą tego wykorzystać tak bardzo. – ssube
Maszynka do pisania sam się hostuje i zachowuje swoją ostatnią znaną dobrą (LKG) wersję, aby skompilować następną wersję. Obecnie (30.08.2016) ta wersja znajduje się w katalogu lib
.
Po pierwszej wersji masz kompilator i możesz go użyć do skompilowania następnego kompilatora i tak dalej, nie? – ssube
Oto jak programista pyta: "Co było pierwsze, kurczak czy jajko?" – series0ne