Я был мотивирован вопросом « Построение компилятора как предмет» и подумал, что задам этот вопрос.
Я слышал от нескольких людей, что у них хорошая «команда компиляторов» (не спрашивайте, где я это слышал, я не могу вспомнить), и это заставило меня задуматься, как получить работу в такой команде ?
Я знаю, что есть программы в программах бакалавриата и тому подобное, но это то, что степень магистра будет минимальной (например, степень магистра по крайней мере)?
Я начинаю учиться в магистратуре по компьютерным наукам через два месяца, и в школе, в которой я собираюсь, есть два класса компиляторов, будет ли этого достаточно, чтобы получить работу по разработке компилятора, или потребуется больше времени для этого?
Ответы:
Что ж, разработка компиляторов очень жесткая, а это требует большого терпения, страсти и глубоких знаний. Не путайте терпение, страсть и твердые знания с любой степенью. Мы видели нескольких претендентов со степенью магистра, которые даже не могли распознать
strlen()
в четырех строках кода C.Обязательно посещайте эти занятия и приобретайте практические знания. Возможно, вам даже не понравится разработка компиляторов, но приобретенный опыт поможет вам получить еще одну очень интересную работу по разработке.
источник
Первый шаг - иметь хороший опыт в CS, возможно, чем больше, тем лучше, но, по крайней мере, получить степень бакалавра с отличием. На самом деле это оправдано тем, что компиляторы (как правило, языковые переводчики) и связанные с ними методы (лексинг, синтаксический анализ) являются хорошо изученными основами информатики.
Я считаю, что существенная промышленная (в том числе с открытым исходным кодом) разработка компилятора, конечно, могла бы смягчить недостаток академических полномочий - но в значительной степени зависит от предыстории кандидата. Обратите внимание, что разработка компилятора здесь также будет включать интерпретаторы и соответствующие инструменты для анализа.
Необходима общая компетентность в разработке программного обеспечения. Знание предметной области приложений, нуждающихся в хороших компиляторах (например, научные вычисления, разработка игр) или опыт программирования на ассемблере сверх общего уровня программирования на языке высокого уровня, также является плюсом. Знание уровня эксперта языка, который реализует компилятор, также является плюсом.
Отказ от ответственности: я разработчик компилятора, и я принимал участие в опросе кандидатов.
источник
В настоящее время такие инструменты, как Flex , YACC и несколько подобных, значительно упростили конструкцию компилятора. Если вы хотите подойти к нему как к хобби, так как оно вас увлекает, тогда эти инструменты помогут вам, и вы сможете создать достойный интерфейс компилятора через месяц.
Книга Дракона - одна из самых любимых книг всех времен, кто хочет самостоятельно научиться создавать компиляторы. И по мере продвижения вы тратите время на чтение кодов компилятора с открытым исходным кодом .
источник
Если вы серьезно относитесь к карьере в компиляторах, я считаю, что вам, по крайней мере, нужно формальное образование в области теории языка, особенно теории типов, формальной семантики и теории вычислимости. Эти области было бы трудно изучить вне академической среды. По большей части конструкция компилятора сама по себе является темой, которую умный разработчик может изучить основы самостоятельно. Однако, если вы хотите работать с самыми современными компиляторами, которые используют обширный семантический анализ и инструментарий для обеспечения безопасности и оптимизации, вам, вероятно, понадобится хотя бы магистерская работа в этой области.
источник