У этих опасений есть еще один аспект. Опыт общения с западными специалистами по ПО, как достаточно известными и уважаемыми, так и рядовыми программистами, убедил в одной простой вещи: практически никому не интересны те проблемы и трудности, с которыми ты сталкиваешься в процессе реализации того или иного проекта; мало кого интересуют пути и способы их преодоления. Важен и интересен прежде всего результат! Об этом образно сказал нам один коллега, эмигрировавший в Швейцарию лет пятнадцать назад.
—?Вот
Светило ласковое солнце. Сквозь большие окна факультета информатики был виден просторный студенческий компьютерный класс, уставленный огромными цветными мониторами Sparc’ов. В сырой и холодной Москве слетавший в космос «Буран» сиротливо пристроился в парке Горького среди аттракционов. Возразить было нечего.
С тех пор в наших разговорах метафора 'летает?—?не летает' приобрела в применении к нашему проекту почти ритуальный характер. Она не потеряла свою актуальность даже и сейчас, когда вроде бы по результатам тестирования на соответствие стандарту Си++ наш компилятор стабильно обгоняет все последние версии Watcom и транслирует сам себя почти так же быстро, как это делает Visual C++.
Компилятор 'не летает'. То есть не распространяется, не используется, не применяется в конкретных разработках. Почему?—?отдельная история.
Что нам стоит дом построить?
Однажды (около четырех лет назад) в НИИ при Московском университете, где мы тогда работали, появился высокий представительный мужчина с вальяжными манерами, окладистой бородой, большой лысиной и выразительными глазами навыкате.
Ничего удивительного в этом не было. Иностранцы посещали нашу 'контору' через день, а то и чаще; каждая лаборатория либо выполняла какие-нибудь работы по западным заказам, либо изо всех сил старалась их получить. Это было тяжелое время: реальная зарплата истончалась с каждым месяцем, работы и каких-либо перспектив совершенно не было, немногочисленные предложения от государственных организаций носили отчетливый оттенок идиотизма и сиюминутности и подкреплялись безумно мизерным финансированием. Большие ЭВМ, когда-то работавшие круглосуточно и обслуживавшие весь университет, стояли; некоторым уже был подписан смертный приговор?—?золотосодержащие детали оказались более привлекательными, чем машинное время… НИИ медленно умирал и потихоньку пустел.
Каждому приходилось самому искать дополнительный приработок. Правда, возможности были. Преподавали в многочисленных тогда учебных центрах совместных предприятий, писали для них учебные пособия, а то и книги, подрабатывали в коммерческих фирмах. Иностранные представители, которым наш директор с гордостью показывал 'компьютерный класс' с десятком тайваньских XT, вежливо выслушивали его объяснения, сдержанно кивали и фотографировали со вспышкой, словно доисторическое чудовище, карточный перфоратор Juki, стыдливо задвинутый в дальний угол. Их предложения о совместных проектах (по крайней мере, доходившие до нашего отдела) либо носили несколько авантюрный и несолидный характер, либо были откровенно неинтересны. Несмотря на трудности и безвременье, мы все-таки ощущали себя системными программистами, и как-то не очень хотелось заниматься рисованием окон и конструированием экранных форм или переводом математических библиотек с одного языка программирования на другой. К тому же деньги предлагались оскорбительно скромные.
Однако то, что говорил высокий солидный бородач (назовем его Вальтер Деккер), звучало как откровение. Предлагалось разработать (не адаптировать, не доделать, не участвовать в разработке, а самим сделать from scratch?—?с нуля!) компилятор (компилятор!) с языка Си++ (!) для одной европейской (для определенности пусть для бельгийской) софтверной компании! Причем не какой-нибудь препроцессор в Си, как известный cfront, а честный прямой компилятор переднего плана, генерирующий низкоуровневый промежуточный код, используемый фирмой в системе программирования, в составе которой компиляторы Си, Модула-2 и Фортран.
Следует объяснить, что автор со студенческих лет питает к проблематике компиляции языков программирования особую страсть и имел к тому времени некоторый опыт как в проектировании языков (в частности, языков дискретного моделирования), так и в реализации различных языковых систем, включая (страшно сказать) системы построения компиляторов. Этот опыт целиком относился к прежним временам, а проекты, за немногими исключениями, носили полуинициативный характер, будучи поддержанными только непосредственным начальством. Проекты не мешали текущей работе в 'ящике' (правильнее сказать, текущая работа не слишком препятствовала этим проектам). Поэтому предложения бельгийца казались невероятной удачей и в то же время справедливой наградой за долгие годы верности избранному направлению.
Фирма хотя и не обладала именем, звучащим в мировом масштабе, но казалась вполне респектабельной: она существовала уже более 25 лет, что для софтверной фирмы, согласитесь, немало, участвовала в нескольких общеевропейских проектах; ее продукты (в том числе, собственная коммерческая реализация UNIX) имели не одну тысячу пользователей. Так что желание дополнить свою систему программирования новым мощным языком выглядело вполне логичным.
Любителям разгадывать псевдонимы и умолчания сказанного вполне достаточно, чтобы узнать страну, компанию, да и ее представителя.
Первый настораживающий момент (хотя то, что нам следовало тогда насторожиться, мы поняли гораздо позже) прозвучал вскоре после начала переговоров. Когда речь зашла о составе команды и предполагаемых сроках, то шеф, профессор Владимир Александрович Сухомлин, сам имеющий высокую квалификацию и немалый опыт подобных работ, не менее нашего опьяненный перспективой настоящего дела, немедленно ответил: три разработчика за один год. Сейчас мы понимаем, что здесь насторожиться следовало бельгийцам, уж конечно, прекрасно знающим, каковы