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

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


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

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

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

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

Презентация на тему Функциональное программирование в реальной жизни

Содержание

Лекция 4Функциональное программирование в реальной жизни
Факультет инноваций и высоких технологийМосковский физико-технический институтФункциональное программирование Лекция 4Функциональное программирование в реальной жизни Множество  Мандельброта Определениеzn+1(c)= zn2(c)+c, z0(c)=0; z ∈CM = { c ∈ C | lim zn(c) Реализация F#let mandelf (c:Complex) (z:Complex) = z*z+c;;let ismandel c = Complex.Abs(repeatN 20 WinForms#lightopen System.Drawingopen System.Windows.Formslet form =  let image = new Bitmap(400, 400) Результат Где сейчас используется ФП?Mainstream языки программирования:C# 3.0, следующий стандарт C++ Java.next (Clojure, Groovy, JRuby, Scala)LINQXSLTExcel Spreadsheets ФП в реальных проектахAutocademacs (LISP)HeVeAПроекты в рамках Microsoft и MSRF# CompilerDriver code verificationAdCenter Challenge Cash-cow of SearchSelling “web space” at www.live.comSelling “web space” at www.live.com and Внутреннее соревнование4 месяца на программирование1 месяц на обучениеЗадача:		На основе обучающих данных за Масштаб проблемыОбъем входных данных7,000,000,000 записые, 6 терабайтВремя ЦП на обучение: 2 недели Решение4 недели кодирования, 4 эксперта в области Machine Learning100 миллионов вероятностных переменныхОбработано Наблюдения Какие задачи хорошо решаются на функциональных языках?Обработка данныхСинтаксический разборКомпиляторы, преобразования программData MiningТрадиционное Особенности ФПОтсутствие операторов присваивания и побочных эффектовФункции-как-данные – между функциями и данными О курсе Что будем изучатьПринципы функционального программированияМатематическая теория в основе функционального программирования – λ-исчислениеСемантика Что нас ждет?Лекции – 14 шт. (по 2 шт. раз в 2 Критерии оценкиЭкзамен (письменный, 5 вопросов) – 50%Лабораторные работы – 25% - ОБЯЗАТЕЛЬНОЕ!Самостоятельная Варианты самостоятельной работыНаучно-исследовательская работаВыполнение полу-исследовательского проектаВыступление с докладом (15-20 мин.)Функциональное программирование в Источники Источникиhttp://functional.soshnikov.comФилд А., Харрисон П. Функциональное программирование. – М.: Мир, 1993.Harrison, J. Introduction
Слайды презентации

Слайд 2 Лекция 4
Функциональное программирование в реальной жизни


Лекция 4Функциональное программирование в реальной жизни

Слайд 3 Множество Мандельброта

Множество Мандельброта

Слайд 4 Определение
zn+1(c)= zn2(c)+c, z0(c)=0; z ∈C
M = { c

Определениеzn+1(c)= zn2(c)+c, z0(c)=0; z ∈CM = { c ∈ C | lim zn(c)

∈ C | lim zn(c)

| |z20(0)|<1 }

Слайд 5 Реализация F#
let mandelf (c:Complex) (z:Complex) = z*z+c;;

let ismandel

Реализация F#let mandelf (c:Complex) (z:Complex) = z*z+c;;let ismandel c = Complex.Abs(repeatN

c = Complex.Abs(repeatN 20 (mandelf c) (Complex.zero))

a b f =
if a>=b then f(b)
else
begin f(a); forl (a+1) b f end ;;

let scale (x:float,y:float) (u,v) n = float(n-u)/float(v-u)*(y-x)+x;;

forl 1 60 (fun i ->
forl 1 60 (fun j ->
let lscale = scale (-1.2,1.2) (1,60) in
let t = complex (lscale j) (lscale i) in
Console.Write(if ismandel t then "*" else " ")
);
Console.WriteLine("")
);;

Слайд 6 WinForms
#light
open System.Drawing
open System.Windows.Forms

let form =
let image

WinForms#lightopen System.Drawingopen System.Windows.Formslet form = let image = new Bitmap(400, 400)

= new Bitmap(400, 400)
let lscale = scale

(-1.0,1.0) (0,400)
forl 0 (image.Height-1) (fun i ->
forl 0 (image.Width-1) (fun j ->
let t = complex (lscale i) (lscale j) in
image.SetPixel(i,j,if ismandel t then Color.Black else Color.White)
))
let temp = new Form()
temp.Paint.Add(fun e -> e.Graphics.DrawImage(image, 0, 0))
temp

[]
do Application.Run(form);;

Слайд 7 Результат

Результат

Слайд 8 Где сейчас используется ФП?
Mainstream языки программирования:
C# 3.0, следующий

Где сейчас используется ФП?Mainstream языки программирования:C# 3.0, следующий стандарт C++ Java.next (Clojure, Groovy, JRuby, Scala)LINQXSLTExcel Spreadsheets

стандарт C++
Java.next (Clojure, Groovy, JRuby, Scala)
LINQ
XSLT
Excel Spreadsheets


Слайд 9 ФП в реальных проектах
Autocad
emacs (LISP)
HeVeA
Проекты в рамках Microsoft

ФП в реальных проектахAutocademacs (LISP)HeVeAПроекты в рамках Microsoft и MSRF# CompilerDriver code verificationAdCenter Challenge

и MSR
F# Compiler
Driver code verification
AdCenter Challenge


Слайд 10 Cash-cow of Search
Selling “web space” at www.live.comSelling “web

Cash-cow of SearchSelling “web space” at www.live.comSelling “web space” at www.live.com

space” at www.live.com and www.msn.com.
“Paid Search” (prices by

auctions)
The internal competition focuses on Paid Search.



The adCenter Challenge


Слайд 11 Внутреннее соревнование
4 месяца на программирование
1 месяц на обучение
Задача:
На

Внутреннее соревнование4 месяца на программирование1 месяц на обучениеЗадача:		На основе обучающих данных

основе обучающих данных за несколько недель (просмотры страниц) предсказывать

вероятность перехода по ссылке
Ресурсы:
4 (2 x 2) 64-bit CPU machine
16 Гб ОП
200 Гб НЖМД

Слайд 12 Масштаб проблемы
Объем входных данных
7,000,000,000 записые, 6 терабайт
Время ЦП

Масштаб проблемыОбъем входных данных7,000,000,000 записые, 6 терабайтВремя ЦП на обучение: 2

на обучение:
2 недели × 7 дней × 86,400

сек/день =
1,209,600 секунд
Требования к алгоритму обучения:
5,787 записей / сек
172.8 μs на одну запись

Слайд 13 Решение
4 недели кодирования, 4 эксперта в области Machine

Решение4 недели кодирования, 4 эксперта в области Machine Learning100 миллионов вероятностных

Learning
100 миллионов вероятностных переменных
Обработано 6 терабайт обучающих данных
Обработка в

реальном времени!



Слайд 14 Наблюдения

Наблюдения

Слайд 15 Какие задачи хорошо решаются на функциональных языках?
Обработка данных
Синтаксический

Какие задачи хорошо решаются на функциональных языках?Обработка данныхСинтаксический разборКомпиляторы, преобразования программData

разбор
Компиляторы, преобразования программ
Data Mining
Традиционное мнение: плохо решаются UI-задачи
Смотрим пример!


Слайд 16 Особенности ФП
Отсутствие операторов присваивания и побочных эффектов
Функции-как-данные –

Особенности ФПОтсутствие операторов присваивания и побочных эффектовФункции-как-данные – между функциями и

между функциями и данными не делается явного различия, в

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


Слайд 17 О курсе

О курсе

Слайд 18 Что будем изучать
Принципы функционального программирования
Математическая теория в основе

Что будем изучатьПринципы функционального программированияМатематическая теория в основе функционального программирования –

функционального программирования – λ-исчисление
Семантика функциональных языков, вопросы реализации
Языки функционального

программирования:
Базовый язык - F#
Семейство ML-языков: OCaml, Caml Light, ML, SML
Другие похожие языки: Haskell, Hope, …
Классика ФП – LISP
Примеры на C#, XSLT, …

Слайд 19 Что нас ждет?
Лекции – 14 шт. (по 2

Что нас ждет?Лекции – 14 шт. (по 2 шт. раз в

шт. раз в 2 недели)
Интерактивные занятия – 2 шт.


Доклады
Обсуждения
Семинары
по подгруппам, по 1 паре, раз в 2 недели
Лабораторные работы (6-8 шт.)
выполняются дома самостоятельно

http://functional.soshnikov.com

Слайд 20 Критерии оценки
Экзамен (письменный, 5 вопросов) – 50%
Лабораторные работы

Критерии оценкиЭкзамен (письменный, 5 вопросов) – 50%Лабораторные работы – 25% -

– 25% - ОБЯЗАТЕЛЬНОЕ!
Самостоятельная работа (доклады, выступления на семинарах,

вопросы, дополнительная работа) – 25%

5 – 75%
4 – 60%
3 – 50%

Слайд 21 Варианты самостоятельной работы
Научно-исследовательская работа
Выполнение полу-исследовательского проекта
Выступление с докладом

Варианты самостоятельной работыНаучно-исследовательская работаВыполнение полу-исследовательского проектаВыступление с докладом (15-20 мин.)Функциональное программирование

(15-20 мин.)
Функциональное программирование в реальном мире
Разбор масштабного примера (Fractal-3D,

график функции)
Обзор библиотеки / fsharp samples
Обзор языка функционального программирования
Функционально-стековый язык catl

Слайд 22 Источники

Источники

  • Имя файла: funktsionalnoe-programmirovanie-v-realnoy-zhizni.pptx
  • Количество просмотров: 137
  • Количество скачиваний: 0