четверг, 16 июля 2009 г.

Перевод Стандарта: на распутье...

Тут вот какое дело.

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

Комментарии! Проблема в том, что их... не то чтобы мало, но недостаточно для того, чтобы дать всей работе в целом некое новое качество, сделать ее в каком-то смысле уникальной - ну и, конечно, полезной для программистов и вообще всех, так или иначе причастных к разработке программ на Си++.

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

Так что сейчас передо мной стоит дилемма: остановить содержательную работу над комментариями и выпускать перевод в том виде, как он есть в данный момент, или... не торопиться и продолжать неспешную работу в расчете на то, что до октября (предполагаемый срок формального опубликования Стандарта Си++) достаточный объем комментариев наберется (но тогда книга выйдет гораздо позже изначально задуманного и, не дай Бог, кто-нибудь опередит :-)).

Какой вариант правильный - честно, не знаю. (И немного рассчитываю на "помощь зала" :-)).

Есть, правда, еще один вариант, связанный с этой самой "помощью зала"... Что если призвать на помощь добровольцев? Идея может быть такой: те, кто считает себя более-менее сведущим в языке и у кого есть содержательные мысли относительно того или иного языкового свойства, могут поступить так:

- Скачать текст предварительного Стандарта.
- Найти в нем раздел/абзац, относящийся к интересующей теме.
- Написать к нему комментарий!
- Прислать его мне. :-)

Может, попробовать?
Если кому-то это предложение покажется интересным, то вот некоторые детали:

- Текст предварительного стандарта находится по адресу
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2800.pdf
- Комментарии пишутся по-русски
- Комментарий должен явно относиться к конкретному абзацу или разделу текста
- Комментарий должен быть коротким (два-три-четыре абзаца текста), нейтральным по стилистике и нести полезную информацию; при этом допускаются как конкретные соображения ("данное правило введено для того-то и того-то"), так и рассуждения общего характера ("в ранних версиях языка это было по-другому" - и почему изменено).
- В комментариях могут быть короткие примеры программ, выдержанные в стилистике других примеров, имеющихся в Стандарте.
- Комментарии могут содержать ссылки на известные публикации, типа книг Страуструпа, Саттера, Александреску, Мейера и т.д., в которых комментируемое свойство объяснено подробнее и понятнее, чем в Стандарте. Допускаются прямые цитаты из подобных источников (разумеется, с указанием этих источников).
- Присылать свои тексты можно либо в виде комментариев к этому посту (что, между прочим, может способствовать их обсуждению и повышению качества), либо непосредственно на мой электронный адрес из профиля.

Со своей стороны, я гарантирую внимательное и доброжелательное рассмотрение всех комментариев без исключения и честную попытку взять из них максимум полезного для целей перевода. В то же время я оставляю за собой право редактирования комментариев, выбора тех вариантов перевода терминов, которые приняты и используются в данном переводе.

Кроме того, все добровольцы, чей комментарий (хотя бы один) войдет в окончательный текст, будут упомянуты (если они не будут возражать, конечно) в предисловии. Вдобавок, скажем, трем самым активным комментаторам я буду готов подарить экземпляр книги, когда он выйдет из печати.

(Расписался... Начал "заупокой" и в процессе сам увлекся этой идеей. :-))

Ну, и последнее. Комментарии принимаются по всему тексту "языковой части" стандарта (без библиотеки!- до главы 16 включительно). Но есть наиболее интересные для меня места, в которых комментариев пока недостаточно:

- Лямбда-выражения (раздел 5.1.1) - текст короткий, но важный, и ни одного примера!- вот бы кто-нибудь с "функционально-устроенной головой" высказал свое отношение! :-))
- Шаблоны в целом (глава 14) и механизм концептов в особенности (разделы 14.9, 14.10)
- Совместное использования (глава 13)
- Обработка исключительных ситуаций (глава 15)

Вот как-то так. :-)

12 комментариев:

Ilya Kulakov комментирует...

Добавьте, пожалуйста, пример такого комментария к какому-нибудь пункту(или абзацу) стандарта.

Yegor Bryukhov комментирует...

Евгений Александрович, а может выпустить комментарии отдельной книгой?

Анонимный комментирует...

А почему n2800? Есть же более свежий или драфты не считаются?
Александр М.

zouev комментирует...

Для Yegor Bryukhov:

Комментарии отдельной книгой? Можно. Но это ведь будет другой жанр. Подобные книги есть, и иногда вполне неплохие. Моя (и "Интерстрона") мысль была в том, чтобы выпустить именно Стандарт, а не очередное описание Си++.
Кроме того, подготовка книги просто как сборника комментариев займет немало времени...

zouev комментирует...

Для Александра М.

А почему n2800? Есть же более свежий или драфты не считаются?

Честно говоря, более свежих не смотрел (а они точно есть?- не уверен), да и сильно отличаться они вряд ли будут. А в n2800 на титульном листе написано "Text for CD Ballot". То есть голосовать за или против принятия стандарта будут именно по нему, как я понимаю.

Антон комментирует...

Евгений Александрович, будет ли текст перевода доступен в электронном виде?

Анонимный комментирует...

для zouev:
есть - 2914 от 22 июня (трагический день в истории :( ).
Правда там на титульном листе написано Working Draft!
Особо не сравнивал чем они отличаются, возможно только редакторскими правками.

Александр М.

Александр комментирует...
Этот комментарий был удален автором.
Анонимный комментирует...

Хорошая идея.
К сожалению с комментариями помочь не могу, работы много(хотя идея достаточно диссертабельна).
Мое субъективное мнение выпустить перевод вместе комментариями.
Книгу в любом случае куплю

Nikolay Ivchenkov комментирует...

Непонятно, зачем такая спешка. n2800 - это сырой документ. Взгляните на n2857 и n2914. Всё, что выделено голубым цветом, добавлено; всё, что выделено красным, подлежит удалению (или уже удалено в новых версиях черновика).

Учитывая, что теперь ещё и концепции решили убрать (The C++0x "Remove Concepts" Decision), изменения в следующем драфте, вероятно, будут колоссальные. Если в вашем переводе не будут учтены все изменения (а учесть их, скорее всего, будет непросто), то он попросту будет неактуален (даже если сам по себе перевод окажется составлен технически грамотно).

zouev комментирует...

Для Nikolay Ivchenkov
Ну, особенной-то спешки нет - прежде всего, из-за удаления концептов. Теперь надо дожидаться итогового документа, в котором были бы отражены эти драматические изменения. (Я-то предполагал, что октябрьская версия - последняя, по ней будут голосовать, они и сами так заявляли - ан нет!..)

У меня есть этот документ (N2857), спасибо. Но он мартовский, то есть вышел до удаления концептов.

А система с красными и синими правками у них все время используется, и я отслеживаю эти изменения и отражаю их в переводе. Работа не слишком сложная, но занудная. :-))

Nikolay Ivchenkov комментирует...

тем более, что текст-то полностью готов уже довольно давно...

Тогда данный труд было бы правильнее называть переводом черновика стандарта C++0x N****. N3092 - это уже третий по счёту Final Committee Draft и, полагаю, что не последний. В него уже внесён ряд довольно существенных изменений. На момент написания данного сообщения последняя редакция черновика - N3225 (от 27.11.2010).