Предисловие с извинениями автора и опозданием на три года
Я даже не мог предполагать три года назад, что отголоски моей первой статьи, которую вы сейчас будете читать, где я изложил основные принципы и терминологию новой методологии программирования VAOP, разойдутся так далеко. Интерес к методологии не только не угас до сих пор, но и продолжает расти.
Только пару недель назад я пришел к выводу, что применение VAOP требует от программиста, прежде всего, понимания, что алгоритм, который он реализует в коде, существует отдельно от самого кода программы, и что в этот алгоритм можно вносить изменения. К сожалению, современные программисты, начиная где-то 20-30 лет назад, стали обходить этап создания блок-схемы алгоритма, который был обязательным на заре программирования. Таким образом, для многих из них алгоритм и код программы стали восприниматься как единое целое, хотя код программы — это лишь инструкция для компьютера, написанная на языке, понятном исполнителю-компьютеру. Когда я спрашивал программистов показать мне алгоритм того, что они закодировали, они обычно указывали на код программы и пытались объяснить мне его работу, не понимая сути моего вопроса.
Вот почему, когда в своей статье я начинаю говорить об алгоритме, изобретенном "яйцеголовым", и затем описываю этот алгоритм с помощью va-script, многие не понимают, о чем идет речь. Как метко заметил мой внук: "Деда, ты пытаешься рассказать о паровозе людям, которые никогда не видели рельсов".
Вот почему, когда на первых занятиях с студентами я объясняю и демонстрирую на примерах, что алгоритм задачи, которую они должны запрограммировать, можно оформить, сохранить и редактировать отдельно от кода его реализации, они начинают осознавать все преимущества, которые предоставляет VAOP.
Затем, прочитав вместе комментарии к моей первой статье на Хабре, студенты честно признаются, что до этого момента они не полностью понимали, что такое алгоритмы и как они могут существовать отдельно. Они осознают, что va-script — это не что иное, как способ записи блок-схемы любого алгоритма, и признают, что без этого объяснения, скорее всего, также не поняли бы сути, подобно тем, кто оставлял комментарии.
Я осознаю свою долю ответственности в этом. Написав ту первую статью на Хабре, я не мог представить, что новое поколение программистов мыслит иначе, чем мы 40 лет назад. Я говорил о рельсах, стрелках и паровозах с вагонами, не учитывая изменения в восприятии. Прошу прощения, ребята. Я был не прав.
Познакомимся с v-agent ориентированным программированием предложенным в 1981 году программистом из России, выпускником МИФИ, Валерием Ракитиным.
Что еще написано автором по этой теме можно найти здесь:
https://vaop.notion.site/Articles-and-useful-resources-524bcff28774477aab091b82149307eb
Внимание! Чистая теория!
v-agent ориентированное программирование (VAOP) - это методология программирования, основанная на представлении алгоритма в виде v-agent script, который позволяет программному агенту, получившему название v-agent, выполнять операции закодированные в модулях v-agent box.
Идеологически v-agent ориентированное программирование - добивается того, чтобы алгоритм был записан в одном месте в виде, понятном всем - заказчикам, програмистам и исполняюшей среде (компьютеру), что улучшает процесс взаимодействия всех при создания программного продукта и, что особенно важно, существенно снижает затраты на этапе поддержания работы и адаптации к изменению внешних условий в Будущем.
Парадокс заключается в том, что мы должны меняться, чтобы все было по-прежнему, поэтому главная задача v-agent ориентированного программирования это обеспечить Бессмертие программного продукта при минимальных вложениях средств в его постоянную модернизацию.
Знание v-agent ориентированном подхода к программированию, будет полезно ни сколько разработчикам, которые получают деньги за не важно по какой методологии, сделанный программный продукт, а заказчикам, которые на долгие годы остаются один на один с проблемами поддержания работы программного продукта и адаптации его к изменению внешних условий. Помните, что Будущее не приходит само! Будущее мы программируем умело или не умело, поэтому надо создавать Ваше программное обеспечение, используя v-agent ориентированное программирование для того, чтобы у Вас было Будущее
Звучит туманно и не конкретно, но без теории нельзя, так как нет в мире ничего практичней хорошей теории.
Зачем, что и как?
Зачем нужно v-agent ориентированное программирование?
Для удобства работы всех участников создания программного продукта - заказчика, программиста и исполняющей среды (компьютера)
Что такое v-agent ориентированное программирование?
Представление апгоритма работы программного продукта в форме "v-agent script", понятной всем участникам разработки - заказчику, программисту и исполняющей среде (компьютеру)
Как работает программный продукт, сделанный по правилам v-agent ориентированного программирования?
Все участники создания программного продукта - заказчик, программист и исполняющая среда (компьютер) используют одну форму записи алгоритма "v-agent script". Такого нет и в одной технологии программирования.
В сравнении с другими технолониями, v-agent ориентированное программирование существенно снижает затраты как на этапе разработки, так и во время сопровождения и обновления программного продукта.
Алгоритм - это модель действий
Сравним различные формы записи алгоритмов и увидим всю уникальность v-agent ориентированного программирования.
v-agent ориентированное программирование инновация в разработке программных продуктов сравнимая с удобствами полученными человечеством при переходе от римской системы счисления к арабской (позиционной).
Сами в этом убедитесь, когда научитесь использовать форму записи алгоритмов "v-agent script"
Обычная реализация алгорима для нахождения суммы элементов массива на языке Python
M = [1,2,7,1]
sum = 0
i = 0
while i < len(M):
sum = sum + M[i]
i = i + 1
print("\nsum is [" + str(sum) + ']')
print('\nThe End')
Применение v-agent ориентированное программирование (VAOP) для нахождения суммы элементов массива на языке Python
actions = {
"Action_00":{
"_action_description":{
"_010":"--> init action",
"_020":"--> Set array M, i = 0; sum = 0"
},
"Direction_10":"Action_10", "_010":"Done"
},
"Action_10":{
"_action_description":{
"_010":"--> sum = sum + M[i]"
},
"Direction_10":"Action_20", "_010":"Done"
},
"Action_20":{
"_action_description":{
"_010":"--> i = i + 1",
"_020":"-->if i > len(M) - 1"
},
"Direction_10":"Action_END", "_010":"Yes",
"Direction_20":"Action_10", "_020":"No"
}
}
# init block
M = [1,2,7,1]
sum = 0
i = 0
current_action = "Action_00"
direction = "Direction_10"
while 1 == 1:
# define next action
action = actions[current_action][direction]
previous_action = current_action
current_action = action
print(previous_action,direction,current_action, i, sum)
print('------------------------')
if current_action in actions:
if current_action == "Action_10":
sum = sum + M[i]
direction = "Direction_10" # Done
if current_action == "Action_20":
i = i + 1
direction = "Direction_20" # No
if i > len(M) - 1:
direction = "Direction_10" # Yes
continue
break # end of loop where 1 == 1
if current_action.find("END") == 0:
print("\n\Error: current_action:[" + current_action + "]\n")
if current_action.find("END") != 0:
print("\nsum is [" + str(sum) + ']')
print('\nThe End')
От автора
Я, Валерий Ракитин, автор этого комикса, изобретатель и популяризатор v-agent ориентированного программирования (VAOP) не прощаюсь с Вами. За 40 лет у меня накопился богатый опыт применения VAOP как в обработке данный, так и в Веб-программировании и я готов им поделиться.