Я хочу рассказать о том, как мы делали компилятор Си++. Вообще-то, об этом стоило бы написать книгу — настолько эта история кажется захватывающей и поучительной, однако… будет ли это кому-нибудь интересно? Даже если коротко рассказать о наиболее существенных проблемах, с которыми мы столкнулись, трудно избавиться от мысли о, скажем, неактуальности нашего опыта в сегодняшней российской ситуации в программировании. В самом деле, посмотрите хотя бы на полки отделов книжных магазинов, торгующих компьютерной литературой. Невероятное (по сравнению с картиной 5-6-летней давности) разнообразие книг! Практически по любому программному продукту, мало-мальски используемому у нас, можно гарантированно найти по крайней мере две-три книги. Однако работ, посвященных современным архитектурам, проблемам разработки программного обеспечения, принципам построения сложных систем, таких, как компиляторы, СУБД, операционные системы, — нет. Только описания конкретных инструментов, пакетов и систем. Ситуация в некотором смысле обратная той, которая складывалась в доперестроечное время: тогда очень многие серьезные работы известных западных авторов, пусть с опозданием на пару лет, но выходили у нас. Печатались и очень неплохие отечественные книги. (И между прочим, находили спрос, и многие мгновенно становились библиографической редкостью!)

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

У этих опасений есть еще один аспект. Опыт общения с западными специалистами по ПО, как достаточно известными и уважаемыми, так и рядовыми программистами, убедил в одной простой вещи: практически никому не интересны те проблемы и трудности, с которыми ты сталкиваешься в процессе реализации того или иного проекта; мало кого интересуют пути и способы их преодоления. Важен и интересен прежде всего результат! Об этом образно сказал нам один коллега, эмигрировавший в Швейцарию лет пятнадцать назад.

— Вот ваш "Буран", — сказал он (дело было больше двух лет назад), удобно расположившись в кресле на открытой террасе Политехнического института в Лозанне с видом на Женевское озеро.-- Программа вроде бы завершилась единственным полетом в беспилотном режиме. Наверняка в процессе его разработки конструкторы продемонстрировали высокую квалификацию, нашли какие-то интересные нестандартные решения, придумали и отработали технологию, решили уйму проблем и т.д. и т.д. Но… — заключил он с ехидцей в голосе,-- не летает! Не делает то, для чего был предназначен! А значит, и говорить о нем бессмысленно. Его нет, и это главное.

Светило ласковое солнце. Сквозь большие окна факультета информатики был виден просторный студенческий компьютерный класс, уставленный огромными цветными мониторами Sparc’ов. В сырой и холодной Москве слетавший в космос «Буран» сиротливо пристроился в парке Горького среди аттракционов. Возразить было нечего.

С тех пор в наших разговорах метафора "летает — не летает" приобрела в применении к нашему проекту почти ритуальный характер. Она не потеряла свою актуальность даже и сейчас, когда вроде бы по результатам тестирования на соответствие стандарту Си++ наш компилятор стабильно обгоняет все последние версии Watcom и транслирует сам себя почти так же быстро, как это делает Visual C++.

Компилятор "не летает". То есть не распространяется, не используется, не применяется в конкретных разработках. Почему — отдельная история.