All Projects → MostlyAdequate → Mostly Adequate Guide Ru

MostlyAdequate / Mostly Adequate Guide Ru

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

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Mostly Adequate Guide Ru

Mostly Adequate Guide
Mostly adequate guide to FP (in javascript)
Stars: ✭ 21,330 (+1970.87%)
Mutual labels:  reactive-programming, tutorial, functional-programming
Swiftrex
Swift + Redux + (Combine|RxSwift|ReactiveSwift) -> SwiftRex
Stars: ✭ 267 (-74.08%)
Mutual labels:  reactive-programming, functional-programming
Fpgo
Monad, Functional Programming features for Golang
Stars: ✭ 165 (-83.98%)
Mutual labels:  reactive-programming, functional-programming
Rxswift
RxSwift를 스터디하는 공간
Stars: ✭ 335 (-67.48%)
Mutual labels:  reactive-programming, functional-programming
Redux Most
Most.js based middleware for Redux. Handle async actions with monadic streams & reactive programming.
Stars: ✭ 137 (-86.7%)
Mutual labels:  reactive-programming, functional-programming
Monix
Asynchronous, Reactive Programming for Scala and Scala.js.
Stars: ✭ 1,819 (+76.6%)
Mutual labels:  reactive-programming, functional-programming
Magic In Ten Mins
十分钟魔法练习
Stars: ✭ 327 (-68.25%)
Mutual labels:  tutorial, functional-programming
Tetris
A clone of the popular game Tetris.
Stars: ✭ 96 (-90.68%)
Mutual labels:  reactive-programming, functional-programming
Bartosz Basics Of Haskell
Code and exercises from Bartosz Milewski's Basics of Haskell Tutorial
Stars: ✭ 483 (-53.11%)
Mutual labels:  tutorial, functional-programming
Bow
🏹 Bow is a cross-platform library for Typed Functional Programming in Swift
Stars: ✭ 538 (-47.77%)
Mutual labels:  reactive-programming, functional-programming
Learn Fp
learn-by-doing course/tutorial for functional programming on scala
Stars: ✭ 548 (-46.8%)
Mutual labels:  tutorial, functional-programming
Cyclejs.cn
The Cycle.js Chinese documentation website.
Stars: ✭ 132 (-87.18%)
Mutual labels:  reactive-programming, functional-programming
Cyclejs
A functional and reactive JavaScript framework for predictable code
Stars: ✭ 9,996 (+870.49%)
Mutual labels:  reactive-programming, functional-programming
Mvi Archtecture
The practice of MVI + Jetpack architecture in Android.
Stars: ✭ 152 (-85.24%)
Mutual labels:  reactive-programming, functional-programming
Akka Stream Eventsourcing
Event sourcing for Akka Streams
Stars: ✭ 105 (-89.81%)
Mutual labels:  reactive-programming, functional-programming
Golang Tutorials
Go Tutorials - Let's get our hands really dirty by writing a lot of Golang code
Stars: ✭ 277 (-73.11%)
Mutual labels:  tutorial, functional-programming
Spring 5 Examples
This repository is contains spring-boot 2 / spring framework 5 project examples. Using reactive programming model / paradigm and Kotlin
Stars: ✭ 87 (-91.55%)
Mutual labels:  reactive-programming, functional-programming
Lda Topic Modeling
A PureScript, browser-based implementation of LDA topic modeling.
Stars: ✭ 91 (-91.17%)
Mutual labels:  reactive-programming, functional-programming
Cycle State Machine Demo
Non-trivial, real use case demo of a hierarchical state machine library with cyclejs
Stars: ✭ 25 (-97.57%)
Mutual labels:  reactive-programming, functional-programming
Elm Cheat Sheet
An overview of Elm syntax and features
Stars: ✭ 928 (-9.9%)
Mutual labels:  tutorial, functional-programming

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].