20230930201856 #учу/ФП
- "Функцiональне програмування" - "Функциональное программирование" (ФП)
- [[ФП - Лекция 2]]
- --> [[ФП - UA - Лекцiя 3]]
- <-- [[ФП - UA - Лекцiя 1]]
- LAMBDA - новая суперфункция Excel - (22:49) - https://www.youtube.com/watch?v=U9u1bWwvH40
- Навчання мовi на мовi - https://learnxinyminutes.com/
- В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]]