суббота, 11 августа 2007 г.

Перевод стандарта C++: несколько аргументов

Пришел такой комментарий:

archimed7592 комментирует...
Гхм... А какой смысл этого перевода? Пусть даже с комментариями... Никто никогда не научится программировать просто прочитав Стандарт. Да что там программировать... даже просто языку никто не научится.Сначала изучают синтаксис. Потом начинают что-то делать на С++. Потом, если интерес не пропал, начинают читать Саттера, Александреску, Мейрса(возможно и Страуструпа). Вот они научат программировать на С++. И приоткроют большую часть лазеек и тонкостей Стандарта. Ну и те люди, которые не захотят останавливаться на достигнутом, могут начать читать Стандарт в оригинале.


ps. А почему 14882:1998(E), а не 14882:2003(E)?

pps. Будет ли актуален этот перевод когда выйдет 14883:2009? Очень сомневаюсь...

Что ж, вполне разумные сомнения. Попробую высказать свои соображения.

Никто никогда не научится программировать просто прочитав Стандарт. Да что там программировать... даже просто языку никто не научится.

Разумеется. Я Вам даже больше скажу: никто никогда не научится программировать, прочитав любую книгу по программированию. И самому языку тоже нельзя научиться, прочитав какой бы то ни было текст. Чтобы чему-то научиться, надо реально программировать - другого пути нет. Но это все ведь вполне банально, и никто не собирается делать перевод стандарта, чтобы "научить" кого-то программировать. В том исходном посте ведь было ясно написано, что Стандарт - не учебник (ни по программированию, ни по языку), у него другие цели, его главная задача - представить язык в максимально строгом, недвусмысленном и, главное, полном виде. Этого не делает ни один, даже самый качественный учебник, в том числе книги, упомянутые Вами.

Именно отсюда следует основная задача задумываемой публикации: дать в распоряжение программистов (то есть, тех людей, которые уже умеют программировать!) первичный источник информации по языку. Это принципиально. Тот, кто программировать умеет, но хочет научиться делать это (еще) лучше, возьмет того же Майерса или Александреску. Но куда обращаться тому, кто хочет узнать или вспомнить точное правило вызова деструкторов для разрушения элементов не полностью построенного массива? Кроме стандарта (и именно комментированного, и снабженного адекватными примерами), этого, скорее всего, не написано нигде. Даже если в какой-то хорошей книге это правило и упоминается, то поди еще найди - и такую книгу, и место в ней... А в стандарте это все есть с гарантией. Если хотите, это своего рода энциклопедия по языку, и она может прекрасно соседствовать с учебниками по C++, ничуть их не заменяя, но давая большое количество уникальной информации.

Ну и те люди, которые не захотят останавливаться на достигнутом, могут начать читать Стандарт в оригинале.

Вопрос, что лучше для чтения: оригинал или перевод - совсем не прост. У меня с коллегами много раз возникали дискуссии по этому поводу. Так, уважаемые специалисты по языку Ада убеждали меня, что перевод стандарта (речь шла о стандарте Ады) не просто не нужен, но даже бесполезен и, более того, вреден. Говорили, что качественный перевод займет недопустимо долгое время, он очень дорог (и кто будет платить квалифицированным специалистам за эту тяжелую работу?), в переводе неизбежно появится большое количество ошибок, которые могут сильно пронизить качество и, как следствие, востребованность перевода. Кроме того, неизбежно возникнут проблемы с переводом терминологии, которую сейчас каждый считающий (или мнящий) себя специалистом, переводит непременно по-своему...

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

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

Проблемы с терминологией?- они существуют и сейчас, без всякого перевода стандарта, и каждая новая книга по C++ хоть какой-нибудь перл к коллекции нелепиц, да добавит. Хотел бы думать, что моя (наша) версия перевода терминологии будет гораздо более выверенной - и с профессиональной, и со стилистической, и с исторической точек зрения. Я хотел бы даже добавить специальный раздел, посвященной именно вопросам терминологии и ее адекватного перевода, с необходимыми обоснованиями и анализом отвергнутых вариантов.

Ошибки перевода?- а почему их должно быть больше, чем в любой другой переводной книге по C++? Скорее наоборот: этот перевод я "мусолю" уже несколько лет (работа фактически началась еще до выхода окончательной версии нынешнего Стандарта), проходя по тексту много раз. Передо мной, к счастью, не стояла задача выпустить перевод к определенному сроку. Кроме того, я не один, и буду просить своих коллег, в квалификации которых не сомневаюсь, придирчиво прочитать перевод. К тому же, если перевод будет снабжаться комментариями, то каждый, пишущий такой комментарий, неизбежно прочтет комментируемый текст; это дополнительная гарантия правильности перевода.

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

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

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

ps. А почему 14882:1998(E), а не 14882:2003(E)?
pps. Будет ли актуален этот перевод когда выйдет 14883:2009? Очень сомневаюсь...


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

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

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

дПолностью разделяю ваше мнение о необходимости перевода стандарта с++. Надо быстрее издавать его. Какие трудности с подготовкой к публикации?
С уважением, Иван Дмитренко

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

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

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

Я как раз таки стронник идеи "английский - латынь для программиста".
А именно: людей, способных адекватно(эффективно, с пользой для дела) пользоваться стандартом и неспособных делать это с его оригиналом наверное единицы.
Именно на это я и хотел обратить твоё внимание: на бессмысленность этой работы.

Я переодически встречаю как людей, желающих переводить стандарт, так и людей, которым нужен этот превод... Что ж - теперь буду отсылать их к тебе. Возможно общими силами у вас что-нибудь да получиться.


Cкорее всего, добавления и модификации будут явно выделены в тексте (как это было сделано в новой редакции стандарта Ады 2005 года).
Я бы на это не рассчитывал. Я просматривал почти все основные документы, обнародованные комитетом до середины июня - там система такая: каждый слёт рабочей группы выпускают новый пакет документов в число которых входит очередная версия черновика в котором выделены изменения только по сравнению с предыдущим черновиком + editorial report где сухо изложено какие были внесены изменения.
Я конечно не исключаю, что когда выйдет 14883 FCD, сделают версию с выделением изменений относительно 14882:2003, но особо на это рассчитывать не стоит.


Ну и напоследок: удачи в столь не лёгком и бесполезном деле ;).

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

Я предлагал на RSDN заняться переводом стандарта еще в 2005 году. Издательство Питер в лице Адаменко Анатолия Николаевича связывалось с нашими гурами (например, с Кузнецовым), и те отговорили издательство от публикации. К сожалению, с тех пор ситуация только ухудшилась.
А можно было бы выпустить синхронную русско-английскую книжку как в свое время был переведено сообщение об Алголе- 68.

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

Почитал про латынь... валялсо пад цталом. Это снобизм чистой воды.
Перевод действительно нужен, и стыдно, что его до сих пор нет.
Такая большая страна, столько специалистов и такой косяк.
Зачем он нужен - просто необсуждается. Зачем вообще нужны переводы? Это по-вашему тема достойная обсуждения? Бред!

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

А можно почитать Ваш перевод? Мне он был бы уже сейчас полезен. Откровенно говоря, весьма сложно читать стандарт.

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

Весьма отличная идея и своевременно


-------
http://avtoladagood.ru | http://звезда-алтая.рф