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

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

Jul 30, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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

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

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

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

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

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

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

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