Роботи компілятора - скільки потрібно освіти [закрито]


15

Мене мотивувало " Компілятор" як "Тема питання" і думав, що я його запитую.

Я чув від кількох людей, що у них є хороша "команда-компілятор" (не питайте, де я це чула, я не пам'ятаю), тому це змусило мене замислитися, як можна отримати роботу в такій команді ?

Я знаю, що в програмах Undergrad є такі заняття, але це щось таке, що ступінь випускника була б мінімальною (як мінімум, магістрів)?

Я починаю свої магістри з інформатики через два місяці, і в школі, в якій я збираюся, є два класи компілятора, чи цього буде достатньо, щоб влаштуватися на роботу, яка займається розробкою компілятора, чи потрібно більше вкладати в це часу?


2
Участь у проекті з компілятора з відкритим кодом (наприклад, llvm) була б великою перевагою.
SK-логіка

Ditta @ SK-Logic Я зараз пишу компілятор для мого фіналу IB CS. Отримати досвід написання компіляторів, мабуть, найкращий спосіб .... як і будь-що насправді.

1
Я зазначу, що одне з найбільших імен у компіляторах та програмах виконання не має ступеня. Андерс Хейльсберг ... мозок за Турбо Паскалем, Delphi, C #, TypeScript
Matthew Whited

Відповіді:


17

Ну, розробник компілятора є надто жорстким, а це означає, що для цього потрібно багато терпіння, пристрасті та ґрунтовних знань. Не плутайте терпіння, пристрасть і міцні знання з будь-яким ступенем. Ми бачили декількох здобувачів ступеня магістра, які не могли розпізнати навіть strlen()чотири рядки коду С.

Однозначно відвідуйте ці заняття та отримуйте практичні знання. Можливо, вам навіть не сподобається розробка компілятора, але досвід, який ви отримаєте, допоможе вам отримати ще одну дуже цікаву розробку.


дякую за відповідь. Чи дасте ви шанс тому, хто був самоуком і не мав академічного досвіду CS?
Jetti

3
просто замовляйте курс MIT OCW
segfault

3
@Jetti: Я б дав шанс кожному, хто зробив вагомий внесок у компілятор з відкритим кодом, протягом багатьох років, незалежно від їхнього досвіду :)
Matthieu M.

@ Jetti: Однозначно, колись вони принесуть докази, що вони мають реальні знання. Наприклад, якщо вони написали тести для компілятора, що оптимізує генератор коду, вони, ймовірно, коштують більше, ніж середній випускник університету.
гострий зуб

Це стає ще цікавішим, коли компілятор написаний рідною мовою.
ott--

5

Перший крок - мати хороший досвід роботи з CS - потенційно, чим більше, тим краще, але принаймні, отримавши ступінь бакалавра бакалавра. Насправді є певне обґрунтування цього в тому, що компілятори (як правило, перекладачі мови) та пов'язані з ними методи (лексинг, синтаксичний аналіз) добре вивчені основи інформатики.

Я вважаю, що значні промислові (включаючи відкритий код) розробники компіляторів, звичайно, пом'якшать брак академічних даних, але багато в чому залежать від фону кандидата. Зауважте, що розробник компілятора тут також охоплює інтерпретаторів та пов'язані з ними інструменти для розбору.

Потрібна загальна компетенція в галузі розробки програмного забезпечення. Знання домену програм, які потребують хороших компіляторів (наприклад, наукових обчислень, розробки ігор) або досвіду програмування мови складання вище та поза загальним фоном програмування на мові високого рівня - також плюс. Знання мови на рівні експертів також є плюсом.

Відмова: Я розробник компілятора і брав участь в опитуванні кандидатів.


5

Зараз такі інструменти, як Flex , YACC та кілька подібних інструментів, значно спростили конструкцію компілятора. Якщо ви хочете підходити до нього як до хобі, оскільки він зачаровує вас, тоді ці інструменти допоможуть вам, і ви зможете створити гідний компілятор, який пройде через місяць.

Книга Драконів - одна з найулюбленіших книг для всіх, хто хоче самостійно навчити конструкцію компілятора. І коли ви рухаєтесь далі, ви переходите витрачати час на читання кодів компілятора open source .


5

Якщо ви серйозно ставитесь до кар'єри компіляторів, я вважаю, що вам принаймні потрібна формальна освіта з теорії мови, особливо теорії типів, формальної семантики та теорії обчислень. Ці сфери важко буде вивчити поза академічними умовами. Здебільшого побудова компілятора сама по собі є предметом, який розумний розробник може самостійно засвоїти основи. Однак якщо ви хочете попрацювати над передовими компіляторами, які використовують широкий семантичний аналіз та інструментарій для безпеки та оптимізації, вам, напевно, знадобиться хоча б магістерська робота в цій галузі.


1
Це звучить більше як роль НДДКР, ніж "роль інженерії продукту". Я був інженером по розробці armcc і LLVM (два компілятори якості C / C ++) і ніколи не потребував жодної з цих тем, а також не бачив посилань на них за два роки, коли я працював у цій галузі.
dune.rocks
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.