Skip to content

ivanzusko/mostly-adequate-guide-uk

 
 

Repository files navigation

cover

Про цю книгу

Ця книга розповідає про парадигму функціонального програмування вцілому. Ми будемо використовувати найбільш популярну у Світі функціональну мову програмування: JavaScript. Комусь може здатись, що це не найкращий вибір, оскільки в даний момент у світі JavaScript переважає імперативність. Проте, я переконаний, що це найкращий спосіб вивчити FP(функціональне програмування) з декількох причин:

  • Ви, вірогідніше за все, щоденно використовуєте його у роботі.

    Це дає можливість тренуватись і використовувати на практиці отримані знання кожен день у реальних програмах, а не на власних пет-проектах у нічний час та вихідні дні за допомогою езотеричної ФП мови.

  • Вам не потрібно вивчати все, для того, щоб почати писати програми.

    У чистих функціональних мовах програмування ви не можете залогіювати змінну чи отримати вузол DOM без використання монад. Тут ми можемо трохи хитрувати, оскільки ми вчимося очищати нашу кодову базу. Тут також легше розпочати, оскільки JavaScript використовує змішану парадигму, тож ви в будь-який момент зможете підстрахувати себе у разі того, коли вам бракуватиме знаннь.

  • Мова JavaScript надає змогу писати пречудовий функціональний код.

    У нас є всі можливості які нам потрібні для імітації таких мов як Scala чи Haskell, за допомогою однієї чи двух бібліотек. Об'єктно-орієнтоване програмування наразі домінує в індустрії, але воно точно незручне у JavaScript. Це нагадує похід по шосе або танок у галошах. Ми змушені повсюди використовувати bind, щоб не загубити десь this, у нас до сих пір немає класів(щоправда нещодавно в ES6 було внесено трохи синтаксичного цукру), ми можемо отримати численне різноманіття багів та дивакувату поведінку нашого коду, коли ми забуваємо вжити ключове слово new, приватні поля доступні нам лише через замикання. Багато хто з нас відчуває, що функціональне програмування є більш прийнятним рішенням.

Тим не менш, типізовані мови функціонального програмування будуть, без жодного сумніву, кращим місцем щоб кодити у стилі, який виклажається у цій книзі. JavaScript буде нашим засобом вивчення парадигми функціонального програмування, а от де ви будете його використовувати - залежить від вас. На щастя, інтерфейси математичні, а тому можуть бути використані будь-де. Ви будете комфортно себе почувати використовуючі такі математично-орієнтовані мови як swiftz, scalaz, haskell, purescript та інші.

Читайте її онлайн

Для найкращого читатського досвіду, читайте її онлайн через Gitbook.

  • Швидкий достучп через сайд-бар
  • Вправи у браузері
  • Детальні приклади

Пограйте з кодом

Щоб навчання було ефективним і ви не нудьгували, поки я розповідаю вам чергову історію, не забудьте пограти з концептами, представленими в цій книзі. Деякі з них можуть бути складними для розуміння на перший погляд і краще зрозуміються, якщо ви "забрудните руки". Всі функції та алгебраїчні структури даних, представлені в книзі, зібрані в додатках. Відповідний код також доступний як npm модуль:

$ npm i @mostly-adequate/support

Альтернативно, вправи кожного розділу можна виконати та завершити у вашому редакторі! Наприклад, завершіть exercise_*.js у exercises/ch04, а потім виконайте:

$ npm run ch04

Завантажити

Ви можете знайти попередньо згенеровані PDF та EPUB як артефакти збірки останнього релізу.

Зробіть це самі

⚠️ Ця конфігурація проекту зараз трохи застаріла, тому при локальній збірці можуть виникнути різні проблеми. Ми рекомендуємо використовувати node v10.22.1 та останню версію Calibre, якщо це можливо.

git clone https://github.com/MostlyAdequate/mostly-adequate-guide.git
cd mostly-adequate-guide/
npm install
npm run setup
npm run generate-pdf
npm run generate-epub

Увага! Щоб згенерувати ebook версію вам потрібно буде встановити ebook-convert. Інструкції зі встановлення.

Зміст

Дивіться SUMMARY.md

Сприяння

Дивіться CONTRIBUTING.md

Переклади

Дивіться TRANSLATIONS.md

FAQ (Найчастіші запитання)

Дивіться FAQ.md

Плани на майбутнє

  • Частина 1 (розділи 1-7) це керівнитство з основ. Я оновлююсь одразу як тільки знаходжу помилки, оскільки це початкова чернетка. Почувайте себе вільно та допомагайте!
  • Частина 2 (розділи 8-13) будуть звертатись до типових класів, таких як функтори та монади і аж до traversable. Сподіваюсь втиснути трансформери та pure application.
  • Частина 3 (розділи 14+) почнуть балансувати на тонкій межі між практичним програмуванням та академічною абсурдністю. Ми розглянемо комонади, f-алгебри, вільні монади, yoneda та інші категоріальні конструкції.

About

Mostly adequate guide to FP (in javascript, translated in ukrainian)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 98.5%
  • Other 1.5%