Jestem studentem trzeciego roku studiów inżynierskich. Od tego roku moja uczelnia wprowadziła nowy kurs o nazwie „Kompilatory kompilatorów”, który uczy podstaw teorii tworzenia kompilatora.
Jaka byłaby rzeczywista zaleta dla inżyniera oprogramowania w nauce budowy kompilatora?
Odpowiedzi:
Nauka budowy kompilatora ma praktyczną stronę. Kilkakrotnie potrzebowałem zbudować parsery, aby zaimplementować język poleceń specyficzny dla aplikacji. Pozwoliło mi to stworzyć elastyczne, skryptowalne interfejsy do aplikacji.
Zapewnia również lepszy wgląd w to, dlaczego niektóre języki są zaprojektowane w taki sposób, w jaki są, i dlaczego żaden język nie jest idealny.
To trudny kurs, jeden z trudniejszych w programie nauczania. Popełniłem błąd, biorąc to podczas letniej sesji; nigdy nie bierz kursu kompilatora podczas sesji letniej, twój mózg eksploduje.
źródło
Och, to jest dobre. Weź to, nie pożałujesz.
Uzyskujesz wgląd w magię języków programowania, ich charakterystykę porównawczą, transformację kodu wysokiego poziomu do postaci wykonywalnej. Lepiej zrozumiesz wiele funkcji językowych, będziesz mieć szerszy obraz tego, co jest możliwe i jak to się robi. Po prostu zobaczysz to wszystko innymi oczami.
Mądrze jest spędzać czas na uniwersytecie, aby uczyć się podstawowych rzeczy z CS. Wszystkie konkretne języki programowania, narzędzia i biblioteki są dostępne dla wszystkich, ale podstawa pozostaje.
Również jeśli przeżyjesz kurs (pod warunkiem, że będzie poważny), możesz pogratulować sobie posiadania odpowiedniego mózgu do programowania. Wykonaj praktyczny projekt z tą teorią, wspomnij o tym w swoim CV, a bardzo zainteresujesz dobrych pracodawców.
źródło
Zdecydowanie!
Może to nie być temat, z którego korzystałbyś na co dzień, jak na przykład klasa baz danych, zrozumienie kompilatorów da ci świetne podstawy.
Podobnym przykładem byłaby klasa systemów operacyjnych. Możesz być programistą i nie zastanawiać się nad tym, jak działa system operacyjny na co dzień, ale posiadanie uziemienia pomoże ci na dłuższą metę.
źródło
Tak! Kurs pozwoli ci na głębsze zrozumienie parsowania języka programowania, typów danych i funkcji oraz sposobu tłumaczenia go na kod maszynowy dla określonych procesorów.
To samo w sobie może nie mieć praktycznego zastosowania na co dzień, ale da ci pewność, że faktycznie wiesz, jak to działa . Jest to bardzo pomocne (tutaj z doświadczeniem), gdy musisz przeprowadzić optymalizację niskiego poziomu i znaleźć te naprawdę paskudne błędy, które wszyscy zakłopotali.
źródło
W dzisiejszych czasach jest wiele szumu w językach specyficznych dla domeny . I naprawdę są warte całego szumu, ich prawdziwy potencjał nie został jeszcze zbadany . Umiejętności konstrukcyjne kompilatorów staną się więc nie tylko ważne, ale także niezbędne w przyszłości. Spędzam około 60% czasu programistycznego na wdrażaniu kompilatorów eDSL, nawet jeśli obecny problem w ogóle nie jest bezpośrednio związany z kompilatorami.
źródło
Warto wziąć udział w kursie, aby zrozumieć, w jaki sposób budowane są narzędzia, których będziesz używać podczas całej kariery programistycznej (np. Kompilatory, interpretery, parsery) i jakie są ograniczenia.
Warto to również zrobić w kontekście akademickim, ponieważ ujawnia to interesujące podstawy, a nie wiele zawiłości świata rzeczywistego, który jest chaotyczny i pogrążony w kontaktach ze starszymi językami i architekturami, tj. Dużą złożonością. Bardziej prawdopodobne jest, że będziesz pracować nad wszystkimi aspektami kompilatora podczas tworzenia całego kursu, niż nad pracą w przemyśle.
źródło