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

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

Содержание

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

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


Слайд 1


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

Слайд 2


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

Слайд 15


Функциональный подход Изменяемые данные – нет Разделяемые изменяемые данные – нет Side эффекты – нет Блокировки, синхронизации – нет Межпотоковое...
Описание слайда:
Функциональный подход Изменяемые данные – нет Разделяемые изменяемые данные – нет 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...
Описание слайда:
Носители «Нового» подхода Функциональное программирование 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,...
Описание слайда:
Основные направления развития языков Упрощение технологий (Пример 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...
Описание слайда:
Выворачиваем с изнанки Императивный стиль -> 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...
Описание слайда:
Тяжелое наследие прошлого 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...
Описание слайда:
Выворачиваем с изнанки Паралельное программирование Миграция с lock style на message passing style Использование не мутабельных данных Async First class events

Слайд 32


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

Слайд 38


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

Слайд 39


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



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