Непейвода Н.Н. Программирование. Раздел 3

Непейвода Н.Н. Программирование. Страница 345

Можно считать, что алгоритм, представленный своим именем, есть зна­чение одного из процедурных типов, и тогда естественно говорить о входном параметрепроцедуре или даже о выходном алгоритме, который порождается в результате выполнения процедуры, имеющей соответствующий выходной параметр. Последнее — это пока что программистская экзотика, поскольку процедурные типы являются типами более высокого порядка по сравнению с типами обычных значений, а с ними связано очень много проблем, в том числе и теоретических. Совмещенные параметры еще экзотичнее, хотя си­туации, когда они были бы полезными, легко себе представить. Скажем, процедура получает в качестве параметра некоторый алгоритм и в резуль­тате своей работы порождает другой алгоритм, который заменяет исходный вариант, например, на основании знания о конкретных условиях его работы. Таким образом, если считать нормальным оперирование с типами высоко­го порядка, то процедурные параметры являются частным случаем ранее рассмотренных назначений параметризации.

Когда нужно обеспечить возможность вызова алгоритмовпараметров по ходу вычислений, можно было бы воспользоваться механизмом подстановки по имени. Это ближе всего к тому, что требуется. Но это слишком сильное средство, т. к. для использования процедурного параметра не требуются никакие окружающие его вычисления (вроде тех, что задаются реализацией вызова по имени), и, соответственно, зависимость такого параметра от внеш­него контекста минимальна. В реализационном плане самым приемлемым вариантом процедур как входных параметров является передача ссылки на фактический параметралгоритм, т. е. адреса передаваемой процедуры. По­этому не случайно, что именно так задается процедурная параметризация в языке С/С++, что не требует дополнительных механизмов, поскольку ад­рес есть значение указательного типа, которым обладает соответствующий формальный параметр. Процедуры же как выходные параметры пока что не поддержаны по сути современными системами программирования, и в лучшем случае значением такого выходного параметра будет одна из фикси­рованного конечного множества заранее описанных в программе процедур. Поэтому и здесь решение С/С++ достаточно на современном этапе.

Новости

  • 1
  • 2
Prev Next

Ракета "Ангара-А5В" в ближайшее десятилетие не полетит

24.01.2016

Ракета "Ангара-А5В" в ближайшее десятилетие не полетит

Роскосмос не планирует в течение ближайшего десятилетия осуществлять пуск тяжёлой ракеты-носителя А...

Ученые РФ опровергли выводы исследований о вреде ГМО

24.01.2016

Ученые РФ опровергли выводы исследований о вреде ГМО

Исследователи из Института проблем передачи информации (ИППИ РАН) проанализировали несколько самых п...

Летающие "Крокодилы"

24.01.2016

Летающие "Крокодилы"

20 удивительных фактов о боевом вертолете Ми-24.Этот вертолет стал таким же узнаваемым символом сове...

В Аргентине описали новый вид динозавра-гиганта

24.01.2016

О ранее неизвестном виде динозавра, относящемуся к инфраотряду зауроподов, рассказали аргентинские п...

Реклама