Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Редкая профессия

Покупка
Артикул: 816884.01.99
Доступ онлайн
239 ₽
В корзину
Книга рассказывает о нескольких проектах, связанных с разработкой компиляторов, в частности, об истории разработки первого отечественного ISO-совместимого компилятора С++. Подробное рассмотрение проблем, связанных с проектированием и реализацией сложных программных систем совмещается с живым и увлекательным повествованием об эволюции и выживании проектов в непростых условиях, о важности правильного выбора стратегических направлений разработки и о человеческих взаимоотношениях в командах разработчиков.
Зуев, Е. А. Редкая профессия : научно-популярное издание / Е. А. Зуев. - 2-е изд. - Москва : ДМК Пресс, 2023. - 233 с. - ISBN 978-5-89818-502-2. - Текст : электронный. - URL: https://znanium.com/catalog/product/2107173 (дата обращения: 28.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
Редкая профессия

Москва, 2023

Евгений Зуев

2-е издание, электронное

УДК 004.042
ББК 32.973-018
З-91

З-91
Зуев, Евгений Александрович.
Редкая профессия / Е. А. Зуев. — 2-е изд., эл. — 1 файл pdf : 233 с. — Москва : ДМК Пресс, 2023. — Систем. требования: Adobe Reader XI либо Adobe 
Digital Editions 4.5 ; экран 10". — Текст : электронный.
ISBN 978-5-89818-502-2
Книга рассказывает о нескольких проектах, связанных с разработкой компиляторов, в частности, об истории разработки первого отечественного ISO-совместимого компилятора С++.
Подробное рассмотрение проблем, связанных с проектированием и реализацией 
сложных программных систем совмещается с живым и увлекательным повествованием об эволюции и выживании проектов в непростых условиях, о важности правильного выбора стратегических направлений разработки и о человеческих взаимоотношениях в командах разработчиков.

УДК 004.042 
ББК 32.973-018

Электронное издание на основе печатного издания: Редкая профессия / Е. А. Зуев. — Москва : 
ДМК Пресс, 2014. — 232 с. — ISBN 978-5-94074-812-0. — Текст : непосредственный.

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

В соответствии со ст. 1299 и 1301 ГК РФ при устранении ограничений, установленных техническими средствами 
защиты авторских прав, правообладатель вправе требовать от нарушителя возмещения убытков или выплаты компенсации.

ISBN 978-5-89818-502-2
© Зуев Е., 2014
© Оформление, ДМК Пресс, 2014

Содержание

Введение ...........................................................................................................6

Важное замечание .................................................................................................6
Второе введение .....................................................................................................7

Часть первая. Я – программист ..............................................11

«Кто вы?» ...............................................................................................................11
Чей нос лучше? ....................................................................................................12
Наука и жизнь ......................................................................................................16
Где мой дом? .........................................................................................................19
Работать в корзину .............................................................................................22

Часть вторая. Юношеское увлечение: Лисп.............27

Лисп на «Эльбрусе»: первая предыстория .................................................27
Лисп на «Эльбрусе»: вторая предыстория .................................................31
Лисп для MS-DOS ..............................................................................................35
Лисп для .NET: Scheme ......................................................................................38
Зачем? .....................................................................................................................41

Часть третья. Первая любовь: Ада ......................................43

Введение .................................................................................................................43
ASIS: интерфейс будущего для языка из прошлого ...............................45
ASIS-for-GNAT: начало .....................................................................................48
Двум богам нельзя служить ............................................................................53
.NET и Ада .............................................................................................................55
AdaCore, GNAT и среды программирования ............................................56
И один в поле воин .............................................................................................65
Чем плох «чёрный ящик».................................................................................68
Bring Ada to .NET! ...............................................................................................73
Один в поле не воин ...........................................................................................79
Заключение ...........................................................................................................80

Часть четвертая. Редкая профессия ................................82

Введение .................................................................................................................82
Летает или не летает? ........................................................................................84

 Содержание

Что нам стоит дом построить? .......................................................................85
По рукам! ...............................................................................................................88
Глаза боятся, а руки делают .............................................................................89
Первые радости ....................................................................................................91
Что такое идентификатор? ..............................................................................93
Компилятор как таковой: таблицы и деревья ...........................................95
Лебедь, рак и щука, или Гадкий утенок .......................................................99
Стиль программирования: на вкус и цвет товарища нет ................... 105
Программирование «наизнанку» ............................................................... 108
Настоящая работа ............................................................................................ 111
Быстро сказка сказывается, да не скоро дело делается ...................... 113
Кризис .................................................................................................................. 116
Как отремонтировать подгнивший дом ................................................... 118
Последнее «прости» ........................................................................................ 120
Любимое дитя.................................................................................................... 122
Confidential ......................................................................................................... 124
Заключение. Полетит? ................................................................................... 126
Постскриптум .................................................................................................... 129

Часть пятая. Lessons Learned ................................................ 130

Введение .............................................................................................................. 130
Организация лексического разбора: отдельно или вместе? ............. 131
Синтаксический и семантический анализ: вместе или отдельно? .... 134
Составные имена: лексика или синтаксис? ............................................ 140
Таблицы и деревья: две структуры или одна? ........................................ 142
Ошибки и их диагностика: несколько соображений на будущее .... 146
Заключение ........................................................................................................ 150

Часть шестая. Третий компилятор ................................... 152

Что дальше? ....................................................................................................... 152
Второй компилятор ......................................................................................... 152
Инструменты и парсеры ................................................................................ 156
Третий компилятор ......................................................................................... 159
Вдогонку: что такое СП ................................................................................. 161

Часть седьмая. Русские «плюсы» ...................................... 166

Проект Wednesday ........................................................................................... 166
На следующий день ......................................................................................... 167

Содержание  5

Дьявол и детали ................................................................................................ 172
Поехали! .............................................................................................................. 176
Русские «плюсы» ............................................................................................. 177
Ох уж эта локализация… ............................................................................... 189
Перекрыть Енисей или перекрыть функцию ......................................... 191
Операторы сложения и инструкции присваивания ............................ 195
Начало: планы, персоны и обязанности ................................................... 201
Что говорит компилятор ............................................................................... 205
Как организовать работу: инструменты и технологии ....................... 207
«Команда» ........................................................................................................... 211
Кризис .................................................................................................................. 215
Исход и «вторая жизнь» ................................................................................ 218

Заключение............................................................................................... 221

Редкая профессия? .......................................................................................... 221
Сделать наоборот ............................................................................................. 225
Предисловие, или Как вывернуть компилятор наизнанку ............... 226

Введение

Я очень люблю рассказывать. Не то чтобы уж так много захватывающе интересного есть у меня, чтобы поделиться с другими. Просто 
со временем у любого человека образуется некоторый запас, груз, 
багаж – называйте как хотите – знаний, опыта и просто жизненных 
ситуаций, которые могут быть любопытны не только ему самому.
К сожалению, в реальной жизни крайне редко удаётся (почти никогда не) рассказать что хочется и именно так, как хочется – спокойно, обстоятельно, не боясь, что тебя прервут, и будучи уверенным, что 
будут слушать с интересом, дослушают до конца и правильно поймут. 
Винить в этом некого: во-первых, чтобы удерживать внимание слушателей на протяжении всего рассказа, необходимы врождённые способности, похвастаться которыми могут немногие; во-вторых, просто 
крайне редко обстоятельства складываются так, что становится возможным спокойный рассказ перед заинтересованной и доброжелательной аудиторией.
Так или иначе, я придумал простой способ реализовать свою склонность к «рассказыванию»: все, что я хотел бы рассказать, я просто 
возьму и запишу, а там уж как сложится… Интересным это окажется 
для кого-нибудь – можно и опубликовать; нет – ну и пусть себе лежат 
эти тексты у меня в ноутбуке. Переживать не буду: ведь я уже и так 
сделал, что хотел, – рассказал .

Важное замечание

Обязательно надо сказать вот что. То, что здесь написано, – не мемуары. По-моему, ничего нет скучнее, чем описывать свою жизнь, – 
тем более когда искренне считаешь её вполне ординарной. Да, сейчас, может быть, и любопытно читать воспоминания людей, живших 
в XIX веке, проникать в их психологию, узнавать детали быта, бесследно исчезнувшие к настоящему времени. Возможно, что-то из 
сегодняшнего тоже скоро исчезнет и останется лишь в подобных 
воспоминаниях. Но считать, что обстоятельства собственной жизни 
настолько значимы и достойны того, чтобы о них узнали другие, – 
увольте, у меня никогда не было подобных претензий. Да и, по совести говоря, нет в них, в этих обстоятельствах, ничего хоть скольконибудь интересного…

Введение  7

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

Второе введение

Мне 55 лет.
Вроде бы по всем «обыденным» критериям активный период уже 
позади. Многие скажут: пора переходить от программирования к более «спокойной» работе: рулить командами разработчиков, заниматься «стратегическим планированием», писать технические проекты 
и книги, учительствовать, прозревать будущее и вообще подводить 
итоги: писать мемуары, например .
К счастью или к сожалению, у меня всё складывается как-то совсем 
по-другому. Еще очень давно я заметил, что моя личная эволюция заметно отстаёт от «обычного» хода событий у людей сходного рода 
дея тельности, да и вообще от временны' х вех, интуитивно понимаемых как «нормальные». Отставание иногда незначительное, иногда 
разительное, но оно наблюдается почти во всём и почти всё время.
Я потерял девственность… не скажу когда, но значительно позднее 
большинства своих ровесников. И ещё позднее начал толком понимать, как вообще следует обращаться с противоположным полом.
Я женился в 30 лет, а сына заимел в 33. Не бог весть какая задержка, 
по сравнению с другими, но она всё-таки есть – и хорошо ложится 
в общую картину. А ведь очень многие мои ровесники и ровесницы – 
уже давно дедушки/бабушки…
Я впервые побывал за границей в 40 лет – иные к этому времени 
успели там пожить, второе гражданство получить, а некоторые – даже 
вернуться домой. (Правда, первой моей заграницей оказалась Швейцария. Наверное, именно поэтому я навсегда полюбил эту страну и по 
сей день считаю ее лучшей в мире.)
Я стал более-менее прилично зарабатывать годам к 44-м, несмотря на широкие к тому возможности для людей моей специальности. 
(Знаю программистов, которые даже при советской власти умудрялись получать весьма неплохие доходы, инсталлируя свои системы 
по всему Советскому Союзу.)
Я научился водить только в 45 лет и тогда же купил свою первую 
машину. Некоторые мои одноклассники и однокурсники умели во
 Введение

дить и реально водили – не важно, что машины были родительскими 
(или угнанными ) – лет с восемнадцати…
С последним обстоятельством связано одно очень яркое и важное 
для меня воспоминание. Как-то летом мы с семьёй отдыхали на море 
в Словении и однажды поехали на экскурсию в Любляну. Дорога проходила по очень живописным местам, среди высоких холмов (почти 
гор), поросших густым красивым лесом. На какой-то стоянке автобус остановился, чтобы дать пассажирам отдохнуть от долгой поездки, как это обычно бывает. Прогуливаясь по парковке, я увидел два 
или три «кемпера» – мини-автобуса, предназначенных для семейных 
путешествий. Очень удобная вещь: и средство передвижения, и достаточно комфортный дом (почти в любом кемпинге его можно подключить ко всем коммуникациям). Такие караваны, конечно, не покупают, а берут напрокат на три-четыре недели и колесят в них по 
всей Европе. Получается значительная экономия на гостиницах при 
сохранении свободы от предопределенных туристических маршрутов, характерной для автопутешествеников.
Люди вокруг «караванов» занимались своими обычными делами – отдыхали, копались в вещах, готовились продолжать свой путь. 
Я наблюдал, застыв на месте. Мгновенно, потрясающе отчетливо и 
безысходно мне стало ясно, что такого у меня не случится уже никогда. Было абсолютно невозможно представить, что за оставшийся 
у меня период активной жизни я успею научиться водить (и получить нужный опыт управления машиной!) и попасть в обстоятельства, позволяющие таким образом проводить свое свободное время. 
Слишком много радикальных изменений должно произойти в жизни, 
чтобы такое стало возможным…
И что же? К сегодняшнему дню я объехал пол-Европы, от Италии 
до Норвегии и от Испании до Чехии, накрутил несколько тысяч миль 
по Америке и совершенно спокойно чувствую себя, въезжая в до сих 
пор незнакомый европейский город и отыскивая в нем нужную улицу 
или просто «исторический центр»…
Я поступил в аспирантуру не сразу после окончания МГУ, а лет 
через десять, уже работая в оборонном НИИ. Диссера у меня тогда 
не получилось – вместо обычного текста с жёстко определённой и 
хорошо известной структурой я навалял какие-то фантазии «на свободную тему», которые даже для статьи не годились… В результате, 
когда я перешел на работу в МГУ, мне заново (из-за истечения допустимого «срока давности») пришлось сдавать кандидатский экзамен по специальности. Кандидатскую диссертацию я написал (за 

Введение  9

три летних месяца, по вечерам) и защитил, только когда подступило 
«по самое некуда»: пригласили работать в политехнический институт 
в Цюрихе, и было просто неприлично ехать туда без учёной степени. 
Это произошло тоже в 45 лет.
Из-за такой задержки с диссером со мной однажды случился 
ужасный конфуз. В 1995 году, когда я участвовал в проекте ASIS 
и сотрудничал (в основном удаленно) с политехническим институтом в Лозанне (EPFL), мне сообщили, что в Мадридском университете состоится некий workshop, в котором приветствовались 
бы выступления на темы, связанные с языком Ада. И говорилось, 
что возможно участие за счёт приглашающей стороны. Набравшись 
наглости, я послал туда заявку, и, к моему немалому удивлению, 
она была принята. Так вот, на этом workshop’е все дружно называли меня «доктор Зуев», хотя, видит бог, никакого повода для этого 
я не давал. Когда ко мне обратились таким образом в первый раз, 
я то ли не заметил, то ли не обратил внимания, а потом поправлять 
говорившего просто не хватало духа. Наверное, испанцы и представить не могли, что такой солидный дядя, выступающий вместе со 
Столлманом (они его тоже пригласили), – никакой не доктор, а заурядный программист. Впрочем, мой внешний вид многих сходным 
образом обманывает… 
Кстати, именно на этом workshop’е я впервые в жизни делал сообщение на английском. Это было, напомню, в 41 год, и мой «английский» 
был еще весьма и весьма дурным. Да что там! – и на отечественных 
конференциях я начал выступать очень поздно (и соответствующий 
опыт написания статей приобрел далеко не сразу), долгое время держась в тени своего научного руководителя…
Я впервые встал на горные лыжи, когда мне стукнуло 45 лет. Это, 
конечно, не самое важное в жизни умение (тем более что катаюсь-то 
я до сих пор как типичный «чайник»), но подобная «задержка в развитии» хорошо показывает общую тенденцию, чрезвычайно для меня 
характерную.
Ну и так далее… Повторяющиеся ситуации позднего наступления 
важных событий и изменений в жизни (а их на самом деле было значительно больше, чем я описал) утвердили меня в простой мысли. 
Подобные «задержки» носят вполне объективный характер и, видимо, присущи мне изначально (может быть, таков Замысел). Поэтому 
не стоит (да и бессмысленно) расстраиваться, комплексовать по этому поводу и дёргаться, пытаясь подстегнуть естественный ход событий. Надо просто все время действовать – спокойно, но неотступно, 

 Введение

активно, но без суеты, в различных направлениях, но целенаправленно – и всё будет, всё чаемое наступит, всё случится!
…Только вот все чаще приходит опасение и даже страх: это-то всё 
понятно и правильно, но это работает, только пока впереди остается 
хоть какой-то резерв времени. А его-то всё меньше и меньше – ведь 
странно ожидать, что мне отпущено больше, чем другим! Например, 
у меня до сих пор нет собственной квартиры или дома – и совершенно 
неизвестно, хватит ли времени заиметь какую-нибудь недвижимость. 
Я до сих пор не миллионер – с ещё менее реальными перспективами. 
И даже не доктор наук (в российском понимании)!..
Утешает одно: работаю-то я в Швейцарии, а здесь пенсионный возраст для мужчин – 65 лет . Даже если я буду продолжать работать 
по найму, у меня ещё десять лет работы, это же прорва времени! Если 
отпустить на каждый жизненный или профессиональный «проект» 
по полгода (минимальный период, необходимый для любого маломальски существенного дела – это тоже вывод из моего опыта), то ещё 
очень-очень много можно успеть сделать. И, с другой стороны, ведь 
ужасно жалко было бы провести это время в вялом ничегонеделании 
(или просто в рутинной работе), не сделав ничего заметного… 
Так что если по-прежнему хочется программировать – надо программировать, копаться в битах и байтах, осваивать новые языки, 
паттерны и технологии, не смущаясь тем, что выглядишь «белой вороной» среди молодых ребят. А «стратегии», книги, лекции и прочие более «солидные» виды деятельности (к которым тоже ведь есть 
склонность!) успеются, тем более что до сих пор получалось совмещать их с любимым делом.
Так что – вперед!

Доступ онлайн
239 ₽
В корзину