Rus Eng
О компании
Технологии
Разработчикам ПО
Производителям микроконтроллеров
Партнеры / Клиенты
Перспективные проекты
| | | |
Главная страница    Аналитическая колонка
Аналитическая колонка

Выпуск №2


Автор: Евгений Зуев

О выпуске комментированного Стандарта C++

Идея выпуска комментированного перевода Стандарта C++ возникла много лет назад - практически сразу после его выхода в 1998 году. С тех пор прошло почти девять лет, и за это время появилось несметное множество различных книг, учебников и справочников по Си++. Однако, как это ни покажется парадоксальным, необходимость в таком тексте и потребность в нем со стороны многих категорий специалистов, на наш взгляд, ничуть не уменьшились. Более того, скорое появление новой редакции Стандарта только повышает актуальность такого проекта. Заметим, что за время, прошедшее со дня выхода Стандарта, так и не появилось издания, подобного планируемому. Создатель языка, Б.Страуструп, в одном из интервью высказывал сходную идею, однако отмечал, что никакой реальной работы в этом направлении не проводится.

Недавно в компании Интерстрон было принято принципиальное решение начать работу по выпуске комментированного двуязычного Стандарта С++ собственными силами. Ниже публикуется краткое описание идеи и основных параметров издания. На сайте компании Интерстрон мы планируем давать регулярную информацию о ходе нашей работы над Стандартом, а также публиковать материалы, относящиеся к проекту, с целью получения ваших мнений и комментариев, что позволит повысить качество издания и сделать его полезным. Кроме того, некоторые рабочие материалы будут публиковаться в моем блоге www.zouev.blogspot.com.

Язык программирования C++ [1] является в настоящее время наиболее распространенным и популярным инструментальным средством для профессиональной разработки больших и сложных программных систем. Несмотря на активное продвижение альтернативных языковых средств и платформ (прежде всего, Java и C#) и на полное отсутствие пропаганды C++, этот язык остается уверенным лидером в области средств разработки. Анализ [2] показывает, что этот язык используется при создании как широко распространенных программ, ориентированных на максимально широкий круг пользователей, так и систем весьма специального назначения, зачастую с повышенными требованиями к надежности и производительности.

В России C++ также весьма популярен и используется очень активно и широко. Такое положение дел настоятельно требует адекватной поддержки в плане качественных описаний как собственно языка, так и современных методов программирования, основанных на его возможностях. За последнее время появилось большое количество книг и публикаций (как переводных, так и отечественных авторов), которые трактуют различные аспекты программирования на C++.

Тем не менее, положение дел в этом плане нельзя назвать благополучным. Основной причиной, по мнению автора, является то обстоятельство, что язык C++ представляет собой весьма и весьма сложный для изучения объект. В одной отдельной книге и даже в серии книг крайне трудно охватить все аспекты этого языка, и практически все известные публикации ограничиваются описанием его более или менее представительного подмножества. Положение усугубляется тем, что многие книги посвящены описанию нестандартных версий этого языка, которые зачастую не вполне совместимы между собой.

По моему мнению, лучшим вариантом книги по языку C++ является текст Международного Стандарта C++, который строго и недвусмысленно представляет весь язык. Чтение текста Стандарта - лучший путь изучения языка (это относится не только к C++, но в случае с этим языком это особенно ясно). В то же время, оригинальный текст стандарта на английском языке - не самое легкое чтение, потому необходим адекватный и качественный перевод. В то же время, имеет очень большой смысл предоставить читателю и оригинальный текст. Кстати, в свое время именно в такой форме (как двуязычный текст) был опубликован стандарт языка Алгол-68.

Таким образом, моя основная идея - выпустить перевод Международного Стандарта C++ в виде двуязычного параллельного текста: в левой части разворота - оригинальный текст, в правой - соответствующий перевод.

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

Следующая часть предложения - дополнительный справочный аппарат. Объем и сложность текста стандарта приводят к необходимости введния в перевод некоторых дополнительных компонент. Прежде всего, это глоссарий терминов, по существу - краткий толковый словарь, в котором были бы собраны сжатые объяснения фундаментальных понятий языка. Такой словарь будет написан только на основе текста самого стандарта; это своего рода выжимка из него. Я уверен, что такой словарь будет очень полезен всем категориям читателей.

Далее, совершенно необходим развернутый словарь, который содержал бы объяснение основных идей и методов перевода, а также обоснование конкретных вариантов переводов терминов. Тот, мягко говоря, беспорядок, который существует сейчас в выборе русских эквивалентов для программистских терминов, та небрежность и зачастую вопиющая безграмотность иных переводчиков настоятельно требуют обосновать и, если угодно, защитить правильные эквиваленты английских технических терминов.

Структурно текст стандарта (тем более, параллельного перевода) весьма сложен, и очень хотелось бы преодолеть или уменьшить эту сложность введением специальных средств. Я имею в виду цветную печать. Различные фрагменты текста имело бы смысл выделять не только различными шрифтами, но и различным цветов. Опыт показывает, что это существенно помогает в чтении подобных текстов.

Вот еще несколько весьма существенных моментов, связанных с моим предложением. Стандарт C++ - собственность международного комитета ISO. Его официальный перевод, стало быть, должен быть соответствующим образом легализован с точки зрения существующих юридических правил. Каков в точности механизм этой легализации, мне не известно. Возможно, имеет смысл сделать так, чтобы выпуск предлагаемой книги был не просто частной инициативой одной компании или издательства, а был как-то согласован с Госстандартом России. Я знаю, что в Госстандарте интересуются процессом стандартизации C++ и с интересом воспримут сам факт появления такого перевода. Я предполагаю, что у них есть интерес к выпуску российского стандарта C++ (на основе Стандарта ISO). Поэтому какое-то (хотя бы вполне нейтральное) согласование и/или одобрение Госстандарта получить, мне кажется, будет вполне реально.

В заключение хотел бы заметить, что этот проект, в том виде, как он описан выше, является в своем роде уникальным не только в России, но и в мире. Попросту говоря, изданий, аналогичных предлагаемому, я не знаю. В начале 90-х годов автор языка C++ Б. Страуструп выпустил подобную книгу, трактующую предварительную версию языка C++, которая предлагалась в качестве исходной для начинавшегося процесса стандартизации языка. Эта книга в русском переводе [3] мгновенно стала библиографической редкостью и, по моему мнению, по настоящее время остается одним из лучших описаний C++ (даже несмотря на то, что она представляет сильно устаревшую версию языка). Недавно Б. Страуструп в одном из интервью высказал идею написания подобной книги по итоговой ("стандартной") версии, однако он специально отметил, что ни сроков начала такой работы, ни ее возможную длительность обсуждать не готов.

Несколько технических подробностей.

Полный объем Стандарта - 748 печатных страниц формата A4. Объем описания первой части Стандарта (ядра языка, то есть без учета описания стандартных библиотек) - 310 печатных страниц. Представляется целесообразным ограничиться (по крайней мере, вначале) выпуском комментированного перевода именно ядра языка. Мной к настоящему времени уже выполнен перевод примерно 95 процентов текста, а также подготовлена значительная часть справочного аппарата, о котором шла речь выше. Таким образом, основное время будет посвящено написанию комментариев. К этой работе хотелось бы привлечь ряд авторитетных отечественных специалистов по языку C++, а также использовать наиболее интересные и глубокие работы зарубежных авторов.

Ссылки:
1. ISO/IEC International Standard - C++ ISO/IEC 14882, 1998(E)
2. Руслан Богатырев. Летопись языков: Си++. Мир ПК, #01/2003
3. М.Эллис, Б.Строуструп. Справочное руководство по языку программирования Си++ с комментариями. Москва, "Мир", 1992.



Назад

ЗАО "Интерстрон" 1998-08.06.2015, ООО "Интерстрон" 09.06.2015 по н.в. Все права защищены.
Москва, Дмитровское шоссе, 1/1
e-mail: interstron-info@mail.ru
web: www.interstron.ru
Тел.: +7 (495) 769-55-68