08-12-2018 17:45

Что такое стек, рекурсия и естественный алгоритм

Говорят, что теория и практика программирования - это высокие технологии и они развиваются. Область информационных технологий стремительно расширяет свои возможности. Появляются новые профессии и рынки.

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

Конструкции синтаксиса и реальная логика

Без формального представления данных нет программирования. Человек прекрасно себя чувствовал в мире информации задолго до того, как понял, что многие его действия - это алгоритмы. Конвейеры, станки, инструменты - это механизмы, жесткие формы реализации последовательностей действий.

Регулярные выражения Bash: руководство по созданию, применение, примерыВам будет интересно:Регулярные выражения Bash: руководство по созданию, применение, примеры

Идеальный пример - стек протоколов. Каждый работает на своем уровне: физический, канальный, сетевой, транспортный и т. д. При этом в каждой сетевой конструкции набор протоколов и их взаимодействие - свои. Это работает! Кстати, стек протоколов - это не только локальные и глобальные сети. В дипломатии есть свой комплект протокольных идей, в экономике - свой, в организации производства вообще масса правил и условностей, пластами уложенных в единую систему.

стек протокол коммуникаций

Как в "Экселе" отсортировать по дате? Инструкция с примеромВам будет интересно:Как в "Экселе" отсортировать по дате? Инструкция с примером

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

«Мягкость» языка программирования против «жесткости» последовательности действий конвейера не дала нужного эффекта. На самом деле каждый язык программирования - это система жестких правил синтаксиса, а информация, которая подлежит обработке, облекается в строгую формальную структуру данных.

Реальная логика мобильна. Человек принимает решения по ситуации, опираясь на динамично развивающийся фундамент знаний. Весь арсенал алгоритмов человека - это живая динамика. «Подобные по сути» действия моментально облекаются в рекурсивную форму, а каждое следующее действие опирается на предшествующее.

Что такое стек знаний в реальности - это динамика новых возможностей на базе уже сложившихся обстоятельств.

Full stack разработчик

Если верить "Гуглу", то первое упоминание о «девелопере» («= разработчик» - нечто более существенное, чем просто программист) датируется не ранее чем 2010 годом. Если верить иным источникам, идея «разработчика» - это 2004 год. По сути, время здесь имеет малое значение. Разработчик с полным комплектом знаний пришел в программирование, но ничего не изменилось.

Developer = разработчик

Стек в программировании - это момент появления первого процессора, ведь именно ему пришлось обеспечивать последовательное выполнение команд. На уровне машинных кодов трудно мыслить концептуально, но стек уверенно формировался в сознании специалистов как удивительно простое и эффективное правило организации вычислительных процессов.

Стек и процессор

Без стека нет рекурсии, а без нее любой алгоритм превращается в громоздкую последовательность действий. Мыслить и действовать рекурсивно может каждый человек, но написать подобный алгоритм дано не каждому программисту, про «разработчиков» в данном контексте трудно сказать что-то определенное.

Как ни назови профессию, ничего не изменится: программист, разработчик или full stack developer. Человек должен знать свое дело в полном объеме, причем таким образом, чтобы динамично расти адекватно изменяющимся условиям работы.

Знания не могут быть статичными, так как они это всегда динамика.

Стопка тарелок против жесткого синтаксиса

Программисты и сопровождающие их деятельность лица (специалисты различного профиля) давно научились говорить красиво:

Full-stack разработчики: программисты, понимающие весь стек, обычно создают более качественные приложения.

Можно найти множество подобных деклараций на просторах интернета. Но если в любом кафе и ресторане по старинке складывают тарелки так, чтобы ими было удобно пользоваться и эта технология адаптивно учитывает реальности текущей ситуации, то в программировании доселе властвуют: if, switch, for, foreach, while и знак присваивания.

Все синтаксические достижения прошлого века перекочевали в век нынешний с явной претензией дожить до следующего.

Full или не full, но программист, мыслящий реальностью и стремящийся к созданию качественного программного продукта может выйти за пределы предопределенного жесткого синтаксиса. Что такое стек, как не инструмент борьбы с этим тормозом прогресса? Что бы там себе ни мыслил создатель современного языка программирования, пытаясь сохранить наследие прошлого века, его можно банально нивелировать посредством стека.

фулл разработчик

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

Нет ничего проще как создать стек: возникла конкретная ситуация, и она «разобралась» вниз, разложилась на составляющие, а затем ушла вверх и показала решение.

Рекурсия, что такое стек для нее

Невозможно описать все одним алгоритмом. Создавая программу, специалист постоянно обнаруживает подобные участки кода. Используя функции, программист оптимизирует его и делает его читабельным, тестируемым и эффективным.

Рекурсия - это качественно новый уровень функциональности: умение функции вызвать саму себя, когда в этом есть необходимость и вернуться в прежнее положение вещей, изменив требуемый объем данных. Что такое стек, как не план погружения в проблему до ее полного распознавания (понимания) и обратного возвращения в исходное состояние с адекватным изменением окружающей действительности (данных).

Об умениях функций

Программирование манипулирует данными, но не информацией. По мнению большинства специалистов, данные - это формальные системы представления сведений. Если создать несколько формальных систем, получится больше вариантов представления информации, а это значит стек. Компьютер получит алгоритм адекватной реакции на информацию, представленную формальными системами данных.

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

Не обязательно числиться full stack разработчиком, достаточно быть программистом, стремящимся к созданию динамичных рекурсивных алгоритмов. Мир, конечно, не рухнет к ногам такого специалиста, но работу свою он будет знать хорошо.

Естественный алгоритм

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

Рекурсия и стек

Информация - это поток чего-то, в чем есть система и закономерности. Не стоит понимать это все сразу, всегда можно будет сделать потом. Для решения текущих задач вполне достаточно воспринимать информацию и адекватно на нее реагировать.

В контексте программирования и «высоких технологий» для достижения объективного и эффективного решения любой задачи достаточно рекурсии и правила стека.



Источник