Русскоязычная спецификация языка Java

в 16:17, , рубрики: java

Столкнулся я с необходимостью перевода материала, касающегося языка Java. Причем, перевод должен быть сделан не для себя, а так сказать, для общего пользования. Поэтому, он должен быть максимально приближен к оригиналу и выполнен в соответствии с требованиями спецификации языка. Как оказалось, эти два требования не всегда означают одно и то же. Ну, во-первых, сам оригинал позволяет себе довольно вольное обращение с терминами, «но это так мелочь», а во вторых, в который раз пришлось столкнуться с разночтениями в русской трактовке Java-язычных терминов. А это, на мой взгляд, уже довольно большая и давно существующая проблема.

Начнем с того, что в языке Java существуют такие термины как operator, operation, operand и statement. В силу устоявшейся традиции, в русскоязычных переводах термин operator чаще всего переводится как «операция». Например, в первом томе Хорстмана читаем: «Операция / означает целочисленное деление». И это не единичный пример, а общепринятая практика. Хорошо, пусть в русскоязычных переводах объединены понятия operator и operation, хотя это и противоречит требованиям спецификации и словаря: «Operators are special symbols that perform specific operations on one, two, or three operands, and then return a result». Однако пойдем дальше.

Следующим устоявшимся штампом является применения термина «оператор» в качестве перевода понятия statement. И тут уже проблема посерьезнее: у нас переплетаются два совершенно разных понятия, и столь свободное толкование вызывает уже определенные разночтения и противоречия, касающиеся основ языка и потому, влияющих на его понимание в целом.

С точки зрения спецификации: «Statements are roughly equivalent to sentences in natural languages. A statement forms a complete unit of execution» и к ним относятся все наши «операторы» в т.ч. ветвления, циклов и пр. Хотя в спецификации они именуются как statements.

Теперь прочитав, например переводную литературу, вы уже будете несколько озадачены, обратившись к первоисточникам. Но и это еще не все. Обратимся, например к оператору (или все-таки инструкции?) switch:

        switch (choice) {
            case 1: 
                     . . . .
                     break;
            case 2: 
                     . . . .
                    break;
            case 3: 
                     . . . .
                     break;
            case 4: 
                     . . . .
                     break;
            default:
                     //неверный ввод
                     break;
        }

Сможете ли вы дать определения используемым здесь понятиям: switch, choice, case n (отдельно для case и отдельно для n), default, break? Вот, например, как представляет себе это переводчик того же Хорстмана:

Выполнение начинается с метки ветви case, соответствующей значению 1 переменной choice, и продолжается до очередного оператора break или конца оператора switch.

. Лично меня формулировка

соответствующей значению 1 переменной choice

вводит в ступор, хотя, конечно, догадаться можно. Но не это главное. Тут продемонстрирована устоявшаяся традиция перевода термина statement словом «оператор», вносящая некоторую сумятицу по отношению к его англоязычному собрату. Что же касается поставленного вопроса, то вот как его трактует спецификация:

switch — statement;
choice — expression;
case — switch label;
n — case constant;
break — statement;

Официальная спецификация языка

Теперь о традициях перевода. Судя по всему, сложились они на заре программирования в Советсвком Союзе, и в дальнейшем кочевали из языка в язык. Насколько известно мне, первая попытка русскоязычного переводя спецификации языка Java была сделана в 1999 году. Но, опять же насколько известно мне, напечатана не была. В ней, действительно, была отдана дань устоявшимся традициям, о которых было сказано выше. Однако, в 2015 году вышел, наконец, печатный перевод. И вот здесь-то, значение терминов оказалось пересмотренным, и на мой взгляд, более соответствует официальной англоязычной спецификации. Хотя, как мне кажется, там тоже есть к чему придраться. В этом издании operator имеет значение «оператор», statement — «инструкция», ну и т.д.

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

Автор: vitaliy4us

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js