Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
demimurych opened this issue Apr 11, 2022 · 2 comments
Labels

Comments

@demimurych
Copy link

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

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

@demimurych demimurych added the bug label Apr 11, 2022
@tshemsedinov
Copy link
Member

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

@demimurych
Copy link
Author

demimurych commented Apr 20, 2022

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

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

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

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

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

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants