Tuesday, September 30, 2014

Принцип Алгоритмической инвариантности


"Ну хоть какие-то моральные устои у нас должны быть!"
(из разговора)


Алгоритмическая инвариантность относительно  результата.


Результат естественным образом зависит от алгоритма, но алгоритм, это идея, он ни в коем случае не должен зависеть от результата. Не очень понятно? Поясню.

Например, я хочу сделать два кодогенератора DG2A и DG2J, один должен выдавать код на языке ActionScript второй на Java. Так вот, я утверждаю, что алгоритмы работы кодогенератора и в первом и во втором случае должны быть одинаковы, это должен быть один и тот же алгоритм! Он не может зависеть от желаемого вида результата. Если ты подстраиваешь алгоритм под конкретные нужды - ты меняешь изначальную идею.

С философской точки зрения это объяснить очень просто. Алгоритм - это идея. Конкретный результат - это материальное воплощение идеи. Алгоритм один, реализаций может быть множество, но все их объединяет одно и то же - общая идея. Этакий Платоновский идеализм получается.)





No comments:

Post a Comment