Сошников Дмитрий Валерьевич к.ф.-м.н., доцент dmitryso@microsoft.com Факультет инноваций и высоких технологий Московский физико-технический институт.

Презентация:



Advertisements
Похожие презентации
Сошников Дмитрий Валерьевич к.ф.-м.н., доцент Факультет Прикладной математики и физики Кафедра Вычислительной математики и программирования.
Advertisements

Языки программирования Дмитрий Сошников
Сошников Дмитрий Валерьевич к.ф.-м.н., доцент Факультет инноваций и высоких технологий Московский физико-технический институт.
Сошников Дмитрий Валерьевич к.ф.-м.н., доцент Факультет инноваций и высоких технологий Московский физико-технический институт.
Сошников Дмитрий Валерьевич к.ф.-м.н., доцент Сошников Д.В. Факультет инноваций и высоких технологий Московский физико-технический.
ВЫПОЛНЕНИЕ АЛГОРИТМОВ КОМПЬЮТЕРОМ. Алгоритм, записанный на «понятном» компьютеру языке программирования, называется программой. Программа данные, предназначенные.
Сошников Дмитрий Валерьевич к.ф.-м.н., доцент Сошников Д.В. Факультет инноваций и высоких технологий Московский физико-технический.
Введение в предмет Лекция 1 Парадигмы и стили программирования.
Сошников Дмитрий Валерьевич к.ф.-м.н., доцент Факультет инноваций и высоких технологий Московский физико-технический институт.
Сошников Дмитрий Валерьевич к.ф.-м.н., доцент Факультет инноваций и высоких технологий Московский физико-технический институт.
Функциональное программирование Язык программирования F#.NET.
Дисциплина по выбору Кафедра ИиП Авторы курса – к.т.н. Синицын Иван Васильевич, к.т.н. Крахмалев Дмитрий Владимирович.
Классификация. Язык программирования – это фиксированная система обозначений и правил, предназначенная для описания алгоритмов и структур данных.
Парадигмы программирования Денис С. Мигинский. Понятие парадигмы Парадигма (философия науки) – устоявшаяся система научных взглядов, в рамках которой.
Языки и методы программирования Преподаватель – доцент каф. ИТиМПИ Кузнецова Е.М. Лекция 2.
Тема 15. Этапы подготовки и решения задач на ЭВМ.
Функциональное программирование Доклад на семинаре по специальности Студент гр.4057/2 Олег Хабаров
Этапы решения задач на компьютере 1. Постановка задачи. 2. Построение математической модели. 3. Составление алгоритма. 4. Запись алгоритма на языке программирования(кодирование)
Обзор парадигм программирования. План 1. Структурное программирование 2. Объектно-ориентированное программирование 3. Функциональное программирование.
Сучасні проблеми інформатики Лекція 5 Парадигми програмування.
Транксрипт:

Сошников Дмитрий Валерьевич к.ф.-м.н., доцент Факультет инноваций и высоких технологий Московский физико-технический институт

2 Лекция 3 Парадигмы программирования

3

©2008 Сошников Д.В. 4 Императивное (алгоритмическое) Машина Тьюринга, Машина фон Неймана Pascal, C и т.д. Аппликативное (функциональное) λ-исчисление, рекурсивные функции F#, LISP / Scheme, ML и друзья, Haskell Декларативное (логическое) Логика предикатов 1-го порядка Prolog, … Объектное, компонентное, многоагентное (эмерджентое) Синергетика, теория сложных систем Ситуационное (продукционное) Нормальные алгоритмы МарковаРефал

©2008 Сошников Д.В. 5 Императивные языки Оперируют состоянием памяти. Выполнение операторов изменяет состояние. Функциональные языки Оперируют данными. Применение функции к аргументам изменяет данные. Подход, ориентированный на данные. Логические языки Оперируют пространством поиска решений.

©2008 Сошников Д.В. 6 программирование переключателей машинные коды язык ассемблера FORTRAN FP LISP С, Pascal С++ Java C# Haskell Prolog Mercury F# OCaml ML Miranda Python ? ?

©2008 Сошников Д.В. 7 C# - императивный (ОО) + элементы функциональности F# - функциональный с элементами императивности Mercury – функционально-логический Oz Python …

8

©2008 Сошников Д.В. 9 СЛОЖНОСТЬ - Сложность окружающего мира влияет на сложность программных систем - Параллелизм – необходимость писать параллельный код резко увеличивает сложность - Сложная система => большее количество ошибок, резко возрастает стоимость качественного кода + Сложность удается частично скрыть с помощью инструментов разработки (пример: языки высокого уровня) + Software Factories, Domain-Specific Languages Актуальность этих проблем быстро растет со временем

©2008 Сошников Д.В. 10 Множество способов комбинирования дает дополнительное преимущество в борьбе со сложностью Можно эксплуатировать как декомпозицию, так и функциональную абстракцию Отсутствие побочных эффектов резко снижает затраты на тестирование и отладку Декларативный стиль перекладывает существенную часть решения на компилятор (пример: суммирование четных эл-тов списка) Функциональный код явно описывает зависимости по данным, позволяя более эффективно распараллеливать код (пример: суммирование четных эл-тов списка)