к.ф. м.н., доцент dmitryso@microsoft 99 - Why FuncPro.pdf · 20 08-13. John Hughes, Why...
Transcript of к.ф. м.н., доцент dmitryso@microsoft 99 - Why FuncPro.pdf · 20 08-13. John Hughes, Why...
Сошников Дмитрий Валерьевичк.ф.-м.н., доцент[email protected]
DevCon 2013Школа функционального программирования
Зачем программировать на функциональных языках
©2008-1
3С
ош
нико
в Д
.В.
John Hughes, Why Functional Programming Matters, 1984
Более выразительный язык (меньше писать, больше думать)
Нет побочных эффектов => нет ошибок
Нет переменных => проще параллелизм
Менее эффективный (сборка мусора)
Нужны более квалифицированные
программисты
+ -
X
©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.
©2008-1
3С
ош
нико
в Д
.В.
4 месяца на программирование1 месяц на обучениеЗадача:На основе обучающих данных за несколько недель
(просмотры страниц) предсказывать вероятность перехода по ссылке
Ресурсы:4 (2 x 2) 64-bit CPU machine
16 Гб ОП
200 Гб НЖМД
©2008-1
3С
ош
нико
в Д
.В.
Объем входных данных7,000,000,000 записые, 6 терабайт
Время ЦП на обучение: 2 недели × 7 дней × 86,400 сек/день =
1,209,600 секунд Требования к алгоритму обучения:
5,787 записей / сек
172.8 μs на одну запись
©2008-1
3С
ош
нико
в Д
.В.
4 недели кодирования, 4 эксперта в области
Machine Learning
100 миллионов вероятностных переменных
Обработано 6 терабайт обучающих данных
Обработка в реальном времени!
©2008-1
3С
ош
нико
в Д
.В.
Быстрое кодирование
• Вывод типов – меньше печатать, больше думать
Agile-стиль
• Думаем в терминах предметной области, не языка
Скриптинг
• Интерактивное «исследование» данных и тестирование алгоритмов
• Совместно с Excel
Производительность
• Немедленное масштабирование на огромные массивы данных
Экономный расход памяти
• Огромные структуры данных на 16 Гб
Выразительный синтаксис
• Краткий код позволяет легко осуществлять рефакторинг и реиспользование
Символьная обработка
• Метапрограммирование
Интеграция с .NET
• В том числе Excel, SQL Server
©2008-1
3С
ош
нико
в Д
.В.
Обработка данных
Синтаксический разбор
Компиляторы, преобразования программ
Data Mining
Традиционное мнение: плохо решаются UI-задачи
Смотрим пример!
©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
©2008-1
3С
ош
нико
в Д
.В.
Выразительность для системного программирования
Выразительность для математич задач
ПроизводительностьПрофессиональная разработка
F#
C++
Math-ematica…
C#Java
Python…
Programming
Modelling
Financial engineeringAlgorithmic Trading
©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)
©2008-1
3С
ош
нико
в Д
.В.
©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
Издательство ДМК Пресс
©2008-1
3С
ош
нико
в Д
.В.
http://www.soshnikov.com/fsharp
©2008-1
3С
ош
нико
в Д
.В.
Участник, который первый выполнит и покажет мне все 4 лабораторные работы на DevCon, получит экземпляр #FSharpBook с подписью автора1. Вычисление exp(x) и решение уравнения2. Частотный словарь и поиск в lib.ru3. Рейтинг популярности языков
программирования4. Веб-сайт с облаком тегов
Можно и после DevCon (@shwars, [email protected]), но тогда книга самовывозом из офиса Майкрософт
©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.
©2008-1
3С
ош
нико
в Д
.В.
http://tryfsharp.org – вы можете попробовать F# прямо в браузере!
http://fssnip.net – множество коротких примеров кода на F# на все случаи жизни
http://www.soshnikov.com/fsharp -множество примеров кода, последовательно раскрывающих материал
http://www.ms-library.ru – библиотека учебных курсов Майкрософт
Сошников Дмитрий Валерьевичк.ф.-м.н., доцент[email protected]
Blog: http://blogs.msdn.com/sos
Twitter: http://twitter.com/shwars
VKontakte: http://vkontakte.ru/shwars
Координатор академических программ
Департамента стратегических технологий
Майкрософт Россия
Доцент каф. Вычислительной математики и
программирования МАИ
Доцент каф. Управления разработкой программного
Обеспечения НИУ ВШЭ