Вы знаете, что через мои лекции и митапы за год проходит более тысячи студентов и вольных слушателей, а это значит, что все они будут впитывать тот стиль, который видят в примерах кода. А стиль очень важен и я понимаю степень ответственности. Уйма книг и примеров имеют плохой стиль и я не могу ссылаться на них в процессе обучения, поэтому создана эта организация, в которой сейчас уже есть 67 репозиториев с примерами кода по разным темам и я расширю их до порядка нескольких сотен и буду постоянно поддерживать.
Это обсуждение началось в ФБ с публикации двух вариантов кода, оба из которых мне не очень нравились и я пришел к выводу, что хороший стиль императивного кода для JavaScript как-то разработан, а вот общего подхода к стилю и структуре функционального кода нет. Понятия и приемы ФП уже плотно вошли в нашу жизнь, но вот стиль и структура пока очень хаотичны.
Большое спасибо Алексею @mr-mig, Эльдару @edjafarov, Ингвару @RReverser, Алексею @agil и Никите @galkin за критический подход и советы. Надеюсь на вашу поддержку в этом деле и прошу делать issue или RP в случае выявления проблем в примерах кода. Если хотите, я буду уведомлять о тех кусках концептуального кода, которые требуют обсуждения, нажмите :+1: если так.
Какую я ставлю перед собой задачу именно в этом репозитории:
написать одну и ту же задачу в абстракциях разных парадигм и иметь возможность сравнивать их на кратком примере кода в одну страницу (не целый проект)
показать несколько хороших стилей, чтоб можно было демонстрировать ох особенности и показывать где какой лучше подходит
показать плохие примеры кода, продемонстрировать проблемы, к которым они приводят и научить студентов различать эстетику и стиль кода
Сразу отвечу на несколько вопросов:
@mr-mig и @edjafarov, я согласен по поводу именования, и улучшу его еще в ближайшее время
@agil про порядок compose ты прав, но тут удобно писать в прямом порядке, это нагляднее, я не так хорошо знаком с библиотеками фп и не видел где обратный compose называется pipe, если ты имеешь ссылку или уверен, что это общепринятое название, то я заменю
@RReverser, я понимаю, что смешивать разные уровни абстракции в одном коде это смертный грех, но примеры должны быть краткими, компактными и иллюстративными, поэтому я помещаю их в один файл, группирую в блоки и даю пояснения во время лекции, что эти фрагменты вообще должны быть в разных файлах
Промисы и async/await я тут не использую по двум причинам:
это учебный код и перегружать его концепциями нельзя, при этом я согласен, что не должно быть бессмысленного учебного кода, но все же, есть своя специфика, сначала студент осваивает один прием, потом другой, а потом объединяет их (как, например, ФП + асинхронное программирование), а сразу их съесть за один раз сложно
промисам я предпочитаю функции асинхронной композиции, которые и работают быстрее и совместимы с контрактами callback-last / error-first, см. metasync и мои доклады по этой теме
Конечно нужно рассмотреть это в разрезе DSL языка, но я еще не успел написать примеры, которые продемонстрируют этот аспект, скоро.
насколько я понимаю это стандарт, пришедший еще из λ-исчисления. По сути это просто аппликация(вызов) функций одна к другой (f . g . z) x = f(g(z(x))) = compose(f, g, z)(x).
Вы знаете, что через мои лекции и митапы за год проходит более тысячи студентов и вольных слушателей, а это значит, что все они будут впитывать тот стиль, который видят в примерах кода. А стиль очень важен и я понимаю степень ответственности. Уйма книг и примеров имеют плохой стиль и я не могу ссылаться на них в процессе обучения, поэтому создана эта организация, в которой сейчас уже есть 67 репозиториев с примерами кода по разным темам и я расширю их до порядка нескольких сотен и буду постоянно поддерживать.
Это обсуждение началось в ФБ с публикации двух вариантов кода, оба из которых мне не очень нравились и я пришел к выводу, что хороший стиль императивного кода для JavaScript как-то разработан, а вот общего подхода к стилю и структуре функционального кода нет. Понятия и приемы ФП уже плотно вошли в нашу жизнь, но вот стиль и структура пока очень хаотичны.
Большое спасибо Алексею @mr-mig, Эльдару @edjafarov, Ингвару @RReverser, Алексею @agil и Никите @galkin за критический подход и советы. Надеюсь на вашу поддержку в этом деле и прошу делать issue или RP в случае выявления проблем в примерах кода. Если хотите, я буду уведомлять о тех кусках концептуального кода, которые требуют обсуждения, нажмите :+1: если так.
Какую я ставлю перед собой задачу именно в этом репозитории:
Сразу отвечу на несколько вопросов:
compose
ты прав, но тут удобно писать в прямом порядке, это нагляднее, я не так хорошо знаком с библиотеками фп и не видел где обратныйcompose
называетсяpipe
, если ты имеешь ссылку или уверен, что это общепринятое название, то я заменю