Callbacks are
imperative, promises are functional: Node’s biggest missed
opportunity
Функциональное
программирование, JavaScript, Node.JS, callbacks,
promises и всё такое. Статья для промывания
мозгов:
Если вы
когда-либо слышали фразу "программируемая
точка с запятой", то вы понимаете, о
чём я говорю.
И в лучшем
проявлении, функциональное программирование
декларативно. В императивном
программировании, мы пишем последовательности
инструкций, которые сообщают машине,
как сделать то, что мы хотим. В функциональом
программировании мы описываем зависимости
между значениями, которые сообщают
машине, что мы хотим вычислить, и машина
предлагает последовательности команд,
необходимых для этого вычисления.
…
Имея такое
определение, я хочу пояснить, что, по
моему мнению, является основной ошибкой
дизайна, внесённой Node.JS: решение, сделаное
в самом начале его развития: решение
использовать API на основе коллбеков,
вместо "обещаний" (promises).
…
Я надеюсь
развеять недопонимание, будто "обещания"
это что то, что даёт более аккуратный
синтаксис для основанной на коллбеках
асинхронной работы. На самом деле,
"обещания" позволяют моделировать
вашу проблему фундаментально иным
способом; они глубже, чем синтаксис, и
влияют на то, как вы решаете проблемы
на уровне семантики.
…
Эти
null-значения, возвращаемые функциями,
использующими коллбеки и есть причина
того, что программирование с коллбеками
сложное: такие функции ничего не
возвращают, из за чего их сложно
объединять. Функция, которая ничего не
возвращает, вызывается только ради её
сайд-эффекта, т.к. функция без сайд-эффекта
и без возвращаемого значения - это просто
чёрная дыра. Так что, программирование
с коллбеками императивно по своей сути,
речь идёт об упорядочивании выполнения
полных сайд-эффектов процедур, вместо
отображения входящих данных в выходящие
посредством применения функций
Остальное
тут:
Кто-то может
спросить: зачем это вообще нужно? Обещания
какие-то...
Ответ, по моему,
достаточно очевиден: продемонстрированные
в статье преимущества функционального
подхода позволяют писать более лаконичный
и простой для понимания код. Следовательно,
программист может кодировать решения
более сложных проблем с меньшим
количеством ошибок.
Эффективность
повышается, если использовать «еще
более лучшие» инструменты.
original post http://vasnake.blogspot.com/2013/12/blog-post_5832.html
Комментариев нет:
Отправить комментарий