Ada_Ru форум

Обсуждение языка Ада

Re: Перевод (fwd)

Оставить новое сообщение

Сообщения

Cyril Sazonov
Re: Перевод (fwd)
2002-10-26 00:05:48

 

 

Sincerely yours Cyril Sazonov

---------- Forwarded message ----------

Date: Sun, 16 Jun 2002 05:50:33 +0400 (MSD)

From: Cyril Sazonov <cs@...>

To: Dmitriy Anisimkov <anisimkov@...>

Cc: Sergey I. Rybin <rybin@...>, Maxim Reznik <max1@...>,

Alexey V. Litvinov <lial@...>,

Oleksandr Havva <alex@...>,

Wasiltchenko Ilja <ai_lab@...>

Subject: Re: Перевод

 

Hello!

 

On Sat, 15 Jun 2002, Dmitriy Anisimkov wrote:

 

statement -- предложение

expression -- выражение

operator -- операция

operation -- операция

 

Но ведь в Адском стандарте operator и operation - вещи СУЩЕСТВЕННО разные!

 

И это тоже верно. Наиболее точно соответствует английскому "operator" русское

"знак операции". В русском слово оператор в этом значении мне встречалось лишь

в обороте "оператор набла" ( что он делает -- убей, не помю !) ) в сопромате,

если не путаю.

 

А что такое "знак операции" ?

 

Строка обозначающая некое действие над операндами. Своего рода имя функции ( а Ada'е -- именно функция ) с несколько необычными правилами вызова.

Простейший пример -- математические операции: бинарный плюс, например.

A + B , что эквивалентно + ( A , B )

 

Операция насколько я знаю не нуждается в знаке.

У чисел может быть знак + или -. А вот у операции ... не знаю.

 

Унарный плюс/минус как раз и есть знак операции: -5 -- вызов функции "-" с параметром 5, т.е. эквивалентная запись - ( 5 )

 

Почему бы не перевесити operator как "оператор".

 

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

 

Говорят же на русском "оператор присваивания"

 

Кстати, вот ещё одна мина. Особенно поганая из-за того, как используется присваивание в C++.

 

В Ada'e ":=" не является операцией и не может быть перегружен. Строка "A := B ;" -- именно в _предложение_ языка или, в принятой в русском традиции перевода, оператор. Я понимаю, что "предложение присваивания" звучит непривычно и несколько некрасиво, что "оператор присваивания" традиционен.

В C/C++ "=" -- именно _операция_ присваивания, т.е. функция, возвращающая значение, и -- вот уродство! -- побочным эффектом меняющая значение одного из свох параметров ( по определению, у функции _все_ параметры предназначены _только_ для передачи данных в неё ).

 

Таким образом, в C/C++ ( с нюансами в зависимости от контекста ): A = B -- операция присваиваиния,

A = B ; -- оператор присваивания ( т.е. предложение присваивания ).

Вот какая терминологическая мина. Особенно важно это отличие в связи с широким распространением C/C++ -- нужно почеркнуть, что в Ada'е ( и вообще, во всех алгольных языках ) ":=" не возвращает значения и ничего не курочит побочным эффектом и, вообще, не имеет побочных эффектов, не может быть перегружен, т.е. не является функцией.

 

Поэтому я считаю, что везде, где это возможно надо воздерживаться от употребления слова "оператор", поскольку однозначность -- одна из важнейших составляющих надёжности, которая, в свою очередь, является одной из важнейших черт Ada'ы. Мир мы таким образом не изменим и не сломаем сложившуюся традицию, но в рамках документов по Ada'е избежим неоднозначностей перевода.

Sincerely yours Cyril Sazonov

Новое сообщение:
Страницы: 1

Чтобы оставить новое сообщение необходимо Зарегистрироваться и Войти