Объектно-ориентированные языки программирования
Объектно-ориентированные языки программирования содержат конструкции, позволяющие определять объекты, при надлежащие классам и обладающие свойствами инкапсуляции, наследования и полиморфизма. Объектно-ориентированные языки можно разделить на три группы:
· Чистыеязыки, в наиболее классическом виде поддерживающие объектно-ориентированную методологию. Такие языки содержат небольшую языковую часть и существенную библиотеку, а также набор средств поддержки времени исполнения.
· Гибридныеязыки, которые появились в результате внедрения объектно-ориентированных конструкций в популярный императивный язык программирования.
· Урезанныеязыки, которые появились в результате удаления из гибридных языков наиболее опасных и ненужных с объектно-ориентированной точки зрения конструкций.
Класс задач
Данная методология является мощным средством для моделирования отношений между объектами практически в любой предметной области. Особенно удобно и легко в объектах выразить взаимодействие между различными элементами графического интерфейса пользователя.
2.3. Методология функционального программирования
Методология функционального программирования- способ составления программ, в которых единственным действием является вызов функции, единственным способом расчленения программы на части - введение имени для функции и задание для этого имени выражения, вычисляющего значения функции, а единственным правилом композиции - оператор суперпозиции функции.
|
|
Происхождение
Функциональная методология является одной из старейших. По происхождению она тесно связана с лямбда-исчислением, изобретенным еще в начале30-х годов ХХ века логиком Алонзо Черчем. Для многих функциональная методология стала ассоциироваться с языком Lisp, созданным Джоном Маккарти в конце 50-х годов XX века Сеппянен. В то же время эта методология в основном используется теоретиками программирования и является средством лабораторных исследований искусственного интеллекта.
Методы
Метод аппликативности- заключается в том, что программа есть выражение, составленное из применения функций к аргументам. Программа состоит из совокупности определений функций, представляющих собой вызовы других функций и предложений, управляющих последовательностью вызовов. Метод поддерживается концепцией функции.
Метод рекурсивного поведения- заключается в самоповторяющемся поведении, возвращающемся к самому себе. Метод поддерживается концепцией рекурсии.
Метод настраиваемости- заключается в том, что можно легко порождать новые программные объекты по образцу, как значения соответствующих выражений (применение порождающей функции к параметрам образца). Этому способствует то, что не только программа, но и любой программный объект является выражением.
|
|
Вычислительная модель
Функциональное программирование представляет собой одну из альтернатив императивному подходу. В функциональном программировании отсутствует понятие времени. Программы являются выражениями, а исполнение программ заключается в вычислении этих выражений.
Синтаксис и семантика
При описании функционального программирования, как правило, рассматривают так называемое "расширенное лямбда-исчисление".
Константами в расширенном лямбда-исчислении могут быть числа, кортежи, списки, имена предопределенных функций и т. п. Результатом вычисления применения предопределенной функции к аргументам будет значение предопределенной функции в этой "точке". Результатом применения лямбда-абстракции к аргументу будет подстановка аргумента в выражение "тело" лямбда-абстракции. Сами лямбда-абстракции также являются выражениями, и, следовательно, могут быть аргументами. Лямбда-абстракции имеют всего один аргумент. В то же время, функции в традиционном понимании не обязаны быть одноместными.
|
|
Чистое лямбда-исчисление Черча позволяет обходиться исключительно именами параметров, лямбда-абстракциями от одного аргумента и применениями выражений к выражениям. В этих терминах можно описать и "предопределенные" константы (например, числа), структуры данных (например, списки и кортежи), логические значения и ветвление. Более того, в чистом лямбда-исчислении можно обойтись без квалифицированных выражений, и, следовательно, выразить рекурсию, не используя для этого употребления имени функции в теле функции. Некоторые экспериментальные модели функционального программирования позволяют обходиться без каких-либо обозначений объектов (имен) вообще.
Для обеспечения видовой корректности программ в функциональные языки вводят специальные системы типов, ориентированные на поддержку настраиваемости. Как правило, трансляторы функциональных языков могут самостоятельно определять типы выражений, без каких-либо описаний типов вообще. Нередко существует возможность в качестве "списка параметров" для функции указать "образец", успешное сопоставление с которым определяет выражение, которое будет вычисляться.
Так как порядок вычисления подвыражений не имеет значения (поскольку "состояния" у функциональной программы нет), функциональное программирование может быть естественным образом реализовано на платформах, поддерживающих параллелизм. "Потоковая модель" функционального программирования является естественным представлением функциональных программ в терминах систем взаимодействующих процессов.
Дата добавления: 2018-05-12; просмотров: 471; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!