Десятое правило Гринспана - Википедия - Greenspuns tenth rule

Десятое правило программирования Гринспана является афоризм в компьютерное программирование и особенно язык программирования круги, в которых говорится:[1][2]

Любая достаточно сложная C или же Фортран программа содержит для этого случая, неофициально указано, ошибка -привязанная, медленная реализация половины Common Lisp.

Обзор

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

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

Его также можно интерпретировать как сатирическую критику систем, которые включают сложные, легко настраиваемые подсистемы.[3] Вместо того, чтобы включать обычай устный переводчик для некоторых предметно-ориентированный язык, Правило Гринспана предполагает использование широко распространенного полнофункционального языка, такого как Lisp.

Пол Грэм также подчеркивает сатирический характер концепции, хотя и основанный на реальных проблемах:

Звучит как шутка, но в крупных программных проектах это случается в разной степени так часто, что у этого явления есть название - десятое правило Гринспана.[4]

Правило было написано примерно в 1993 г. Филип Гринспан. Хотя это известно как его десятое правило, на самом деле нет предшествующих правил, только десятое. Причина этого по словам Гринспана:

Извини, Хан-Вэнь,[5] но нет 9 предыдущих законов. Я просто пытался дать правилу запоминающееся имя.[6]

Хакер Роберт Моррис позже объявил следствие, который уточняет набор «достаточно сложных» программ, к которым применяется правило:

… Включая 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 ++.

Смотрите также

Рекомендации

  1. ^ "Исследование Филипа Гринспана". 1990–2017 гг. Архивировано из оригинал на 2009-01-24. Получено 2019-10-24.
  2. ^ Грэм, Пол (Май 2002 г.). «Месть ботаников». Получено 2019-10-24.
  3. ^ Десятое правило Гринспана: в каждом ли большом проекте есть интерпретатор Лиспа?
  4. ^ Грэм, Пол (2004). Хакеры и художники: большие идеи эпохи компьютеров. О'Рейли. п.198. ISBN  978-0-596-00662-4. (также на Книги Google )
  5. ^ [1] Профиль Han-Wen на Github
  6. ^ 10-е правило программирования
  7. ^ Цитаты Пола Грэма.
  8. ^ Родос, Кристоф (2008-05-15). «SBCL: Common Lisp, поддерживающий нормальную загрузку» (PDF). Конспект лекций по информатике (Самоподдерживающиеся системы: первый семинар). Получено 2016-10-24.
  9. ^ "[libre-riscv-dev] Вулканизация".