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

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

И смешанное вычисление, и опциональная специализация — примеры статического вычисления программы. Это общее понятие включает и многие другие возможности. Рассмотрим их от простого к сложному.

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

Более сложные статические вычисления требуют привлечения более глу­боких знаний о задачах, решаемых универсальной программой, о методах решения и др. Наглядный пример — использование в универсальной про­грамме функции вычисления квадратного корня, которая в универсальном случае должна включать в себя проверку аргумента на отрицательность. Ес­ли оказывается возможным доказать, что в данном контексте при обработке конкретных данных проверка будет избыточна, то использование варианта функции без проверки есть специализация, но уже не обязательно рассмат­риваемая как частичное вычисление. Поэтому для обоснования и проведения таких преобразований может потребоваться весьма серьезный анализ.

Иногда изза трудности описания связи между универсальной програм­мой и ее специализированной версией или по иным причинам нет смысла явно составлять универсальный алгоритм. В этом случае можно говорить о ручном способе специализации "идеальной" (несуществующей) програм­мы, которую можно рассматривать как призрак. Рассмотрение такого мето­да работы в контексте с событийного программирования и сопрограмм, в частности, на примере задач трансляции, показывает, что при такой ручной специализации появляется возможность лучше узнать сущность процессов, реализуемых в программе. Здесь в полной мере применим принцип обоб­щения без потерь, а то, что фактическое обобщение остается программой призраком, позволяет говорить об осознанном прагматическом сужении за­дачи (в другом подобном случае программист, знающий об общем решении, вполне может пойти другим путем). В данном случае, как и всегда, когда мы имеем дело с призраками, идеальная несуществующая программа играет роль источника системы понятий, направляющей разработку.

Новости

  • 1
  • 2
Prev Next

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

24.01.2016

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

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

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

24.01.2016

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

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

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

24.01.2016

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

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

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

24.01.2016

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

Реклама