فلسفه یونیکس

لینوکسی ها شعار زیبایی دارند که می گوید «لینوکس فقط یک سیستم عامل نیست، لینوکس یک فرهنگ است». به همین خاطر در بین گنو/لینوکس کارها و بقیه دنیای نرم افزارهای آزاد، فلسفه هم ارزش مهمی پیدا کرده. این فلسفه را می شود در مفهوم آزادی نرم افزار و خیلی جاهای دیگر دید و حتی در شوخی های لینوکسی ها هم به کرات به فلسفه بر می خوریم.

در این پست می خواهم به شکل خلاصه، درباره فلسفه یونیکس بنویسم. این فلسفه خلاصه ای است از صفحه ویکیپدیای Unix Philosophy. این مبانی نظری (فلسفه ها) نتایجی هستند که افراد درگیر این صنعت در پی سال ها تجربه نهفته پشت سر سیستم های مبتنی بر یونیکس (پوزیکس ها) به آن رسیده اند.

مکلوری: ربع قرن یونیکس

مک لوری که مبدع Unix Pipes و یکی از پایه گذاران یونیکس است فلسفه این سیستم عامل را به شکل زیر خلاصه کره:

  • برنامه هایی بنویسید که فقط یک کار انجام دهند اما به نحو احسن
  • برنامه هایی بنویسید که بتوانند با هم کار کنند
  • برنامه هایی بنویسید که با متن کار کنند چرا که متن رابطی عام است

مایک گانکارز: فلسفه یونیکس

مایک گانکارز در سال ۱۹۹۴ با مشاوره دیگر فعالان دنیای یونیکس قواعد زیر را ابداع کرد. او یکی از طراحان سیستم پنجره X است.

  • کوچک زیباست.
  • هر برنامه باید یک کار را به خوبی انجام دهد.
  • در اولین فرصت ممکن، یک نمونه اولیه بنویسید.
  • انتقال پذیری را به بهینه بودن سیستم ارجح بدانید.
  • اطلاعات را در فایل های متنی تخت جا بدهید.
  • از قدرت نرم افزار به نفع خودتان بهره ببرید.
  • قدرت و قابلیت انتقال را با نوشتن شل اسکریپت افزایش دهید.
  • از رابط های کاربری پر دنگ و فنگ دوری کنید.
  • هر برنامه ای را به شکل یک فیلتر بنویسید.

اریک ریموند: هنر برنامه نویسی یونیکس

ریموند با پایبندی به قاعده KISS یا Keep It Simple, Stupid قواعد زیر را برای برنامه نویسی یونیکس پیشنهاد می کند:

  • ماجولار بودن: بخش های کوچکی بنویسید که با رابط های تمیزی به هم وصلند.
  • وضوح: وضوح بهتر از هوشمندی است.
  • اتصال: برنامه هایی طراحی کنید که بتوانند به دیگر برنامه ها متصل شوند.
  • جدایی: سیاست را از مکانیزم جدا کنید، رابط باید از هسته اصلی جدا باشد.
  • سادگی: برای سادگی طراحی کنید، فقط وقتی مجبورید پیچیدگی اضافه کنید.
  • امساک: فقط وقتی برنامه‌ای بزرگ بنویسید که ثابت شده باشد هیچ برنامه دیگری فایده ندارد.
  • شفافیت: برای راحتی خواندن طراحی کنید تا بررسی و باگ زدایی ساده تر شود.
  • استحکام: استحکام فرزند شفافیت و سادگی است.
  • ارائه: Fold knowledge into data so program logic can be stupid and robust
  • حداقل سورپریز: در طراحی رابط، امور غیرمعمول را به حداقل برسانید.
  • سکوت: وقتی برنامه چیز عجیبی برای گفتن ندارد، بهتر است چیزی نگوید.
  • تعمیر: وقت شکست اجتناب ناپذیر است، زود و پر سر و صدا برنامه را بشکنید.
  • اقتصاد: وقت برنامه ارزشمند است، آن را مهمتر از زمان ماشین بدانید.
  • استمرار نسل: با دست هک نکنید، برنامه هایی بنویسید که برنامه هایی بنویسند.
  • بهینه سازی: قبل از ظریف کاری، یک نمونه عملی بسازید. قبل از بهینه سازی، برنامه باید درست کار کند.
  • تنوع: هر ادعایی مبنی بر «یک راه حقیقی» را با شک و تردید بنگرید.
  • ارتقاء پذیری: برای اینده طراحی کنید چرا که آینده زودتر از آنی که فکر می کنید فرا خواهد رسید.

موخره

نمی توانم آخر هر مطلب مرتبط با لینوکس و یونیکس نپرسم که «زیبا نیست؟» (: فقط قدرت و امنیت لینوکس نیست که باعث شده پیشرفت کند، این فلسفه پشت آزادی نرم افزار است که بهترین های دنیا را دور آن جمع کرده (: