Worse is Better

  • یوسف مهرداد

I and just about every designer of Common Lisp and CLOS has had extreme exposure to the MIT/Stanford style of design. The essence of this style can be captured by the phrase the right thing. To such a designer it is important to get all of the following characteristics right:

* Simplicity — the design must be simple, both in implementation and interface. It is more important for the interface to be simple than the implementation.

* Correctness — the design must be correct in all observable aspects. Incorrectness is simply not allowed.

* Consistency — the design must not be inconsistent. A design is allowed to be slightly less simple and less complete to avoid inconsistency. Consistency is as important as correctness.

* Completeness — the design must cover as many important situations as is practical. All reasonably expected cases must be covered. Simplicity is not allowed to overly reduce completeness.

I believe most people would agree that these are good characteristics. I will call the use of this philosophy of design the MIT approach Common Lisp (with CLOS) and Scheme represent the MIT approach to design and implementation.
The worse-is-better philosophy is only slightly different:

* Simplicity — the design must be simple, both in implementation and interface. It is more important for the implementation to be simple than the interface. Simplicity is the most important consideration in a design.

* Correctness — the design must be correct in all observable aspects. It is slightly better to be simple than correct.

* Consistency — the design must not be overly inconsistent. Consistency can be sacrificed for simplicity in some cases, but it is better to drop those parts of the design that deal with less common circumstances than to introduce either implementational complexity or inconsistency.

* Completeness — the design must cover as many important situations as is practical. All reasonably expected cases should be covered. Completeness can be sacrificed in favor of any other quality. In fact, completeness must sacrificed whenever implementation simplicity is jeopardized. Consistency can be sacrificed to achieve completeness if simplicity is retained; especially worthless is consistency of interface.

There is a final benefit to worse-is-better. Because a New Jersey language and system are not really powerful enough to build complex monolithic software, large systems must be designed to reuse components. Therefore, a tradition of integration springs up.

…..
How does the right thing stack up? There are two basic scenarios: the big complex system scenario and the diamond-like jewel scenario.

The big complex system scenario goes like this:
First, the right thing needs to be designed. Then its implementation needs to be designed. Finally it is implemented. Because it is the right thing, it has nearly 100% of desired functionality, and implementation simplicity was never a concern so it takes a long time to implement. It is large and complex. It requires complex tools to use properly. The last 20% takes 80% of the effort, and so the right thing takes a long time to get out, and it only runs satisfactorily on the most sophisticated hardware.

The diamond-like jewel scenario goes like this:
The right thing takes forever to design, but it is quite small at every point along the way. To implement it to run fast is either impossible or beyond the capabilities of most implementors.

Richard P. Gabriel, 1991
Reference: http://www.dreamsongs.com/WIB.html

Quote:
there is nothing new under the sun It has all been done before.
Sherlock Holmes

https://bibalan.com/?p=442
یوسف مهرداد

یوسف مهرداد


کانال تلگرام

نظرات (6)

wave
  • شهروند دردمند

    ۱۷ اردیبهشت ۱۳۹۰ در ۰۰:۰۰

    با سلام و احترام
    خیلی خیلی قالب جدیدتون خوب شده است و به قول خودتان اشکال یو آی ندارد
    جسارت بنده را هم به بزرگواری خودتان ببخشید
    همان گونه که در مطالب وبلاگم عرض کردم این انتقاد کردن هم جزئی از شخصیت من است
    از ابراز محبت شما به وبلاگم سپاسگزارم. باعث افتخار است که خوانندگان فرهیخته‌ای چون شما دارم
    پیروز و سرفراز باشید
    ارادتمند

    پاسخ
  • شهروند دردمند

    ۱۷ اردیبهشت ۱۳۹۰ در ۰۰:۰۰

    با سلام و احترام
    خیلی خیلی قالب جدیدتون خوب شده است و به قول خودتان اشکال یو آی ندارد
    جسارت بنده را هم به بزرگواری خودتان ببخشید
    همان گونه که در مطالب وبلاگم عرض کردم این انتقاد کردن هم جزئی از شخصیت من است
    از ابراز محبت شما به وبلاگم سپاسگزارم. باعث افتخار است که خوانندگان فرهیخته‌ای چون شما دارم
    پیروز و سرفراز باشید
    ارادتمند

    پاسخ
  • ازگمی

    ۲۲ اردیبهشت ۱۳۹۰ در ۰۰:۰۰

    سلام
    یه دونه آی به نام وبلاگم اضافه کردم.ممنون میشم آدرسم رو اصلاح کنید

    پاسخ
  • ازگمی

    ۲۲ اردیبهشت ۱۳۹۰ در ۰۰:۰۰

    سلام
    یه دونه آی به نام وبلاگم اضافه کردم.ممنون میشم آدرسم رو اصلاح کنید

    پاسخ
  • امیر جلیلی

    ۱ خرداد ۱۳۹۰ در ۰۰:۰۰

    استاد امروز به ضرب و المثل ایرانی برخورد کردم که مصداق بارز اهمیت کسب اطلاعات و مدیریت نیازمندی ها بود به نوعی :
    این ضرب و المثل قدیمی میگه :
    یه پارچه رو ۱۰ بار متر کن , یه بار ببر
    خیلی برام جالب بود

    ———————————————-
    سلام
    خیلی قشنگ بود.
    سپاسگزار
    به امید دیدار
    مهرداد

    پاسخ
  • امیر جلیلی

    ۱ خرداد ۱۳۹۰ در ۰۰:۰۰

    استاد امروز به ضرب و المثل ایرانی برخورد کردم که مصداق بارز اهمیت کسب اطلاعات و مدیریت نیازمندی ها بود به نوعی :
    این ضرب و المثل قدیمی میگه :
    یه پارچه رو ۱۰ بار متر کن , یه بار ببر
    خیلی برام جالب بود

    ———————————————-
    سلام
    خیلی قشنگ بود.
    سپاسگزار
    به امید دیدار
    مهرداد

    پاسخ

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

برای خروج از جستجو کلید ESC را بفشارید