Разветвляющийся алгоритм: основы, структура и примеры
История появления слова «алгоритм» интересна ученым историкам, но не важно, где появился первый алгоритм и какому мудрецу его приписать.
Беспочвенны попытки математики приписать себе заслуги в развитии и повсеместном применении слова «алгоритм» за пределами математических категорий. Программирование тоже оказалось «вне» этого слова, как только пришло к идее «сырки», потеряв надежду формализовать мир информации в динамике его развития.
Алгоритм разветвляющейся структуры эффективно применялся с древнейших времен. Наскальная «живопись» первобытных людей была многовариантными алгоритмами действий в конкретных ситуациях. А ведь тогда не умели ни говорить, ни писать. Не было математики и программирования.
Основы алгоритма и его структура
Все что делает человек - результат применения знаний в конкретной ситуации с конкретной целью. Знания, последовательность действий и цель - главные составляющие любого алгоритма. Результат - может быть или не быть.
Если алгоритм повторяется в процессе достижения цели - это спираль. Алгоритм линейный или циклический - нонсенс, придуманный теоретиками в математике.
Алгоритм - это динамика на входе, в «теле» и в результате. То, что исходная информация всегда меняется - очевидно: ничто не стоит на месте. Исполнение алгоритма влияет на его «тело», на составляющую его последовательность действий. Результат - это фикция, но в любом случае: каждое исполнение алгоритма - это повод повторить все сначала.
Прочитал, случайно узнал или сам придумал - не важно. Важно, что всякое действие является частью функции более высокого порядка. Действие следует за действием. Всегда можно прекратить исполнение.
Алгоритм является разветвленным по входу и по содержанию: он исполняется каждый раз в иной ситуации и может измениться сам. Даже если алгоритм исполняется в полном вакууме, то есть созданы абсолютные условия для идеальных (постоянных) исходных данных, никто не может изменить течение времени, никто не может предусмотреть случайности.
Идеальных ситуаций не существует, а создавать бесполезные алгоритмы не принято. Алгоритм - это стремление к цели путем исполнения последовательности действий. Так было, так есть и так будет.
Простые примеры алгоритмов
Выйти на улицу - алгоритм. Выполнить работу - алгоритм. Лечь спать - тоже алгоритм.
Посчитать квадратное уравнение на калькуляторе или написать программу - набор алгоритмов.
Система протоколов, инструкций, технической документации и иной информации по подготовке космического корабля к запуску - миллионы алгоритмов, которые динамично развивались, совершенствовались и трансформировались в целесообразные последовательности действий.
Математики и программисты
Математики решили, что алгоритмы - это их стихия и предложили множество умных формулировок:
- это строгая последовательность арифметических и логических действий;
- однозначная ассоциация результата исходным данным;
- это совокупность результативности, определенности, возможности массового применения;
- символьная или формульная запись;
- это аналитическое или графическое представление и пр.
Все это частности. Когда появились первые программисты, процесс применения слова алгоритм усложнился. Программисты решили отобрать пальму властвования над алгоритмом у математиков.
Появились громоздкие представления программ в виде графических начертаний. Все это усложняло процесс применения вычислительной техники, которая в те времена была и без того громоздкой и медлительной: зато грела окружающее пространство лучше любой электростанции.
В конечном итоге большие и малые вычислительные машины ушли в историю, математики остались со своими идеями, а программисты занялись прямым своим делом - формированием области информационных технологий и созданием концепции компьютерного дела в целом.
Простые алгоритмы
После «битвы» математиков и программистов за принадлежность алгоритмов к конкретной теоретической и практической сфере человеческой деятельности, все закончилось мирно, все вернулись к своей работе.
Разветвляющийся алгоритм остался в своем классическом амплуа - это последовательность действий, изначально многогранная по входу и по содержанию. Нет такого алгоритма, который можно точно обозначить линейным и никогда не будет такого алгоритма, который можно определить, как циклический.
Команда ветвления, столь популярная в языках программирования, содержит условие и каждый раз оно проверяется. В алгоритме нет условий ни в синтаксисе if, ни в синтаксисе switch. Алгоритм - это последовательность действий, а не проверок для выбора, куда идти дальше.
Рекурсивные алгоритмы
Классический разветвляющийся алгоритм - основы применения знаний для выполнения действий. Рекурсивный его аналог - основы применения самого себя для иных данных или в иной ситуации. Знание определяет действие, алгоритм определяет сам себя или знание, определяющее действие.
Рекурсивный разветвляющийся алгоритм - это возможность вызвать самого себя на другом наборе исходных данных или в другой ситуации. Система рекурсивных алгоритмов - это возможность адекватно реагировать на систему исходных данных или динамичное развитие области применения (динамику ситуаций).
Алгоритм в программировании
Основные синтаксические конструкции в программировании - это середина 80-х годов прошлого века. До этого момента шли искания, после этого пошла оптимизация. В конечном итоге уже к концу 90-х годов сформировалась когорта востребованных языков программирования, а остальная масса языков приняла статус теоретически и практически бесполезных.
Характерная черта программирования прошлого века - катастрофическая медлительность.
Характерная черта программирования этого века в том, что пропали различия между словами:
- алгоритм;
- программа;
- код;
- скрипт;
- сырки.
В программировании накопилось много фольклора, но «сырки» являются самым показательным фактором общего прогресса в информационных технологиях.
У программистов уже давно нет времени рисовать картинки, даже техническое задание на разработку написать они не успевают.
Source code («сырки») - это набор кодов (программ, модулей, библиотек, скриптов), который можно оптом применить при первой возможности. Не думая и не изменяя, просто применить.
О каком алгоритме можно говорить, когда в деле участвуют «сырки»? Алгоритм включает в себя действия, а не то, что кто-то когда-то написал! Все действия алгоритма взаимосвязаны, основаны на последовательном стремлении к конкретной цели. Чужому действию в алгоритме нет места.
Авторитетный алгоритм
Обычно слово программист ассимилировалось со словом разработчик, хотя многие «авторитетные» IT-компании по сей день декларируют различия не только между программистами и разработчиками, но и вводят по каждой позиции уровни компетенции (начальный, средний, продвинутый).
Особенно интересны экзотические переменные в «авторитетных» алгоритмах:
- coder;
- frontend;
- backend;
- full-stack.
«Разветвляющийся» алгоритм такого рода действий «авторитетных» IT-компаний имеет под собой серьезные цели. Программа, написанная кодером (coder) - это 1 рубль. А продукт работы специалиста с полным стеком знаний (full-stack) - это 1000 рублей.
В общем-то разветвленный алгоритм, как был алгоритмом, так и остался: есть цель и нужна последовательность действий для ее достижения.
Алгоритмы, программы, скрипты
Что такое алгоритм и программа в первозданном значении вроде, как ясно. Что такое скрипт, не ясно вовсе. Вероятно, это связано с тегом script в HTML-коде, может слово скрипт обязано языку JavaScript. В реальности все это одно и тоже.
Как не назови программиста, как не именуй программу, а результат один - последовательность действий. Есть исходные данные, есть цель получить результат. Для достижения ее нужно что-то сделать = алгоритм = программа = скрипт.
Команда ветвления - самая древняя в синтаксисе языка программирования и самая странная. Синтаксис языка программирования порой поражает воображение своей оригинальностью.
- if (выражение) {набор инструкций, если выражение истинно} {набор инструкций, если выражение ложно}
Для записи выражения используется либо «==», либо «===». Использование «=» будет ошибкой (это оператор присваивания).
Странность состоит в том, что всегда выражение записано в скобках. Следовательно, использование в этих скобках «=» позволяет достоверно определить: здесь «=» - это не присваивание, а условный оператор равенства такой же как оператор меньше или больше.
If - не единственный в своем роде оригинал. Есть еще циклы в широком ассортименте и массивы в реляционном многообразии. Философия синтаксиса языка программирования, рожденная в 80-х годах прошлого века, в своем первозданном виде обросла множеством идей и уверенно смотрит в будущее.
Программирование - зеркало интеллекта
Множество идей и несовместимость синтаксиса одного и того же языка по различным версиям - результат творческих исканий. Программирование - уникальная сфера человеческой деятельности, которая позволяет квалифицированном программисту выйти за пределы синтаксиса любого современного языка.
Раньше такого не было, но сегодня программирование разветвляющихся алгоритмов - вопрос знаний и умений. Качественная квалификация и желание писать совершенный код дают возможность создавать уникальные рекурсивные алгоритмы, динамично развивающиеся вне воли автора.
Алгоритмы, которые до сего момента жили внутри сознания человека теперь можно реализовать в реальности и предоставить им функционировать в искусственной среде ровно таким же образом, как они функционируют в среде естественной.
Похожие статьи
- Примеры текстов разговорного стиля речи. Понятие и признаки разговорной речи
- Известные русские химики: список, достижения, открытия и интересные факты
- К чему снится смерть детей? Сонник: умер ребенок. Толкование снов
- Мифы Древней Греции: краткое содержание и суть
- Закрыть гештальт - что это? Значение и особенности
- К чему снятся змеи женщине? Толкование снов
- Знак зодиака Скорпион (мужчина): характеристика и совместимость с другими астрологическими знаками