Skip to content
프로젝트

MostlyAdequate/mostly-adequate-guide-ru

GitHub에서 보기

MostlyAdequate/mostly-adequate-guide-ru has 1,226 GitHub stars and 155 forks. Star changes are not measured yet. Last checked 2026-11-09 07:38 UTC. Last push 2023-05-04.

이 수치를 측정하는 방법

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

측정된 스타 증가

in 24h
업데이트 지연
in 7 days
업데이트 지연
in 15 days
업데이트 지연
in 1 month
업데이트 지연

서로 겹치는 기간의 순증가량이며 일별 합계가 아닙니다. 측정값이 없으면 비워 둡니다. 스타는 관심도를 나타내며 품질을 보장하지 않습니다.

README.md

Original

cover

Об этой книге

Это книга о функциональной парадигме в целом. Мы будем использовать самый популярный в мире язык функционального программирования — JavaScript. Некоторые могут подумать, что JS — это плохой выбор, поскольку его нынешняя культура ощущается преимущественно императивной, и ФП явно ей противоречит. Тем не менее, есть основания считать, что лучше всего начинать освоение ФП именно с JS:

  • Вы наверняка используете его на работе каждый день.

    Это значит, что вы сможете ежедневно практиковать и применять полученные знания в реальных программах, а не в хобби-проектах по вечерам и выходным, на каком-нибудь эзотерическом функциональном языке.

  • Вам не потребуется изучать всё от начала и до конца, прежде чем начать писать программы.

    В чистом функциональном языке без понимания монад вы не сможете вывести значение переменной в консоль или обратиться к DOM-элементу. JS даёт нам возможность овладеть одними приёмами, откладывая изучение других на следующий раз, тем самым позволяя нам выполнять часть работы привычным и известным способом.

  • JS позволяет всё, что требуется для написания первоклассного функционального кода.

    В JS есть всё необходимое, чтобы при помощи пары небольших библиотек мимикрировать под язык вроде Scala или Haskell. В настоящее время ООП доминирует в индустрии, но применять его в JavaScript ужасно неудобно — примерно как разбивать палатку на трассе или танцевать чечётку в галошах. Мы приучены повсеместно применять bind только для того, чтобы this случайно не выскользнуло из-под нас. В нашем арсенале есть несколько костылей для того, чтобы не пострадать от случайно забытого new. Мы даже умеем делать приватные поля при помощи замыканий... Короче, для большинства из нас ФП будет более естественным, чем всё это ООП-барахло.

Несомненно, типизированные функциональные языки лучше подойдут для стиля, который рассматривает эта книга. JavaScript будет для нас средством изучения парадигмы, которую вы сможете применять где угодно. К счастью, функциональные интерфейсы происходят из математики, а потому они вездесущи. Вы будете чувствовать себя дома, пользуясь Swiftz, Scalaz, Haskell, PureScript и любой другой средой, основанной на математике.

Читать онлайн (на английском).

Для наилучшего впечатления, можно читать онлайн на Gitbook (на английском). Там есть:

  • Боковая панель с оглавлением
  • Упражнения, проверяемые прямо в браузере

Поиграть с примерами кода

Чтобы обучение было эффективным и не слишком скучным, по мере того, как я рассказываю вам очередную историю, обязательно поиграйте с приёмами, представленными в этой книге. Некоторые из них будет сложно воспринять с первого раза, их нужно потрогать своими руками (и основательно вывозиться в них), чтобы понять.

Все функции и алгебраические структуры данных, представленные в книге, собраны в приложениях. Их код также доступен в виде npm-модуля:

$ npm i @mostly-adequate/support

Кроме того, упражнения из каждой главы могут быть выполнены в вашем редакторе! Например, выполните упражнения в файлах exercise_*.js в директории exercises/ch04 и затем выполните команду:

$ npm run ch04

Скачать (на английском)

Собрать книгу самостоятельно

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

Важно! Для создания ebook-версии вам необходимо установить ebook-convert. Инструкции.

Инструкция для Windows:

git clone https://github.com/MostlyAdequate/mostly-adequate-guide-ru.git
cd mostly-adequate-guide-ru/
npm install
npm install gitbook-cli -g
Set-ExecutionPolicy RemoteSigned (опционально) *
gitbook install
Установить [calibre](https://calibre-ebook.com/download_windows64) **
Установить переменные среды `ebook-convert` `C:\Program Files\Calibre2` ***
npm run generate-pdf
npm run generate-epub

* Снимает запрет на выполнение сторонних скриптов

** Настройки по генерации книг задаются в этой программе

*** Инструкция по установке переменых среды

Оглавление

SUMMARY-ru.md

Contributing

CONTRIBUTING-ru.md

Переводы

TRANSLATIONS-ru.md

FAQ

FAQ-ru.md

Планы на будущее

  • Часть 1 (главы 1-7) посвящена основам. Она обновляется по мере обнаружения ошибок (данная книга представляет из себя черновик). Если вы можете предложить исправление — не стесняйтесь!
  • Часть 2 (главы 8-13) рассматривает классы типов, начиная с функторов и монад, и заканчивая traversable. Я надеюсь втиснуть в неё трансформеры монад и аппликативные функторы.
  • Часть 3 (главы 14+) начнет танец на тонкой грани между практическим программированием и академическим абсурдом. Мы рассмотрим комонады, f-алгебры, фри-монады, yoneda и другие категориальные понятия.

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

관련 프로젝트 살펴보기