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

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