> -- Geniepro писал(а):
> В Ада-83 уже были IN и OUT -- вряд ли Вирт мог не знать об этом...
В Algol-W (1966 год), разработанном Виртом и Хоаром (буква W от Wirth) были символыvalueиresult, примерно соответствующие ключевым словам IN и OUT.

Семантика символаresultподразумевает, что для данного формального параметра неявно создаётся локальная переменная, с которой работает код процедуры. Затем, после завершения процедуры, значение этой неявной переменной присваивается фактическому параметру. Аналогично дляvalue— тоже неявная локальная переменная, соответствующая фактическому параметру, создаётся перед выполнением тела процедуры и инициализируется значением фактического параметра. Однако, для IN-, OUT- и VAR-параметров подразумевается передача в процедуру указателя на переменную (в т.ч. на компонент массива или записи), и при работе с формальным параметром подразумевается неявное его разыменование.

Таким образомvalueточно соответствует передаче по значению,resultпримерно соответствует OUT,valueresultпримерно соответствует VAR-параметрам.

Формальные параметры без символовvalueиresultпередавались по наименованию.Передача параметра по наименованию— это такая особая алгольская магия, на сколько мне известно, нигде кроме Алгола-60 и Алгола-W не использовалась.

Да, «вряд ли Вирт мог не знать об этом…».