к.ф. м.н., доцент dmitryso@microsoft 99 - why funcpro.pdf · 20 08-13. john hughes, why...
TRANSCRIPT
![Page 1: к.ф. м.н., доцент dmitryso@microsoft 99 - Why FuncPro.pdf · 20 08-13. John Hughes, Why Functional Programming Matters, 1984 Более выразительный язык](https://reader034.vdocuments.site/reader034/viewer/2022050401/5f7f863e3ca13b27de0cd88d/html5/thumbnails/1.jpg)
Сошников Дмитрий Валерьевичк.ф.-м.н., доцент[email protected]
DevCon 2013Школа функционального программирования
![Page 2: к.ф. м.н., доцент dmitryso@microsoft 99 - Why FuncPro.pdf · 20 08-13. John Hughes, Why Functional Programming Matters, 1984 Более выразительный язык](https://reader034.vdocuments.site/reader034/viewer/2022050401/5f7f863e3ca13b27de0cd88d/html5/thumbnails/2.jpg)
Зачем программировать на функциональных языках
![Page 3: к.ф. м.н., доцент dmitryso@microsoft 99 - Why FuncPro.pdf · 20 08-13. John Hughes, Why Functional Programming Matters, 1984 Более выразительный язык](https://reader034.vdocuments.site/reader034/viewer/2022050401/5f7f863e3ca13b27de0cd88d/html5/thumbnails/3.jpg)
©2008-1
3С
ош
нико
в Д
.В.
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 Более выразительный язык](https://reader034.vdocuments.site/reader034/viewer/2022050401/5f7f863e3ca13b27de0cd88d/html5/thumbnails/4.jpg)
©2008-1
3С
ош
нико
в Д
.В.
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 Более выразительный язык](https://reader034.vdocuments.site/reader034/viewer/2022050401/5f7f863e3ca13b27de0cd88d/html5/thumbnails/5.jpg)
©2008-1
3С
ош
нико
в Д
.В.
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 Более выразительный язык](https://reader034.vdocuments.site/reader034/viewer/2022050401/5f7f863e3ca13b27de0cd88d/html5/thumbnails/6.jpg)
©2008-1
3С
ош
нико
в Д
.В.
Объем входных данных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 Более выразительный язык](https://reader034.vdocuments.site/reader034/viewer/2022050401/5f7f863e3ca13b27de0cd88d/html5/thumbnails/7.jpg)
©2008-1
3С
ош
нико
в Д
.В.
4 недели кодирования, 4 эксперта в области
Machine Learning
100 миллионов вероятностных переменных
Обработано 6 терабайт обучающих данных
Обработка в реальном времени!
![Page 8: к.ф. м.н., доцент dmitryso@microsoft 99 - Why FuncPro.pdf · 20 08-13. John Hughes, Why Functional Programming Matters, 1984 Более выразительный язык](https://reader034.vdocuments.site/reader034/viewer/2022050401/5f7f863e3ca13b27de0cd88d/html5/thumbnails/8.jpg)
©2008-1
3С
ош
нико
в Д
.В.
Быстрое кодирование
• Вывод типов – меньше печатать, больше думать
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 Более выразительный язык](https://reader034.vdocuments.site/reader034/viewer/2022050401/5f7f863e3ca13b27de0cd88d/html5/thumbnails/9.jpg)
©2008-1
3С
ош
нико
в Д
.В.
Обработка данных
Синтаксический разбор
Компиляторы, преобразования программ
Data Mining
Традиционное мнение: плохо решаются UI-задачи
Смотрим пример!
![Page 10: к.ф. м.н., доцент dmitryso@microsoft 99 - Why FuncPro.pdf · 20 08-13. John Hughes, Why Functional Programming Matters, 1984 Более выразительный язык](https://reader034.vdocuments.site/reader034/viewer/2022050401/5f7f863e3ca13b27de0cd88d/html5/thumbnails/10.jpg)
©2008-1
3С
ош
нико
в Д
.В.
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 Более выразительный язык](https://reader034.vdocuments.site/reader034/viewer/2022050401/5f7f863e3ca13b27de0cd88d/html5/thumbnails/11.jpg)
©2008-1
3С
ош
нико
в Д
.В.
Выразительность для системного программирования
Выразительность для математич задач
ПроизводительностьПрофессиональная разработка
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 Более выразительный язык](https://reader034.vdocuments.site/reader034/viewer/2022050401/5f7f863e3ca13b27de0cd88d/html5/thumbnails/12.jpg)
©2008-1
3С
ош
нико
в Д
.В.
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 Более выразительный язык](https://reader034.vdocuments.site/reader034/viewer/2022050401/5f7f863e3ca13b27de0cd88d/html5/thumbnails/13.jpg)
©2008-1
3С
ош
нико
в Д
.В.
![Page 14: к.ф. м.н., доцент dmitryso@microsoft 99 - Why FuncPro.pdf · 20 08-13. John Hughes, Why Functional Programming Matters, 1984 Более выразительный язык](https://reader034.vdocuments.site/reader034/viewer/2022050401/5f7f863e3ca13b27de0cd88d/html5/thumbnails/14.jpg)
©2008-1
3С
ош
нико
в Д
.В.
...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 Более выразительный язык](https://reader034.vdocuments.site/reader034/viewer/2022050401/5f7f863e3ca13b27de0cd88d/html5/thumbnails/15.jpg)
Издательство ДМК Пресс
![Page 16: к.ф. м.н., доцент dmitryso@microsoft 99 - Why FuncPro.pdf · 20 08-13. John Hughes, Why Functional Programming Matters, 1984 Более выразительный язык](https://reader034.vdocuments.site/reader034/viewer/2022050401/5f7f863e3ca13b27de0cd88d/html5/thumbnails/16.jpg)
©2008-1
3С
ош
нико
в Д
.В.
http://www.soshnikov.com/fsharp
![Page 17: к.ф. м.н., доцент dmitryso@microsoft 99 - Why FuncPro.pdf · 20 08-13. John Hughes, Why Functional Programming Matters, 1984 Более выразительный язык](https://reader034.vdocuments.site/reader034/viewer/2022050401/5f7f863e3ca13b27de0cd88d/html5/thumbnails/17.jpg)
©2008-1
3С
ош
нико
в Д
.В.
Участник, который первый выполнит и покажет мне все 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 Более выразительный язык](https://reader034.vdocuments.site/reader034/viewer/2022050401/5f7f863e3ca13b27de0cd88d/html5/thumbnails/18.jpg)
©2008-1
3С
ош
нико
в Д
.В.
Д. Сошников. Функциональное программирование на 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 Более выразительный язык](https://reader034.vdocuments.site/reader034/viewer/2022050401/5f7f863e3ca13b27de0cd88d/html5/thumbnails/19.jpg)
©2008-1
3С
ош
нико
в Д
.В.
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 Более выразительный язык](https://reader034.vdocuments.site/reader034/viewer/2022050401/5f7f863e3ca13b27de0cd88d/html5/thumbnails/20.jpg)
![Page 21: к.ф. м.н., доцент dmitryso@microsoft 99 - Why FuncPro.pdf · 20 08-13. John Hughes, Why Functional Programming Matters, 1984 Более выразительный язык](https://reader034.vdocuments.site/reader034/viewer/2022050401/5f7f863e3ca13b27de0cd88d/html5/thumbnails/21.jpg)
Сошников Дмитрий Валерьевичк.ф.-м.н., доцент[email protected]
Blog: http://blogs.msdn.com/sos
Twitter: http://twitter.com/shwars
VKontakte: http://vkontakte.ru/shwars
Координатор академических программ
Департамента стратегических технологий
Майкрософт Россия
Доцент каф. Вычислительной математики и
программирования МАИ
Доцент каф. Управления разработкой программного
Обеспечения НИУ ВШЭ