Чем хуже, тем лучше (Cyb ]r'y, myb lrcoy)

Перейти к навигации Перейти к поиску

Чем хуже, тем лучше — подход к разработке программного обеспечения, объявляющий простоту реализации и простоту интерфейса более важными, чем любые другие свойства системы. Этот стиль описан Ричардом П. Гэбриелом (Richard P. Gabriel) в работе «Lisp: Good News, Bad News, How to Win Big» в разделе «The Rise of 'Worse is Better'» и часто перепечатывается отдельной статьёй.

Гэбриел описывает подход так:

  1. Простота: реализация и интерфейс должны быть простыми. Простота реализации даже несколько важнее простоты интерфейса. Простота — самое важное требование при выборе дизайна.
  2. Правильность: дизайн должен быть правильным во всех видимых проявлениях. Простой дизайн немного лучше, чем правильный.
  3. Логичность (последовательность): дизайн не должен быть слишком нелогичным. Иногда можно пожертвовать логичностью ради простоты, но лучше отказаться от тех частей дизайна, которые полезны лишь в редких случаях, чем усложнить реализацию или пожертвовать логичностью.
  4. Полнота: дизайн должен охватывать как можно больше важных ситуаций. Полнотой можно жертвовать в пользу остальных качеств и обязательно нужно жертвовать, если она мешает простоте. Логичностью можно жертвовать в пользу полноты, если сохраняется простота (особенно бесполезна логичность интерфейса).

Гэбриел считает язык C и систему Unix примерами такого подхода.

В статье ему противопоставляется подход, который называется «подход MIT» (MIT — Massachusetts Institute of Technology). Гэбриел так описывает этот подход к дизайну:

  1. Простота: реализация и интерфейс должны быть простыми. Простота интерфейса важнее простоты реализации.
  2. Правильность: дизайн должен быть правильным во всех отношениях. Неправильный дизайн категорически запрещён.
  3. Логичность так же важна, как и правильность. Ради логичности можно жертвовать простотой и полнотой.
  4. Полнота: дизайн должен охватывать как можно больше важных ситуаций. Все вероятные ситуации должны быть предусмотрены. Простота не должна слишком мешать полноте.

Гэбриел утверждает, что подход «чем хуже, тем лучше» предпочтительнее «подхода MIT». Простая в реализации система будет легко перенесена под разные операционные системы, то есть быстро распространится ещё до того, как система, сделанная по принципам MIT, будет написана. Более простая в реализации система привлечёт больше пользователей, понимающих, как она работает, и желающих её улучшить. Улучшения будут продолжаться, пока система не станет почти идеальной. Как пример Гэбриел приводит компиляторы для языков C и Лисп. В 1987 году, пишет Гэбриел, компиляторы с этих языков были почти одинаковы по качеству, но было гораздо больше желающих улучшить компилятор С, чем компилятор Лиспа.

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