Алгоритмы

Вот и у Макса Бурцева я нашёл подтверждение той же самой идеи, которую высказывал раньше: дети познают мир единственным доступным нам методом — методом проб и ошибок. Отличие “взрослых” от “детей” по факту лишь в том, что взрослые перестали учиться и забыли про этот метод. Так что нет никаких “взрослых” и “детей”, есть лишь взрослые дети. Но пост не о том.

Всякий программист, независимо от того, на какой Джаве он программирует, работает с одним и тем же набором алгоритмов — сортировка, поиск минимума, фильтр, мэп-редьюс и так далее. Некоторые при этом даже догадываются, что на уровне ассемблера все их прекрасные единороги, паттерны и прочий говнокод превращается в банальное “попытаться сделать А и, если получится, то пойти и сделать Б, а если не получится, то пойти и сделать В”. Ничего не напоминает? Но пост не о том.

Знаете, почему, как я предполагаю, скайп стал так мегапопулярен, и все на него перешли из аськи? Не из-за видеозвонков или голоса. Скайп был первый, кто добавил возможность исправлять ошибку в отправленном сообщении. Аська этого не умела. Но пост не о том.

Вспомните симплекс-метод и метод градиентного спуска. Это всё — банальный перебор. Симплекс-метод не зря так называется. Он называется так, потому что simple — это “простой”. Это просто самый простой метод. Хотя название тут врёт — это не метод, а алгоритм. И тут и кроется разница. Метод — это всего лишь статический список ваших возможностей для развития, тогда как алгоритм — это динамика. Это чёткая инструкция, как эту статику пошагово переводить в другую статику. Иными словами, алгоритм — это та выборка шагов из метода, которая прямо сейчас де факто таки работает и таки переводит систему из одного состояния в другое. И “симплекс-метод” правильнее называть “симплекс-алгоритм”. Но пост не о том, всё равно всё то, что я тут написал, поймёт всего 1% читателей :))

Так что любая программа, любой самый сложный распараллеленный софт на гламурной Скале или обычный вебсайтик на быдловордпрессе — по сути всего лишь большой-большой фрактал if-else-ов и ничего более. И только от самого программиста зависит, видит ли он самый верхний кусок или способен пройти сквозь фрактал внутрь него, а потом внутрь него и так далее сколько хватит силы.

Ну не умеем мы делать ничего другого, извините. Всё, что мы умеем, это ошибаться. И всё, как мы можем стать лучше — это ошибаться быстрее и точнее. Попытаться сделать А и, если получится, то пойти и сделать Б, а если не получится, то пойти и сделать В.

Поделиться
Отправить
1 комментарий
Александр

Аналогично, во время аналогичного приступа философствования меня поразило, что все алгоритмы, все операции, которые мы привыкли задавать понятными нам командами на макроуровне, через кучу слоев абстракции сводится к набору операций типа mov, push, jae, jnl, и далеко не всегда, глядя на эту мешанину переходов и перебросок из регистра в регистр, и не зная предназначения программы, возможно сказать, что вон тот кусок кодов на самом деле выполняет рендеринг шрифта, а вот этот умеет предлагать исправления опечаток в словах...

Популярное