алгоритъм не е ли последователни стъпки
Не, алгоритъм не мисля че е точно еквивалентно на последователни стъпки. Може би в много опростен вид и в частни случаи е така. Това евентуално се чупи при първия условен оператор обаче. Всъщност, това май е доста по-дълбоко заложен философски проблем понеже хардуерът и сега е направен с идеята софтуерът да представлява последователни стъпки които да се изпълняват, докато нещата в действителност не работят точно така. Та рано или късно стигаш до условностите. Последните са проблем. Днешният хардуер примерно се опитва да познае когато имаш условен избор кое е статистически по-вероятното решение което ще вземеш, това е забавно. Това се нарича branch prediction. Като се замисля, това не е лоша стратегия, то и в реалността е така, поне ние така сме свикнали да мислим. Имплицитно, ние вземаме решения на базата на това какво е най-вероятно да се случи на базата на предишен опит, може и да не го осмисляме добре, но е факт и ние често приемаме предишния опит като закономерност, което може и да не е правилно, заради малкия брой семпли на базата на които си градим изводите. А може и да е правилно когато имаме достатъчно много семпли за да не ни пука за изключенията. Там спеациално при branch prediction-а може да извадиш късата клечка където нещата не се вписват в модела и тогава правиш скъпи операции и си плащаш за което. Ако кодът ти е криво написан и това се случва често - страдаш. Обаче същата логика важи за всичко останало. Примерно придвижваш се със самолет, което е статистически погледнато от най-безопасните варианти за транспорт. Обаче като извадиш късата клечка не искам да си представям какво ти минава през главата докато самолета се разбива някъде с теб на борда, яко прецакана работа.
Хората като цяло не обичат да работят с вероятности и аз не ги и виня де. Сложно е това. Далеч по-лесно е да апроксимираш и да вземаш решение на базата на дадени наблюдавани резултати и съответно изводите базирани на това. Математиката като цяло не обича условните преходи, иска си числа, не такива глупости от вида "ама ако стане това направи това". Е, не-изненада, железарията също обича абсолютните решения, обаче вие не можете да ги формулирате просто защото не можете да влизате в ролята на Господ от ония книжки за библията и корана. Разбира се , в днешно време това няма толкова значение защото ние сме го предвидили това, плащаме си цената и тя е все по-евтина с развитието на техниката. Обаче основният философски проблем си стои и той вероятно няма общо само с информатиката. Информатиката е всъщност малко крива работа, понеже работим в цифровия домейн така да го кажем и ние имаме две стойности за един бит - нула и единица, нямаме нищо по средата, защото така работят нещата и защото това са математическите ни конструкции. Реално обаче светът не е такъв и всичко опира до това доколко добро ни е семплирането. Много семпли = по-добре сметната вероятност = по-ефективен алгоритъм. Но каквото и да измисляме, условните преходи са някаква наша си чисто човешка фантазия, за да можем по-лесно да приемаме и модифицираме нещата. Никъде в аналоговия свят го няма това. Което е странно, имам чувството че цялото развитие на железарията е чисто и просто да докара там природните процеси до някаква достатъчно груба гранулярност така че ние еволюиралите маймуни там да можем да осмислим нещата около нас. Това не е силно оптимистично от гледна точка на человечеството.
Много философска тема, както и да е, алгоритмите не са просто последователност от инструкции, нещата са далеч по-къдрави.