обитателей чата наверняка многие занимаются разработкой компиляторов профессионально. Расскажите, пожалуйста, как вы попали в эту индустрию? И вообще что собой представляет данная индустрия, чем вы занимаетесь повседневно?
Я много лет интересуюсь некоторыми аспектами создания компиляторов на любительском уровне, но совершенно не представляю себе как выглядит профессиональная работа в этой области, и, допустим, как в эту индустрии можно было бы (гипотетически) попасть.
Попасть - пойти на соответствующую вакансию, имея какие-то знания и навыки. Ну или студентом прийти учиться - есть места, где этому учат. А чем заниматься... Конкретно я наблюдаю (и сам занимаюсь) бэкендом - в нашем случае это в большинстве своём оптимизации и сильно связанный с ними кодген. И области рядом: профилировщики, прочие тулы, библиотеки...
> есть места, где этому учат А где, например?
Я как любитель делал мелкие патчи и делал рефакторинг GCC, потом начал искать вакансии и подаваться, в итоге нашёл работу связанную с компиляторами.
А что именно за работа, если не секрет? При найме вам помог опыт контрибьюта в GCC? Что, на ваш взгляд, было ключевым при отборе кандидатов?
Ну изначально я занимался бэкедами Arm и AArch64 и LLVM. По поводу отбора, да, мы смотрим на опыт работы именно в области компиляторов, но это не критично, можно иметь общее представление на уровне университетского/online курса
Хотел попасть, но не особо стремился. Потом знакомый предложил пореферить в команду, которая занимается компиляторами. Ну так и попал.
Я перешёл из Java и кровавого энтерпрайза: в какой-то момент надоело перекладывать JSON'ы, захотелось чего-то более интеллектуального. Начинал через то, с чем работал: Java-машину, а, так как она написана на C++, то пришлось резво вспоминать его, скорее даже учить заново и параллельно при этом заниматься постижением предметной области собственно компиляторов: начиная от лексеров/парсеров и до доминаторов (с понятием был уже хорошо знаком благодаря опыту анализа хипдампов), датафлоу анализа и некоторых оптимизаций. Работу смог найти благодаря опыту контрибьютинга в опенсорс, прежде всего LLVM. Столкнулся наверное с теми же проблемами, что и остальные свитчеры: нужен коммерческий опыт, а его нет, потому что нужен коммерческий опыт. Сейчас занимаюсь бинарной оптимизацией. По индустрии: когда был Интел, там занимались и высокоуровневыми вещами типа SYCL, и довольно низкоуровневыми типа бэкендов к конкретным железкам. Сейчас, подозреваю, остались только бэкенды и соответствующие оптимизаторы. Если посмотреть шире, то есть анализаторы кода, тот же PVS, какие-то проекты, связанные с многопоточностью: видел контору из Германии, они пишут плагины для IDE, предлагающие оптимизации для разрабатываемого кода, показалось интересным. Сейчас ещё появились компиляторы для тензорных микропроцессоров, там интересные задачи в области работы с датафлоу графами. Искал что-то по консалтингу в области компиляторов и оптимизаций, но не нашел такой ниши.
Я в индустрию компиляторостроения не влазил, но рекрутеры Хуавея по вакансиям этой направленности просто в телеге пару раз писали.
А вы разве не выпускник ММФ НГУ? У нас и учат, и карьера компиляторщика вполне себе начинается после этого (Excelsior/Huawei)
В начале 2000-х на Мехмате, к сожалению, предлагали специализироваться в основновном только в области термодинамики. Поэтому я оттуда ушёл, не закончив. А с другими факультетами/ВУЗамм программа Мехмата не особо совместима, поэтому я в конечном итоге остался без образования, и без специализации. Во времена, когда вы там учились, Мехмат кажется стал получше в этом смысле.
> Столкнулся наверное с теми же проблемами, что и остальные свитчеры Я правильно понимаю, что при найме учитывали именно ваш опыт контрибьюта в LLVM?
Я могу отвечать только с некоторой долей достоверности, но сдается мне, что это хороший знак для рекрутеров просто не выкинуть резюме. Дальше от позиции зависит могут задавать вопросы по LLVM, если такой опыт есть, могут дать тестовое задание небольшое даже, пасс написать или интринсик
Что за доминаторы-то? Я только помню тех, которые во вторых Космических Ренджерах были
Которые узлы в графах
Забавно, что если в Гугле набрать в поиске dominator tree, то в картинках он что-то такое и выведет. А вообще вот: https://en.m.wikipedia.org/wiki/Dominator_(graph_theory)
Кстати, они полезны даже если не пишешь компилятор, и считаются очень простым алгоритмом.
Даёт отношение «X требуется только потому, что требуется Y».
Обсуждают сегодня