Ненавистьненавистьненависть

Previous Entry Share Next Entry
Зависимость сложности программирования от уровня абстрагирования
outsidecpp
Как известно, человеку неудобно оперировать сотней равноправных понятий - ему удобнее разбить их на группы, группы - на подгруппы, и т.д., чтобы размышляя о чем бы то ни было, в голове приходилось вертеть лишь несколько понятий, а не всю сотню. По этому же принципу пишутся и программы. Любая программа - это пирамида, в вершине которй находится "Программа.Запуститься()", а у подножья - реализации скалярного произведения, конкатенации строк, копирования участка памяти, и т.д. Программа (а точнее - то, как нам ее комфортно писать) - это пирамида абстракций.

С одной стороны, двигаясь снизу ввех на вершину пирамиды, мы переходим от более формального (матан) к менее формальному (человеческий) языку изложения принципа работы программы. Из-за этого сложность программирования растет - чем более расплывчаты правила, тем тяжелее принять правильное решение.

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

Таким образом, внизу все просто, потому что программируемая логика предельно формальна, а вверху все просто, потому что в вершине пирамиды мало кирпичиков. А посредине? Вот как раз посредине и творится весь пиздец.

?

Log in

No account? Create an account