Czy to prawda, że pierwszy kompilator C został napisany w samym C? W jaki sposób został wykonany i skompilowany? Czy ten kompilator został napisany w asemblerze?Jak napisano pierwszy kompilator C?
Odpowiedz
Pierwszy kompilator C nie został napisany w C, zazwyczaj podczas pisania kompilatora używamy albo języka asemblerowego, albo innego języka programowania, a często po pierwszej kompilacji kompilator jest przepisywany w swoim ojczystym języku.
Istnieje wiele języków programowania, które zostały napisane w C, a następnie przepisany w języku ojczystym: Java, na przykład, Ada ...
Właściwie nie wiem, kiedy ostatnio kompilator został napisany w zespole. Wierzę, że do połowy lat sześćdziesiątych szybko przestał istnieć styl. Podczas gdy co najmniej kilka kompilatorów z 1950 roku zostało napisanych podczas montażu (pierwszy słynny kompilator Hoppera dla języka A-0 w 1952 roku i IBM (Backus et team) FORTRAN w 1957 roku. Do roku 1960 przynajmniej jeden kompilator, a mianowicie kompilator COBOL dla UNIVAC-II został napisany w FLOW-MATE Src: [Historia budowy kompilatora] (https://en.wikipedia.org/wiki/History_of_compiler_construction) Od tego czasu większość była bootstrapped od istniejących języków wysokiego poziomu – mctylr
Witam, w starszy kompilator c: https://github.com/mortdeus/legacy-cc Możemy zauważyć, że punktem wejścia jest makro spisu złożenia, a podstawa kodu to 17% złożenia. –
Skończyłem legacy-cc jako Cóż, część montażowa jest niezbędna Wierzę, ponieważ musi ona w pewnym momencie wyprowadzać montaż.Myślę, że zestaw w starszych wersjach-cc są głównie szablonami, które kompilator wyprowadzi.Ale chciałbym również wskazać, że montaż niekoniecznie należy unikać, jak zaraza, Chris Sawyer jest sai d opracować Roller Coaster Tycoon w montażu! Jeśli opanujesz język, może on również być produktywny. –
Jest całkiem dobrze opisane w Dennis Ritchie's writeup historii języka C.
Podając tylko podsumowanie tego, co tam napisał, skorzystaj z jego artykułu, aby uzyskać bardziej szczegółowe informacje. C z językiem BCPL, Ken Thomson miał dostęp do kompilatora, który działał na głównej ramce General Electrics 635. Niezadowolony z języka, Thomson użył BCPL do napisania kompilatora dla języka B, ewolucyjnego kroku poza BCPL, który usunął niektóre problemy techniczne w BCPL.
Użyli B do tworzenia programów na swoim minikomputerze PDP-7, chociaż większość z nich była niewiele więcej niż programami zabawkowymi, maszyna miała bardzo ograniczone możliwości sprzętowe. Jednym z ważnych kroków podjętych przez Thomsona było przepisanie kompilatora B w samym B. Typowy krok ładowania.
Ten kompilator był następnie stopniowo modyfikowany przez krótkotrwały pośredni krok o nazwie NB (Nowy B), aby zacząć wyglądać jak C. Minikomputer PDP-11 był instrumentalny w tym kroku, dając im wystarczająco dużo miejsca, aby poprawić język i kompilator . uwaga
Ktoś umieścił jedną z wczesnych wersji PDP-11 Dennisa Ritchiego na github dla potomności: https://github.com/mortdeus/legacy-cc [źródło] (http://thechangelog.com/explore-a-piece-of- unix-history-dennis-ritchies-najwcześniejszy-c-kompilatory /) – sehe
Ugh, teraz muszę się dowiedzieć, co zrobiła funkcja waste() ... –
Wow. To wygląda na interesujący hack :) _ (Przez chwilę wydawało mi się, że jest to znak zbierania śmieci w efemerycznym kompilatorze C: <) _ – sehe
Reading Dennisa Ritchiego na primevalC wskazuje, że raczej jak kurczak i jaja, C wyewoluował z języka prekursora wraz z własnym kompilatora poprzez ładowaniem. Okresy specjacji były szybsze niż w przypadku Gallus gallus domesticus.
Można nawet zobaczyć kod źródłowy kompilatora złapany w trakcie zamieszania ewolucyjnego. Notatka łączy dwie jego migawki przywrócone z kopii zapasowych na taśmach. Ten kod ma również been placed on github. Te migawki stanowią pośrednie skamieliny, lata przed K & R składni. Opis Dennisa jednej z taśm pokazuje, że jest to stop-klatka z kodowanym są bootstrapped:
«prestruct-c» jest kopią kompilatora tuż przed zmianą zacząłem go używać sama struktur.
Innymi słowy kompilator została zwiększona do wsparcia elemencie, ale nie jeszcze korzystanie im. Dobry czas na tworzenie kopii zapasowej na taśmie ...
Który kompilator c? – nic
[Bootstrapping] (http://en.wikipedia.org/wiki/Bootstrapping_%28compilers%29) –
Masz na myśli bootstrapowanie pierwszego kompilatora C? Czy ogólnie kompilatory C? –