Где применяется функциональное программирование?

Концепции парадигм программирования

Eleanor Thomas

Senior Data Analytics Engineer

Области применения функционального программирования

  • Машинное обучение, глубокое обучение, искусственный интеллект
  • Анализ и обработка больших наборов данных
  • Инженерия данных (например, на Scala и Clojure)

Обработка данных

Концепции парадигм программирования

Пример функционального программирования

def process_data(raw_data):
    processed_data = raw_data

    ... further processing steps here! ...

    return processed_data
  • Функция принимает входные данные из raw_data
  • Функция создаёт новую переменную processed_data для выходных данных
  • Функция выполняет фиксированный набор шагов обработки данных
  • Функция возвращает processed_data
Концепции парадигм программирования

Плюсы и минусы функционального программирования

ПЛЮСЫ

  • Чистые функции проще читать и отлаживать
  • Чистые функции проще тестировать
  • Меньше непредвиденных последствий в коде
  • Чистые функции легко переиспользовать в разных проектах
  • Разные функции можно выполнять параллельно для ускорения кода

МИНУСЫ

  • Непривычная парадигма мышления: «побочные эффекты» (запись в файлы и т. д.) — это именно то, ради чего мы пишем программы
  • Меньше экспертов, инструментов и фреймворков для функционального программирования
  • Высокий порог входа и меньше учебных ресурсов
  • Высокое потребление памяти ограничивает круг применений
Концепции парадигм программирования

Функциональное и декларативное программирование

  • Функциональное программирование — разновидность декларативного программирования
  • Декларативное программирование: указываем компьютеру что сделать, а не как
  • Функциональное программирование — лишь один вид декларативного программирования
  • Программист задаёт функции для выполнения, а не конкретные шаги

Функциональное программирование как декларативное

Концепции парадигм программирования

Давайте потренируемся!

Концепции парадигм программирования

Preparing Video For Download...