Направления развития языков программирования

В развитии языков программирования выделяются два основных направления: процедурный и не процедурного. В процедурных языках программа явно описывает действия, которые необходимо выполнить, а результат задается способом получения его при помощи некоторой процедуры - определенной последовательности действий. Основными средствами, применяемыми в этих языках, являются величины (в том числе и табличные), присвоение, циклы, процедуры. При построении процедурной программы необходимо четко представлять, какие действия и в какой последовательности будут производиться при ее выполнении. Среди процедурных языков можно, в свою очередь, выделить структурные и операционные языки. В структурных языках одним оператором записываются целые алгоритмические структуры: ветвления, циклы. В операционных языках для этого используется несколько операций. Широкое распространение получили структурные языка Pascal, С, Ada, PL / 1 и операционные языка Fortran, Basic, Focal.


Не процедурное (декларативное) программирование появилось в начале 70-х годов, но его развитие началось в 80-е годы в связи с проектом создания компьютеров пятого поколения, целью которого стала подготовка почвы для создания интеллектуальных машин . К не процедурного программирования относятся функциональные и логические языки. В функциональных языках программа описывает вычисление некоторой функции. Обычно эта функция задается как композиция других, более простых, те в свою очередь разбиваются на еще более простые, и т. д. Один из основных элементов в функциональных языках - рекурсия, то есть вычисление значения функции через значение этой же функции от других элементов. Наиболее распространенными среди функциональных языков является Lisp и Refal.Lisp, что является языком обработки списков, давно и активно применяется в системах искусственного интеллекта. Refal, построен на алгоритмах Маркова, удобен для обработки текстов и является единственным из распространенных в мире языков программирования, разработанным в нашей стране. Промежуточное положение занимает язык Logo, который содержит средства и процедурного и функционального программирования. На начальном уровне он похож на классический процедурный язык, а при решении сложных задач обработки данных на первый план выходят функциональные методы.


Функциональная программа, как и процедурная, описывает действия, которые надо сделать для достижения результата (вызов функции - это тоже действие), но ее построение требует скорее математического, чем алгоритмического мышления.
В логической традиции программа вообще не описывает действий. Она задает данные и соотношения между ними. После этого можно ставить вопрос. Машина берет известные (заданные в программе) данные и находит ответ на вопрос. Порядок перебора не описывается в программе, а неявно задается самим языком. Классическим языке логического программирования считается Prolog, хотя он и содержит некоторые средства управления перебором, т.е. процедурные элементы. Построение логической программы вообще не требует алгоритмического мышления. Здесь нет динамики, нет описания действий, программа описывает статические отношения объектов, а динамика находится в механизме перебора и скрыта от программиста.


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