Десятое правило Гринспена
Десятое правило программирования Гринспана — это афоризм в компьютерном программировании и особенно в кругах языков программирования , который гласит: [ 1 ] [ 2 ]
Любая достаточно сложная на C или Fortran программа содержит специальную , неформально заданную, полную ошибок и медленную реализацию половины Common Lisp .
Обзор
[ редактировать ]Правило выражает мнение, что заявленная гибкость и расширяемость, заложенная в язык программирования Lisp, включает в себя все функциональные возможности, которые теоретически необходимы для написания любой сложной компьютерной программы, и что функции, необходимые для разработки и управления такой сложностью в других языках программирования, эквивалентны некоторым подмножество методов, используемых в Lisp.
Другие языки программирования, хотя и претендуют на свою простоту, требуют от программистов бессистемного изобретательства значительного количества необходимых функций, которые присутствуют в Lisp как стандартная, проверенная временем база.
Его также можно интерпретировать как сатирическую критику систем, включающих сложные, легко настраиваемые подсистемы. [ 3 ] Вместо включения специального интерпретатора для какого-либо предметно-ориентированного языка правило Гринспуна предлагает использовать широко распространенный полнофункциональный язык, такой как Lisp.
Пол Грэм также подчеркивает сатирический характер концепции, хотя и основанной на реальных проблемах:
Это звучит как шутка, но в больших программных проектах это случается в той или иной степени так часто, что этому явлению даже дали название — Десятое правило Гринспана. [ 4 ]
Правило было написано примерно в 1993 году Филипом Гринспаном . Хотя это правило известно как его десятое правило, это неправильное название. На самом деле предшествующих правил нет, только десятое. Причина этого по мнению Гринспана:
Извини, Хань-Вэнь, но девяти предшествующих законов не существует. Я просто пытался дать правилу запоминающееся имя. [ 5 ]
Хакер Роберт Моррис позже объявил следствие , разъясняющее набор «достаточно сложных» программ, к которым применяется правило:
…включая Common Lisp. [ 6 ]
Это следствие в шутку относится к тому факту, что многие реализации Common Lisp (особенно те, которые были доступны в начале 1990-х годов) зависят от низкоуровневого ядра скомпилированного C , которое обходит проблему начальной загрузки , но само по себе может быть несколько разным по качеству, по крайней мере, по сравнению с на чисто самостоятельный Common Lisp. [ 7 ]
См. также
[ редактировать ]- Эффект внутренней платформы
- Программный принцип Питера
- Тьюринговая яма
- Закон оболочки программного обеспечения Завинского.
Ссылки
[ редактировать ]- ^ Гринспан, Филип (1990–2017). «Исследование Филипа Гринспана» . Проверено 23 декабря 2020 г.
- ^ Грэм, Пол (май 2002 г.). «Месть ботанов» . Проверено 1 мая 2023 г.
- ^ «Десятое правило Гринспана: каждый ли крупный проект включает в себя интерпретатор Лиспа?» . Обмен стеками . 12 апреля 2017 г. Проверено 1 мая 2023 г.
- ^ Грэм, Пол (2004). Хакеры и художники: великие идеи компьютерной эпохи . О'Рейли Медиа . ISBN 978-0-596-00662-4 .
- ^ Гринспан, Филип (27 сентября 2003 г.). «10-е правило программирования» .
- ^ «Цитаты Лиспа» . paulgraham.com .
- ^ Роудс, Кристоф (15 мая 2008 г.). SBCL: Common Lisp с разумной загрузкой (PDF) . Конспекты лекций по информатике . Проверено 1 мая 2023 г.