Глаза боятся, а руки делают

Не знаю, решились бы мы на этот проект, если бы сразу представляли (так, какзнаем сейчас) его истинную трудоемкость. Тогда язык Си++, судя по учебнымпособиям, казался нам… да, непростым для компиляции, с корявым инеоднозначным синтаксисом, сильно усложненной семантикой традиционныхконструкций, но вполне сравнимым, например, с объектной версией Паскаля фирмыBorland. Так что срок, названный шефом, поначалу не вызвал у нас протеста.Однако чтение первой же действительно серьезной и подробной книги?—?переводаавторского определения языка[1], предложенного в качественачальной версии для его стандартизации, повергло нас в ужас и панику.Казалось, это безумие невозможно реализовать вообще! Тогда мы поняли настоящуюцену учебникам типа "Язык XXX за двадцать один день" или "YYY?—?это просто!".Подобные тексты (сами по себе, быть может, и неплохо написанные) оставляют засвоими рамками настолько обширные области языка, избегают касаться стольких еготонкостей и особенностей, что в голове у читателя-программиста формируетсязачастую усеченный и выхолощенный образ инструмента, который он собираетсяиспользовать.

Вообще, у автора вызывает некоторую настороженность, когда о сложных вещахпытаются говорить упрощенно (это касается не только программирования). Задачи,решаемые современными программными системами, очень и очень сложны. Для ихсоздания приходится использовать адекватные инструменты, которые не могут несоответствовать сложности и ответственности задач и потому объективно не могутбыть простыми. Поэтому писать о Си++ в стиле "Откройте файл myprog1.cpp скомпакт-диска, прилагаемого к книге, и нажмите Ctrl-F9. Поздравляем! Вывыполнили вашу первую программу на Си++!"?—?недопустимая профанация предмета.

С тех пор мы считаем, что настоящее пособие по сложному современному языкупрограммирования общего назначения (уровня Си++ или Ada95) должно иметь форму,близкую упоминавшейся выше книге Эллис и Страуструпа,-- комментированныйстандарт. Только такая книга может дать читателю настоящее понимание языка. Да,читать и пытаться понять строгий, сложно построенный, местами даже занудныйтекст будет весьма непросто?—?но кто сказал, что профессия программиста проста?Мы обязательно сделаем такую книгу по Си++, когда его Стандарт, наконец, будетпринят.

Стандарт принят в 1998 году?—?уже почти три года назад,а обещанных комментариев до сих пор нет… Собственно текст Стандарта япрактически полностью перевел, надо бы засесть и за комментарии. Однако одномумне не справиться… Саша Кротов, где ты!?..

(Комментарий 2001 года)

Мы подошли к делу серьезно. Три или четыре месяца мы практически непрограммировали. Мы изучали Эллис и Страуструпа ("Зеленую книгу") вдоль ипоперек и во всех мыслимых направлениях, продумывали общую конфигурациюкомпилятора, выбирали построение основных структур данных и важнейшихалгоритмов, предлагали и обсуждали проектные и технические решения и писалипроект.

Прекрасно помню чувство гордости, которое мы испытали, увидев наглядноесвидетельство наших трудов?—?увесистый том, привезенный Вальтером, красивоотформатированный, распечатанный на лазерном принтере (у нас их тогда и впомине не было) и даже, кажется, переплетенный. Сейчас, когда прошло уже околотрех лет, очень многие наши проектные решения кажутся прямолинейными, наивнымии даже неверными; некоторые пришлось менять уже в процессе реализации, но, темне менее, проект дал необходимую основу для работы.

Этот текст, кажется, произвел достаточное впечатление на бельгийцев; они вполнеубедились в уровне нашей квалификации. Тогда показалось удивительным, нонекоторых простых вещей они просто не знали: например, чтоtypedef-объявление не вводит новый тип, конструкции extern "С" могутбыть вложенными и т.д. Не говоря уже о более специфических аспектах. Когда мыописывали в проекте технику компиляции вызовов, мы употребили термин "thunk"(короткий код для вычисления фактического параметра). Оказывается, они,сделавшие несколько коммерческих компиляторов, не знали, что это такое! Судовольствием и тайным злорадством я выписал из классической книгиГриса[2] и послал им большуюцитату, объясняющую этот термин…


Примечания:



1

Эллис М., Строуструп Б. Справочное руководство по языку программирования C++ с комментариями: Пер. с англ.-- М.: Мир, 1992?—?445 с., илл. ISBN 5-03-002868-4.



2

Грис Д. Проектирование компиляторов для цифровых вычислительных машин:?—?Пер. с англ.-- М.: Мир, 1969.









 


Главная | В избранное | Наш E-MAIL | Прислать материал | Нашёл ошибку | Верх