Копия статьи Евгения Александровича Зуева

Оригинальный PDF-файл: russian-cpp-1.pdf, 0.4 Мб.

Общие положения

Одной из особенностей проекта С11 является возможность использовать символы кириллицы в программах на Си++. Эта возможность проявляется в следующих трех аспектах:

  • задание русскоязычных текстов в комментариях;
  • использование символов кириллицы с идентификаторах;
  • допущение русскоязычных эквивалентов служебных слов.

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

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

Общий список служебных слов Си++ согласно Стандарту

Принципы перевода служебных слов

Основные принципы, которыми следует руководствоваться при выборе переводов конкретных слов:

  1. Перевод не обязательно должен быть буквальным; прежде всего он должен обеспечивать прежде всего смысловую идентичность.

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

  3. Необходимо учесть особенности русского языка, прежде всего, наличие родов для прилагательных. Например, в объявлении вида
    int a;
    

    описатель типа int можно трактовать как «целая переменная», «целый объект», «целое данное». В таких случаях можно как отбрасывать родовые окончания, так и допускать несколько вариантов. Общее решение в данном случае состоит в следующем: основной (официальный) перевод подобных служебных слов представляет собой единообразное сокращение, полученное отбрасыванием окончаний. Наряду с официальным имеется ряд альтернативных переводов, которые поддерживаются комплятором, но не рекомендуются для активного использования.

  4. Некоторые служебные слова можно переводить различными грамматическими формами: как существительные, как глаголы, как предлоги. Например, для goto допустимы следующие переводы:
    иди
    идти
    на
    переход
    

    В подобных случаях предпочтение дается существительным, как наиболее нейтральным формам. Это решение позволит избежать неопределенности в случае глаголов и ненужной эмоциональной окраски (например, для варианта «иди»). Так, перевод слова continue в глагольной форме вызовет дилемму вроде «продолжать» или «продолжить», или «продолж» (не говоря о не вполне точном соответствии этого глагола семантике оператора continue).

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

Перевод служебных слов Си++

Ниже приводится предлагаемый перевод служебных слов. Служебные слова сгруппированы в соответствии со смысловыми связями. В левой колонке дается оригинальное служебное слово Си++, во второй колонке — официальный перевод компании МедиаЛингва:Компиляторы. Третья колонка содержит альтернативные переводы. Наконец, в последней колонке представлены варианты переводов, которые рассматривались, но были отброшены по каким-либо причинам. Здесь же содержатся краткие объяснения этих причин и прочие комментарии.

Служебное слово and

  • Официальный перевод лог_и
  • Альтернативный перевод – нет
    Традиционное обозначение – &&
  • Варианты и комментарии
    Перевод обозначения операции and как и был отвергнут ввиду недопустимости служебных слов, состоящих из одной буквы. Поэтому для единообразия и другие операции — or, xor, not — переводятся несколько более громоздко, однако единообразно и в стиле языка Си/Си++. Следует иметь в виду, что в Стандарте данные обозначения для логических операций введены как альтернативы известным лексемам &&, ||, !, ^ и, скорее всего, не будут широко использоваться.

Служебное слово and_eq

  • Официальный перевод и_присв
  • Альтернативный перевод – нет
    Традиционное обозначение – &=

Служебное слово asm

  • Официальный перевод ассем
  • Альтернативный перевод – ассемблер

Служебное слово auto

  • Официальный перевод автом
  • Альтернативный перевод
    автоматич
    автоматический
    автоматическая
    автоматическое
    автоматические  
    
  • Варианты и комментарии
    авто

    Предпочтение было отдано варианту автом, так как прямая транслитерация вызывает ненужные ассоциации (авто – распространенное сокращение для «автомобиль»).

Служебное слово bitand

  • Официальный перевод бит_и
  • Альтернативный перевод – нет
    Традиционное обозначение – &

Служебное слово bitor

  • Официальный перевод бит_или
  • Альтернативный перевод – нет
    Традиционное обозначение – |

Служебное слово bool

  • Официальный перевод лог
  • Альтернативный перевод
    логич
    логический
    логическая
    логическое
    логические
    
  • Варианты и комментарии
    бул
    булев
    

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

Служебное слово break

  • Официальный перевод прервать
  • Альтернативный перевод – нет
  • Варианты и комментарии
    прерывание
    заверш
    

    Для перевода слова break был выбран глагольный перевод прерывание, прервать. Предпочтение отдано глагольной форме, так как существительное прерывание несет специфическую нагрузку, подразумевая аппаратное прерывание.

Служебное слово case

  • Официальный перевод вариант
  • Альтернативный перевод вар

Служебное слово catch

  • Официальный перевод перехват
  • Альтернативный перевод – нет
  • Варианты и комментарии
    См. throw.

Служебное слово char

  • Официальный перевод сим
  • Альтернативный перевод
    симв
    символьный
    символьная
    символьное
    символьные
    
  • Варианты и комментарии
    симв
    литер
    

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

Служебное слово class

  • Официальный перевод класс
  • Альтернативный перевод – нет
  • Варианты и комментарии
    Для слова class, обозначающего ключевое в Си++ понятие, невозможно предложить ничего, кроме прямого перевода.

Служебное слово compl

  • Официальный перевод бит_не
  • Альтернативный перевод – нет
    Традиционное обозначение – ~

Служебное слово const

  • Официальный перевод конст
  • Альтернативный перевод
    константа
    константный
    константная
    константное
    константные
    

    Служебное слово const_cast

  • Официальный перевод конст_прив
  • Альтернативный перевод – нет
  • Варианты и комментарии
    конст_привед
    

    На редкость неуклюжее имя; перевод неизбежно оказался таким же неуклюжим. Единственное утешение: эта конструкция используется относительно редко.

    См. reinterpret_cast

Служебное слово continue

  • Официальный перевод итерация
  • Альтернативный перевод – нет
  • Варианты и комментарии
    еще_итерация
    продолж
    

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

Служебное слово default

  • Официальный перевод проч
  • Альтернативный перевод
    прочие
    прочее
    
  • Варианты и комментарии
    умолч
    

    Аналогично switch, для слова default предпочтительным кажется не буквальный перевод – умолчание, а более точный в данном контексте вариант прочее или проч. Последний вариант прямо соотносится с известной традицией и поэтому выглядит вполне естественно.

Служебное слово delete

  • Официальный перевод удалить
  • Альтернативный перевод – нет
  • Варианты и комментарии
    удл
    удал
    

    См. new.

Служебное слово do

  • Официальный перевод цикл
  • Альтернативный перевод – нет
  • Варианты и комментарии
    выполн
    вып
    

    Попытка перевести do буквально, как выполнить, выполн, вып (последнее вообще неприемлемо, так как вызывает ассоциации с «выпить», «выплюнуть» и т.д.) кажется существенно хуже по сравнению с семантически более точным существительным цикл, которое, к тому же, ввиду своей краткости не нужается в сокращении.

Служебное слово double

  • Официальный перевод двойн
  • Альтернативный перевод
    двойной
    двойная
    двойное
    двойные
    двойн_точн
    двойной_точности
    
  • Варианты и комментарии
    удв
    

    Вариант был отброшен ввиду своей неочевидности.

Служебное слово dynamic_cast

  • Официальный перевод дин_прив
  • Альтернативный перевод – нет
  • Варианты и комментарии
    дин_привед
    

    На редкость неуклюжее имя; перевод неизбежно оказался таким же неуклюжим. Единственное утешение: эта конструкция используется относительно редко.

    См. reinterpret_cast

Служебное слово else

  • Официальный перевод иначе
  • Альтернативный перевод – нет
  • Варианты и комментарии
    Все достаточно очевидно и понятно.

Служебное слово enum

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

Служебное слово explicit

  • Официальный перевод явн
  • Альтернативный перевод
    явная
    явный
    

    Служебное слово extern

  • Официальный перевод внеш
  • Альтернативный перевод
    внешний
    внешняя
    внешнее
    внешние
    
  • Варианты и комментарии
    внешн
    

    Вариант внеш выглядит более элегантно по сравнению с более громоздким внешн.

Служебное слово false

  • Официальный перевод ложь
  • Альтернативный перевод – нет
  • Варианты и комментарии
    нет
    

    ложь – единственно возможный перевод. Вариант нет отдает «любительщиной».

    См. true.

Служебное слово float

  • Официальный перевод плав
  • Альтернативный перевод
    плавающий
    плавающая
    плавающее
    плавающие
    
  • Варианты и комментарии
    плв
    

    См. long.

Служебное слово friend

  • Официальный перевод друж
  • Альтернативный перевод
    друг
    дружеств
    дружественный
    дружественная
    дружественные
    
  • Варианты и комментарии
    дружеств
    

    Соблазн заменить буквальный перевод каким-либо более наглядным (хотелось дополнительно прояснить понятие дружественных функций и классов в Си++) был преодолен, так как все популярные описания Си++ оперируют именно этим названием. Введение другого, даже более наглядного обозначения привело бы к необходимости ссылок типа «в оригинале это свойство определяется описателем friend, что в русскоязычных книгах переводится как „дружественный“».

Служебное слово goto

  • Официальный перевод переход
  • Альтернативный перевод – нет
  • Варианты и комментарии
    на
    иди
    идти
    

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

Служебное слово if

  • Официальный перевод если
  • Альтернативный перевод – нет
  • Варианты и комментарии
    Все достаточно очевидно и понятно.

Служебное слово inline

  • Официальный перевод подставл
  • Альтернативный перевод
    подставляемая
    подставляемые
    
  • Варианты и комментарии
    подст
    откр
    открыт
    

    Предложенный вариант перевода нельзя считать окончательным ввиду его громоздкости (более компактный вариант подст отвергнут из-за ненаглядности); однако другого подходящего слова предложить пока не удалось. Заметим, что в русскоязычной программистской литературе, начиная с 60-х г.г. для подпрограмм данного вида использовался термин «открытая».

Служебное слово int

  • Официальный перевод цел
  • Альтернативный перевод
    целый
    целая
    целое
    целые
    

Служебное слово long

  • Официальный перевод длин
  • Альтернативный перевод
    длинный
    длинная
    длинное
    длинные
    
  • Варианты и комментарии
    длн
    

    Дополнительные, помимо отбрасывания окончаний, сокращения внутри слова (длн, плв), кажутся неоправданными, даже если они продиктованы стремлением «втиснуть» все обозначения стандартных типов в три символа.

Служебное слово mutable

  • Официальный перевод изменч
  • Альтернативный перевод
    изменчивый
    изменчивая
    изменчивое
    изменчивые
    
  • Варианты и комментарии
    измен
    

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

Служебное слово namespace

  • Официальный перевод область
  • Альтернативный перевод – нет
  • Варианты и комментарии
    обл
    

    Полный перевод слова namespace – область – кажется более наглядным и предпочтительным по сравнению с обл (служебные слова заголовочного характера, каким является namespace, не стоит делать слишком короткими).

Служебное слово new

  • Официальный перевод создать
  • Альтернативный перевод – нет
  • Варианты и комментарии
    нов
    новый
    

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

Служебное слово not

  • Официальный перевод лог_не
  • Альтернативный перевод – нет
    Традиционное обозначение – !
  • Варианты и комментарии
    См. and

Служебное слово not_eq

  • Официальный перевод не_равно
  • Альтернативный перевод – нет
    Традиционное обозначение – !=

Служебное слово operator

  • Официальный перевод операция
  • Альтернативный перевод – нет
  • Варианты и комментарии
    Английское слово operator в данном контексте однозначно переводится как «операция». Например, выражение a+b задает операцию сложения (обозначенную знаком операции — символом +); соответственно, языковая конструкция, позволяющая определить собственную версию операции сложения, содержит служебное слово операция. Вульгарный буквальный перевод operator как «оператор» затемняет смысл соответствующей конструкции языка и приводит к путанице, так как в русскоязычной программистской литературе понятием «оператор» исторически обозначается конструкция языка, задающая некоторое элементарное действие без образования нового значения (англоязычный прототип — statement). Именно такая трактовка слов operator и statement была принята в русском переводе книги Эллис и Страуструпа.

Служебное слово or

  • Официальный перевод лог_или
  • Альтернативный перевод – нет
    Традиционное обозначение – ||
  • Варианты и комментарии
    или
    

    См. and

Служебное слово or_eq

  • Официальный перевод или_присв
  • Альтернативный перевод – нет
    Традиционное обозначение – |=

Служебное слово private

  • Официальный перевод себе
  • Альтернативный перевод
    скрытый
    скрытая
    скрытое
    скрытые
    
  • Варианты и комментарии
    для_себя
    прив
    скрыт
    

    См. public.

Служебное слово protected

  • Официальный перевод своим
  • Альтернативный перевод
    защищ
    защищенный
    защищенная
    защищенное
    защищенные
    
  • Варианты и комментарии
    для_своих
    защищ
    защ
    

    См. public.

Служебное слово public

  • Официальный перевод всем
  • Альтернативный перевод
    доступный
    доступная
    доступное
    доступные
    
  • Варианты и комментарии
    для_всех
    общедост
    публ
    пуб
    

    Для часто используемых в оъектно-ориентированном программировании спецификаторов private, public и protected в качестве официальных предлагаются несколько нетривиальные по стилю переводы в виде притяжательных местоимений себе, всем и своим. Представляется, что такие трактовки явно точнее оригинальных, заметно повышают наглядность этих спецификаторов и позволяют легче запомнить их назначение. Их необычность кажется допустимой, кроме того, по той причине, что они и используются не вполне стандартным образом: не как модификаторы для каждого отдельного объявления (как в языке Java), а как своего рода заголовки внутри тела класса.

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

Служебное слово register

  • Официальный перевод рег
  • Альтернативный перевод
    регистровый
    регистровая
    регистровое
    регистровые
    
  • Варианты и комментарии
    регистр
    

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

Служебное слово reinterpret_cast

  • Официальный перевод тип_прив
  • Альтернативный перевод – нет
  • Варианты и комментарии
    тип_прив
    

    На редкость неуклюжее имя; перевод неизбежно оказался таким же неуклюжим. Единственное утешение: эта конструкция используется относительно редко.

    Для самого неуклюжего слова из группы *-cast – reinterpret_cast предложен перевод чуть менее громоздкий, но несколько более точный, нежели буквальный.

Служебное слово return

  • Официальный перевод возврат
  • Альтернативный перевод – нет
  • Варианты и комментарии
    вернуть
    возвратить
    

    Как и во многих других случаях, вариант с существительными для слова return снимает глагольную неопределенность.

Служебное слово short

  • Официальный перевод кор
  • Альтернативный перевод
    короткий
    короткая
    короткое
    короткие
    

    См. long.

Служебное слово signed

  • Официальный перевод со_знаком
  • Альтернативный перевод
    знаковый
    знаковая
    знаковое
    знаковые
    
  • Варианты и комментарии
    знак
    

    Спецификаторы signed и unsigned имеют двойной смысл: во-первых, они обозначают знаковый (беззнаковый) целочисленные типы и в этом качестве могут использоваться независимо; во-вторых, они могут использоваться как дополнительные спецификаторы к спецификатору некоторого целочисленного типа, явно обозначая его (знаковый или беззнаковый) вариант, например, unsigned long i;.

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

Служебное слово sizeof

  • Официальный перевод размер
  • Альтернативный перевод – нет
  • Варианты и комментарии
    Кто придумает что-то другое?

Служебное слово static

  • Официальный перевод стат
  • Альтернативный перевод
    статический
    статическая
    статическое
    статические
    

    Служебное слово static_cast

  • Официальный перевод стат_прив
  • Альтернативный перевод – нет
  • Варианты и комментарии
    стат_привед
    

    На редкость неуклюжее имя; перевод неизбежно оказался таким же неуклюжим. Единственное утешение: эта конструкция используется относительно редко.

    См. reinterpret_cast

Служебное слово struct

  • Официальный перевод структ
  • Альтернативный перевод
    структура
    
  • Варианты и комментарии
    Варианты с полным и сокращенным переводом слова struct примерно одинаково приемлемы с точки зрения наглядности.

Служебное слово switch

  • Официальный перевод выбор
  • Альтернативный перевод – нет
  • Варианты и комментарии
    перекл
    переключатель
    

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

    См. default.

Служебное слово template

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

Служебное слово this

  • Официальный перевод этот
  • Альтернативный перевод – нет

Служебное слово throw

  • Официальный перевод исключение
  • Альтернативный перевод – нет
  • Варианты и комментарии
    искл
    исключ
    передать
    передача
    ситуация
    

    В данном случае буквальный перевод служебных слов, предполагающий глагольную форму («пытаться» для try, «поймать» для catch, «бросить» для throw) приводит к нелепым конструкциям. Вариант с существительными выглядит гораздо более стройным, естественным и не вызывающим посторонних ассоциаций. Кроме того, полный вариант слова исключение заметно лучше неуклюжих сокращений искл, исключ.

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

Служебное слово true

  • Официальный перевод истина
  • Альтернативный перевод – нет
  • Варианты и комментарии
    да
    

    истина – единственно возможный перевод. Вариант да отдает «любительщиной».

    См. false.

Служебное слово try

  • Официальный перевод контроль
  • Альтернативный перевод – нет
  • Варианты и комментарии
    Перевод слова try как контроль семантически более точен и соответствует переводу понятия try-block как «блок-с-контролем», предложенному в Зеленой книге (Эллис, Страуструп. «Справочное руководство по языку Си++ с комментариями»).

    См. throw.

Служебное слово typedef

  • Официальный перевод тип
  • Альтернативный перевод – нет
  • Варианты и комментарии
    оптип
    

Служебное слово typeid

  • Официальный перевод есть_тип
  • Альтернативный перевод – нет
  • Варианты и комментарии
    тип 
    естьтип
    

    Альтернативный, более буквальный перевод: typedef – оптип, typeid – тип был отвергнут по причине очень широкой распространенности конструкции typedef и, наоборот, относительной редкости typeid. Поэтому для частой конструкции был выбран более простой вариант тип, а для редкой операции typeid – более громоздкий, но более точный перевод есть_тип.

Служебное слово typename

  • Официальный перевод имя_типа
  • Альтернативный перевод – нет
  • Варианты и комментарии
    имятипа
    

Служебное слово union

  • Официальный перевод совмещ
  • Альтернативный перевод
    совмещение
    
  • Варианты и комментарии
    союз
    объед
    объединение
    

    Все варианты буквальных переводов слова union (союз, объединение) отвергнуты из-за того, что они скрывают назначение конструкции (конструкция union не «объединяет» свои члены, а, скорее, допускает «совмещение» этих членов в памяти). Так что в этом отношении предпочтительнее перевод совмещение или его сокращенный вариант.

Служебное слово unsigned

  • Официальный перевод без_знака
  • Альтернативный перевод
    беззнаковый
    беззнаковая
    беззнаковое
    беззнаковые
    
  • Варианты и комментарии
    беззнак
    

    См. signed

Служебное слово using

  • Официальный перевод использ
  • Альтернативный перевод
    использовать
    
  • Варианты и комментарии
    исп
    

    Сокращение вида исп может приводить к двусмысленности («использовать» или «исполнить»).

Служебное слово virtual

  • Официальный перевод вирт
  • Альтернативный перевод
    виртуальный
    виртуальная
    виртуальное
    виртуальные
    
  • Варианты и комментарии
    виртуал
    

Служебное слово void

  • Официальный перевод пуст
  • Альтернативный перевод
    пустой
    пустая
    пустое
    пустые
    

Служебное слово volatile

  • Официальный перевод ненадеж
  • Альтернативный перевод
    ненадежный
    ненадежная
    ненадежное
    ненадежные
    
  • Варианты и комментарии
    подвиж
    

    Обычно следует избегать использования прилагательных с приставкой «не». Однако в данном случае использование слова с «не» выглядит оправданно, так как сама семантика данного описателя описывается им более точно: считается, что значение объекта, объявленного с данным описателем, может изменяться асинхронно по отношению к потоку управления программы; в этом смысле объект является ненадежным, то есть нельзя делать никаких предположений о его значении в любой момент времени. В то же время он не является «подвижным»: его положение в памяти не может изменяться.

Служебное слово wchar_t

  • Официальный перевод шсим
  • Альтернативный перевод
    широкий_симв
    широкая_симв
    широкое_симв
    широкие_симв
    
  • Варианты и комментарии
    ш_сим
    шир_сим
    

    Вариант шсим кажется естественнее буквального ш_сим или шир_сим (последнее неприемлемо ввиду аналогий типа «ширяться»).

Служебное слово while

  • Официальный перевод пока
  • Альтернативный перевод – нет
  • Варианты и комментарии
    Все достаточно очевидно и понятно.

Служебное слово xor

  • Официальный перевод искл_или
  • Альтернативный перевод – нет
    Традиционное обозначение – ^
  • Варианты и комментарии
    бит_искл_или
    мод2
    

    Перевод обозначений операций ^ и ^=сделан несколько отличным от других аналогичных операций ввиду сложного названия данной операции – «исключающее или» в западной терминологии или «сложение по модулю 2» в российской математической традиции. Полный вариант бит_искл_или, хотя он и сочетается с другими операциями бит_и, бит_или, бит_не, был отброшен ввиду своей громоздкости, тем более, что «логического» варианта этой операции нет.

Служебное слово xor_eq

  • Официальный перевод искл_присв
  • Альтернативный перевод – нет
    Традиционное обозначение – ^=

Общий список служебных слов препроцессора Си++ согласно Стандарту

Перевод служебных слов препроцессора Си++

Служебное слово #define

  • Официальный перевод #макрос
  • Альтернативный перевод – нет
  • Варианты и комментарии
     #опред 
     #определить
    

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

    Заметим, что «макрос» – корректная форма единственного числа для данного понятия. Именно такой перевод английского macro был принят в отечественной профессиональной литературе, начиная с 70-х гг. (см., например, М.Кемпбел-Келли, «Введение в макросы»: Пер. с англ./ Под ред. Э.З.Любимского.- М.: Сов. Радио, 1978). Общеупотребительный в устной речи (иногда проникающий и в печатные тексты) вульгаризм «макро» возник только в последнее время.

Служебное слово defined

  • Официальный перевод есть
  • Альтернативный перевод – нет
  • Варианты и комментарии
    Если директива #ifdef переводится как #если_есть, то некоторую ее модификацию естественно перевести аналогично. Пример: #если ( есть М1 || есть М2 ) ...

Служебное слово #elif

  • Официальный перевод #инес
  • Альтернативный перевод #иначе_если
  • Варианты и комментарии
     #ин_если
     #ин_ес
    

    Перевод директивы #elif как #инес выглядит наиболее кратко и вместе с тем читабельно. Кроме того, именно так традиционно переводится служебное слово elif в тех языках программирования, в которых оно имеется (например, в Алгол-68).

Служебное слово #else

  • Официальный перевод #иначе
  • Альтернативный перевод – нет
  • Варианты и комментарии
    Было бы странно, если бы директивы #if и #else были бы переведены как-либо иначе, имея ввиду одноименные служебные слова самого языка.

Служебное слово #endif

  • Официальный перевод #конес
  • Альтернативный перевод #конец_если
  • Варианты и комментарии
     #кон_если
     #конесли
     #илсе
    

    Директива #endif переведена как #конес, – в духе #если и #инес. «Стильный» перевод как #илсе – перевернутой начальной директивы, сам по себе очень привлекательный (и используемый, в частности, для аналогичного служебного слова в Алголе-68), был отвергнут, так как в данном случае он противоречил бы общему стилю данных предложений.

Служебное слово #error

  • Официальный перевод #ошибка
  • Альтернативный перевод – нет

Служебное слово #if

  • Официальный перевод #если
  • Альтернативный перевод – нет

Служебное слово #ifdef

  • Официальный перевод #если_есть
  • Альтернативный перевод – нет
  • Варианты и комментарии
     #еслиесть
     #если_опред
    

    Предлагаемый перевод #ifdef и #ifndef как, соответственно, #если_есть и #если_нет, представляется наиболее точным из возможных: директива «срабатывает», если ранее уже было (еще не было) определение макроса с указанным именем.

Служебное слово #ifndef

  • Официальный перевод #если_нет
  • Альтернативный перевод – нет
  • Варианты и комментарии
     #еслинет
     #если_не_опред
    

    См. #ifdef

Служебное слово #include

  • Официальный перевод #вставка
  • Альтернативный перевод – нет
  • Варианты и комментарии
     #вставить
     #внести
    

    Здесь также использовано существительное; быть может, перевод #вставить так же нагляден и точен, но для единообразия (чтобы директивы определения макроса, его отмены и использования представлялись существительными) была выбрана указанная форма.

Служебное слово #line

  • Официальный перевод #строка
  • Альтернативный перевод – нет

Служебное слово #pragma

  • Официальный перевод #прагмат
  • Альтернативный перевод #прагма
  • Варианты и комментарии
    Практически единственный возможный перевод. Вариант #опция, в принципе, тоже допустим, но он несет оттенок жаргона, используемого в устной речи. К предложенному варианту перевода полностью относится комментарий для директивы #макрос (имея ввиду распространенность вульгарного перевода «прагма»).

Служебное слово #undef

  • Официальный перевод #отмена
  • Альтернативный перевод – нет
  • Варианты и комментарии
     #отмен
     #отменить
    

    Предпочтение было отдано существительным.

    См. #define.

Служебное слово __DATE__

  • Официальный перевод __ДАТА__
  • Альтернативный перевод – нет

Служебное слово __FILE__

  • Официальный перевод __ФАЙЛ__
  • Альтернативный перевод – нет

Служебное слово __LINE__

  • Официальный перевод __СТРОКА__
  • Альтернативный перевод – нет

Служебное слово __TIME__

  • Официальный перевод __ВРЕМЯ__
  • Альтернативный перевод – нет

Служебное слово __cplusplus

  • Официальный перевод __сиплюсплюс
  • Альтернативный перевод – нет

Служебное слово __STDC__

  • Официальный перевод __СТАНДСИ__
  • Альтернативный перевод __СТДСИ__
  • Варианты и комментарии
    Имена предопределенных макросов либо имеют совершенно однозначный и краткий перевод, либо представляют собой неудобопроизносимые сокращения, возникшие исторически по произволу создателей языков Си и Си++. Поэтому не следует надеяться исправить дело, пытаясь ввести для них некие «красивые» эквиваленты на русском языке.