Алгоритмы вокруг нас

2b536462d09876ad988fd0d196fdac1c.PNG

Привет, друзья! Меня зовут Алмаз. Я специалист по НСИ (нормативно-справочной информации) в компании Bimeister. Маленький дисклеймер. Данная статья — материал для размышления. В особенности для людей, которые разрабатывают новые алгоритмы и реализуют их.

b53c65f7ab3f01339f07bd4ed682ce12.png

Наверное, каждый, кто сталкивался с программированием тем или иным образом, слышал об алгоритмах. Алгоритм — это своего рода задумка, «внутренний скелет» программы, которая затем реализуется на каком-то конкретном языке программирования. Карл Маркс, в честь которого названы улицы почти в каждом городе нашей страны (а может и в каждом), говорил: «Самый плохой архитектор от наилучшей пчелы с самого начала отличается тем, что, прежде чем строить ячейку из воска, он уже построил ее в своей голове. В конце процесса труда получается результат, который уже в начале этого процесса имелся в представлении человека».

То есть, Карл Маркс проводит различие между человеком и пчелой в том, что человек сначала придумывает что-то в своем воображении и только потом реализует это. А пчела, видимо, действует инстинктивно. Но что такое инстинкт у пчелы? В современном мире все шире применяются нейронные сети. И, если рассмотреть поведение пчелы, — это своего рода обученная адаптивная нейросеть. Понятно, что пчела не обладает достаточно развитым мозгом, чтобы что-то придумать. Но задумайтесь: у пчелы получаются идеальные шестигранные соты. Без использования каких-либо линеек и штангенциркулей. То есть алгоритм и реализация этого алгоритма просто идеальны. Факт.

623fc620aad70664ebcb4f177cee94da.png

 Наш преподаватель по программированию в институте был человеком старой закалки. При изучении алгоритмов и языка программирования Pascal, он заставлял нас сначала рисовать алгоритм на листочке. После того, как он проверит алгоритм, разрешал (опять же на листочке) писать код программы. И только после этого подпускал к компьютеру, чтобы внести этот код и запустить его. Конечно, такой подход у многих студентов вызывал недоумение, но для себя я усвоил этот принцип и применяю его в своей жизни. То есть, чтобы программа работала, желательно сначала продумать алгоритм до мелочей, а уже потом реализовывать. В случае с пчелами, очевидно, что алгоритм продуман.

В период пандемии я занялся проращиванием семян и приготовлением полезных блюд из микрозелени. Сначала я купил пшеницу. Наверное, ни для кого не секрет, что зерна пшеницы очень твердые. Но для меня было «открытием», что если положить их в воду, то через некоторое время они становятся мягкими и начинают «проклевываться» маленькие белые проростки. Количество витаминов в этих проростках просто зашкаливает, но по мере изменения цвета ростков на зеленый количество витаминов уменьшается. А теперь информация к размышлению.

Зерна пшеницы в твердом и сухом виде хранятся годами и десятилетиями. Но стоит их намочить, запускается алгоритм прорастания. Факт в том, что алгоритм есть, и он работает. При этом багов, в принципе, нет. Если зерно не повреждено, оно прорастет.

9477ec3da0c6c75a2d94049a21e2f951.png

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

345c039ab16bd72b123d4ace2ac29019.png

 Еще одно интересное наблюдение. Вы едите что-то вкусное. Вы откусываете, пережевываете, глотаете. А что дальше? Дальше процесс идет без вашего участия. Вы даже не знаете, что там с пищей происходит дальше. Ну и, конечно, стоит опять написать это слово — алгоритм. Запускается алгоритм переваривания пищи. Как он работает? Я не знаю всех подробностей. У меня были проблемы с работой печени, и я изучал алгоритм ее работы. И вот что я выяснил: печень определяет тип пищи — белки, жиры, углеводы — и выделяет соответствующий вид веществ для правильного переваривания. Алгоритм работает.

4562113c48db994652ccb7b1b7e39be1.pnge87de4693a5c02d0d63f0ec69c77e64d.png

Теперь обратимся к беременным женщинам. После зачатия ребенка в утробе матери начинается определенный процесс роста и развития эмбриона. Опять же — алгоритм. Если вы спросите у беременной женщины, как она поддерживает жизнь ребенка, и что именно там происходит, то она вам не сможет ответить. Потому что все происходит как будто само собой, но ведь этот процесс уже кто-то продумал и реализовал. Я думаю, многие видели эти картинки со стадиями развития эмбриона.

aed2e2e993882775d0ea4ad6d0ef6755.png

Кстати, если следовать этой же логике можно найти очень много интересного в нашей повседневной жизни.

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

0a50324f942326d9466a8b9614799454.png

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

e6989b645f8891c1e2635544f5eeaab1.png

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

0d3bd0a2995f40e139389978fe13cfd6.png1827c9cdfda7a0d131228b83c4cd5ac5.png

В завершении о прекрасном. Представьте, что вы художник и вам надо нарисовать розу. Ниже на картинке представлен поэтапный алгоритм.

9ab388354e253ac29d520b481511fc8b.png

Но усложним задачу — вам надо сделать трехмерный цветок.

К тому же надо, чтобы этот цветок вкусно пах, вырастал из семени, имел шипы.

823cbaaefcfec72b7e611c252dfa6eca.png

 Только представьте, как бы выглядел алгоритм и код программы по созданию такого цветка.

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

© Habrahabr.ru