thunk



Предыдущая | Следующая

thunk /thuhnk/санк), сущ 1. Санк-участок кода, обеспечивающий нужный адрес, если верить П.З. Ингерману, который изобрел «санки» в 1961 году для привязки фактических параметров к формальному описанию в вызовах процедур в Algol-60. Если при вызове процедуры вместо формального параметра указано выражение, компилятор для вычисления выражения сначала должен сгенерировать санк, а затем спрятать в стандартной ячейке адрес полученного результата 2. Со временем произошло некоторое обобщение этого понятия, и санком стали называть выражение, замороженное вместе с соответствующим контекстом до тех пор, пока не возникнет (если возникнет) необходимость в вычислении этого выражения. Процесс размораживания такой санки называется «форсированием» 3. Подпрограмма (см. stubroutine) в программе с оверлеями, которая загружает нужный сегмент перекрытий и передает ему управление. Ср. с трамплином (trampoline) 4. Люди со стилем работы типа «санк». «Бывают дни, когда мне кажется, что я устроен точно как санк: часто меня просто необходимо заставлять доводить дело до конца.» – выдержка из файла планирования (см. plan file).Историческая справка. Существует множество версий происхождения этого слова, и все они так или иначе базируются на звуковых ассоциациях. Одни люди утверждают, что «санк» – это звук, издаваемый символом при падении в стек, другие настаивают на звуке падения символа в сумматор, третьи утверждают, что этот звук издается при размораживании выражения в момент оценки аргументов. Но если послушать авторов, слово «thunk» было придумано в тот момент, когда после долгих часов обсуждения они наконец пришли к выводу, что тип аргумента в Algol-60 должен вычисляться заранее, упрощая тем самым процесс оценки. Другими словами, тип должен быть заранее продуман (been thought of) – сокращенно «thunk» (по мнению авторов, именно «thunk» должен быть прошедшим временем от глагола «think» – не надо забывать, что дело происходило в два часа ночи).