Skip to content

Latest commit

 

History

History
66 lines (59 loc) · 3.89 KB

ФП - UA - Лекцiя 2.md

File metadata and controls

66 lines (59 loc) · 3.89 KB

20230930201856 #учу/ФП


  • "Функцiональне програмування" - "Функциональное программирование" (ФП)
  • [[ФП - Лекция 2]]
  • --> [[ФП - UA - Лекцiя 3]]
  • <-- [[ФП - UA - Лекцiя 1]]

Тема: "Огляд ФП в цiлом - 1"

Застосування

Базовi уявлення

  • Вiдеоролiк зютьюбу - Никита Соболев- Функциональное программирование для новичков - (51:03) - https://www.youtube.com/watch?v=TjDEeaohNog
  • Функціональний та імперативний стиль. Можливих варіантів – чотири. Цікаві (обговорювані) – два:
    • Імперативною мовою у функціональному стилі
    • функціональною мовою в іперативному стилі.
  • Типізація. Методи перевірки типів: до або під час виконання програми. - статична типізація та динамічна типізація.
    • Статична – до виконання
    • Динамічна – під час виконання.
  • Змінювані та незмінні структури даних.
  • Підтримка мови. Деякі – взагалі не підтримують ФП
  • Стиль низького рівня програмування.
  • ФП – головне – функція. Приклад:
def sum_numbers(numbers): 
   . . . 
def generate_numbers(count):
   . . .
print(sum_numbers(generate_numbers(5)))
  • Композиція. Спрацьовує коли є відповідність між вхідними та вихідними даними функцій – відповідність типів даних. -
  • [[ФП_001_банан-банан.jpg]]
  • Типізація. Зі спробами приведення і без спроб приведення. Приклад:
console.log(1 + 'a')
  • [[ФП_002_банан-НЕ-банан.jpg]]
  • Перевірка до або під час виконання. Є мови, які підтримують обидва варіанти (Python).
  • Явні інструкції чи приховані типи.
  • Явна типізація дозволяє по одному оголошення функції дізнатися про неї все.
def sum_numbers(numbers: List[int]) -> int:
   . . . 
def generate_numbers(count: int) -> List[int]:
   . . .
print(sum_numbers(generate_numbers(5)))
  • Практика
    • Стаціонарна типізація – простіше ніж динамічна. Динамічну - програміст повинен пам'ятати (відстежувати).
    • Python має на увазі більше використання когнітивних здібностей людини, ніж Haskell.
    • Явна вказівка типу => більший розмір коду.
    • Найкращий код – нульовий. Він не написаний і не ламається.
    • Виконуваний код – який може зламатися - Допоміжний код – Коментарі, документація. Вказівка типу – код допоміжний. Дозволяє краще читати те, що ми написали.
    • Добре працюють лише ті функції, які мають спільні пази.
    • Бібліотека dry-python/returns - робить неявним явним.

  • --> [[ФП - UA - Лекцiя 3]]
  • <-- [[ФП - UA - Лекцiя 1]]