Сокращенный вариант статьи был опубликован в виде отдельной статьи в
декабрьском номере журнала PC Magazine/Russian Edition за 1997 год. Статья до
недавнего времени находилась в online-архиве журнала, однако была удалена
(очевидно, в связи с истечением срока давности ☺).
Комментарий 2008 года
Недавно поздно вечером к нам в комнату зашел коллега, хороший знакомый, глава
маленькой фирмы, "широко известной в узких кругах", устало опустился на стул и,
очумело покрутив головой, проговорил:
— От заказчиков отбоя нет!..
Он поднял голову, и мы увидели в его усталых глазах удивление, смешанное с
восторгом и воодушевлением.
— Работы полно, только успевай!
Его фирма в принципе ничем не отличается от других московских компьютерных
фирм, ориентирующихся на программно-аппаратные разработки, — несколько
постоянных сотрудников, десяток толковых студентов, три комнаты в умирающем
академическом институте и минимальный, мягко говоря, набор оборудования.
Я вспомнил этот случай, чтобы показать безосновательность сетований на упадок
индустрии, невостребованность специалистов и повсеместную ориентацию на продажу
готовых западных решений. Сегодня можно уверенно говорить, что неглупый
инициативный компьютерщик — от студента до сорокалетнего программиста со стажем — имеет все возможности найти себе работу, соответствующую его квалификации, за
вполне адекватные деньги.
Речь, однако, о другом. Разработка программного обеспечения — настолько широкая
область деятельности, что человек, который действительно хорошо программирует,
скажем, драйверы устройств и зарабатывает этим себе на жизнь, вряд ли сможет в
приемлемый срок научиться профессионально проектировать базы данных. Исключения
крайне редки. (Я не беру в расчет одержимых молодых людей, которые имеют свое
мнение решительно обо всех аспектах разработки и использования ПО и пишут в
своих резюме невообразимо длинный список программных систем самого разного
калибра и назначения, в которых они как бы умеют работать. Речь идет прежде
всего о настоящих профессионалах.) В то же время, и драйверы, и базы данных
определенно относятся к программному обеспечению.
Жизнь сложилась так, что автор любит проектировать и разрабатывать компиляторы,
и у него это, в общем, получается. То, что вы прочтете ниже, надеемся,
подтвердит мои слова. Однако чем серьезнее относишься к тому делу, которое
любишь, тем меньше времени и возможностей остается постичь что-то другое, пусть
даже важное. Боюсь, ни за какие деньги я не возьмусь сейчас, скажем, за графику
или разработку бухгалтерских программ — не только потому, что мне это не
интересно, но прежде всего из-за невозможности достаточно быстро стать
профессионалом в этих сферах.
А теперь скажите, какая софтверная специализация пользуется сейчас на рынке
большим спросом: разработка компиляторов или компьютеризация бухгалтерий? Ответ
очевиден. Более того, возможно, такая же картина наблюдается и на Западе. В
самом деле, даже если там существует несколько сотен аттестованных компиляторов
языка Ада (а это именно так), количество специалистов, их программировавших,
все равно значительно меньше числа тех, кто разрабатывает всевозможные
прикладные программы по заказам фирм и организаций.
На Западе, с его несоизмеримо большим разнообразием потребностей в сфере
программирования, ситуация все-таки иная. Когда происходили описываемые ниже
события (середина 90-х), я, скажем, не знал о существовании web-сайта
http://www.compilerjobs.com/, в котором публикуется и регулярно обновляется
поразительный в своем разнообразии список вакансий, связанных с разработкой
компиляторов…
Комментарий 2002 года
Так что заголовок этой части имеет вовсе не хвастливый, а грустный оттенок.
Разработка компиляторов — редкая профессия, но не в смысле ее дефицитности и,
следовательно, высокой цены на нее. Напротив, она редкая прежде всего потому,
что редко требуется и, соответственно, найти себе применение крайне трудно.
Поэтому, когда все-таки появляется работодатель, предлагающий такую работу,
психологически трудно еще и педантично уточнять условия вроде денег и прочего:
спасибо и на том, что работа, по-настоящему интересная и приносящая радость,
нужна кому-то еще!
Я хочу рассказать о том, как мы делали компилятор Си++. Вообще-то, об этом
стоило бы написать книгу — настолько эта история кажется захватывающей и
поучительной, однако… будет ли это кому-нибудь интересно? Даже если коротко
рассказать о наиболее существенных проблемах, с которыми мы столкнулись, трудно
избавиться от мысли о, скажем, неактуальности нашего опыта в сегодняшней
российской ситуации в программировании. В самом деле, посмотрите хотя бы на
полки отделов книжных магазинов, торгующих компьютерной литературой.
Невероятное (по сравнению с картиной 5-6-летней давности) разнообразие книг!
Практически по любому программному продукту, мало-мальски используемому у нас,
можно гарантированно найти по крайней мере две-три книги. Однако работ,
посвященных современным архитектурам, проблемам разработки программного
обеспечения, принципам построения сложных систем, таких, как компиляторы, СУБД,
операционные системы, — нет. Только описания конкретных инструментов, пакетов и
систем. Ситуация в некотором смысле обратная той, которая складывалась в
доперестроечное время: тогда очень многие серьезные работы известных западных
авторов, пусть с опозданием на пару лет, но выходили у нас. Печатались и очень
неплохие отечественные книги. (И между прочим, находили спрос, и многие
мгновенно становились библиографической редкостью!)