Ленивое связывание: различия между версиями

Материал из in.wiki
Перейти к навигации Перейти к поиску
 
Строка 11: Строка 11:
  
 
== За пределами программирования ==
 
== За пределами программирования ==
Ленивое связывание может быть использовано для рассуждений о каком-то предмете, без понимания его сущности, на основе анализа структуры его связи с контекстом. См. [[физтеховская школа полемики,]] [[что бы это ни значило]].
+
Ленивое связывание может быть использовано для рассуждений о каком-то предмете, без понимания его сущности, на основе анализа структуры его связи с контекстом.  
 +
 
 +
См: [[физтеховская школа полемики,]] [[что бы это ни значило]].
  
 
== Примечания ==
 
== Примечания ==
  
 
[[Категория:Механизмы языков программирования]]
 
[[Категория:Механизмы языков программирования]]

Текущая версия от 08:22, 25 сентября 2023

Ленивое связывание - приём в программировании, подразумевающий установление связи между переменной, функцией или иной именованной сущностью и её значением в последний момент, только тогда, когда использование этого значения становится непосредственно необходимым. До этого момента все манипуляции компилятора и/или среды выполнения с подлежащей, в дальнейшем, связыванию сущностью, осуществляются как с целостным объектом, без учёта его значения.

Как правило, всё это подразумевает, что связывание происходит в момент выполнения программы, а не в период компиляции[1].

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

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

Значение[править | править код]

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

За пределами программирования[править | править код]

Ленивое связывание может быть использовано для рассуждений о каком-то предмете, без понимания его сущности, на основе анализа структуры его связи с контекстом.

См: физтеховская школа полемики, что бы это ни значило.

Примечания[править | править код]

  1. Это, впрочем, не обязательно, т.к. связывание может потребоваться при использовании макрогенерации во время компиляции.