Skip to content

Commit

Permalink
update readme and translations (#67)
Browse files Browse the repository at this point in the history
  • Loading branch information
VladimirLogachev authored and maksimf committed Sep 30, 2019
1 parent 22d8ac7 commit 5b653e3
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 30 deletions.
52 changes: 26 additions & 26 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,50 +2,50 @@

## Об этой книге

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

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

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

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

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

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

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

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

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

For a best reading experience, [read it online via Gitbook](https://mostly-adequate.gitbooks.io/mostly-adequate-guide/).
Для наилучшего впечатления, можно [читать онлайн на Gitbook](https://mostly-adequate.gitbooks.io/mostly-adequate-guide/) _(на английском)._ Там есть:

- Quick-access side-bar
- In-browser exercises
- In-depth examples
- Боковая панель с оглавлением
- Упражнения, проверяемые прямо в браузере

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

To make the training efficient and not get too bored while I am telling you another story, make sure to play around with the concepts introduced in this book. Some can be tricky to catch at first and are better understood by getting your hand dirty.
All functions and algebraic data-structures presented in the book are gathered in the appendixes. The corresponding code is also available as an npm module:
Чтобы обучение было эффективным и не слишком скучным, по мере того, как я рассказываю вам очередную историю, обязательно поиграйте с приёмами, представленными в этой книге. Некоторые из них будет сложно воспринять с первого раза, их нужно потрогать своими руками (и основательно вывозиться в них), чтобы понять.

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

```bash
$ npm i @mostly-adequate/support
```

Alternatively, exercises of each chapter are runnable and can be completed in your editor! For example, complete the `exercise_*.js` in `exercises/ch04` and then run:
Кроме того, упражнения из каждой главы могут быть выполнены в вашем редакторе! Например, выполните упражнения в файлах `exercise_*.js` в директории `exercises/ch04` и затем выполните команду:

```bash
$ npm run ch04
```

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

* [Скачать PDF](https://www.gitbook.com/download/pdf/book/mostly-adequate/mostly-adequate-guide) (на английском)
* [Скачать EPUB](https://www.gitbook.com/download/epub/book/mostly-adequate/mostly-adequate-guide) (на английском)
* [Скачать Mobi (Kindle)](https://www.gitbook.com/download/mobi/book/mostly-adequate/mostly-adequate-guide) (на английском)
* [Скачать PDF](https://www.gitbook.com/download/pdf/book/mostly-adequate/mostly-adequate-guide) _(на английском)._
* [Скачать EPUB](https://www.gitbook.com/download/epub/book/mostly-adequate/mostly-adequate-guide) _(на английском)._
* [Скачать Mobi (Kindle)](https://www.gitbook.com/download/mobi/book/mostly-adequate/mostly-adequate-guide) _(на английском)._

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

Expand All @@ -58,7 +58,7 @@ npm run generate-pdf
npm run generate-epub
```

> Note! To generate the ebook version you will need to install `ebook-convert`. [Installation instructions](https://toolchain.gitbook.com/ebook.html#installing-ebook-convert).
> Важно! Для создания ebook-версии вам необходимо установить `ebook-convert`. [Инструкции](https://toolchain.gitbook.com/ebook.html#installing-ebook-convert).
# Оглавление

Expand All @@ -76,11 +76,11 @@ npm run generate-epub

[FAQ-ru.md](FAQ-ru.md)

# Plans for the future
# Планы на будущее

* **Part 1** (chapters 1-7) is a guide to the basics. I'm updating as I find errors since this is the initial draft. Feel free to help!
* **Part 2** (chapters 8-13) address type classes like functors and monads all the way through to traversable. I hope to squeeze in transformers and a pure application.
* **Part 3** (chapters 14+) will start to dance the fine line between practical programming and academic absurdity. We'll look at comonads, f-algebras, free monads, yoneda, and other categorical constructs.
* **Часть 1** (главы 1-7) посвящена основам. Она обновляется по мере обнаружения ошибок (данная книга представляет из себя черновик). Если вы можете предложить испрвление — не стесняйтесь!
* **Часть 2** (главы 8-13) рассматривает классы типов, начиная с функторов и монад, и заканчивая traversable. Я надеюсь втиснуть в неё трансформеры монад и аппликативные функторы.
* **Часть 3** (главы 14+) начнет танец на тонкой грани между практическим программированием и академическим абсурдом. Мы рассмотрим комонады, f-алгебры, фри-монады, yoneda и другие категориальные понятия.

---

Expand Down
8 changes: 4 additions & 4 deletions TRANSLATIONS-ru.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Available Translations
# Существующие переводы

* [中文版 (Chinese)](https://github.com/llh911001/mostly-adequate-guide-chinese) by Linghao Li @llh911001
* [Русский (Russian)](https://github.com/MostlyAdequate/mostly-adequate-guide-ru) by Maksim Filippov @maksimf
* [Русский (Russian)](https://github.com/MostlyAdequate/mostly-adequate-guide-ru), выполненный [Maksim Filippov](https://github.com/maksimf), [Vladimir Logachev](https://github.com/VladimirLogachev), [Sakayama](https://github.com/Sakayama) и другими [участниками](https://github.com/MostlyAdequate/mostly-adequate-guide-ru/graphs/contributors)
* [Українська (Ukrainian)](https://github.com/ivanzusko/mostly-adequate-guide-uk) by Ivan Zusko @ivanzusko
* [Français (French)](https://github.com/MostlyAdequate/mostly-adequate-guide-fr) by Benkort Matthias @KtorZ
* [Português (Portuguese)](https://github.com/MostlyAdequate/mostly-adequate-guide-pt-BR) by Palmer Oliveira @expalmer
Expand All @@ -11,6 +11,6 @@
* [bahasa Indonesia (Indonesian)](https://github.com/MostlyAdequate/mostly-adequate-guide-id) by Ahmad Naufal Mukhtar @anaufalm


## Creating new Translations
## Как создать новый перевод

See [Creating new translations](CONTRIBUTING-ru.md#Translations)
Смотрите [Как создать новый перевод](CONTRIBUTING-ru.md#Translations)

0 comments on commit 5b653e3

Please sign in to comment.