185 похожих чатов

Коллеги, позвольте я задам вопрос-оффтопик (надеюсь модераторы будут не против). Среди

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

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

19 ответов

56 просмотров

Попасть - пойти на соответствующую вакансию, имея какие-то знания и навыки. Ну или студентом прийти учиться - есть места, где этому учат. А чем заниматься... Конкретно я наблюдаю (и сам занимаюсь) бэкендом - в нашем случае это в большинстве своём оптимизации и сильно связанный с ними кодген. И области рядом: профилировщики, прочие тулы, библиотеки...

Ilya-Lakhin Автор вопроса
Viktor Shamparov
Попасть - пойти на соответствующую вакансию, имея ...

> есть места, где этому учат А где, например?

Я как любитель делал мелкие патчи и делал рефакторинг GCC, потом начал искать вакансии и подаваться, в итоге нашёл работу связанную с компиляторами.

Ilya-Lakhin Автор вопроса
Mikhail Maltsev
Я как любитель делал мелкие патчи и делал рефактор...

А что именно за работа, если не секрет? При найме вам помог опыт контрибьюта в GCC? Что, на ваш взгляд, было ключевым при отборе кандидатов?

Ilya Lakhin
А что именно за работа, если не секрет? При найме ...

Ну изначально я занимался бэкедами Arm и AArch64 и LLVM. По поводу отбора, да, мы смотрим на опыт работы именно в области компиляторов, но это не критично, можно иметь общее представление на уровне университетского/online курса

Хотел попасть, но не особо стремился. Потом знакомый предложил пореферить в команду, которая занимается компиляторами. Ну так и попал.

Я перешёл из Java и кровавого энтерпрайза: в какой-то момент надоело перекладывать JSON'ы, захотелось чего-то более интеллектуального. Начинал через то, с чем работал: Java-машину, а, так как она написана на C++, то пришлось резво вспоминать его, скорее даже учить заново и параллельно при этом заниматься постижением предметной области собственно компиляторов: начиная от лексеров/парсеров и до доминаторов (с понятием был уже хорошо знаком благодаря опыту анализа хипдампов), датафлоу анализа и некоторых оптимизаций. Работу смог найти благодаря опыту контрибьютинга в опенсорс, прежде всего LLVM. Столкнулся наверное с теми же проблемами, что и остальные свитчеры: нужен коммерческий опыт, а его нет, потому что нужен коммерческий опыт. Сейчас занимаюсь бинарной оптимизацией. По индустрии: когда был Интел, там занимались и высокоуровневыми вещами типа SYCL, и довольно низкоуровневыми типа бэкендов к конкретным железкам. Сейчас, подозреваю, остались только бэкенды и соответствующие оптимизаторы. Если посмотреть шире, то есть анализаторы кода, тот же PVS, какие-то проекты, связанные с многопоточностью: видел контору из Германии, они пишут плагины для IDE, предлагающие оптимизации для разрабатываемого кода, показалось интересным. Сейчас ещё появились компиляторы для тензорных микропроцессоров, там интересные задачи в области работы с датафлоу графами. Искал что-то по консалтингу в области компиляторов и оптимизаций, но не нашел такой ниши.

Я в индустрию компиляторостроения не влазил, но рекрутеры Хуавея по вакансиям этой направленности просто в телеге пару раз писали.

Ilya Lakhin
> есть места, где этому учат А где, например?

А вы разве не выпускник ММФ НГУ? У нас и учат, и карьера компиляторщика вполне себе начинается после этого (Excelsior/Huawei)

Ilya-Lakhin Автор вопроса
Ivan Ugliansky
А вы разве не выпускник ММФ НГУ? У нас и учат, и ...

В начале 2000-х на Мехмате, к сожалению, предлагали специализироваться в основновном только в области термодинамики. Поэтому я оттуда ушёл, не закончив. А с другими факультетами/ВУЗамм программа Мехмата не особо совместима, поэтому я в конечном итоге остался без образования, и без специализации. Во времена, когда вы там учились, Мехмат кажется стал получше в этом смысле.

Ilya-Lakhin Автор вопроса
Pavel Samolysov
Я перешёл из Java и кровавого энтерпрайза: в какой...

> Столкнулся наверное с теми же проблемами, что и остальные свитчеры Я правильно понимаю, что при найме учитывали именно ваш опыт контрибьюта в LLVM?

Ilya Lakhin
> Столкнулся наверное с теми же проблемами, что и ...

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

Pavel Samolysov
Я перешёл из Java и кровавого энтерпрайза: в какой...

Что за доминаторы-то? Я только помню тех, которые во вторых Космических Ренджерах были

TOV_MULTIMASSO
Что за доминаторы-то? Я только помню тех, которые ...

Забавно, что если в Гугле набрать в поиске dominator tree, то в картинках он что-то такое и выведет. А вообще вот: https://en.m.wikipedia.org/wiki/Dominator_(graph_theory)

TOV_MULTIMASSO
Что за доминаторы-то? Я только помню тех, которые ...

Кстати, они полезны даже если не пишешь компилятор, и считаются очень простым алгоритмом.

TOV_MULTIMASSO
для чего?

Даёт отношение «X требуется только потому, что требуется Y».

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта