بهترین برنامه های یونیکس

نویسنده مقاله، داگلاس مک ایلروی، یک ریاضیدان، مهندس و برنامه نویس آمریکایی است. او بیشتر به خاطر توسعه خط لوله در سیستم عامل یونیکس، اصول برنامه نویسی کامپوننت گرا و چندین ابزار اصلی شناخته شده است: spell, diff, sort, join, speak, tr.

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

به اشتراک بگذارید، چه برنامه هایی نیز شما را تا این حد تحت تاثیر قرار دادند؟

PDP-7 یونیکس

برای شروع، خود سیستم یونیکس PDP-7. سادگی و قدرت آن باعث شد که از یک مین فریم قدرتمند به یک ماشین کوچک تبدیل شوم. این سیستم فایل سلسله مراتبی اساسی، پوسته مجزا و کنترل فرآیند در سطح کاربر است که Multics در رایانه‌های بزرگ پس از صدها سال توسعه انسانی نتوانست آن را پیاده‌سازی کند. کاستی های یونیکس (مانند ساختار رکورد سیستم فایل) به اندازه نوآوری های آن (مانند تغییر مسیر I/O پوسته) آموزنده و رهایی بخش بود.

dc

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

تایپی

تایپی کلمات را بر اساس شباهت آنها به بقیه متن مرتب می کند. غلط املایی مانند 'hte' معمولاً در انتهای لیست قرار می گیرند. رابرت موریس با افتخار گفت که این برنامه در هر زبانی به همان اندازه خوب کار می کند. اگرچه اشتباه تایپی به شما کمکی نمی کند تا اشتباهات آوایی را پیدا کنید، اما برای همه حروفچین ها موهبتی بود و قبل از آمدن بررسی املای لغت نامه بسیار کمتر جالب اما دقیق تر، بسیار مفید بود.

اشتباه تایپی به همان اندازه که در خارج غیرمنتظره است در داخل هم غیرمنتظره است. الگوریتم اندازه گیری شباهت بر اساس فراوانی وقوع سه گرام است که در یک آرایه 26x26x26 شمارش می شود. به ندرت فضای کافی در حافظه کوچک برای شمارنده های تک بایتی وجود داشت، بنابراین طرحی برای فشرده کردن اعداد بزرگ به شمارنده های کوچک اجرا شد. برای جلوگیری از سرریز، شمارنده ها بر اساس احتمالات به روز شدند و تخمینی از لگاریتم مقدار شمارنده حفظ شد.

eqn

با ظهور فتوتایپ، تولید نمادهای ریاضی کلاسیک ممکن شد، اما به طرز وحشتناکی خسته کننده بود. لوریندا چری تصمیم گرفت زبان توصیفی سطح بالاتری را توسعه دهد و برایان کرنیگان به زودی به او پیوست. حرکت درخشان آنها بیان سنت شفاهی به صورت نوشتاری بود، به همین دلیل است که یادگیری eqn به طرز شگفت آوری آسان بود. اولین پیش پردازشگر زبان بیان ریاضی در نوع خود، eqn از آن زمان تاکنون پیشرفت چندانی نداشته است.

ساختار

برندا بیکر برخلاف توصیه رئیسش، من، شروع به توسعه مبدل Fortan-to-Ratfor خود کرد. من فکر کردم که این ممکن است منجر به نظم مجدد خاص متن اصلی شود. این بدون شماره اپراتور خواهد بود، اما در غیر این صورت خواناتر از کد فرترن با ساختار مناسب نیست. برندا به من ثابت کرد که اشتباه می کنم. او کشف کرد که هر برنامه فرترن دارای ساختاری متعارف است. برنامه نویسان شکل متعارف را به جای آنچه که خودشان نوشته بودند ترجیح دادند.

پاسکال

تشخیص نحو در کامپایلر ساخته شده توسط گروه سو گراهام در برکلی مفیدترین روشی بود که تا به حال دیده بودم – و خودکار بودند. اگر یک خطای نحوی وجود داشته باشد، کامپایلر از شما می‌خواهد که یک نشانه را برای ادامه تجزیه وارد کنید. هیچ تلاشی برای توضیح اینکه چه چیزی اشتباه است. با این کامپایلر، پاسکال را در یک شب، بدون هیچ دفترچه راهنما، یاد گرفتم.

بخش

ماژول در بسته WWB (Writer's Workbench) پنهان شده است parts Lorinda Cherry بخش هایی از گفتار را برای کلمات در متن انگلیسی تنها بر اساس یک فرهنگ لغت کوچک، قواعد املا و دستور زبان تعیین می کند. بر اساس این حاشیه‌نویسی، برنامه WWB شاخص‌های سبک‌سنجی متن، مانند شیوع صفت‌ها، جملات فرعی و جملات پیچیده را نمایش می‌دهد. زمانی که لوریندا در برنامه امروز NBC مصاحبه کرد و در مورد بررسی گرامر نوآورانه WWB صحبت کرد، اولین باری بود که از Unix در تلویزیون نام برد.

egrep

آل آهو امیدوار بود که تجزیه کننده بیان منظم قطعی او از تجزیه کننده کلاسیک غیر قطعی کن بهتر عمل کند. متأسفانه، دومی قبلاً در حال تکمیل عبور از عبارات منظم پیچیده بود تا اینکه egrep اتوماسیون قطعی خود را ساخت. برای اینکه همچنان در این مسابقه برنده شود، آل آهو با اختراع راهی برای ساختن تنها ورودی های جدولی که در هنگام شناسایی واقعاً بازدید شده بودند، نفرین رشد تصاعدی جدول حالت خودکار را دور زد.

خرچنگ ها

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

چند فکر کلی

اگرچه از بیرون قابل مشاهده نیست، نظریه و الگوریتم ها نقش تعیین کننده ای در ایجاد اکثر این برنامه ها ایفا کردند: تایپی، dc، struct، پاسکال، egrep. در واقع، کاربرد غیرمعمول این نظریه است که بسیار شگفت‌آور است.

نویسندگان اولیه تقریباً نیمی از فهرست - پاسکال، ساختار، بخش‌ها، eqn- زنان بودند که بسیار بیشتر از سهم جمعیتی زنان در علوم رایانه است.

داگلاس مک ایلروی
مارس ، 2020


منبع: www.habr.com

اضافه کردن نظر