Редкая профессия
Покупка
Тематика:
Программирование на C и C++
Издательство:
ДМК Пресс
Автор:
Зуев Евгений Александрович
Год издания: 2023
Кол-во страниц: 233
Дополнительно
Вид издания:
Научно-популярная литература
Уровень образования:
Дополнительное образование
ISBN: 978-5-89818-502-2
Артикул: 816884.01.99
Книга рассказывает о нескольких проектах, связанных с разработкой компиляторов, в частности, об истории разработки первого отечественного ISO-совместимого компилятора С++.
Подробное рассмотрение проблем, связанных с проектированием и реализацией сложных программных систем совмещается с живым и увлекательным повествованием об эволюции и выживании проектов в непростых условиях, о важности правильного выбора стратегических направлений разработки и о человеческих взаимоотношениях в командах разработчиков.
- Полная коллекция по информатике и вычислительной технике
- ДМК Пресс. Информационные системы и технологии
- ДМК Пресс. ИТ-технологии для обучающихся
- Интермедиатор. Информационные системы и технологии (сводная)
- Интермедиатор. ИТ-технологии для обучающихся (сводная)
- Программирование
- Программирование на C и C++
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Редкая профессия Москва, 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 лет . Даже если я буду продолжать работать по найму, у меня ещё десять лет работы, это же прорва времени! Если отпустить на каждый жизненный или профессиональный «проект» по полгода (минимальный период, необходимый для любого маломальски существенного дела – это тоже вывод из моего опыта), то ещё очень-очень много можно успеть сделать. И, с другой стороны, ведь ужасно жалко было бы провести это время в вялом ничегонеделании (или просто в рутинной работе), не сделав ничего заметного… Так что если по-прежнему хочется программировать – надо программировать, копаться в битах и байтах, осваивать новые языки, паттерны и технологии, не смущаясь тем, что выглядишь «белой вороной» среди молодых ребят. А «стратегии», книги, лекции и прочие более «солидные» виды деятельности (к которым тоже ведь есть склонность!) успеются, тем более что до сих пор получалось совмещать их с любимым делом. Так что – вперед!