HowProgrammingWorks/Book

Глава: 2-6-Function.md. Термины Superposition и Composition говорят об одном и том же

demimurych opened this issue · 2 comments

Термин Superposition является синонимом к термину Composition

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

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

в смысле выражения, состоящего из вложенных вызовов функций, а композицию, в смысле создания новой функции из этого выражения

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

Если рассматривать это в плоскости современного JS это так же имеет мало смысла, по причине того, что программист, реализуя набор некоторых хелперов, позволяющих писать на JS в функциональном стиле, автоматически прийдет к форме когда в форме выражения ( func( func2 ( func3 ( func4 (val) ) ) ) у него никогда не будет.
Не будет по причине того, что никто в здравом уме писать такие цепочки функций не будет - это утомительно и непродуктивно. И даже при реализации инструмента с нуля, сразу же придет к идее списков, которые при решении в лоб, будет обычным массивом содержащим набор функций для композиции.

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

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

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