воскресенье, 24 июня 2007 г.

О сайте compilerjobs.com

же довольно давно я периодически захожу на сайт http://www.compilerjobs.com/. Там публикуются объявления о вакансиях по одной-единственной софтовой специализации - разработка компиляторов. На мой взгляд, простое чтение объявлений оттуда - хорошее лекарство от пессимизма по поводу невостребованности компиляторщиков и вообще падения интереса к этой тематике.


Скажем, сейчас на странице Hot Listings (свежие объявления) имеется 36 разделов, половина из которых представляют рекрутинговые агентства. В каждом таком разделе до полутора десятков объяв. Остальное - объявления от конкретных компаний, от никому не известных до таких монстров, как Microsoft, Intel, IBM и т.д. Компании зачастую тоже предлагают не одно, а несколько вакантных мест. А в "основном" разделе Compiler Job Listings - наверное раза в два больше; некоторые заявы не могут найти своего кандидата аж с 2003 года, а то и раньше...

Даже поверхностный анализ вакансий позволяет сделать несколько - пусть не таких уж неожиданных, но все равно полезных выводов, например:

- До половины вакансий связаны с адаптацией, как они это называют, GNU Toolchain. Это определенно самая популярная тема. Иными словами, требуется, скажем, написать генератор кода с GNUшного промежуточного представления для некоего нового (спец)процессора (возможно с оптимизацией, учитывающей особенности этого процессора), или просто добавить какие-то оптимизационные возможности в существующий генератор. Таких потребностей - генератор+оптимизатор на основе GCC - подавляющее большинство среди вакансий, что наглядно показывает реальную популярность и востребованность GCC.

Даже если в вакансии впрямую не говорится об адаптации, все равно в списке требований к кандидату упоминается "осведомленность в GCC internals" или что-то в этом роде.

- Далее: очень много объяв, приглашающих делать что-то, связанное с компиляцией для новых процессоров. Этот аспект частично пересекается с предыдущим, но его, по-моему, стоило бы выделить в отдельную позицию. То есть несмотря на (кажущееся) засилье интеловских чипов, очень много проектов требуют собственных архитектур, которые, как видно, плодятся повсеместно. Наиболее часто встречаются термины "потоковые процессоры", DSP-процессоры и даже game-процессоры.

- Еще одно наблюдение. Несмотря на явный крен в сторону back-end'ов, не редкость и объявления, касающиеся разработки парсеров (требуется знание yacc или чего-то в этом роде) или вообще создания компиляторов from scratch. Таких объяв немного, но они регулярно появляются и, кстати, часто довольно долго висят на сайте, не находя, видимо, интерсантов.

- Совсем нет объявлений, в которых требовались бы специалисты по анализу исходных текстов (статический/метрический анализ, поддержка UML, reverse engineering и подобное). Всем нужны именно компиляторы "в узком смысле": генерирующие код, подлежащий исполнению. Все. Практически сто процентов вакансий носят предельно конкретный, утилитарный характер: нужно сделать нечто, что работало бы. Research & development, кажется, отсутствует как явление.

И, наконец, крайне интересен географический аспект. Но сначала - нехитрое рассуждение, спорить с которым вряд ли кто станет. Компиляторы определенно принадлежат к той категории софта, который принято называть инновационным. В самом деле, в каких случаях возникает потребность в создании нового или адаптации сущнствующего компилятора? Либо есть некий новый процессор, на который нужно перенести существующие программы, либо кто-то придумал новый язык (или, что почти то же самое, новую технологию разработки), и этот язык нужно сделать инструментом, реализующим эту технологию, либо требуется существенно улучшить характеристики объектного кода (разработать/реализовать новые оптимизационные схемы), чтобы, скажем, перевести некий язык из категории лабораторных экспериментов в разряд инструметов промышленного назначения...

Так вот, откуда же в основном идут заявы? По моим впечатлениям (если хотите, сходите на этот сайт и проверьте), примерно 90-92 процента вакансий - из Америки, процентов 5-7 - из Англии, остальное - из Индии. Единицами периодически попадаются объявы из Китая(!). Это практически все.
Континентальной Европе компиляторщики не нужны.
Вакансии появляются редко-редко (вот именно что случайно). За шесть последних лет помню разве что объяву из Голландии, от Associated Compiler Experts. Она до сих пор там висит, с 2004 года. Я немного знаю эту компанию, и у меня есть вполне конкретные предположения насчет обстоятельств - и исторических, и текущих - их интереса к компиляторам... В общем, опуская детали, можно быть уверенным, что присутствие ACE в этом списке является тем исключением, которое подтверждает общую тенденцию.

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

7 комментариев:

Анонимный комментирует...

Здравствуйте!

На мой взгляд тема "Европе компиляторщики не нужны" не раскрыта. Почему вдруг на американском сайте станут публиковать объявы немцы или итальянцы? Неубедительно словом. Может нужны, а может не нужны, из пропорции на compilerjobs.com это никак не следует. ИМХО под априори сделанный вывод подгоняется фактура ;)

Анонимный комментирует...

Сайт, кстати, потрясающий: я много видел подобных сайтов, но настолько любительский встречаю впервые. Профессиональный дизайнер к нему и близко не подходил. Что, парадоксальным образом, скорее хорошо, чем плохо. Это значит, видимо, что сайт существует для людей "в теме", а не для "вапще". Было время, когда такие ("чисто для своих") сайты существовали и для прикладных программеров, и толку от них было на порядок больше, чем от всех этих цветастых монстров и дайсов.

Что же до твоего вывода про Европу, то он вполне правилен и отнюдь не ограничивается компиляторами. Европейская экономика вообще не инновационна. Здешний народ скорее reactive, нежели proactive. Если возникает некое новшество, его предпочитают забалтывать. Примеров есть, в т.ч. относящихся ко мне лично. Скажем, ситуация, когда проектик на 4 человеко-месяца обсуждается 2 года - норма. Это такой специальный ритм, к которому надо привыкнуть. :)

В конце концов, проектик этот состоялся. Т.е. вроде как, всё хорошо. Но соотношение "гимор/результат" - мягко говоря, удручает.

Руслан П.

valexey комментирует...

Кстати, а где бы почитать про промежуточное представление GCC? Ну и/или какой-нибудь howto на тему как сделать фронтенд к gcc для "своего" языка.

texts.writer комментирует...

Валексей
Что касается gcc, то вам, возможно будет интересно взглянуть на следующие ссылки

http://gcc.gnu.org/ml/gcc/2003-07/msg00437.html
http://gcc.gnu.org/ml/gcc/2003-07/msg00437.html

Цитаты:
nterfacing to gcc internals is strongly discouraged unless this is going to be part of gcc itself. We can't allow outside projects to use gcc internals. We can't guarantee stability of interfaces, and we also need to prevent people from trying to violate the GPL

This is an FSF policy. In order to protect the value of GCC, and in
order to prevent people from using devious methods to circumvent the
GPL, we are not allowed to let outside projects use gcc internals

Прочтя такое я засомневался, что частые изменения в glibc не преднамеренны. Ведь они препятствуют распространению софта в бинарниках. Я не видел вендора который распространял свои бинарные программы для линукс, следовательно для гну статически скомпиленными. А старые версии софта на новых либц не работают. С открытыми программами проблема легко решаема. Есть возможность пропатчить и скомпилить, заставить работать. То есть остутствие обратной совместимости прямой удар по коммерческому софту.

ank комментирует...

Кстати, не так давно на этом сайте были открытые позиции в шведской IAR Systems.

Сейчас уже нет.

ank комментирует...

valexey,

О внутреннем представлении (старом) можно было почитать в Using and Porting GCC.

С тех пор оно существенно изменилось, а про документирование изменений забыли.

Кое-что можно найти
http://gcc.gnu.org/onlinedocs/

О новом Tree-SSA можно что-то узнать из
http://people.redhat.com/dnovillo/pub/tree-ssa/doc/html/classes.html

Сергей Королев комментирует...

Добрый день, Евгений Александрович!
Вот нашел ссылку: http://www.cwjobs.co.uk/JobSearch/Results.aspx?Keywords=compiler. Подробно не смотрел, но для разработчиков компиляторов там кое-что есть.