Giter VIP home page Giter VIP logo

abstractions's People

Contributors

agil avatar marylynjuana avatar tshemsedinov avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

abstractions's Issues

Redundant function use

In 6-functional-pure.js, sortRowsByDensity is called twice: in line 38 and in line 76. It is not necessary to use it in line 38, because the function accepts already sorted rows.

FP good style for JavaScript

Вы знаете, что через мои лекции и митапы за год проходит более тысячи студентов и вольных слушателей, а это значит, что все они будут впитывать тот стиль, который видят в примерах кода. А стиль очень важен и я понимаю степень ответственности. Уйма книг и примеров имеют плохой стиль и я не могу ссылаться на них в процессе обучения, поэтому создана эта организация, в которой сейчас уже есть 67 репозиториев с примерами кода по разным темам и я расширю их до порядка нескольких сотен и буду постоянно поддерживать.

Это обсуждение началось в ФБ с публикации двух вариантов кода, оба из которых мне не очень нравились и я пришел к выводу, что хороший стиль императивного кода для JavaScript как-то разработан, а вот общего подхода к стилю и структуре функционального кода нет. Понятия и приемы ФП уже плотно вошли в нашу жизнь, но вот стиль и структура пока очень хаотичны.

Большое спасибо Алексею @mr-mig, Эльдару @edjafarov, Ингвару @RReverser, Алексею @agil и Никите @galkin за критический подход и советы. Надеюсь на вашу поддержку в этом деле и прошу делать issue или RP в случае выявления проблем в примерах кода. Если хотите, я буду уведомлять о тех кусках концептуального кода, которые требуют обсуждения, нажмите 👍 если так.

Какую я ставлю перед собой задачу именно в этом репозитории:

  • написать одну и ту же задачу в абстракциях разных парадигм и иметь возможность сравнивать их на кратком примере кода в одну страницу (не целый проект)
  • показать несколько хороших стилей, чтоб можно было демонстрировать ох особенности и показывать где какой лучше подходит
  • показать плохие примеры кода, продемонстрировать проблемы, к которым они приводят и научить студентов различать эстетику и стиль кода

Сразу отвечу на несколько вопросов:

  1. @mr-mig и @edjafarov, я согласен по поводу именования, и улучшу его еще в ближайшее время
  2. @agil про порядок compose ты прав, но тут удобно писать в прямом порядке, это нагляднее, я не так хорошо знаком с библиотеками фп и не видел где обратный compose называется pipe, если ты имеешь ссылку или уверен, что это общепринятое название, то я заменю
  3. @RReverser, я понимаю, что смешивать разные уровни абстракции в одном коде это смертный грех, но примеры должны быть краткими, компактными и иллюстративными, поэтому я помещаю их в один файл, группирую в блоки и даю пояснения во время лекции, что эти фрагменты вообще должны быть в разных файлах
  4. Промисы и async/await я тут не использую по двум причинам:
  • это учебный код и перегружать его концепциями нельзя, при этом я согласен, что не должно быть бессмысленного учебного кода, но все же, есть своя специфика, сначала студент осваивает один прием, потом другой, а потом объединяет их (как, например, ФП + асинхронное программирование), а сразу их съесть за один раз сложно
  • промисам я предпочитаю функции асинхронной композиции, которые и работают быстрее и совместимы с контрактами callback-last / error-first, см. metasync и мои доклады по этой теме
  1. Конечно нужно рассмотреть это в разрезе DSL языка, но я еще не успел написать примеры, которые продемонстрируют этот аспект, скоро.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.