21
Сошников Дмитрий Валерьевич к.ф.-м.н., доцент [email protected] DevCon 2013 Школа функционального программирования

к.ф. м.н., доцент dmitryso@microsoft 99 - Why FuncPro.pdf · 20 08-13. John Hughes, Why Functional Programming Matters, 1984 Более выразительный язык

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: к.ф. м.н., доцент dmitryso@microsoft 99 - Why FuncPro.pdf · 20 08-13. John Hughes, Why Functional Programming Matters, 1984 Более выразительный язык

Сошников Дмитрий Валерьевичк.ф.-м.н., доцент[email protected]

DevCon 2013Школа функционального программирования

Page 2: к.ф. м.н., доцент dmitryso@microsoft 99 - Why FuncPro.pdf · 20 08-13. John Hughes, Why Functional Programming Matters, 1984 Более выразительный язык

Зачем программировать на функциональных языках

Page 3: к.ф. м.н., доцент dmitryso@microsoft 99 - Why FuncPro.pdf · 20 08-13. John Hughes, Why Functional Programming Matters, 1984 Более выразительный язык

©2008-1

ош

нико

в Д

.В.

John Hughes, Why Functional Programming Matters, 1984

Более выразительный язык (меньше писать, больше думать)

Нет побочных эффектов => нет ошибок

Нет переменных => проще параллелизм

Менее эффективный (сборка мусора)

Нужны более квалифицированные

программисты

+ -

X

Page 4: к.ф. м.н., доцент dmitryso@microsoft 99 - Why FuncPro.pdf · 20 08-13. John Hughes, Why Functional Programming Matters, 1984 Более выразительный язык

©2008-1

ош

нико

в Д

.В.

Cash-cow of Search Selling “web space” at www.live.com

and www.msn.com. “Paid Search” (prices by auctions) The internal competition focuses on

Paid Search.

Page 5: к.ф. м.н., доцент dmitryso@microsoft 99 - Why FuncPro.pdf · 20 08-13. John Hughes, Why Functional Programming Matters, 1984 Более выразительный язык

©2008-1

ош

нико

в Д

.В.

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

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

Ресурсы:4 (2 x 2) 64-bit CPU machine

16 Гб ОП

200 Гб НЖМД

Page 6: к.ф. м.н., доцент dmitryso@microsoft 99 - Why FuncPro.pdf · 20 08-13. John Hughes, Why Functional Programming Matters, 1984 Более выразительный язык

©2008-1

ош

нико

в Д

.В.

Объем входных данных7,000,000,000 записые, 6 терабайт

Время ЦП на обучение: 2 недели × 7 дней × 86,400 сек/день =

1,209,600 секунд Требования к алгоритму обучения:

5,787 записей / сек

172.8 μs на одну запись

Page 7: к.ф. м.н., доцент dmitryso@microsoft 99 - Why FuncPro.pdf · 20 08-13. John Hughes, Why Functional Programming Matters, 1984 Более выразительный язык

©2008-1

ош

нико

в Д

.В.

4 недели кодирования, 4 эксперта в области

Machine Learning

100 миллионов вероятностных переменных

Обработано 6 терабайт обучающих данных

Обработка в реальном времени!

Page 8: к.ф. м.н., доцент dmitryso@microsoft 99 - Why FuncPro.pdf · 20 08-13. John Hughes, Why Functional Programming Matters, 1984 Более выразительный язык

©2008-1

ош

нико

в Д

.В.

Быстрое кодирование

• Вывод типов – меньше печатать, больше думать

Agile-стиль

• Думаем в терминах предметной области, не языка

Скриптинг

• Интерактивное «исследование» данных и тестирование алгоритмов

• Совместно с Excel

Производительность

• Немедленное масштабирование на огромные массивы данных

Экономный расход памяти

• Огромные структуры данных на 16 Гб

Выразительный синтаксис

• Краткий код позволяет легко осуществлять рефакторинг и реиспользование

Символьная обработка

• Метапрограммирование

Интеграция с .NET

• В том числе Excel, SQL Server

Page 9: к.ф. м.н., доцент dmitryso@microsoft 99 - Why FuncPro.pdf · 20 08-13. John Hughes, Why Functional Programming Matters, 1984 Более выразительный язык

©2008-1

ош

нико

в Д

.В.

Обработка данных

Синтаксический разбор

Компиляторы, преобразования программ

Data Mining

Традиционное мнение: плохо решаются UI-задачи

Смотрим пример!

Page 10: к.ф. м.н., доцент dmitryso@microsoft 99 - Why FuncPro.pdf · 20 08-13. John Hughes, Why Functional Programming Matters, 1984 Более выразительный язык

©2008-1

ош

нико

в Д

.В.

F# - новаторский язык, в котором воплощаются смелые идеи F# 2.0 – асинхронное/параллельное программирование

(перекочевало в C# 5.0) F# 3.0 – type providers

F# используется во внутренних проектах Driver Development Kit 0- верификация кода F# написан на F# (догадайтесь, как такое возможно?) Игры XBox Live Arcade AdCenter Challenge

F# начинает проникать в различные сферы Финансовая аналитика (на смену Excel) Научные вычисления (на смену Matlab/MathCad -> eg. VSLab) Genome Viewer DSL

Page 11: к.ф. м.н., доцент dmitryso@microsoft 99 - Why FuncPro.pdf · 20 08-13. John Hughes, Why Functional Programming Matters, 1984 Более выразительный язык

©2008-1

ош

нико

в Д

.В.

Выразительность для системного программирования

Выразительность для математич задач

ПроизводительностьПрофессиональная разработка

F#

C++

Math-ematica…

C#Java

Python…

Programming

Modelling

Financial engineeringAlgorithmic Trading

Page 12: к.ф. м.н., доцент dmitryso@microsoft 99 - Why FuncPro.pdf · 20 08-13. John Hughes, Why Functional Programming Matters, 1984 Более выразительный язык

©2008-1

ош

нико

в Д

.В.

I have written an application to balance the national power generation schedule … for an energy company.

...the calculation engine was written in F#.

The use of F# to address the complexity at the heart of this application clearly demonstrates a sweet spot for the language … algorithmic analysis of large data sets.

Simon Cousins (Eon Powergen)

Page 13: к.ф. м.н., доцент dmitryso@microsoft 99 - Why FuncPro.pdf · 20 08-13. John Hughes, Why Functional Programming Matters, 1984 Более выразительный язык

©2008-1

ош

нико

в Д

.В.

Page 14: к.ф. м.н., доцент dmitryso@microsoft 99 - Why FuncPro.pdf · 20 08-13. John Hughes, Why Functional Programming Matters, 1984 Более выразительный язык

©2008-1

ош

нико

в Д

.В.

...F# rocks - building algorithms for DNA processing and it's like a drug. 12-15 at Amyris use F#...

F# has been phenomenally useful. I would be writing a lot of this in Python otherwise and F# is more robust, 20x - 100x faster to run and faster to develop.

Darren Platt, Amyris BioTechnologies

Page 15: к.ф. м.н., доцент dmitryso@microsoft 99 - Why FuncPro.pdf · 20 08-13. John Hughes, Why Functional Programming Matters, 1984 Более выразительный язык

Издательство ДМК Пресс

Page 16: к.ф. м.н., доцент dmitryso@microsoft 99 - Why FuncPro.pdf · 20 08-13. John Hughes, Why Functional Programming Matters, 1984 Более выразительный язык

©2008-1

ош

нико

в Д

.В.

http://www.soshnikov.com/fsharp

Page 17: к.ф. м.н., доцент dmitryso@microsoft 99 - Why FuncPro.pdf · 20 08-13. John Hughes, Why Functional Programming Matters, 1984 Более выразительный язык

©2008-1

ош

нико

в Д

.В.

Участник, который первый выполнит и покажет мне все 4 лабораторные работы на DevCon, получит экземпляр #FSharpBook с подписью автора1. Вычисление exp(x) и решение уравнения2. Частотный словарь и поиск в lib.ru3. Рейтинг популярности языков

программирования4. Веб-сайт с облаком тегов

Можно и после DevCon (@shwars, [email protected]), но тогда книга самовывозом из офиса Майкрософт

Page 18: к.ф. м.н., доцент dmitryso@microsoft 99 - Why FuncPro.pdf · 20 08-13. John Hughes, Why Functional Programming Matters, 1984 Более выразительный язык

©2008-1

ош

нико

в Д

.В.

Д. Сошников. Функциональное программирование на F#. ДМК-Пресс, 2011.

К. Смит. Программирование на F#. – М.: Символ-Плюс, 2011. (перевод C. Smith, Programming F#: A comprehensive guide for writing simple code to solve complex problems. O’Reilly, 2010)

Курс Д.Сошникова «Функциональное программирование» на intuit.ru

R.Pickering, Beginning F#, Apress, 2009. D.Syme, A.Granicz, A.Cisternio. Expert F# 2.0. A-Press,

2010 T.Neward, A.Erickson, T.Crowell, R.Minerich. Professional

F# 2.0. Wiley Publishing, 2011. J.Harrop, F# for Scientists, Wiley, 2008.

Page 19: к.ф. м.н., доцент dmitryso@microsoft 99 - Why FuncPro.pdf · 20 08-13. John Hughes, Why Functional Programming Matters, 1984 Более выразительный язык

©2008-1

ош

нико

в Д

.В.

http://tryfsharp.org – вы можете попробовать F# прямо в браузере!

http://fssnip.net – множество коротких примеров кода на F# на все случаи жизни

http://www.soshnikov.com/fsharp -множество примеров кода, последовательно раскрывающих материал

http://www.ms-library.ru – библиотека учебных курсов Майкрософт

Page 20: к.ф. м.н., доцент dmitryso@microsoft 99 - Why FuncPro.pdf · 20 08-13. John Hughes, Why Functional Programming Matters, 1984 Более выразительный язык
Page 21: к.ф. м.н., доцент dmitryso@microsoft 99 - Why FuncPro.pdf · 20 08-13. John Hughes, Why Functional Programming Matters, 1984 Более выразительный язык

Сошников Дмитрий Валерьевичк.ф.-м.н., доцент[email protected]

Blog: http://blogs.msdn.com/sos

Twitter: http://twitter.com/shwars

VKontakte: http://vkontakte.ru/shwars

Координатор академических программ

Департамента стратегических технологий

Майкрософт Россия

Доцент каф. Вычислительной математики и

программирования МАИ

Доцент каф. Управления разработкой программного

Обеспечения НИУ ВШЭ