• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Bibilov fp urfu_2013
 

Bibilov fp urfu_2013

on

  • 469 views

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

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

Statistics

Views

Total Views
469
Views on SlideShare
343
Embed Views
126

Actions

Likes
1
Downloads
4
Comments
0

4 Embeds 126

http://tech.yandex.ru 109
https://tech.yandex.ru 13
http://admin-ru.tech.yandex-team.ru 2
http://news.google.com 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Bibilov fp urfu_2013 Bibilov fp urfu_2013 Presentation Transcript

    • Функциональное программирование Бибилов Иван Владимирович email bibilov@yandex-team.ru
    • Алонзо Чёрч (14 июня 1903, Вашингтон, США — 11 августа 1995, Хадсон, Огайо, США) — выдающийся американский математик и логик.
    • Начнем издалека
    • Зачем нужны и что делают программисты?
    • Сильный ИИ еще не создан – компьютеры не понимают естественный язык
    • Программисты пишут программы на языках программирования
    • Ада Лавлейс (1815-1852) – первый программист, графиня, дочь поэта Джорджа Байрона Мы и «гуманитарии», и «технари»
    • Вычислительная сложность Теория вычислимости Теория алгоритмов Машина Тьюринга Математическая логика Лямбда-исчисление Дискретная математика
    • Языки программирования бывают разные
    • ДРАКОН (Дружелюбный русский алгоритмический язык, который обеспечивает наглядность)
    • Разнообразие языков обусловлено желанием быстро писать эффективные, легко модифицируемые и понятные программы
    • Управление сложностью Человек перестает понимать принципы работы системы, которую создал
    • У языков может быть разная основа в математике. У функциональных языков в основе – лямбда исчисление
    • Функциональные языки MIT 6.001
    • Функциональное программирование ● «Нет» циклов ● «Нет» ветвлений ● «Нет» переменных ● ● «Нельзя» изменять объекты «Нет» побочных эффектов у функций
    • Вычисление факториала. Haskell
    • Основное понятие – функция (отображение, оператор, преобразование) в ее математичеком смысле λx.2(x+5) – абстракция (λx.2(x+5)) 4 – аппликация
    • Функции лишены побочных эффектов и детерминированы, результат зависит только от входных данных (нет ввода / вывода, изменения глобальных переменных).
    • x=x+1
    • Нет переменных – только константы
    • Функция – обычный объект, она может быть передана как параметр, возвращена из функции, присвоена переменной . Иными словами, она – First-class citizen. Данные и код – одно целое
    • Функция – тоже «человек»!
    • Вместо циклов можно использовать рекурсию и работу с массивами
    • Вместо циклов можно использовать рекурсию и работу с массивами
    • Reduce – функция высшего порядка (как интегрирование и дифференцирование)
    • Закон Бенфорда. А не врет ли нам статистика?
    • Вычисление при помощи reduce
    • Reduce уже есть!
    • Еще есть map!
    • MapReduce
    • Array comprehensions
    • Каррирование – все функции могут быть от одного аргумента
    • В чем преимущества?
    • ● Кеширование ● Параллелизм ● Ленивые вычисления ● Тестирование ● Динамический язык (код – это тоже данные) ● Автоматические оптимизации ● Декларативность
    • Декларативное (что?) и императивное (как?) программирование
    • Борщ — разновидность супа на основе свёклы, традиционное блюдо украинской кухни. К настоящему времени получил распространение среди многих народов восточной и центральной Европы. В частности, входит в национальные кухни России Что? Как?
    • А недостатки?
    • Нам нужны побочные эффекты (ввод/вывод, random)!
    • Оптимизация
    • Пользуйтесь разными инструментами!
    • Спасибо!