Программирование – это очень просто

27 сентябрь, 2008 - 16:52Yguanych

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

Но гигиена – это дело личное. Хотя не только писатели, но и программисты, и даже системные администраторы, бывает, выходят на люди и там вот этими вот руками после вот этих вот клавиатур трогают всякие предметы, включая других людей.

А вот что касается программирования, например, то в нем ведь все тоже очень похоже на жизнь. Рекурсию, например, любят сторонники административной системы и мощной вертикальной командной иерархии. Начальник постарше вызывает свою копию – начальника помоложе, и передает ему задание, тот вызывает свою копию с уровня ниже и передает ей задание, и так далее, до самого низа, откуда по иерархии в обратном направлении пробежит цепочка возвратов. Чистая, незамутненная рекурсия. С теми же особенностями – любит много ресурсов. Каждому начальнику кабинет дать надо? Надо. Потому как что же это за начальник без кабинета. Разницу в зарплатах между уровнями иерархии поддерживать надо? Конечно, иначе что это за иерархия получится такая, в ней же ничего работать не будет. Ну и так далее. Короче, любит рекурсия ресурсы. И умеет передавать задания. А как работу работать, так это на самом нижнем уровне иерархии самый маленький работник будет делать каким методом? Правильно – итерацией. Потому что рекурсивно вызывать ему уже некого. Он сначала сделает одно, потом – второе, потом – третье, и так до последнего, N-го, чистая итерация, после чего выполнит команду return и в половину двенадцатого ночи побежит на последний троллейбус, чтобы успеть на метро. И сам виноват. Потому что кто не хочет рекурсивно вызываться и вызывать, тот будет итерационно работу работать.

Говорят, что придумали еще какое-то функциональное программирование. Это типа того же самого, только в иерархии все ходят между кабинетами в очках +12 в роговых оправах, даже те, кто хорошо видит, потому и ходят неуверенно и все время спотыкаются, и с толстыми очень тяжелыми умными книгами по абстрактной алгебре подмышкой. Собственно, на этом отличия заканчиваются, и все остальное точно таким же – или повезло, и вырвался в рекурсию, или не повезло, и остался итерацией заниматься.

А объектно-ориентированное программирование – это вообще просто. Это как если очень большой начальник отправляет начальника поменьше в контору с мощной иерархией, где цветет рекурсия, проверить на предмет децентрализации, гибкости и эффективности. Начальник конторы, само собой, рекурсивно передать такой деликатный вызов не может. Но и итерацией заниматься ему не пристало. И тут-то он покажет громадную диаграмму на языке UMLов, которого никто не знает, и расскажет про паттерны, которых никто не понимает, и спокойно выполнит return. Чаще всего у вызвавшего от такой информации случается переполнение буфера, результаты которого никак не сказываются на вызванной конторе – она-то свое уже отработала.

Так что программирование – это не просто просто. Это очень просто.