HowProgrammingWorks/Book

Глава: 2-6-Function.md. Неоднозначная семантика терминов: колбек. фабрика функций, функция-обертка, фабрики классов и прототипов соответственно

demimurych opened this issue · 2 comments

  1. Если функция передается в другую функцию в качестве
    аргумента, то это колбек.
  2. Если функция фозвращается в качестве результата, то это
    фабрика функций на замыканиях.
  3. Если возвращаемая функция имеет ту же семантику, что и
    получаемая в аргументах, но с дополнительным (расширенным)
    поведением, то это функция-обертка.
  4. Редко бывает, что возвращаемая функция не связана с функцией
    из аргументов, или связана не прямо, а также имеет другую
    семантику и функцией-оберткой она не является.
  5. Если на выходе класс или функция-конструктор, то это фабрики
    классов и прототипов соответственно.
    Функция-обертка (Wrapper)

Термины описанные выше, отличаются друг от друга только качеством исходящими данных
и совершенно не отличаются по форме(семантике), формирования подобных функций.
Не говоря уже о том, что заявленная разница, характерна только для императивного программирования.

Фактически, все заявленные термины являются типичной композицией функций.

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

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

в этой классификации не вижу.

  1. Идея книги декларируется как программировании на уровне абстракций, что должно принести в работу программиста новый уровень его эффективности.
  2. При этом, заявленные термины характерны исключительно для императивного стиля программирования. И не имеют никакого практического значения при функциональном программировании. В функциональной парадигме никто понятия не имеет о том что такое callback, фабрика, потоки, асинхронное программирование и прочая мишура императивной парадигмы, по той причине что программист в плоскости функциональной парадигмы оперирует абстракциями далекими от конкретной реализации того или иного способа оперирования обьектами, промисами или любой другой части конкретного языка и конкретной архитектуры.
    По этой причине функциональные языки и называют мета языками. Но сейчас не об этом.

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

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

По этой причине я и сделал свой комментарий.