Motywowało mnie pytanie dotyczące kompilatora jako tematu i pomyślałem, że zadam to pytanie.
Słyszałem od kilku osób, że mają dobry „zespół kompilatorów” (nie pytaj, skąd to usłyszałem, nie pamiętam), co skłoniło mnie do zastanowienia się, jak zdobyć pracę w takim zespole ?
Wiem, że są zajęcia w programach licencjackich i tym podobne, ale czy jest to coś, co dyplom ukończenia studiów byłby minimalny (taki jak co najmniej magister)?
Zaczynam studia magisterskie z informatyki za dwa miesiące, a szkoła, w której mam, ma dwie klasy kompilatorów. Czy to wystarczy, aby znaleźć pracę przy opracowywaniu kompilatora, czy też trzeba będzie w to zainwestować więcej czasu?
Odpowiedzi:
Cóż, rozwój kompilatora jest ultra hardcore, co oznacza, że wymaga dużo cierpliwości, pasji i solidnej wiedzy. Nie myl cierpliwości, pasji i solidnej wiedzy z jakimkolwiek stopniem naukowym. Widzieliśmy kilku kandydatów ze stopniem magistra, którzy nie potrafili nawet rozpoznać
strlen()
w czterech liniach kodu C.Zdecydowanie uczęszczaj na te zajęcia i zdobywaj praktyczną wiedzę. Być może nawet nie polubisz programowania kompilatora, ale zdobyte doświadczenie pomoże ci zdobyć inną bardzo interesującą pracę programistyczną.
źródło
Pierwszym krokiem jest dobre przygotowanie CS - potencjalnie im więcej, tym lepiej, ale przynajmniej ukończone studia licencjackie z wyróżnieniem. W rzeczywistości istnieje pewne uzasadnienie tego, że kompilatory (ogólnie tłumacze języków) i związane z nimi techniki (leksykanie, parsowanie) są dobrze zbadanymi podstawami informatyki.
Uważam, że znaczny rozwój kompilatora przemysłowego (w tym open source) oczywiście złagodziłby brak dyplomów akademickich - ale zależy w dużej mierze od pochodzenia kandydata. Zauważ, że rozwój kompilatora obejmowałby również interpretatory i powiązane narzędzia do analizowania.
Potrzebne są ogólne kompetencje w zakresie inżynierii oprogramowania. Dodatkowa jest również znajomość dziedzinowa aplikacji wymagających dobrych kompilatorów (np. Obliczenia naukowe, tworzenie gier) lub doświadczenie w programowaniu w asemblerze, wykraczającym poza ogólne tło programowania w języku wysokiego poziomu. Znajomość języka implementowanego przez kompilator na poziomie eksperckim jest również plusem.
Oświadczenie: Jestem programistą kompilatorów i brałem udział w przeprowadzaniu wywiadów z kandydatami.
źródło
Obecnie narzędzia takie jak Flex , YACC i kilka podobnych narzędzi znacznie upraszczają budowę kompilatora. Jeśli chcesz podejść do tego jak hobby, ponieważ fascynuje cię, te narzędzia pomogą ci i będziesz w stanie zbudować przyzwoity interfejs kompilatora w ciągu miesiąca.
Dragon Book to jedna z ulubionych książek dla wszystkich, którzy chcą nauczyć się budowy kompilatora. W miarę przemieszczania się spędzasz trochę czasu na czytaniu kodów kompilatora opensource .
źródło
Jeśli poważnie myślisz o karierze w kompilatorach, uważam, że potrzebujesz przynajmniej formalnego wykształcenia w zakresie teorii języków, zwłaszcza teorii typów, semantyki formalnej i teorii obliczeń. Te obszary byłyby trudne do nauczenia się poza środowiskiem akademickim. W większości przypadków konstrukcja kompilatora jako taka jest tematem, który inteligentny deweloper może samodzielnie nauczyć się podstaw. Jednakże, jeśli chcesz pracować nad najnowszymi kompilatorami, które używają obszernej analizy semantycznej i oprzyrządowania dla bezpieczeństwa i optymalizacji, prawdopodobnie potrzebowałbyś przynajmniej pracy magisterskiej w tej dziedzinie.
źródło