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

Категория: Технологии
Нажмите для полного просмотра!
F# функциональный язык «новой» волны  Артем Присяжнюк  Kiev ALT.NET 2010, слайд №1F# функциональный язык «новой» волны  Артем Присяжнюк  Kiev ALT.NET 2010, слайд №2F# функциональный язык «новой» волны  Артем Присяжнюк  Kiev ALT.NET 2010, слайд №3F# функциональный язык «новой» волны  Артем Присяжнюк  Kiev ALT.NET 2010, слайд №4F# функциональный язык «новой» волны  Артем Присяжнюк  Kiev ALT.NET 2010, слайд №5F# функциональный язык «новой» волны  Артем Присяжнюк  Kiev ALT.NET 2010, слайд №6F# функциональный язык «новой» волны  Артем Присяжнюк  Kiev ALT.NET 2010, слайд №7F# функциональный язык «новой» волны  Артем Присяжнюк  Kiev ALT.NET 2010, слайд №8F# функциональный язык «новой» волны  Артем Присяжнюк  Kiev ALT.NET 2010, слайд №9F# функциональный язык «новой» волны  Артем Присяжнюк  Kiev ALT.NET 2010, слайд №10F# функциональный язык «новой» волны  Артем Присяжнюк  Kiev ALT.NET 2010, слайд №11F# функциональный язык «новой» волны  Артем Присяжнюк  Kiev ALT.NET 2010, слайд №12F# функциональный язык «новой» волны  Артем Присяжнюк  Kiev ALT.NET 2010, слайд №13F# функциональный язык «новой» волны  Артем Присяжнюк  Kiev ALT.NET 2010, слайд №14F# функциональный язык «новой» волны  Артем Присяжнюк  Kiev ALT.NET 2010, слайд №15F# функциональный язык «новой» волны  Артем Присяжнюк  Kiev ALT.NET 2010, слайд №16F# функциональный язык «новой» волны  Артем Присяжнюк  Kiev ALT.NET 2010, слайд №17F# функциональный язык «новой» волны  Артем Присяжнюк  Kiev ALT.NET 2010, слайд №18F# функциональный язык «новой» волны  Артем Присяжнюк  Kiev ALT.NET 2010, слайд №19F# функциональный язык «новой» волны  Артем Присяжнюк  Kiev ALT.NET 2010, слайд №20F# функциональный язык «новой» волны  Артем Присяжнюк  Kiev ALT.NET 2010, слайд №21F# функциональный язык «новой» волны  Артем Присяжнюк  Kiev ALT.NET 2010, слайд №22F# функциональный язык «новой» волны  Артем Присяжнюк  Kiev ALT.NET 2010, слайд №23F# функциональный язык «новой» волны  Артем Присяжнюк  Kiev ALT.NET 2010, слайд №24F# функциональный язык «новой» волны  Артем Присяжнюк  Kiev ALT.NET 2010, слайд №25F# функциональный язык «новой» волны  Артем Присяжнюк  Kiev ALT.NET 2010, слайд №26F# функциональный язык «новой» волны  Артем Присяжнюк  Kiev ALT.NET 2010, слайд №27F# функциональный язык «новой» волны  Артем Присяжнюк  Kiev ALT.NET 2010, слайд №28F# функциональный язык «новой» волны  Артем Присяжнюк  Kiev ALT.NET 2010, слайд №29F# функциональный язык «новой» волны  Артем Присяжнюк  Kiev ALT.NET 2010, слайд №30F# функциональный язык «новой» волны  Артем Присяжнюк  Kiev ALT.NET 2010, слайд №31F# функциональный язык «новой» волны  Артем Присяжнюк  Kiev ALT.NET 2010, слайд №32F# функциональный язык «новой» волны  Артем Присяжнюк  Kiev ALT.NET 2010, слайд №33F# функциональный язык «новой» волны  Артем Присяжнюк  Kiev ALT.NET 2010, слайд №34F# функциональный язык «новой» волны  Артем Присяжнюк  Kiev ALT.NET 2010, слайд №35F# функциональный язык «новой» волны  Артем Присяжнюк  Kiev ALT.NET 2010, слайд №36F# функциональный язык «новой» волны  Артем Присяжнюк  Kiev ALT.NET 2010, слайд №37F# функциональный язык «новой» волны  Артем Присяжнюк  Kiev ALT.NET 2010, слайд №38F# функциональный язык «новой» волны  Артем Присяжнюк  Kiev ALT.NET 2010, слайд №39

Содержание

Вы можете ознакомиться и скачать F# функциональный язык «новой» волны Артем Присяжнюк Kiev ALT.NET 2010. Презентация содержит 39 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

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


Слайд 1





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

Слайд 2





Представлюсь
Артем Присяжнюк
Технический директор компании ХостТрекер
Опыт работы с ФЯ – 10 лет (Ocaml, F#)
ХостТрекер – распределенная система мониторинга доступности сайтов
 a.p@host-tracker.com
http://host-tracker.com
Описание слайда:
Представлюсь Артем Присяжнюк Технический директор компании ХостТрекер Опыт работы с ФЯ – 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


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

Слайд 5





Текущий тренд в железе – мультиядерность
Вместо роста ввысь 
рост в ширь
Описание слайда:
Текущий тренд в железе – мультиядерность Вместо роста ввысь рост в ширь

Слайд 6





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

Слайд 7





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

Слайд 8





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

Слайд 9


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

Слайд 10





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

Слайд 11





Поддержка параллелизма
«Старый» подход
Описание слайда:
Поддержка параллелизма «Старый» подход

Слайд 12





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

Слайд 13





Mutable shared state
Описание слайда:
Mutable shared state

Слайд 14





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

Слайд 15





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

Слайд 16





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

Слайд 17





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

Слайд 18





Носители «Нового» подхода
Функциональное программирование
Agent & message-passing style programming (Erlang)
Async
Cω
Axum
LINQ, PLINQ
Rx Framework
Task Parallel library
C# 
F#
Описание слайда:
Носители «Нового» подхода Функциональное программирование Agent & message-passing style programming (Erlang) Async Cω Axum LINQ, PLINQ Rx Framework Task Parallel library C# F#

Слайд 19





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

Слайд 20





История F# (2002)
Haskell 1990
Seq 
Workflow (aka Монады)
List comprehensions
Python 1990
List comprehensions
Whitespace indentation
Описание слайда:
История F# (2002) Haskell 1990 Seq Workflow (aka Монады) List comprehensions Python 1990 List comprehensions Whitespace indentation

Слайд 21





Развитие языков
Описание слайда:
Развитие языков

Слайд 22





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

Слайд 23





FP, F#, Haskell & друзья как источник идей
Движение концепций F# -> C#
Generics
Lambda
LINQ (former monads)
Type inference
Async
List comprehension
?
Описание слайда:
FP, F#, Haskell & друзья как источник идей Движение концепций F# -> C# Generics Lambda LINQ (former monads) Type inference Async List comprehension ?

Слайд 24





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

Слайд 25





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

Слайд 26





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

Слайд 27





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

Слайд 28





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

Слайд 29





Выворачиваем с изнанки 
Императивный стиль -> 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
Описание слайда:
Выворачиваем с изнанки Императивный стиль -> 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 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
Описание слайда:
Тяжелое наследие прошлого 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 style
Использование не мутабельных данных
Async
First class events
Описание слайда:
Выворачиваем с изнанки Паралельное программирование Миграция с lock style на message passing style Использование не мутабельных данных Async First class events

Слайд 32





Асинхронная обработка
Ключ к построению производительных, хорошо масштабируемых систем;
Уши растут из I/O Completion Ports, который очень сложен в использовании;
.NET – асинхронность через BeginXXX, EndXXX. Все равно достаточно сложно. Логика расползается.
Описание слайда:
Асинхронная обработка Ключ к построению производительных, хорошо масштабируемых систем; Уши растут из 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 с очередью, через который он получает сообщения из вне;
Агенты могут посылать сообщения как другим агентам, так и себе;
У каждого агента есть внутреннее состояние (аналогия с контролем версий)
Описание слайда:
Mailbox processing & Message passing style У нас очень много легких агентов которые выполняют некоторую работу; У каждого агента есть Mailbox с очередью, через который он получает сообщения из вне; Агенты могут посылать сообщения как другим агентам, так и себе; У каждого агента есть внутреннее состояние (аналогия с контролем версий)

Слайд 37





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

Слайд 38





Demo
Описание слайда:
Demo

Слайд 39





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



Похожие презентации
Mypresentation.ru
Загрузить презентацию