Клудж или клудж ( / k l ʌ dʒ , k l uː dʒ / ) — это обходной путь или импровизированное решение, которое неуклюже, неэлегантно, неэффективно, трудно расширяемо и трудно поддерживаемо. Этот термин используется в различных областях, таких как компьютерные науки , аэрокосмическая техника , интернет-сленг , эволюционная нейронаука , анимация и государственное управление. Он похож по значению на военно-морской термин jury rig .
У этого слова есть альтернативные варианты написания ( kludge и kluge ) , произношения ( / klʌdʒ / и / kluːdʒ / , рифмующиеся со словами judge и stooge соответственно), а также несколько предложенных этимологий .
Оксфордский словарь английского языка (2-е изд., 1989) цитирует статью Джексона В. Грэнхолма «Как разработать кладж» 1962 года [1] в американском компьютерном журнале Datamation . [2]
kludge /kluːdʒ/ Также kluge . (шуточное изобретение Дж. У. Грэнхолма: см. первую цитату; ср. также bodge гл., fudge гл.)
«Неразборная совокупность плохо сочетающихся частей, образующая неприятное целое» (Грэнхолм); особенно в вычислительной технике , машина, система или программа, которые были импровизированы или «скомпонованы» вместе; поспешно импровизированное и плохо продуманное решение для устранения неисправности или «бага». ...
OED определяет эти два слова-когната слова kludge как: bodge 'неуклюже латать или чинить' и fudge 'неуклюже, кустарно или нечестно подгонять или подгонять'. В статье OED также есть глагол kludge ('импровизировать с кладжем или кладжами') и kludgemanship ('навык в разработке или применении кладжей').
Грэнхолм с юмором придумал вымышленный источник этого термина: [1]
Финеас Берлинг — главный каллиграф издательства Fink and Wiggles Publishing Company, Inc. ... По словам Берлинга, слово «kludge» впервые появилось в английском языке в начале пятнадцатого века. ... Слово «kludge», по словам Берлинга, произошло от того же корня, что и немецкое klug (голландское kloog , шведское klag , датское klog , готское klaugen , латышское kladnis и санскритское veklaunn ), изначально означавшее «умный» или «остроумный». В типичных махинациях языка в процессе эволюционного роста слово «kludge» в конечном итоге стало означать «не такой уж умный» или «довольно смешной» ... Сегодня «kludge» является одним из самых любимых слов в терминологии дизайна, и оно готово к удобному применению в работе любого, кто подключает 110-вольтовую схему к источнику переменного тока 220 В. Однако создание кладжа — занятие не для дилетантов.
Хотя Оксфордский словарь английского языка принимает термин, введенный Грэнхолмом (а не причудливую псевдоэтимологию, процитированную выше), существуют примеры его использования до 1960-х годов.
Американские носители идиша используют klug ( קלוג ) в значении «слишком умный наполовину», что является отраженным значением немецкого klug («умный»). Это может объяснить идею «умного, но неуклюжего и временного», а также вариацию произношения с немецкого. [3] Разумный перевод kludge на немецкий язык дает Krücke, то есть «костыль».
Ср. немецкое Kloß ('клецка', 'комок', уменьшительное Klößchen ), нижнесаксонское klut , klute , голландское kluit , [4] возможно, связано с нижненемецким уменьшительным klütje ('клецка', 'комок'), стандартным датским kludder ('беспорядок') и датским диалектом Ютландии klyt ('плохая работа'), [5]
Аргументы против происхождения от немецкого klug :
Альтернативная этимология [6] предполагает, что написание слова kludge , в частности, в конечном итоге происходит от слова в шотландском языке (языке, тесно связанном с английским): cludge или cludgie/cludgey, означающего «туалет» (в смысле как «комната» или «устройство»), [7] при этом написание kluge , возможно, произошло от немецкого языка, пока эти два термина не были перепутаны в середине 20-го века как британский и американский (соответственно) военный сленг. [6]
The Jargon File (он же The New Hacker's Dictionary ), глоссарий сленга программистов, поддерживаемый Эриком С. Рэймондом , различает kludge и kluge и приводит примеры использования до 1962 года. Kluge , по-видимому, имеет значение «слишком сложный», в то время как kludge имеет только значение «плохо сделанный». [6]
кладж /kluhj/
- н. Неправильное (хотя, к сожалению, распространённое) написание слова kluge (США). Эти два слова путают в американском употреблении с начала 1960-х годов, и их широко путают в Великобритании с конца Второй мировой войны.
- [TMRC] Работающий горшок . (В давней статье в Datamation Джексона Грэнхолма [ так в оригинале ] было сказано примерно следующее: «Неразборчивый набор плохо сочетающихся частей, образующих удручающее целое».)
- v. Использовать ляп, чтобы обойти проблему. «Я пока что ляпнул, но позже исправлю как следует».
В этой записи в файле жаргона отмечается, что слово kludge , по-видимому, произошло через британский военный сленг от шотландского cludge/cludgie («туалет») и стало путаться с американским kluge во время или после Второй мировой войны. [6]
kluge : /klooj/ [от немецкого klug , «умный»; возможно, связано с польским и русским klucz («ключ, намёк, главная мысль»)]
- н. Устройство Руба Голдберга (или Хита Робинсона ), будь то аппаратное или программное обеспечение.
- сущ. Умный программный трюк, предназначенный для решения конкретного неприятного случая целесообразным, хотя и неясным образом. Часто используется для исправления ошибок. Часто включает в себя ad-hockery и граничит с халтурой.
- н. Что-то, что работает по неправильной причине.
- vt. Вставить клудж в программу. «Я замутил эту процедуру, чтобы обойти эту странную ошибку, но, вероятно, есть способ получше».
- [ WPI ] сущ. Функция, реализованная в грубой форме.
В этой записи отмечается, что kluge , которое сейчас часто пишется как kludge , «было оригинальным написанием, которое было зафиксировано в компьютерах еще в середине 1950-х годов и в то время использовалось исключительно по отношению к аппаратным kluges». [6]
Kluge — «это было распространенное военно-морское сленговое слово в эпоху Второй мировой войны для обозначения любого электронного устройства, которое хорошо работало на берегу, но постоянно давало сбои в море». [6] Краткое изложение статьи 1947 года в New York Folklore Quarterly гласит: [8] [9]
Когда его призвали на флот, Мургатройд назвал свою профессию «изготовителем клуге»... Всякий раз, когда Мургатройда спрашивали, чем он занимается, он отвечал, что делает клуге, и на самом деле он был одним из лучших в мире изготовителей клуге. Не желая показаться невеждой, его начальники продолжали давать ему похвалы и повышения. ... Однажды ... адмирал спросил его, что такое клуге, — он был первым человеком, кто это сделал. Мургатройд сказал, что это трудно объяснить, но он сделает один, чтобы адмирал мог увидеть, что это такое. Через пару дней он вернулся со сложным предметом. «Интересно», — сказал адмирал, — «но что он делает?» В ответ Мургатройд сбросил его за борт корабля. Когда предмет затонул, он сказал «клуге».
В файле жаргона также есть kluge around , «избегать ошибки или сложной ситуации, вставляя kluge», и kluge up , «создавать быстрый хак для выполнения задачи».
После того, как статья Грэнхолма 1962 года популяризировала вариант кладжа , оба стали использоваться взаимозаменяемо и путаться. Файл жаргона заключает: [6]
Результатом этой истории является путаница. Многие молодые хакеры из США произносят слово как /klooj/, но пишут его, неправильно из-за его значения и произношения, как 'kludge'. ... Британские хакеры в основном выучили /kluhj/ устно, используют его в ограниченном отрицательном смысле и, по крайней мере, последовательны. Европейские хакеры в основном выучили слово из письменных американских источников и склонны произносить его /kluhj/, но используют более широкое американское значение! Некоторые наблюдатели считают эту путаницу уместной ввиду значения слова.
В космонавтике кладж был временной конструкцией, использующей отдельные общедоступные компоненты, которые не были пригодны для полета, чтобы проверить конструкцию и обеспечить параллельную разработку программного обеспечения, пока разрабатывались и изготавливались интегрированные компоненты. Термин был достаточно распространен, чтобы появиться в вымышленном фильме о космической программе США. [10]
Возможно, самым большим промахом стала первая американская космическая станция Skylab . Ее два основных компонента, Saturn Workshop и Apollo Telescope Mount , начали разрабатываться как отдельные проекты (SWS был промахом из ступени S-IVB ракет-носителей Saturn 1B и Saturn V , ATM был промахом из раннего проекта посадочной ступени лунного модуля Apollo ). Позже SWS и ATM были объединены в Apollo Applications Program , но компоненты должны были запускаться по отдельности, а затем стыковаться на орбите. В окончательном проекте SWS и ATM запускались вместе, но для того, чтобы концепция одного запуска работала, ATM должен был повернуться на 90 градусов на ферменной конструкции из своего положения запуска в свою ориентацию на орбите, освобождая путь для экипажа для стыковки своего командно-служебного модуля Apollo в осевом стыковочном порту адаптера множественной стыковки.
Производитель шлюзового модуля, McDonnell Douglas , даже переработал конструкцию люка со своего космического корабля Gemini и переделал то, что изначально было разработано для конического командного модуля Gemini, на цилиндрический шлюзовой модуль Skylab. Проект Skylab, которым руководил Центр космических полетов им. Маршалла Национального управления по аэронавтике и исследованию космического пространства , рассматривался Центром пилотируемых космических аппаратов (позднее Космическим центром Джонсона ) как вторжение в его историческую роль центра пилотируемых космических полетов NASA. Таким образом, персонал MSC не упускал возможности унизить проект Skylab, назвав его «переделкой». [11]
В современной компьютерной терминологии «kludge» (или часто « hack ») — это решение проблемы, производительность задачи или исправление системы, которое является неэффективным, неэлегантным («hacky») или даже непонятным, но которое каким-то образом работает. Это похоже на обходной путь , но быстрый. «Kludge around something» означает избегать ошибки или трудности, создавая kludge, возможно, используя свойства самой ошибки. Kludge часто используется для изменения работающей системы, избегая при этом фундаментальных изменений, или для обеспечения обратной совместимости. Hack также может использоваться с положительным подтекстом для быстрого решения раздражающей проблемы. [12] [13]
Клудж часто используется для исправления непредвиденной проблемы в более раннем клудже; по сути, это своего рода хлам .
Решение может быть ляпом, если оно не срабатывает в угловых случаях . Для создания ляпа в угловых случаях обычно требуется глубокое знание проблемной области и среды выполнения. Чаще всего ляпом является эвристика, которая , как ожидалось, будет работать почти всегда, но в итоге часто терпит неудачу.
В советском анекдоте 1960-х годов рассказывается о компьютерной части, которой для работы требовался слегка задержанный сигнал. Вместо того чтобы настраивать систему синхронизации, хитрость заключалась в подключении длинных катушек внутренних проводов для замедления электрического сигнала.
Другой тип ляпа — это уклонение от неизвестной проблемы или ошибки в компьютерной программе . Вместо того чтобы продолжать бороться за диагностику и исправление ошибки, программист может написать дополнительный код для компенсации. Например, если переменная постоянно оказывается удвоенной, ляпом может быть добавление более позднего кода, который делит на два, вместо того, чтобы искать исходное неверное вычисление.
В компьютерных сетях примером ошибки является использование NAT (трансляция сетевых адресов) (RFC 1918) или PAT (трансляция адресов портов) для решения проблемы нехватки адресов IPv4 .
В терминологии FidoNet кладжом называют фрагмент контрольных данных, встроенный в сообщение.
Метафора «клудж» или «клуге» была адаптирована в таких областях, как эволюционная нейронаука , особенно в отношении человеческого мозга .
Нейробиолог Дэвид Линден рассуждает о том, как сторонники разумного замысла неверно истолковали анатомию мозга: [14]
Трансцендентные аспекты нашего человеческого опыта, то, что касается нашего эмоционального и когнитивного ядра, не были даны нам Великим Инженером. Это не новейшие особенности дизайна безупречно созданного мозга. Скорее, на каждом шагу дизайн мозга был халтурой, обходным путем, мешаниной, подделкой. То, что мы ценим выше всего в нашем человеческом опыте (любовь, память, мечты и предрасположенность к религиозной мысли), является результатом определенного скопления специальных решений, которые накапливались в течение миллионов лет истории эволюции. Дело не в том, что у нас есть фундаментально человеческие мысли и чувства, несмотря на неуклюжую конструкцию мозга, сформированную изгибами и поворотами эволюционной истории. Скорее, они у нас есть именно из-за этой истории.
В книге психолога-исследователя Гэри Маркуса «Клюги: бессистемное построение человеческого разума» эволюционные клюги сравниваются с инженерными, например, с вакуумными стеклоочистителями, работающими от коллектора : при ускорении или движении в гору «дворники замедляются до скорости улитки или даже вообще перестают работать». Маркус описал биологический клюг: [15]
Например, сетчатка глаза позвоночного , которая установлена задом наперед, обращена к затылку, а не к передней части головы. В результате на ее пути встает всякая всячина, включая кучу проводов, которые проходят через глаз и оставляют нам пару слепых пятен , по одному в каждом глазу.
В рассказе Джона Варли 1985 года «Press Enter_» главный герой, хакер-затворник, берет себе имя Чарльз Клюге.
В научно-фантастическом телесериале «Андромеда » генетически модифицированные люди, называемые ницшеанцами, используют этот термин в уничижительном смысле по отношению к генетически немодифицированным людям.
В статье 2012 года политолог Стивен Телес использовал термин «kludgeocracy» для критики сложности политики социального обеспечения в Соединенных Штатах. Телес утверждает, что институциональные и политические препятствия принятию законодательства часто заставляют политиков принимать целесообразные исправления, а не тщательно продуманные реформы. [16] [17]