Я тут уже как-то задавал вопрос, почему фактический разрыв зависимостей называется внедрением зависимостей.
Внятного ответа не получил.
Тогда задам второй вопрос: почему замыкание называется замыканием?
Откуда такое название пошло-то?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
LVV>>Откуда такое название пошло-то? S>Есть версия что из теории множеств (Замкнутое множество / Closed set)
с точки зрения программирования: любая чистая функция является замыканием?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
LVV>с точки зрения программирования: любая чистая функция является замыканием?
вообще никакой связи с чистотой. Т.е. может быть чистой без замыкания и замыканием, но не чистой.
LVV>>с точки зрения программирования: любая чистая функция является замыканием? S>вообще никакой связи с чистотой. Т.е. может быть чистой без замыкания и замыканием, но не чистой.
Тогда вообще непонятно.
Что является замыканием в программировании?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
LVV>>>с точки зрения программирования: любая чистая функция является замыканием? S>>вообще никакой связи с чистотой. Т.е. может быть чистой без замыкания и замыканием, но не чистой. LVV>Тогда вообще непонятно. LVV>Что является замыканием в программировании?
Техника связывания переменных из лексического контекста в первоклассных функциях.
Например, нет проблеммы использовать глобальные переменные в любой функции. Но использовать локальные переменные другой функции, которая определяет данную функцию — с этим сложнее. Так вот, техника связывания таких переменных и называется замыканием.
LVV>>>>с точки зрения программирования: любая чистая функция является замыканием? S>>>вообще никакой связи с чистотой. Т.е. может быть чистой без замыкания и замыканием, но не чистой. LVV>>Тогда вообще непонятно. LVV>>Что является замыканием в программировании? S>Техника связывания переменных из лексического контекста в первоклассных функциях. S>Например, нет проблеммы использовать глобальные переменные в любой функции. Но использовать локальные переменные другой функции, которая определяет данную функцию — с этим сложнее. Так вот, техника связывания таких переменных и называется замыканием.
То есть, [] в лямдах С++ — это и есть замыкание?
От жеж блин...
Век живи, век учись — дураком помрешь...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
S>>Например, нет проблеммы использовать глобальные переменные в любой функции. Но использовать локальные переменные другой функции, которая определяет данную функцию — с этим сложнее. Так вот, техника связывания таких переменных и называется замыканием. LVV>То есть, [] в лямдах С++ — это и есть замыкание?
Не вполне. Замыкание — это техника. Кунг-фу такое. А то, что в [] в лямбдах C++ — это описание переменных, которые должны быть захвачены в замыкание. Многие языки это делают без явного указания, т.е. списка в квадратных скобках нет, а замыкание — есть. Да даже лямбда не обязательна для появления замыкания в общем виде (не про C++). LVV>От жеж блин... LVV>Век живи, век учись — дураком помрешь...
Peter J. Landin defined the term closure in 1964 as having an environment part and a control part as used by his SECD machine for evaluating expressions.[3] Joel Moses credits Landin with introducing the term closure to refer to a lambda expression whose open bindings (free variables) have been closed by (or bound in) the lexical environment, resulting in a closed expression, or closure.[4][5] This usage was subsequently adopted by Sussman and Steele when they defined Scheme in 1975,[6] a lexically scoped variant of Lisp, and became widespread.
Здравствуйте, LaptevVV, Вы писали:
LVV>Я тут уже как-то задавал вопрос, почему фактический разрыв зависимостей называется внедрением зависимостей. LVV>Внятного ответа не получил. LVV>Тогда задам второй вопрос: почему замыкание называется замыканием? LVV>Откуда такое название пошло-то?
Лингвисты говорят, что в индоевропейском тот корень (do̅, dəH, как угодно), который дал русское "дать", изначально имел смысл двустороннего обмена (и в некоторых потомках поэтому получил смысл "взять", а не "дать").
Это я к тому, что смысл термина будет зависеть от того, с какой стороны посмотреть — для вызывающего, да, это разрыв зависимостей, а для создаваемого объекта, наоборот, их создание
Созданная функция как бы "замыкается в себе" со всеми данными.
Ещё похожий эффект: слово virtual со смыслом "настоящий", "реальный" (и сейчас virtually — на самом деле), получил смысл "иллюзорный, не существующий в реальности" сначала через "виртуальную память", а потом "виртуальную реальность". Точно так же: видимое реальным для того, кто внутри — но иллюзорное для того, кто снаружи...
А могли назвать semblant memory, хотя у этого тоже были бы свои странные ассоциации.
Это я не про непосредственную историю (рядом пересказали со ссылкой), но к тому, что такое употребление имело все возможности успешно закрепиться, потому что есть логика, которой оно не противоречит.
Здравствуйте, LaptevVV, Вы писали:
LVV>>>с точки зрения программирования: любая чистая функция является замыканием? S>>вообще никакой связи с чистотой. Т.е. может быть чистой без замыкания и замыканием, но не чистой. LVV>Тогда вообще непонятно. LVV>Что является замыканием в программировании?
Внешние переменные, на которые ссылается лямбда-выражение, называются захваченными переменными.
Лямбда-выражение, которое захватывает переменные, называется замыканием.
Здравствуйте, netch80, Вы писали:
N>Лингвисты говорят, что в индоевропейском тот корень (do̅, dəH, как угодно), который дал русское "дать", изначально имел смысл двустороннего обмена (и в некоторых потомках поэтому получил смысл "взять", а не "дать"). N>Это я к тому, что смысл термина будет зависеть от того, с какой стороны посмотреть — для вызывающего, да, это разрыв зависимостей, а для создаваемого объекта, наоборот, их создание N>Созданная функция как бы "замыкается в себе" со всеми данными.
N>Ещё похожий эффект: слово virtual со смыслом "настоящий", "реальный" (и сейчас virtually — на самом деле), получил смысл "иллюзорный, не существующий в реальности" сначала через "виртуальную память", а потом "виртуальную реальность". Точно так же: видимое реальным для того, кто внутри — но иллюзорное для того, кто снаружи... N>А могли назвать semblant memory, хотя у этого тоже были бы свои странные ассоциации.
N>Это я не про непосредственную историю (рядом пересказали со ссылкой), но к тому, что такое употребление имело все возможности успешно закрепиться, потому что есть логика, которой оно не противоречит.
Еще big и litte endian туда же
N>Созданная функция как бы "замыкается в себе" со всеми данными.
Дык это любая функция со своими локальными переменными — "вещь в себе" N>Это я не про непосредственную историю (рядом пересказали со ссылкой), но к тому, что такое употребление имело все возможности успешно закрепиться, потому что есть логика, которой оно не противоречит.
Вот жеж, блин, лингвистические изыскания проводить надо...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
N>>Созданная функция как бы "замыкается в себе" со всеми данными. LVV>Дык это любая функция со своими локальными переменными — "вещь в себе"
нет, пока её не начинают экспортировать с частью состояния наружу (называется, функция становится first class citizen).
N>>Это я не про непосредственную историю (рядом пересказали со ссылкой), но к тому, что такое употребление имело все возможности успешно закрепиться, потому что есть логика, которой оно не противоречит. LVV>Вот жеж, блин, лингвистические изыскания проводить надо...
Здравствуйте, LaptevVV, Вы писали:
LVV>Я тут уже как-то задавал вопрос, почему фактический разрыв зависимостей называется внедрением зависимостей. LVV>Внятного ответа не получил.
Потому что перевод "внедрение" — исторически некорректный. Внедрение — это когда чего-то нет и мы это "внедряем".
А вот калька "инъекция" передает смысл более правильно.
Зависимость ведь уже есть на теле пациента (читай "системы") в виде отметки для укола или рекомендации врача что "пациенту нужно такое-то лекарство" (читай "тип инжектируемого поля уже объявлен"). Инъекция — это введение укола с лекарством (инстанцированным DI-контейнером объектом данного типа или его подтипов).
Здравствуйте, LaptevVV, Вы писали:
LVV>почему замыкание называется замыканием?
В русском для closure в этом контексте более близкими по смыслу являются "закрытие" или "укупорка", но эти слова выглядят откровенно "неофициально", и плохо подходят на роль терминов.
Еще очень удачно, что получилось внедрить хотя бы "замыкание". С нынешними тенденциями легко могли бы запустить транскрипцию вроде "кложа/кложи/кложей", искренне полагая, что подобное словообразование обогатит технический русский.
Почему у опсосов "безлимитные тарифы" подразумевают ограниченный траффик?
Например "безлимитный интернет 50Гбайт". Или "безлимитный интернет со скоростью 20МБит".
По-настоящему безлимитный инернет получается -- это который по сколько-то рублей за мегабайт.
Пока средства на счету не кончатся -- никаких лимитов.
Здравствуйте, Евгений Музыченко, Вы писали: ЕМ>Еще очень удачно, что получилось внедрить хотя бы "замыкание". С нынешними тенденциями легко могли бы запустить транскрипцию вроде "кложа/кложи/кложей", искренне полагая, что подобное словообразование обогатит технический русский.
Не, кложа — это такой лисп поверх JVM.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, fk0, Вы писали: fk0>По-настоящему безлимитный инернет получается -- это который по сколько-то рублей за мегабайт. fk0>Пока средства на счету не кончатся -- никаких лимитов.
Нет, это уже какой-то лимитированный безлимит. Настоящий безлимит должен продолжаться, невзирая на остаток на счету.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.