• Like
Bibilov fp urfu_2013
Upcoming SlideShare
Loading in...5
×

Bibilov fp urfu_2013

  • 367 views
Uploaded on

Иван Бибилов на Я.Студенте в УрФУ. …

Иван Бибилов на Я.Студенте в УрФУ.
Основы функциоального программирования

More in: Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
367
On Slideshare
0
From Embeds
0
Number of Embeds
3

Actions

Shares
Downloads
4
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Функциональное программирование Бибилов Иван Владимирович email bibilov@yandex-team.ru
  • 2. Алонзо Чёрч (14 июня 1903, Вашингтон, США — 11 августа 1995, Хадсон, Огайо, США) — выдающийся американский математик и логик.
  • 3. Начнем издалека
  • 4. Зачем нужны и что делают программисты?
  • 5. Сильный ИИ еще не создан – компьютеры не понимают естественный язык
  • 6. Программисты пишут программы на языках программирования
  • 7. Ада Лавлейс (1815-1852) – первый программист, графиня, дочь поэта Джорджа Байрона Мы и «гуманитарии», и «технари»
  • 8. Вычислительная сложность Теория вычислимости Теория алгоритмов Машина Тьюринга Математическая логика Лямбда-исчисление Дискретная математика
  • 9. Языки программирования бывают разные
  • 10. ДРАКОН (Дружелюбный русский алгоритмический язык, который обеспечивает наглядность)
  • 11. Разнообразие языков обусловлено желанием быстро писать эффективные, легко модифицируемые и понятные программы
  • 12. Управление сложностью Человек перестает понимать принципы работы системы, которую создал
  • 13. У языков может быть разная основа в математике. У функциональных языков в основе – лямбда исчисление
  • 14. Функциональные языки MIT 6.001
  • 15. Функциональное программирование ● «Нет» циклов ● «Нет» ветвлений ● «Нет» переменных ● ● «Нельзя» изменять объекты «Нет» побочных эффектов у функций
  • 16. Вычисление факториала. Haskell
  • 17. Основное понятие – функция (отображение, оператор, преобразование) в ее математичеком смысле λx.2(x+5) – абстракция (λx.2(x+5)) 4 – аппликация
  • 18. Функции лишены побочных эффектов и детерминированы, результат зависит только от входных данных (нет ввода / вывода, изменения глобальных переменных).
  • 19. x=x+1
  • 20. Нет переменных – только константы
  • 21. Функция – обычный объект, она может быть передана как параметр, возвращена из функции, присвоена переменной . Иными словами, она – First-class citizen. Данные и код – одно целое
  • 22. Функция – тоже «человек»!
  • 23. Вместо циклов можно использовать рекурсию и работу с массивами
  • 24. Вместо циклов можно использовать рекурсию и работу с массивами
  • 25. Reduce – функция высшего порядка (как интегрирование и дифференцирование)
  • 26. Закон Бенфорда. А не врет ли нам статистика?
  • 27. Вычисление при помощи reduce
  • 28. Reduce уже есть!
  • 29. Еще есть map!
  • 30. MapReduce
  • 31. Array comprehensions
  • 32. Каррирование – все функции могут быть от одного аргумента
  • 33. В чем преимущества?
  • 34. ● Кеширование ● Параллелизм ● Ленивые вычисления ● Тестирование ● Динамический язык (код – это тоже данные) ● Автоматические оптимизации ● Декларативность
  • 35. Декларативное (что?) и императивное (как?) программирование
  • 36. Борщ — разновидность супа на основе свёклы, традиционное блюдо украинской кухни. К настоящему времени получил распространение среди многих народов восточной и центральной Европы. В частности, входит в национальные кухни России Что? Как?
  • 37. А недостатки?
  • 38. Нам нужны побочные эффекты (ввод/вывод, random)!
  • 39. Оптимизация
  • 40. Пользуйтесь разными инструментами!
  • 41. Спасибо!