- •Вопрос 4. Современные архитектуры вс
- •Vliw архитектура
- •Преимущества и недостатки
- •Реализации
- •Вопрос 5. Развитие вычислительных сетей и телекоммуникаций
- •Вопрос 6. Новые принципы и модели вычислений Параллельные вычисления
- •Параллельные вычисления при помощи модели актеров
- •Распределенные вычисления
- •Понятие модели вычислений
- •Модели Тьюринга
- •Вопрос 7. Новые парадигмы программирования
- •Языко-ориентированное программирование
- •Аспектно-ориентированное программирование
- •Агентно-ориентированное программирование
- •Вопрос 8. Верификация программ
- •Вопрос 9. Системы компьютерной алгебры
- •Вопрос 10. Компьютерная графика. 4d технологии
- •Вопрос 11. Синергетика и информатика
- •Вопрос 12. Системы искусственного интеллекта
- •Структура интеллектуальной системы
- •Разновидности интеллектуальных систем: интеллектуальные информационно-поисковые системы; экспертные системы (эс); расчетно-логические системы; гибридные экспертные системы.
- •Вопрос 13. Новые технологии извлечения знаний из больших баз данных
- •Обзор алгоритмов data mining
- •8) Эволюционное программирование
- •Вопрос 14. Задачи, модели и проблемы человеко-машинного взаимодействия
- •Вопрос 15. Тенденции и перспективы развития информатики и вт
- •Вопрос 16. Правовые, экономические, социальные и психологические аспекты информатизации деятельности человека
Вопрос 7. Новые парадигмы программирования
Парадигма программирования (стиль программирования)— это совокупность подходов, методов, стратегий, идей и понятий, используемых при написании программ.
Парадигмы программирования занимают важное место в технологии разработки программного обеспечения. Именно вокруг них начинают выстраиваться и развиваться методологические концепции. Такая роль обуславливается тем, что возникающие новые идеи по созданию программ первоначально реализуются в простых инструментах, поддерживающих исследование и экспериментальную проверку выдвигаемого стиля. Чаще всего в качестве инструментов выступают языки программирования. Если разработанная парадигма не способна служить основой промышленной методологии, она отвергается или применяется в ограниченных масштабах.
Можно выделить следующие парадигмы «классические» программирования:
императивное программирование;
функциональное программирование;
логическое программирование;
параллельное программирование;
программирование в ограничениях;
ООП.
Императивное программирование основано на командах, которые обновляют и изменяют значение переменных. «Три кита» ООП: Инкапсуляция; Наследование; Полиморфизм.
Инкапсуляция - это механизм, который объединяет данные и код, манипулирующий этими данными, а также защищает и то, и другое от внешнего вмешательства или неправильного использования.
Наследование - это процесс, посредством которого один объект может приобретать свойства другого. Точнее, объект может наследовать основные свойства другого объекта и добавлять к ним черты, характерные только для него.
Полиморфизм - это свойство, которое позволяет одно и то же имя использовать для решения двух или более схожих, но технически разных задач. Целью полиморфизма, применительно к объектно-ориентированному программированию, является использование одного имени для задания общих для класса действий.
Функциональное программирование представляет одну из альтернатив императивному подходу. Функциональные программы являются выражениями, исполнение программ заключается в вычислении этих выражений. Данная парадигма основана на более естественном (чем машина Тьюринга) с математической точки зрения формализме - лямбда-исчислении Черча.
В логическом программировании программа представляет из себя некоторую теорию (описанную на достаточно ограниченном языке), и утверждение, которое нужно доказать. В доказательстве этого утверждения и будет заключаться исполнение программы. Основной язык – Пролог.
К недавно появившимся парадигмам программирования можно отнести:
языко-ориентированное программирование;
аспектно-ориентированное программирование;
агентно-ориентированное программирование.
Языко-ориентированное программирование
Любой язык общего назначения, будь то Java или C++, дает возможность сделать с компьютером что угодно. Это так, по крайней мере, в теории, но языки общего назначения недостаточно продуктивны. Как альтернатива, существуют языки, специфичные для предметной области (DSL, они же “малые языки”), чья цель – максимальная продуктивность в своей области – как, например, SQL для баз данных. Сила этих языков – специфичность для предметной области – в то же время и их слабость, ведь реальные программы работают с множеством предметных областей.
Мотивация создания ЯОП приблизительно такова: нужна возможность работать в терминах концепций и понятий проблемы, которую необходимо решить, вместо того чтобы переводить свои мысли в нотацию языка программирования общего назначения (классы, методы, циклы, ветвления и т.п.).