У відомому нарисі Річарда Габріеля «Rise of Worse is Better Better» він протиставляє карикатурні версії дизайнерських філософій MIT / Stanford (Lisp) та New Jersey (C / Unix) уздовж осей простоти, правильності, послідовності та повноти. Він наводить приклад "проблеми програвача ПК" ( обговорюваної в іншому місці Джошем Хаберманом ), щоб стверджувати, що Unix надає пріоритет простоті реалізації та простоті інтерфейсу.
Ще один приклад, який я придумав - це різні підходи до чисел. Lisp може представляти довільно великі числа (до розміру пам'яті), тоді як C обмежує числа фіксованою кількістю бітів (як правило, 32-64). Я думаю, що це ілюструє вісь правильності.
Наведіть декілька прикладів послідовності та повноти? Ось усі описи Габріеля (які він визнає, є карикатурами):
Підхід MIT / Stanford
- Простота - дизайн повинен бути простим, як в реалізації, так і в інтерфейсі. Для інтерфейсу важливіше бути простим, ніж реалізація.
- Правильність - дизайн повинен бути правильним у всіх спостережуваних аспектах. Неправильність просто не допускається.
- Консистенція - дизайн не повинен бути непослідовним. Дизайн дозволяється бути трохи менш простим і менш повним, щоб уникнути невідповідності. Послідовність так само важлива, як і правильність.
- Повнота - дизайн повинен охоплювати стільки важливих ситуацій, скільки є практичним. Усі обґрунтовано очікувані справи повинні бути висвітлені. Простота не дозволяється надмірно знижувати повноту.
Підхід Нью-Джерсі
- Простота - дизайн повинен бути простим, як в реалізації, так і в інтерфейсі. Важливо, щоб реалізація була простою, ніж інтерфейс. Простота - це найважливіша увага в дизайні.
- Правильність - дизайн повинен бути правильним у всіх спостережуваних аспектах. Трохи краще бути простим, ніж правильним.
- Консистенція - дизайн не повинен бути надмірно непослідовним. Послідовність може бути принесена в жертву для простоти в деяких випадках, але краще відмовитися від тих частин конструкції, які стосуються менш поширених обставин, ніж вводити або складність в реалізації, або невідповідність.
- Повнота - дизайн повинен охоплювати стільки важливих ситуацій, скільки є практичним. Усі обґрунтовано очікувані справи повинні бути висвітлені. Повноту можна принести в жертву на користь будь-якої іншої якості. Насправді, повнота повинна бути принесена у жертву, коли піддається небезпеці простота впровадження. Послідовність може бути принесена в жертву, щоб досягти повноти, якщо простота зберігається; Особливо марною є послідовність інтерфейсу.
Зауважте, я не запитую, чи правильно Габріель (це питання не підходить для StackExchange), а про приклади того, про що він, можливо, мав на увазі.