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

Следующим шагом на пути минимизации программных ошибок может стать создание мета языка программирования (meta language - ML), который будет служить не для описания алгоритма, а для описания стоящей проблемы. Почему такой путь может гарантировать уменьшение числа ошибок? Мы сегодня с высокой степенью достоверности уверены в отсутствии ошибок в программах вычисления значений стандартных функций (тригонометрических, логарифмов и пр.) Это связано с тем, что они проверены десятками тысяч пользователей. После создания банка алгоритмов и начала его использования достаточно быстро будут выявлены и устранены ошибки из этих алгоритмов, так как они будут опробованы тысячами пользователей при решении самых разных задач.

Для создания мета языка программирования нужно решить несколько проблем:

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

Описание проблемы должно проводиться на естественном языке, как это делается в машине Watson (IBM). Для этого программа должна научиться распознавать контекст проблемы. На начальном этапе контекст может выявляться в результате диалога между машиной и программистом.

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

После того как контекст проблемы определен, начинается описание конкретной задачи. Эта часть может выполняться также в диалоговом режиме. После того как задача описана, машине передаются входные параметры задачи. Машина может запрашивать дополнительные данные, необходимые для решения.

Формат описания алгоритма может иметь несколько форматов: