Презентация на тему F# функциональный язык новой волны

Презентация на тему Презентация на тему F# функциональный язык новой волны, предмет презентации: Образование. Этот материал содержит 39 слайдов. Красочные слайды и илюстрации помогут Вам заинтересовать свою аудиторию. Для просмотра воспользуйтесь проигрывателем, если материал оказался полезным для Вас - поделитесь им с друзьями с помощью социальных кнопок и добавьте наш сайт презентаций ThePresentation.ru в закладки!

Слайды и текст этой презентации

Слайд 1
F# функциональный язык «новой» волныАртем ПрисяжнюкKiev ALT.NET 2010
Текст слайда:

F# функциональный язык «новой» волны


Артем Присяжнюк
Kiev ALT.NET 2010


Слайд 2
ПредставлюсьАртем ПрисяжнюкТехнический директор компании ХостТрекерОпыт работы с ФЯ – 10 лет
Текст слайда:

Представлюсь

Артем Присяжнюк
Технический директор компании ХостТрекер
Опыт работы с ФЯ – 10 лет (Ocaml, F#)

ХостТрекер – распределенная система мониторинга доступности сайтов
a.p@host-tracker.com
http://host-tracker.com


Слайд 3
Рожденные в 2000-х F#(2002)Scala (2003)Nemerle (2005)Clojure (2007)C#/VB.NET LINQ/PLINQ, lambdaФЯ от Intel. 2011?Явный уклон в функциональшину
Текст слайда:

Рожденные в 2000-х

F#(2002)
Scala (2003)
Nemerle (2005)
Clojure (2007)
C#/VB.NET LINQ/PLINQ, lambda
ФЯ от Intel. 2011?
Явный уклон в функциональшину


Слайд 4
Это ж-ж-ж неспроста!
Текст слайда:


Это ж-ж-ж неспроста!


Слайд 5
Текущий тренд в железе – мультиядерностьВместо роста ввысь рост в ширьКоличество CPUГерцы
Текст слайда:

Текущий тренд в железе – мультиядерность

Вместо роста ввысь
рост в ширь

Количество CPU


Герцы



Слайд 6
Две основные тенденцииПриход MultyCPU-систем в широкие массы На «десктопе» теперь по
Текст слайда:

Две основные тенденции

Приход MultyCPU-систем в широкие массы На «десктопе» теперь по идее можно решать более «тяжелые» задачи;
Приход масс в интернет Нужны высоконагруженные, высокопроизводительные системы.


Слайд 7
Нужны «эффективные» программы «заточенные» под мультиядерность. В идеале, на N CPU
Текст слайда:

Нужны «эффективные» программы «заточенные» под мультиядерность.
В идеале, на N CPU система должна:
работать в N раз быстрее;
обслуживать в N раз больше пользователей;
выполнять в N раз больше транзакций.


Слайд 8
Старые подходы не оправдали себяРазвития софта не успевает за развитием железа;Софт
Текст слайда:

Старые подходы не оправдали себя

Развития софта не успевает за развитием железа;
Софт не эффективно работает на новом железе;
Плохо масштабируется;
С ростом сложности систем, сложность программ растет экспоненциально.


Слайд 9
Текст слайда:




Слайд 10
Параллельное программирование вышло в массы Нужны языки/платформы/инструменты «с человеческим лицом» для
Текст слайда:

Параллельное программирование вышло в массы

Нужны языки/платформы/инструменты «с человеческим лицом» для разработки многопотоковых программ;
Появление новых ФЯ программирования, дает надежду на появление новых таковых.


Слайд 11
Поддержка параллелизма«Старый» подходУровень примитивов сторонних библиотек, ядра ОС«Новый» подходУровень парадигмы самого языка
Текст слайда:

Поддержка параллелизма

«Старый» подход

Уровень примитивов сторонних библиотек, ядра ОС

«Новый» подход

Уровень парадигмы самого языка


Слайд 12
Императивный подходИзменяемые данные - даРазделяемые изменяемые данные - даSide эффекты –
Текст слайда:

Императивный подход

Изменяемые данные - да
Разделяемые изменяемые данные - да
Side эффекты – да
Блокировки, синхронизации – да
Межпотоковое взаимодействие – разделяемые ресурсы


Слайд 13
Mutable shared state
Текст слайда:

Mutable shared state



Слайд 14
Проблемы с блокировками и разделяемыми ресурсамиМало блокировокМного блокировокНеправильное использование блокировокБлокировки в
Текст слайда:

Проблемы с блокировками и разделяемыми ресурсами

Мало блокировок
Много блокировок
Неправильное использование блокировок
Блокировки в неверном порядке
Следствия
Dead-lock-и
Нарушение целостности данных
Race condition
Плохая повторяемость (трудность отладки)


Слайд 15
Функциональный подходИзменяемые данные – нетРазделяемые изменяемые данные – нетSide эффекты –
Текст слайда:

Функциональный подход

Изменяемые данные – нет
Разделяемые изменяемые данные – нет
Side эффекты – нет
Блокировки, синхронизации – нет
Межпотоковое взаимодействие – сообщения, Map/Reduce



Слайд 16
Кто использовал функциональное программирование на практике?
Текст слайда:

Кто использовал функциональное программирование на практике?



Слайд 17
Кто использовал функциональное программирование на практике?Электронные таблицы (Excel)XSLTSQL
Текст слайда:

Кто использовал функциональное программирование на практике?

Электронные таблицы (Excel)
XSLT
SQL


Слайд 18
Носители «Нового» подходаФункциональное программированиеAgent & message-passing style programming (Erlang)AsyncCωAxumLINQ, PLINQRx FrameworkTask Parallel libraryC# F#
Текст слайда:

Носители «Нового» подхода

Функциональное программирование
Agent & message-passing style programming (Erlang)
Async

Axum
LINQ, PLINQ
Rx Framework
Task Parallel library
C#
F#


Слайд 19
История F# (2002)Лямбда-счисление 1936Lisp/Schema 1958ML 1970Hindley–Milner Система типов Ocaml 1996СинтаксисСистема типовКодГенерики
Текст слайда:

История F# (2002)

Лямбда-счисление 1936
Lisp/Schema 1958
ML 1970
Hindley–Milner Система типов

Ocaml 1996
Синтаксис
Система типов
Код
Генерики (Don Syme Привет c# 2.0)
Дон Сайм портировал Ocaml на .NET (2002)


Слайд 20
История F# (2002)Haskell 1990Seq Workflow (aka Монады)List comprehensionsPython 1990List comprehensionsWhitespace indentationErlang 1987Message passing styleParallel processingC#/.NETOO systemFramework
Текст слайда:

История F# (2002)

Haskell 1990
Seq
Workflow (aka Монады)
List comprehensions
Python 1990
List comprehensions
Whitespace indentation

Erlang 1987
Message passing style
Parallel processing
C#/.NET
OO system
Framework


Слайд 21
Развитие языковSafetyUsefulnesC#, VB.NET, JavaLINQHaskellF#Нирвана
Текст слайда:

Развитие языков

Safety


Usefulnes

C#, VB.NET, Java

LINQ

Haskell

F#

Нирвана


Слайд 22
Основные направления развития языковУпрощение технологий (Пример SGML -> XML)Безопасность кодаПеренос рутинных
Текст слайда:

Основные направления развития языков

Упрощение технологий (Пример SGML -> XML)
Безопасность кода
Перенос рутинных задач на компилятор /рантайм (GC, Type inference) ;
Строгая типизация + автоматический вывод типов;
Мета программирование
Макросы - изменение языка
Синтаксис (выразительность, краткость)
Потокобезопасность
Параллелизм - на уровень языка.




Слайд 23
FP, F#, Haskell & друзья как источник идейДвижение концепций F# -> C#GenericsLambdaLINQ (former monads)Type inferenceAsyncList comprehension?
Текст слайда:

FP, F#, Haskell & друзья как источник идей

Движение концепций F# -> C#
Generics
Lambda
LINQ (former monads)
Type inference
Async
List comprehension
?


Слайд 24
F# featuresКраткостьСтрогая, статическая типизацияВыведение типовPattern matchingClousersКортежи (Tuples) CurryingHigh-order functionWorkflows (aka Монады)Async-frameworkQuatationsLazy-evalutionsMulty
Текст слайда:

F# features

Краткость
Строгая, статическая типизация
Выведение типов
Pattern matching
Clousers
Кортежи (Tuples)
Currying
High-order function

Workflows (aka Монады)
Async-framework
Quatations
Lazy-evalutions
Multy paradigm
Good integration with .NET library/family
Multy Platform (Thanks Mono.NET)



Слайд 25
Что нужно чтобы научиться есть палочками?
Текст слайда:

Что нужно чтобы научиться есть палочками?



Слайд 26
Что нужно чтобы научиться есть палочками?Есть палочкамиВыкинуть вилки/ложки
Текст слайда:

Что нужно чтобы научиться есть палочками?

Есть палочками
Выкинуть вилки/ложки


Слайд 27
Что нужно чтобы научится программировать функционально?
Текст слайда:

Что нужно чтобы научится программировать функционально?



Слайд 28
Что нужно чтобы научится программировать функционально?Программировать функционально;Выкинуть из обихода императивные конструкции.
Текст слайда:

Что нужно чтобы научится программировать функционально?

Программировать функционально;
Выкинуть из обихода императивные конструкции.


Слайд 29
Выворачиваем с изнанки  Императивный стиль -> FPX = x +
Текст слайда:

Выворачиваем с изнанки Императивный стиль -> FP

X = x + 1 -> let x = x + 1
For/while -> let rec (tail recursion)
If/switch -> pattern matching
In/out параметры -> tuples
Enum -> variant types
Array -> List
FP style OO
Null -> option type




Слайд 30
Тяжелое наследие прошлогоThread SafetyAny public static ( Shared in Visual Basic) members of this type
Текст слайда:

Тяжелое наследие прошлого


Thread Safety
Any public static ( Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Microsoft Help Library 2010


Слайд 31
Выворачиваем с изнанки Паралельное программированиеМиграция с lock style на message passing
Текст слайда:

Выворачиваем с изнанки Паралельное программирование

Миграция с lock style на message passing style
Использование не мутабельных данных
Async
First class events


Слайд 32
Асинхронная обработкаКлюч к построению производительных, хорошо масштабируемых систем;Уши растут из I/O
Текст слайда:

Асинхронная обработка

Ключ к построению производительных, хорошо масштабируемых систем;
Уши растут из I/O Completion Ports, который очень сложен в использовании;
.NET – асинхронность через BeginXXX, EndXXX. Все равно достаточно сложно. Логика расползается.




Слайд 33
Async-workflowИдея спрятать, BeginXXX и EndXXX для асинхронных операций.Дать программисту такой же
Текст слайда:

Async-workflow

Идея спрятать, BeginXXX и EndXXX для асинхронных операций.
Дать программисту такой же легкий способ выполнять асинхронные операции, как и синхронные.


Слайд 34
Sync code VS Async code
Текст слайда:

Sync code VS Async code


Слайд 35
Erlang Message Passing ConcurrencyМного легких процессов(agents)Нет общего состоянияNo sequential bottlenecksСообщения для
Текст слайда:

Erlang Message Passing Concurrency

Много легких процессов(agents)
Нет общего состояния
No sequential bottlenecks
Сообщения для коммуникации между процессами
Немутабельный состояние - аналогия с системой контроля версий


Слайд 36
Mailbox processing & Message passing styleУ нас очень много легких агентов
Текст слайда:

Mailbox processing & Message passing style

У нас очень много легких агентов которые выполняют некоторую работу;
У каждого агента есть Mailbox с очередью, через который он получает сообщения из вне;
Агенты могут посылать сообщения как другим агентам, так и себе;
У каждого агента есть внутреннее состояние (аналогия с контролем версий)


Слайд 37
Mailbox processing & Message passing styleВся работа происходит асинхронно (Async);Блокирующих операций
Текст слайда:

Mailbox processing & Message passing style

Вся работа происходит асинхронно (Async);
Блокирующих операций нет;
Сотни тысяч агентов могут жить в десятке потоков из ThreadPool;
Все отлично растягивается по доступным процессорам/ядрам


Слайд 38
Demo
Текст слайда:

Demo



Слайд 39
Спасибо за вниманиеВопросы?
Текст слайда:

Спасибо за внимание

Вопросы?


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

Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

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

Что такое ThePresentation.ru?

Это сайт презентаций, докладов, проектов, шаблонов в формате PowerPoint. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами с другими пользователями.


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

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