Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Определение и краткая история функционального программирования

Лекция 1Определение и краткая история функционального программирования
Факультет инноваций и высоких технологийМосковский физико-технический институтФункциональное программирование Лекция 1Определение и краткая история функционального программирования Обо мнеМайкрософт Россия, академический евангелистКандидат физ.-мат. наукРаспределенные интеллектуальные системы с явным представлением Какие языки программирования вы знаете?Assembler (x86, …)C, C++, C#, JavaPascal…Brainfuck?FORTH?LISP, FP, ML, Haskell, OCaml, F#, … Немного истории Функциональное программированиеПарадигма программирования, которая рассматривает выполнение программы как вычисление математических функций (выражений)Неизменяемые «Классическое программирование»Императивное – мы говорим компьютеру, как решать задачу (что делать)Основной акцент Обратимся к историиПервый язык программирования высокого уровня – ФОРТРАН – был создан Светлая сторона силы!Позже Дж.Бэкус пошел дальше и предложил язык FP, в котором Посмотрим пример!Вычисление факториала:function fact(x:integer):integer;var i, r : integer;begin r:=1; for i:=1 to Что особенного?Определение функции похоже на математическое определение факториалаФункциональное программирование имеет очень четкую Функциональный стильЭто не «чистая» императивная программа.В «чистых» императивных языках (ФОРТРАН) нет рекурсииНет
Слайды презентации

Слайд 2 Лекция 1
Определение и краткая история функционального программирования

Лекция 1Определение и краткая история функционального программирования

Слайд 3 Обо мне
Майкрософт Россия, академический евангелист
Кандидат физ.-мат. наук
Распределенные интеллектуальные

Обо мнеМайкрософт Россия, академический евангелистКандидат физ.-мат. наукРаспределенные интеллектуальные системы с явным

системы с явным представлением знаний
Интеллектуальная реструктуризация социальных сетей на

основе онтологий
Семантически-ориентированые системы (Semantic Wiki)
Кафедра Вычислительной математики и программирования МАИ (доцент)
Логическое программирование
Искусственный интеллект
Студенческая лаборатория MAILabs (www.mailabs.ru)
ФИВТ

http://blogs.gotdotnet.ru/personal/sos


Слайд 4 Какие языки программирования вы знаете?
Assembler (x86, …)
C, C++,

Какие языки программирования вы знаете?Assembler (x86, …)C, C++, C#, JavaPascal…Brainfuck?FORTH?LISP, FP, ML, Haskell, OCaml, F#, …

C#, Java
Pascal


Brainfuck?
FORTH?
LISP, FP, ML, Haskell, OCaml, F#, …


Слайд 5 Немного истории

Немного истории

Слайд 6 Функциональное программирование
Парадигма программирования, которая рассматривает выполнение программы как

Функциональное программированиеПарадигма программирования, которая рассматривает выполнение программы как вычисление математических функций

вычисление математических функций (выражений)
Неизменяемые данные, нет состояния среды
Стиль программирования,

позволяющий писать программы, свободные от ошибок
Язык программирования F# (и целое семейство «странных» языков вместе с ним: ML, Haskell, …)

Слайд 7 «Классическое программирование»
Императивное – мы говорим компьютеру, как решать

«Классическое программирование»Императивное – мы говорим компьютеру, как решать задачу (что делать)Основной

задачу (что делать)
Основной акцент – манипулирование ячейками памяти
Оператор присваивания
Функции

как способ декомпозиции задачи на более простые

Слайд 8 Обратимся к истории
Первый язык программирования высокого уровня –

Обратимся к историиПервый язык программирования высокого уровня – ФОРТРАН – был

ФОРТРАН – был создан Дж.Бэкусом, чтобы математики могли программировать

на уровне формул.

1950

• программирование переключателей

• машинные коды

• язык ассемблера

• FORTRAN

1960

1970

1980

1990

2000

2010

1954-57 г., Дж.Бэкус

0000 0A 12 1F 4B C3 E0 EE F1
0008 C3 1D 23 17 F2 00 0C 0D
0010 …

MOV AX, [ARG1]
ADD AX, [ARG2]
MOV [RES], AX
JMP NEXT
ARG1: DB 10
ARG2: DB 20
RES: DB 0
NEXT: …

S = 0
DO 10 I=1,10
S = S + I*I
10 CONTINUE


Слайд 9 Светлая сторона силы!
Позже Дж.Бэкус пошел дальше и предложил

Светлая сторона силы!Позже Дж.Бэкус пошел дальше и предложил язык FP, в

язык FP, в котором формулы более соответствовали математическому понятию

функции

• программирование переключателей

• машинные коды

• язык ассемблера

• FORTRAN

1977 г., Дж.Бэкус

def fac = eq 0 → 1;
*○[id,fac○(-○ [id,1])]

(defun factorial (n)
(if (<= n 1) 1
(* n (factorial (- n 1)))))

1950

1960

1970

1980

1990

2000

2010

♦ FP

♦ LISP

1958 г., Дж.Маккарти


Слайд 10 Посмотрим пример!
Вычисление факториала:
function fact(x:integer):integer;
var i, r : integer;
begin

Посмотрим пример!Вычисление факториала:function fact(x:integer):integer;var i, r : integer;begin r:=1; for i:=1

r:=1;
for i:=1 to x do r:=r*i;
fact:=r
end;
let rec

fact x =
if x=1 then 1
else x*fact(x-1);;

let rec fact = function
1 -> 1
| x -> x*fact(x-1);;

Pascal

F#



Слайд 11 Что особенного?
Определение функции похоже на математическое определение факториала
Функциональное

Что особенного?Определение функции похоже на математическое определение факториалаФункциональное программирование имеет очень

программирование имеет очень четкую математическую основу
Рассуждение о программах: доказательство

корректности, …
Определение последовательности действий – рекурсивно
При умелом программировании не ведет к падению эффективности (компилятор сводит к итерации)
Отсутствует оператор присваивания
let имеет другую семантику – связывание имен
Будучи один раз связанным, имя не может менять свое значение (в рамках области видимости)
А это значит – нет побочных эффектов!
Раз в императивной программе 90% - это операторы присваивания, то функциональные программы на 90% короче!


  • Имя файла: opredelenie-i-kratkaya-istoriya-funktsionalnogo-programmirovaniya.pptx
  • Количество просмотров: 111
  • Количество скачиваний: 0