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

15

Я был мотивирован вопросом « Построение компилятора как предмет» и подумал, что задам этот вопрос.

Я слышал от нескольких людей, что у них хорошая «команда компиляторов» (не спрашивайте, где я это слышал, я не могу вспомнить), и это заставило меня задуматься, как получить работу в такой команде ?

Я знаю, что есть программы в программах бакалавриата и тому подобное, но это то, что степень магистра будет минимальной (например, степень магистра по крайней мере)?

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

Jetti
источник
2
Участие в проекте компилятора с открытым исходным кодом (например, llvm) будет большим преимуществом.
SK-logic
Ditta @ SK-Logic В настоящее время я пишу компилятор для финала IB CS. Получение опыта написания компиляторов, вероятно, лучший способ .... как и во всем на самом деле.
1
Я хотел бы отметить, что одно из самых больших имен в компиляторах и средах выполнения не имеет степени. Андерс Хейлсберг ... мозг позади Turbo Pascal, Delphi, C #, TypeScript
Мэтью Уайтед

Ответы:

17

Что ж, разработка компиляторов очень жесткая, а это требует большого терпения, страсти и глубоких знаний. Не путайте терпение, страсть и твердые знания с любой степенью. Мы видели нескольких претендентов со степенью магистра, которые даже не могли распознать strlen()в четырех строках кода C.

Обязательно посещайте эти занятия и приобретайте практические знания. Возможно, вам даже не понравится разработка компиляторов, но приобретенный опыт поможет вам получить еще одну очень интересную работу по разработке.

Sharptooth
источник
Спасибо за ответ. Вы бы дали шанс кому-то, кто был самоучкой и не имел академического образования в области CS?
Джетти
3
просто ознакомьтесь с курсом MIT OCW
segfault
3
@Jetti: Я бы дал шанс любому, кто сделал значительный вклад в компилятор с открытым исходным кодом, независимо от их происхождения :)
Matthieu M.
@Jetti: Я определенно хотел бы, чтобы они представили доказательства того, что у них есть реальные знания. Например, если они написали тесты для компилятора, оптимизирующего генератор кода, они, вероятно, стоят больше, чем средний выпускник университета.
Sharp
Это становится еще интереснее, когда компилятор написан на своем языке.
ott--
5

Первый шаг - иметь хороший опыт в CS, возможно, чем больше, тем лучше, но, по крайней мере, получить степень бакалавра с отличием. На самом деле это оправдано тем, что компиляторы (как правило, языковые переводчики) и связанные с ними методы (лексинг, синтаксический анализ) являются хорошо изученными основами информатики.

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

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

Отказ от ответственности: я разработчик компилятора, и я принимал участие в опросе кандидатов.

grrussel
источник
5

В настоящее время такие инструменты, как Flex , YACC и несколько подобных, значительно упростили конструкцию компилятора. Если вы хотите подойти к нему как к хобби, так как оно вас увлекает, тогда эти инструменты помогут вам, и вы сможете создать достойный интерфейс компилятора через месяц.

Книга Дракона - одна из самых любимых книг всех времен, кто хочет самостоятельно научиться создавать компиляторы. И по мере продвижения вы тратите время на чтение кодов компилятора с открытым исходным кодом .


источник
5

Если вы серьезно относитесь к карьере в компиляторах, я считаю, что вам, по крайней мере, нужно формальное образование в области теории языка, особенно теории типов, формальной семантики и теории вычислимости. Эти области было бы трудно изучить вне академической среды. По большей части конструкция компилятора сама по себе является темой, которую умный разработчик может изучить основы самостоятельно. Однако, если вы хотите работать с самыми современными компиляторами, которые используют обширный семантический анализ и инструментарий для обеспечения безопасности и оптимизации, вам, вероятно, понадобится хотя бы магистерская работа в этой области.

ThomasMcLeod
источник
1
Это больше похоже на роль НИОКР, чем на роль инженера-конструктора. Я был инженером по продуктам в armcc и LLVM (два компилятора C / C ++ производственного качества) и никогда не нуждался ни в одной из этих тем, и я даже не видел ссылки на них в течение двух лет, когда я работал в этой области.
dune.rocks