Trong bài tiểu luận nổi tiếng của Richard Gabriel The Rise of Worse is Better , ông đối chiếu các phiên bản được biếm họa của các triết lý thiết kế MIT / Stanford (Lisp) và New Jersey (C / Unix) dọc theo trục của sự đơn giản, chính xác, nhất quán và hoàn chỉnh. Ông đưa ra ví dụ về "vấn đề kẻ thua cuộc trên PC" (được thảo luận ở nơi khác bởi Josh Haberman ) để cho rằng Unix ưu tiên sự đơn giản trong việc thực hiện hơn sự đơn giản của giao diện.
Một ví dụ khác tôi đã đưa ra là các cách tiếp cận khác nhau về số. Lisp có thể biểu diễn các số lớn tùy ý (tối đa kích thước của bộ nhớ), trong khi C giới hạn số ở một số bit cố định (thường là 32-64). Tôi nghĩ rằng điều này minh họa trục chính xác.
Một số ví dụ cho sự nhất quán và đầy đủ là gì? Dưới đây là tất cả các mô tả của Gabriel (mà anh thừa nhận là biếm họa):
Cách tiếp cận MIT / Stanford
- Đơn giản - thiết kế phải đơn giản, cả về cách thực hiện và giao diện. Điều quan trọng là giao diện phải đơn giản hơn so với việc thực hiện.
- Tính chính xác - thiết kế phải chính xác trong tất cả các khía cạnh quan sát được. Không chính xác chỉ đơn giản là không được phép.
- Tính nhất quán - thiết kế không được nhất quán. Một thiết kế được cho phép hơi đơn giản và ít hoàn thiện hơn để tránh sự không nhất quán. Tính nhất quán cũng quan trọng như tính chính xác.
- Tính đầy đủ - thiết kế phải bao gồm nhiều tình huống quan trọng như thực tế. Tất cả các trường hợp dự kiến hợp lý phải được bảo hiểm. Đơn giản không được phép giảm quá mức hoàn thành.
Phương pháp tiếp cận New Jersey
- Đơn giản - thiết kế phải đơn giản, cả về cách thực hiện và giao diện. Điều quan trọng là việc thực hiện phải đơn giản hơn giao diện. Đơn giản là sự xem xét quan trọng nhất trong một thiết kế.
- Tính chính xác - thiết kế phải chính xác trong tất cả các khía cạnh quan sát được. Nó là một chút tốt hơn để đơn giản hơn chính xác.
- Tính nhất quán - thiết kế không được quá nhất quán. Tính nhất quán có thể được hy sinh vì đơn giản trong một số trường hợp, nhưng tốt hơn là bỏ những phần đó của thiết kế xử lý các trường hợp ít phổ biến hơn là đưa ra sự phức tạp triển khai hoặc không nhất quán.
- Tính đầy đủ - thiết kế phải bao gồm nhiều tình huống quan trọng như thực tế. Tất cả các trường hợp dự kiến hợp lý nên được bảo hiểm. Sự hoàn thiện có thể được hy sinh để ủng hộ bất kỳ chất lượng nào khác. Trong thực tế, tính đầy đủ phải được hy sinh bất cứ khi nào việc thực hiện đơn giản bị nguy hiểm. Tính nhất quán có thể được hy sinh để đạt được sự hoàn thiện nếu sự đơn giản được giữ lại; đặc biệt vô giá trị là sự nhất quán của giao diện.
Xin lưu ý Tôi không hỏi liệu Gabriel có đúng không (đây là một câu hỏi không phù hợp với StackExchange) nhưng cho các ví dụ về những gì anh ta có thể đã đề cập đến.