Десятое правило Гринспана - Greenspuns tenth rule - Wikipedia
Десятое правило программирования Гринспана является афоризм в компьютерное программирование и особенно язык программирования круги, в которых говорится:[1][2]
Любая достаточно сложная C или же Фортран программа содержит для этого случая, неофициально указано, ошибка -привязанная, медленная реализация половины Common Lisp.
Обзор
Правило выражает мнение, что аргументированная гибкость и расширяемость разработан на языке программирования Лисп включает все функциональные возможности, которые теоретически необходимы для написания любой сложной компьютерной программы, и что функции, необходимые для разработки и управления такой сложностью в других языках программирования, эквивалентны некоторому подмножеству методов, используемых в Лиспе.
Другие языки программирования, претендующие на звание более простых, требуют от программистов бессистемного переосмысления значительного количества необходимых функций, которые присутствуют в Лиспе в качестве стандартной, проверенной временем основы.
Его также можно интерпретировать как сатирическую критику систем, которые включают сложные, легко настраиваемые подсистемы.[3] Вместо того, чтобы включать обычай устный переводчик для некоторых предметно-ориентированный язык, Правило Гринспана предполагает использование широко распространенного полнофункционального языка, такого как Lisp.
Пол Грэм также подчеркивает сатирический характер концепции, хотя и основанный на реальных проблемах:
Звучит как шутка, но в крупных программных проектах это случается в разной степени так часто, что у этого явления есть название - десятое правило Гринспана.[4]
Правило было написано примерно в 1993 г. Филип Гринспан. Хотя это известно как его десятое правило, на самом деле нет предшествующих правил, только десятое. Причина этого по словам Гринспана:
Извини, Хан-Вэнь,[5] но нет 9 предыдущих законов. Я просто пытался дать правилу запоминающееся имя.[6]
— Филип Гринспан, http://philip.greenspun.com/bboard/q-and-a-fetch-msg?msg_id=000tgU
Хакер Роберт Моррис позже объявил следствие, который уточняет набор «достаточно сложных» программ, к которым применяется правило:
… Включая Common Lisp.[7]
Это следствие в шутку относится к тому факту, что многие реализации Common Lisp (особенно доступные в начале 1990-х) зависят от низкоуровневого ядра скомпилированного C, что позволяет обойти проблему самонастройка но сам по себе может отличаться по качеству, по крайней мере, по сравнению с чисто самостоятельный хостинг Common Lisp.[8]
Инженер-программист Стюарт Милбергер затем приступили к доказательству следствия Морриса:
Я прекратил портировать Open Inventor на Common Lisp, потому что я реализовывал некорректную и плохо определенную реализацию пространств имен в Common Lisp (первый шаг Scheming Pony в доказательстве следствия Морриса из 10-го Greeenspun), как это сделал Open Inventor до того, как были поддерживаются, как шаблоны, и мульти-методы (я думаю, пока нет). Кто-то также сказал Страуструпу взглянуть на макросы Common Lisp и остановить безумие шаблонов.[9]
Это доказательство в шутку относится к тому факту, что Common Lisp имеет относительно примитивную систему для разделения символов, называемых «пакетами», а также что может существовать система Greenspun's 11 по сравнению с C ++.
Смотрите также
- Эффект внутренней платформы
- Программное обеспечение принцип Питера
- Брезент Тьюринга
- Закон Завинского оболочек программного обеспечения
Рекомендации
- ^ "Исследование Филипа Гринспана". 1990–2017 гг. Архивировано из оригинал на 2009-01-24. Получено 2019-10-24.
- ^ Грэм, Пол (Май 2002 г.). «Месть ботаников». Получено 2019-10-24.
- ^ Десятое правило Гринспана: в каждом ли большом проекте есть интерпретатор Лиспа?
- ^ Грэм, Пол (2004). Хакеры и художники: большие идеи эпохи компьютеров. О'Рейли. п.198. ISBN 978-0-596-00662-4. (также на Книги Google )
- ^ [1] Профиль Han-Wen на Github
- ^ 10-е правило программирования
- ^ Цитаты Пола Грэма.
- ^ Родос, Кристоф (2008-05-15). «SBCL: Common Lisp, поддерживающий нормальную загрузку» (PDF). Конспект лекций по информатике (Самоподдерживающиеся системы: первый семинар). Получено 2016-10-24.
- ^ "[libre-riscv-dev] Вулканизация".