По своему опыту преподавания информатики и программирования регулярно замечаю, что вдумчивые начинающие программисты, отличающиеся внимательным отношением к различным деталям применяемых в программировании терминов, не редко впадают в ступор, изучая переведённые на русский язык книги известных на Западе программистов: М. Лутц, Дж Гл. Брукшир, М. Саммерфильд, М. Прайс, J.P. Мюллер, J. Албахари и т.д.  Например, чем отличается Statement, Operator, Instruction, и почему они так переводятся на русский язык?

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

Однако для тех начинающих программистов, кто хочет выстроить стройную систему знаний такой ответ явно не подходит. И почему знания должны быть искажёнными, некорректными, если он тратит время на обучение, лучше сразу выучить правильно, чем потом переобучаться. Это культура знаний. Помню, когда ещё был молодым адъюнктом, решил на актуальные для себя темы поговорить (пообсуждать) с учёным со стажем, он послушал меня, рассмеялся и сказал: «Давайте сначала мы договоримся о терминах, а потом пообсуждаем Ваши вопросы. Вы не тушуйтесь, это обычная ситуация, все через это проходят.» Применительно к IT, когда наш специалист в беседе с западными применяет словосочетание, например, if operator, вместо if statement – это режет слух. Но нравоучения вряд ли кому понравятся, поэтому перейдём к нашей теме.

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

1.     Дж Гл.Брукшир Деннис Брилов. Компьютерные науки. Базовый курс, 13- издание. 2020 г

2.     Марк Лутц. Изучаем Python в двух томах, 5-издание, 2019-2020.

3.      Рэндал Э Брайант, Дэвид Р О`Халларон. Компьютерные системы. Архитектура и программирование, 3-издание, 2022.

4.      Марк Прайс. C#10 и NET 6. Современная кросс-платформенная разработка, издание 6, 2023 год

Как эти вопросы рассматриваются на форумах? Как правило, исходя из своих знаний и опыта программирования на различных языках, синтаксисе языков. Однако отмечу, что данные вопросы относятся к разряду терминов и их определений в сфере IT. Поэтому основными документами являются стандарт ISO/IEC 2382 – 2015 IT Vocabulary, а также Межгосударственный стандарт ГОСТ 33707-2016 (ISO/IEC 2382:2015) Информационные технологии. Словарь.

Если сравнить английские и русские версии книг, то почти везде термин Statement переводится, как оператор. Примечание, вообще слово Statement очень популярно в английской литературе по IT и, кроме значения термина применяется в общеязыковом качестве: заявление, утверждение, предложение, отчёт и т.д.

Рассмотрим английскую и русскую версию перевода книги Марк Прайс. C#10 и NET 6. Современная кросс-платформенная разработка, издание 6, 2023 год Глава 2 Говорим на языке C#, подраздел Грамматика языка C#,  параграф Statements в английской версии стр. 55 в русской, - 97 стр.

 

Переведённый текст с исправлениями

Statements

In English, we indicate the end of a sentence with a full stop. A sentence can be composed of  multiple words and phrases, with the order of words being part of the grammar. For example, in English, we say "the black cat."

The adjective, black, comes before the noun, cat. Whereas French grammar has a different order; the adjective comes after the noun: "le chat noir." What's important to take away from this is that the order matters.

 

 

 

 

 

 

C# indicates the end of a statement with a semicolon. A statement can be composed of multiple variables and expressions. For example, in the following statement,

totalPrice is a variable

and subtotal + salesTax is an expression:

var totalPrice = subtotal + salesTax;

The expression is made up of an operand named subtotal, an operator +, and another operand named salesTax. The order of operands and operators matters.

 

Инструкции Операторы

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

Предложение может состоять из разного количества слов и фраз. Порядок слов

в предложении тоже относится к правилам грамматики. К примеру, по-русски

мы обычно говорим «черный кот», но в определённых случаях допустимо сказать

и «кот черный».

В английском языке прилагательное «черный» всегда предшествует существительному «кот»: the black cat. Во французском языке порядок иной, прилагательное указывается после существительного: le chat noir. Порядок имеет значение.

Язык C# обозначает конец инструкции оператора точкой с запятой. При этом инструкция оператор может состоять из нескольких переменных и выражений. Например, в указанном ниже инструкции  операторе totalPrice — это переменная, а subtotal + salesTax — выражение:

var totalPrice = subtotal + salesTax;

Выражение состоит из операнда subtotal, оператора операции + и второго операнда salesTax.

Порядок операндов и операторов операций имеет значение

 

Во втором столбце приведён перевод с моим вариантом исправлений. Какое противоречие бросается в глаза в российской версии. Statement переводится как оператор, а унарный operator + переводится оператор операции. Получается, что оператор состоит из операторов и операндов. Язык C# обозначает конец оператора точкой с запятой. То есть поставил оператор + и далее точка с запятой?

Мозг может вскипеть у логиков, в английской же версии: «Statement can be composed of multiple variables and expressions. The expression is made up of an operand named subtotal, an operator +, and another operand named salesTax», всё понятно.

Итак, в этом примере, как указал М. Прайс:

Statement: totalPrice = subtotal + salesTax;

Expression: subtotal + salesTax

Operands: subtotal, salesTax

Operator: +

Здесь уместно вспомнить знаменитую кинокомедию «Осенний марафон», посвящённую труду переводчиков и их личной жизни, помните фразу главного героя фильма: «…Хартия переводчиков, товарищ Лифанов, гласит, что перевод в современном мире должен содействовать лучшему взаимопониманию между народами, а Вы своим лепетом будете только разобщать.» и таких примеров сотни.

Если Вы хотите читать корректно иностранные переводные книги по IT, то рекомендую при себе иметь английскую версию авторов. Но это не все, для этого вы должны немного разобраться в терминологии и иметь под рукой международный стандарт ISO/IEC 2382 – 2015 IT Vocabulary, и все сразу станет на свои места.

Рассмотрим стандарты ISO/IEC 2382 – 2015 IT Vocabulary, а также Межгосударственный стандарт ГОСТ 33707-2016 (ISO/IEC 2382 : 2015) Информационные технологии. Словарь.

В Сведениях о стандарте ГОСТ 33707-2016 отмечено, что он подготовлен на основе собственного аутентичного перевода на русский язык англоязычной версии стандарта ISO/IEC 2382 – 2015 IT Vocabulary. В соответствии со Словарём-справочником терминов нормативно-технической документации п. 3.2.1 аутентичный текст на русском языке: перевод международного (регионального) нормативного документа на русский язык, достоверно сохраняющий смысл, содержание и форму оригинала.

 

Стандарт ГОСТ 33707-2016 в Введении отмечает: «Развитие информационных технологий приводит к росту международного обмена как материальными, так и интеллектуальными ресурсами. Зачастую обмен информацией затруднён либо все возрастающим разнообразием терминов в различных областях, либо отсутствием или неточностью необходимых терминов.

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

Настоящий стандарт разработан на основе двух документов — проекта международного стандарта ИСО/МЭК 2382 «Информационные технологии. Словарь» и «Электронного терминологического словаря «Компьютеризация и информатизация общества»» (Разработка «Стандартинформ»).»

Кратко, российский стандарт создан на основе ISO/IEC 2382 – 2015. Замечательно. В западном, - все термины проиндексированы, указана сфера применения, поскольку многие термины имеют множественное определение.

Рассмотрим ряд терминов стандарта ISO/IEC 2382 – 2015 IT Vocabulary:

 

2122051

Instruction

statement

specification of an operation and identification of any associated operands

Note 1 to entry: instruction; statement : terms and definition standardized by ISO/IEC [ISO/IEC 2382-7:2000].

Note 2 to entry: 07.09.01 (2382)

[SOURCE:ISO-IEC-2382-7 * 2000 * * * ]

 

 

инструкция

statement

спецификация операции и идентификация любых связанных с ней операндов

 

 

2122410

statement

explicitly terminated syntactic unit either representing a declaration or prescribing a unit of work that includes identification of actions to be performed, operands (if any) to be used in performing these actions, and disposition of any results

Note 1 to entry: Some programming languages do not consider declarations to be statements.

Note 2 to entry: statement : term and definition standardized by ISO/IEC [ISO/IEC 2382-15:1999].

Note 3 to entry: 15.05.01 (2382)

[SOURCE:ISO-IEC-2382-15 * 1999 * * * ]

 

 

Statement

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

Примечание 1 к записи: В некоторых языках программирования декларации не считаются Statement.

2122665

specification

detailed formulation, in document form, which provides a definitive description of a system for the purpose of developing or validating the system

Note 1 to entry: specification: term and definition standardized by ISO/IEC [ISO/IEC 2382-20:1990].

Note 2 to entry: 20.01.03 (2382)

[SOURCE:ISO-IEC-2382-20 * 1990 * * * ]

 

 

спецификация

подробная формулировка в форме документа, которая обеспечивает наиболее полное описание системы для целей разработки или проверки системы

2124140

operator

<symbols manipulation> symbol that represents the action to be performed in an operation

Note 1 to entry: operator: term and definition standardized by ISO/IEC [ISO 2382-2:1976].

Note 2 to entry: 02.10.06 (2382)

[SOURCE:ISO-2382-2 * 1976 * * * ]

 

 

оператор

<обработка символов> символ, представляющий действие, которое должно быть выполнено в операции

2124135

operation

well-defined action that, when applied to any permissible combination of known entities, produces a new entity

Note 1 to entry: Example: The process of addition in arithmetic; in adding five and three and obtaining eight, the numbers five and three are the operands, the number eight is the result, and the plus sign is the operator indicating that the operation performed is addition.

Note 2 to entry: operation: term and definition standardized by ISO/IEC [ISO 2382-2:1976].

Note 3 to entry: 02.10.01 (2382)

[SOURCE:ISO-2382-2 * 1976 * * * ]

 

 

операция

четко определённое действие, которое, будучи применённым к любой допустимой комбинации известных сущностей (объектов), приводит к появлению новой сущности (объекта)

2122442

expression

language construct that defines the computation of a data value as a result from one or more operands

Note 1 to entry: Operands may be literals, identifiers, function calls.

Note 2 to entry: expression: term and definition standardized by ISO/IEC [ISO/IEC 2382-15:1999].

Note 3 to entry: 15.05.33 (2382)

[SOURCE:ISO-IEC-2382-15 * 1999 * * * ]

 

 

выражение

языковая конструкция, которая определяет вычисление значения данных как результат одного или нескольких операндов

Примечание 1 к записи: Операнды могут быть литералами, идентификаторами, вызовами функций.

2124136

operand

entity on which an operation is performed

Note 1 to entry: operand: term and definition standardized by ISO/IEC [ISO 2382-2:1976].

Note 2 to entry: 02.10.02 (2382)

[SOURCE:ISO-2382-2 * 1976 * * * ]

 

операнд

сущность (объект), над которой выполняется операция

Здесь говорится, что синонимом «Instruction» (Инструкция) является термин Statement. Далее к теории определений. Что такое определение термина? Для программистов проще и понятнее говорить в понятиях объектно-ориентированного программирования: термин Statement – это производный класс; его определение: ближайший базовый класс и его характерное отличие. То есть «Инструкция - это спецификация (базовый класс) + его характерное однозначно определяемое отличие «операции и идентификация любых связанных с ней операндов».

Инструкции, спецификации, имеют сложную таксономию, их много в стандарте ISO/IEC 2382 – 2015, все они имеют в основе базовый класс спецификации. Термин Statement также имеет значительную таксономию. Обратите внимание на многозначный индекс у каждого термина, он как почтовый индекс однозначно идентифицирует любой термин в миллионах терминов.

Специально не перевожу сам термин Statement. В третей строке приведено определение спецификации, далее оператора и операции в терминах IT. Тогда все становится на свои места, например математические операторы (+, -, *, /, ) и т.д., унарные, бинарные, но это не Statement.

Перейдём к Межгосударственному стандарту ГОСТ 33707-2016. Вроде всё просто, не открывай «Америку», не изобретай «велосипед», сделай, как у них, но этот стандарт пошёл своим путём. Рассмотрим термин Statement:

4.824 оператор: Лицо или организация, которые вносят вклад в реализацию функциональных возможностей системы и применяют знания, умение и процедуры при выполнении определённой функции.

En; statement, operator

 

Синонимами русского «оператор»  английские statement, operator. Не очень понятно: они о чём, об операторах машинного доения или операторах станков с числовым программным управлением, но не о том термине, который приведён в ISO/IEC 2382 – 2015. Вот и ответ термин Statement заменяется на слово оператор: If statement на If оператор и т.д. во многих книгах. На сайте Stackoverflow, в один программист интуитивно так и отметил: «Это на русском языке какая-то путаница…»

Кроме этого, не очень понятно обоснование способа индексации терминов в отличие от ISO/IEC 2382 – 2015.

Приведу ещё один пример из книги Дж Гл.Брукшир, Деннис Брилов. Компьютерные науки. Базовый курс, 13- издание. 2020 г, глава 6. Языки программирования, раздел 6.2 Концепция традиционного программирования русский перевод - 449 стр, анг.,- 331-332 стр.

Generally, a program consists of a collection of statements that tend to

fall into three categories: declarative statements, imperative statements, and

comments. Declarative statements define customized terminology that is used

later in the program, such as the names used to reference data items; imperative statements describe steps in the underlying algorithms; and comments enhance the readability of a program by explaining its esoteric features in

a more human-compatible form. Normally, an imperative program (or an imperative program unit within an object-oriented program) can be thought  of as having the structure depicted in Figure 6.4. It begins with a collection of  declarative statements describing the data to be manipulated by the program.

This preliminary material is followed by imperative statements that describe the algorithm to be executed. Many languages now allow the declarative and  imperative statements to be freely intermingled, but the conceptual distinction remains. Comment statements are dispersed as needed to clarify the program.

 

 

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

комментарии. Операторы объявления вводят пользовательскую терминологию, которая в дальнейшем будет использоваться в программе, например имена, для обозначения отдельных элементов данных. Выполняемые операторы описывают отдельные этапы используемого алгоритма; а комментарии просто повышают читабельность программы, давая пояснения её специфическим особенностям в более удобной для пользователя форме. Чаще всего императивная программа (или императивный программная единица в рамках объектно-ориентированной программы может восприниматься как имеющая структуру, представленную на рис. 6.4. Она начинается с набора операторов объявления, описывающих данные, которые будут обрабатываться программой. За этим предварительным материалом следуют выполняемые операторы, образующие в своей совокупности тот алгоритм, который необходимо выполнить. В настоящее время многие языки программирования позволяют смешивать операторы объявления и выполнимые операторы, расставляя их в свободном порядке, но концептуальное различие между ними при этом сохраняется. Операторы комментариев размещаются в программе там, где это необходимо в целях предоставления разъяснения в отношении работы программы.

Здесь такая же история, как говорил ранее, что такое операторы объявления и т.д., это почти везде.

Исходя из изложенного, какой дать совет начинающему программисту? Всё-таки, основная литература по IT написана на английском языке, ГОСТ 33707-2016 должен является аутентичным вариантом ISO/IEC 2382 – 2015. В российской литературе термин «оператор» применяется в сфере IT по факту в качестве термина operator, операторами не могут быть одновременно statement и operator, это разные сущности, и на примере книги Прайса это хорошо видно.

Поэтому в качестве рекомендаций начинающим программистам предлагаются два варианта:

1.      Заменять statement на русский термин «инструкция», поскольку так рекомендуется в ISO/IEC 2382 – 2015. В ряде книг, частично так и переведено.

2.      Вариант 2. Ведь всё это, как бы для своего русского понимания. В ISO/IEC 2382 – 2015 имеется отдельное определение и для statement и оно по-другому сформулировано, чем instruction. Далее, в русском языке имеется много заимствований иностранного происхождения, тот же термин инструкция – это иностранное слово. Поэтому можно использовать просто термин «statement», например: while statement.

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

Комментарии (4)


  1. oliva80
    31.05.2025 21:52

    Владимир Иванович, язык программирования - это прежде всего язык.

    Можно 2 года института потратить на тонкости present perfect continious, но так и не заговорить на английском. А можно погрузиться в языковую среду и сносно общаться уже за 1 неделю (это о себе).

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

    "Начинающим" программистам не нужна стройная система знаний. Им нужна практика, им нужно "заговорить" на новом языке, не вдаваясь в ньюансы что такое там этот statement - выражение/оператор/инструкция/утверждение или ещё что-то. Переводчику видней.

    Стройная система знаний появится у "продолжающих". Когда они научаться говорить и им будет что сказать.


    1. vmorozov57 Автор
      31.05.2025 21:52

      Олег, доброе утро! Согласен с Вами, каждый решает индивидуально. Поэтому материал и называется "мнение". Основной акцент в нем сделан на упрощение восприятия изучаемого материала и демонстрацию проблемы, о которой могут не догадываться начинающие программисты, поскольку российский перевод с английского усложняет понимание. Также наш ГОСТ, к сожалению, не лучший образец документа. Мне много приходилось работать с ГОСТами, и это общая беда. Здесь речь идет только о правильном восприятии, а если взять Свод правил Электроустановки жилых и общественных зданий, то и о больших деньгах, но это отдельная тема.