Объектно-ориентированные языки программирования



Объектно-ориентированные языки программирования содержат конструк­ции, позволяющие определять объекты, при надлежащие классам и обладающие свойствами инкапсуляции, наследования и полиморфизма. Объект­но-ориентированные языки можно разделить на три группы:

· Чистыеязыки, в наиболее классическом виде поддерживающие объект­но-ориентированную методологию. Такие языки содержат небольшую языковую часть и существенную библиотеку, а также набор средств под­держки времени исполнения.

· Гибридныеязыки, которые появились в результате внедрения объектно-ориентированных конструкций в популярный императивный язык программирования.

· Урезанныеязыки, которые появились в результате удаления из гибридных языков наиболее опасных и ненужных с объектно-ориентированной точ­ки зрения конструкций.

Класс задач

Данная методология является мощным средством для моделирования отно­шений между объектами практически в любой предметной области. Осо­бенно удобно и легко в объектах выразить взаимодействие между различны­ми элементами графического интерфейса пользователя.

2.3. Методология функционального программирования

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

Происхождение

Функциональная методология является одной из старейших. По происхож­дению она тесно связана с лямбда-исчислением, изобретенным еще в начале30-х годов ХХ века логиком Алонзо Черчем. Для многих функциональная методология стала ассоциироваться с языком Lisp, создан­ным Джоном Маккарти в конце 50-х годов XX века Сеппянен. В то же время эта методология в основном ис­пользуется теоретиками программирования и является средством лаборатор­ных исследований искусственного интеллекта.

Методы

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

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

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

Вычислительная модель

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

Синтаксис и семантика

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

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

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

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

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


Дата добавления: 2018-05-12; просмотров: 471; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!