Я немного Вас отвлеку от Вашего тяжелого труда
в такой день.
Предлагаю Вашему внимаю следующую статью.
Предисловие
В былые времена говорили,
что если бы сторители строили дома так, как программисты пишут программы,
то первый случайный дятел разрушил бы цивилизацию...
Старая шутка про программистов
и дятла уже не совсем актуальна. Худо-бедно, но сегодня программируют чуток
более надёжно, и функций типа gets (которая читает в память строку произвольной
длины и не имеет никаких средств для её ограничения, то есть является безусловной
и абсолютной дырой) нынче не пишут. Нынче век стандартных контейнеров (STL),
класса string вместо char * и т.п. Всё защищено, смазано герметиком на стыках
и понюхано на предмет утечки.
Нынче беда другая. Современная
программа (за исключением, конечно, специфических областей типа вычислительного
программирования) больше похожа на какой-то трубопровод из кошмарного сна: на
трубу приварим фланец, к фланцу прикрутим переходник, в него впаяем кучу медных
трубочек, заплетённых в косичку, их подсоединим к газгольдеру системы STL, его
припаяем к змеевику и так далее, насколько хватит фантазии. Из HTML-формы -
поток байт, из потока байт - CGI-строка, из CGI-строки - контейнер с парами
имя=значение, из пар имя=значение пары <строка,строка>, из пар <строка,строка>
- контейнер упорядоченных целых, из контейнера... В общем, как говорится в детском
анекдоте, "перестаньте, а то я вас ударю".
Сначала структуры данных доросли
от примитивных массивов до равноправных с алгоритмами членов программы, что
ознаменовала классическая книга Вирта "алгоритмы + структуры данных = программы".
Будучи хорошим практическим учебником по программированию присков, деревьев
и т.п. ерунды на Паскале по сути своей книга была призвана не столько научить
этим не слишком сложным вещам, сколько донести мысль: данные не есть придаток
алгоритмов, они ортогональны и не менее важны.
Другим сокровенным знанием явилось
то, что алгоритмы и данные, в принципе, взаимозаменяемы - с одной стороны, есть
неалгоритмические языки, с другой - теоретически поток управления способен хранить
в себе произвольный объём данных. Грубо говоря, оператор if есть преобразователь
данных в алгоритм - он берёт бит и "прячет" его в потоке управления,
представляя бит двумя альтернативными ветвями.
Дальше - больше. Появилось объектное
программирование, которое и вовсе обидело алгоритмы, сделав их рабами данных.
С прологом всё не так обидно - там алгоритмов вообще нет (ну, точнее, некоторые
алгоритмические хаки есть, но это - с горя), да и практически применим он, если
честно, не очень-то. А ++ и Ява - настоящее скотство. Алгоритмы есть и явно
эксплуатируются, но - вторичны.
И есть ощущение, что это только
начало. Если посмотреть на то, с какой жаждой программерское сообщество вцепилось
в XML становится очевидно, что настал следующий этап. От водопровода стихийно-корявого
мы движемся к единой системе, общему принципу построения и соединения труб,
и именно трубы отныне будут главной заботой. А алгоритмы - ну, так... нужно
же куда-то трубы засовывать. :-)
Желаю Вам реагировать на окружающую
Вас жизнь и много толстых и жирных заказов с нармальными сроками на выполнение. С ПРАЗДНИКОМ ВАС!