Автоматизация программирования.

Программирование, Хакинг, Безопасность, Софт, Железо, а также всё связанное с компьютерами
BDK
Сообщения: 2974
Зарегистрирован: 17 май 2015, 23:27
Откуда: Беларусь
Благодарил (а): 123 раза
Поблагодарили: 316 раз

Автоматизация программирования.

Сообщение BDK » 17 мар 2019, 11:26

О том чтобы автоматически генерировать эффективный программный код я задумывался почти с самого начала своей программистской практики - еще года с 1995-го. Но тогда мне совершенно не было понятно как даже подступиться к этой задаче. На данный же момент имеется вполне четкая картина вопроса.

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

Таким образом низкоуровневое программирование является ни чем иным как просто поиском такой последовательности операций которые наиболее эффективно выполняют преобразования эквивалентные заданным в лаконичной высокоуровневой формулировке.
При этом сами заданные преобразования данных могут быть описаны на сколь угодно абстрактном языке и сколь угодно лаконично. Но попытка в лоб запрограммировать задачу напрямую из такой высокоуровневой формулировки - задача для человека нетривиальная. И это именно та работа на которую тратится более 90% времени многомиллионной братии программистов во всем мире и сотни миллиардов долларов ежегодно.

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

Таким образом задача автоматизации программирования распадается на две основных :
1.Создание лаконичного языка высокого уровня абстракции.
2.Создание интеллектуального компилятора из этого языка в эффективный низкоуровневый код под заданную платформу.

И эта задача решается элементарно при помощи разрабатываемой мною системы ИИ. Она изначально продумана так чтобы реализовать и 1-й и 2-й пункт.

По принципу работы система схожа с гугловской шахматной программой AlphaZero которая демонстрирует запредельную по сравнению с человеком силу игры в шахматы. Со своей системой я ожидаю примерно схожего превосходства по сравнению с программистом человеком. То есть я ожидаю что система не только сможет заменить низкоуровневого программиста но и запредельно превзойдет его по качеству.