شروع انقلاب
تاریخچه یونیکس (Unix) داستانی جذاب و پر از نوآوری است که از دهه ۱۹۶۰ آغاز میشود و تا به امروز ادامه دارد. این سیستمعامل نه تنها یک محصول فنی بود، بلکه تأثیر عمیقی بر صنعت کامپیوتر و نرمافزار گذاشت.
یونیکس در آزمایشگاههای بل (Bell Labs)، زیرمجموعهای از شرکت AT&T، متولد شد. در آن زمان، سیستمعاملهای اصلی مانند Multics (یک پروژه مشترک بین MIT، جنرال الکتریک و Bell Labs) وجود داشتند، اما این سیستمعاملها پیچیده و سنگین بودند. کنت تامپسون (Ken Thompson) و دنیس ریچی (Dennis Ritchie)، دو برنامهنویس در Bell Labs بودند که تصمیم گرفتند یک سیستمعامل سادهتر و کارآمدتر ایجاد کنند.
کن تامپسون، یکی از برنامهنویسان Bell Labs، از پروژه Multics ناامید شده بود. او به دنبال ایجاد یک سیستمعامل سادهتر و کارآمدتر بود که نیازهای برنامهنویسان را برآورده کند..به همین دلیل او شروع به نوشتن یک سیستمعامل جدید روی یک کامپیوتر قدیمی به نام PDP-7 کرد.تامپسون به همراه دنیس ریچی (Dennis Ritchie) و دیگر همکارانش شروع به کار روی یک سیستمعامل جدید کردند. هدف آنها ایجاد سیستمی بود که بتواند روی سختافزارهای کوچکتر و ارزانتر اجرا شود. نام Unix به عنوان یک بازی با کلمات نسبت به Multics انتخاب شد (Uni به معنای “یک” و مخفف “ساده” در مقابل “چند” در Multics).
یکی از معروفترین داستانهای مربوط به توسعه یونیکس، بازی Space Travel است. این بازی یک شبیهساز ساده از منظومه شمسی بود که تامپسون آن را روی کامپیوترهای مختلف اجرا میکرد. تامپسون میخواست این بازی را روی PDP-7 اجرا کند، اما این کامپیوتر قدرت کافی برای اجرای بازی را نداشت. این نیاز به یک سیستمعامل جدید را ایجاد کرد و تامپسون از این فرصت برای توسعه یونیکس استفاده کرد.
توسعه اولیه
تامپسون روی یک کامپیوتر قدیمی به نام PDP-7 (ساختهشده توسط Digital Equipment Corporation) شروع به کار کرد. این کامپیوتر قدرت پردازشی محدودی داشت. PDP-7 یک ماشین ۱۸ بیتی بود و تنها ۸ کیلوواژه (حدود ۱۶ کیلوبایت) حافظه اصلی داشت. با این حال، برای اهداف آزمایشی تامپسون کافی بود.
تامپسون شروع به نوشتن یک سیستمعامل جدید کرد. اولین نسخههای یونیکس به زبان اسمبلی نوشته شدند، زیرا این زبان به تامپسون اجازه میداد کنترل کامل روی سختافزار داشته باشد. او ابتدا یک فایلسیستم سلسلهمراتبی ایجاد کرد. این فایلسیستم شامل دایرکتوریها و فایلها بود و ساختاری شبیه به فایلسیستمهای مدرن داشت. تامپسون یک فایلسیستم ساده، یک مفسر خط فرمان (shell) و چند ابزار اولیه مانند یک ویرایشگر متن ایجاد کرد.
تامپسون چند ابزار اولیه نیز برای یونیکس ایجاد کرد.
- ویرایشگر متن ed: یکی از اولین ویرایشگرهای متن که به کاربران اجازه میداد فایلهای متنی را ایجاد و ویرایش کنند.
- اسمبلر: برای تبدیل کد اسمبلی به کد ماشین.
- لینکر: برای ترکیب فایلهای اجرایی.
- برنامههای کاربردی ساده: مانند یک ماشینحساب و ابزارهای مدیریت فایل.
همچنین بخوانید : مقدمهای جامع به سیستمعامل لینوکس: چرا باید آن را بشناسیم؟
همکاری با دنیس ریچی
دنیس ریچی، همکار تامپسون، به او پیوست و نقش کلیدی در توسعه یونیکس ایفا کرد. ریچی زبان برنامهنویسی C را ایجاد کرد تا جایگزین زبان اسمبلی شود. در سال ۱۹۷۳، یونیکس به زبان C بازنویسی شد.
توسعه یونیکس با زبان C یکی از مهمترین نقاط عطف در تاریخچه یونیکس و بهطور کلی در تاریخ علوم کامپیوتر است. این تغییر از زبان اسمبلی به زبان C نه تنها باعث بهبود عملکرد یونیکس شد، بلکه آن را به یک سیستمعامل قابل انتقال (Portable) تبدیل کرد که میتوانست روی انواع سختافزارها اجرا شود.
با گسترش یونیکس و افزایش نیاز به قابلیتهای جدید، تامپسون و همکارش دنیس ریچی (Dennis Ritchie) به این نتیجه رسیدند که نیاز به یک زبان برنامهنویسی سطح بالا دارند. این زبان باید به اندازه کافی ساده و انعطافپذیر باشد تا بتواند جایگزین اسمبلی شود، اما در عین حال به اندازه کافی قدرتمند باشد تا بتواند با سختافزار ارتباط برقرار کند.
دنیس ریچی شروع به توسعه یک زبان برنامهنویسی جدید کرد که بعدها به نام C شناخته شد. زبان C بر پایه زبانهای قبلی مانند B (که توسط تامپسون ایجاد شده بود) و BCPL طراحی شد. ریچی میخواست زبانی ایجاد کند که هم سطح بالا باشد و هم به برنامهنویسان اجازه دهد کنترل دقیقی روی سختافزار داشته باشند.
زبان C ویژگیهایی مانند:
- سادگی و خوانایی: کدهای C نسبت به اسمبلی بسیار خوانا و قابل فهمتر بودند.
- انعطافپذیری: C به برنامهنویسان اجازه میداد از ساختارهای داده و توابع پیچیده استفاده کنند.
- قابلیت انتقال: کدهای نوشتهشده به زبان C میتوانستند روی سختافزارهای مختلف کامپایل و اجرا شوند.
در سال ۱۹۷۳، تامپسون و ریچی تصمیم گرفتند یونیکس را به زبان C بازنویسی کنند. این کار یک چالش بزرگ بود، زیرا نیاز به بازنویسی تمام بخشهای سیستمعامل داشت. با این حال، مزایای این کار بسیار زیاد بود:
- قابلیت انتقال: یونیکس دیگر وابسته به سختافزار خاصی نبود و میتوانست روی انواع کامپیوترها اجرا شود.
- سادگی توسعه: نوشتن و تغییر کدها به زبان C بسیار سادهتر و سریعتر بود.
- بهبود عملکرد: کامپایلرهای C کدهای بهینهتری تولید میکردند که باعث بهبود عملکرد سیستمعامل میشد.
فلسفه یونیکس چه بود؟
فلسفه یونیکس مجموعهای از اصول و قواعد طراحی است که توسط کنت تامپسون (Ken Thompson)، دنیس ریچی (Dennis Ritchie) و دیگر توسعهدهندگان یونیکس در آزمایشگاههای بل (Bell Labs) شکل گرفت. این فلسفه نه تنها پایههای یونیکس را تشکیل داد، بلکه تأثیر عمیقی بر توسعه سیستمهای عامل و نرمافزارهای بعدی گذاشت.
سادگی (Simplicity)
یونیکس بر این اصل استوار است که هر ابزار باید یک کار را انجام دهد و آن را به خوبی انجام دهد. این رویکرد باعث میشود سیستمعامل ساده، قابل فهم و نگهداری آسان باشد. به جای ایجاد ابزارهای بزرگ و پیچیده که چندین کار را انجام میدهند، یونیکس از ابزارهای کوچک و مستقل تشکیل شده است که هر کدام یک وظیفه خاص را انجام میدهند. این ابزارها میتوانند با هم ترکیب شوند تا کارهای پیچیدهتری انجام دهند.
ماژولار بودن (Modularity)
یونیکس از مجموعهای از ابزارهای ماژولار تشکیل شده است که هر کدام بهطور مستقل عمل میکنند. این ماژولار بودن به توسعهدهندگان اجازه میدهد بهراحتی ابزارهای جدید اضافه کنند یا ابزارهای موجود را بهبود بخشند. این رویکرد باعث میشود سیستمعامل انعطافپذیر و قابل توسعه باشد.
ترکیبپذیری (Composability)
ابزارهای یونیکس به گونهای طراحی شدهاند که میتوانند با هم ترکیب شوند تا کارهای پیچیدهتری انجام دهند. این ترکیبپذیری از طریق استفاده از پایپها (Pipes) و ردایرکتها (Redirections) امکانپذیر است. برای مثال، شما میتوانید خروجی یک ابزار را به عنوان ورودی ابزار دیگری استفاده کنید و به این ترتیب کارهای پیچیدهتری انجام دهید.
استفاده از فایلها به عنوان رابط عمومی (Everything is a File)
در یونیکس، تقریباً همه چیز به عنوان یک فایل در نظر گرفته میشود. این شامل فایلهای معمولی، دایرکتوریها، دستگاههای سختافزاری و حتی فرآیندها میشود. این رویکرد باعث میشود سیستمعامل ساده و یکپارچه باشد، زیرا همه چیز را میتوان با استفاده از یک رابط مشترک مدیریت کرد.
متنباز بودن (open source)
یونیکس از ابتدا بهگونهای طراحی شد که کد منبع آن در دسترس باشد. این رویکرد به توسعهدهندگان اجازه میداد سیستمعامل را بررسی، تغییر و بهبود بخشند. این فلسفه متنباز بودن بعدها الهامبخش جنبش نرمافزارهای متنباز شد.
انعطافپذیری (Flexibility)
یونیکس بهگونهای طراحی شده است که به کاربران اجازه میدهد سیستم را بهراحتی برای نیازهای خود سفارشی کنند. این انعطافپذیری از طریق ابزارهای ماژولار و رابطهای ساده امکانپذیر است. کاربران میتوانند ابزارهای جدید ایجاد کنند یا ابزارهای موجود را تغییر دهند تا نیازهای خاص خود را برآورده کنند.
تمرکز بر خط فرمان (Command-Line Focus)
یونیکس بهطور عمده از طریق خط فرمان (Command Line) مدیریت میشود. این رویکرد باعث میشود سیستمعامل قدرتمند و انعطافپذیر باشد، زیرا کاربران میتوانند دستورات پیچیده را بهراحتی وارد کرده و اجرا کنند. خط فرمان همچنین امکان خودکارسازی کارها را از طریق اسکریپتها فراهم میکند.
آیا یونیکس رایگان بود ؟
یونیکس (Unix) در ابتدا رایگان نبود، اما نحوه توزیع و دسترسی به آن در طول زمان تغییر کرد. یونیکس در ابتدا یک پروژه داخلی در آزمایشگاههای بل (Bell Labs)، زیرمجموعهی AT&T، بود. در آن زمان، AT&T به دلیل محدودیتهای قانونی ناشی از توافقنامههای ضد انحصار (Antitrust) اجازه فروش نرمافزار به عنوان یک محصول تجاری را نداشت. به همین دلیل، یونیکس بهصورت رایگان در اختیار دانشگاهها و مؤسسات تحقیقاتی قرار گرفت. این تصمیم باعث شد یونیکس بهسرعت در محیطهای آکادمیک گسترش یابد و توسعهدهندگان زیادی شروع به کار روی آن کنند.
در دهه ۱۹۸۰، محدودیتهای قانونی بر AT&T کاهش یافت و این شرکت اجازه یافت یونیکس را به عنوان یک محصول تجاری بفروشد. AT&T شروع به فروش یونیکس تحت نام System III و سپس System V کرد. این نسخهها شامل پشتیبانی تجاری و بهروزرسانیهای منظم بودند. با این تغییر، یونیکس دیگر رایگان نبود و شرکتها و سازمانها باید برای استفاده از آن هزینه پرداخت میکردند.
همزمان با تجاریشدن یونیکس توسط AT&T، نسخههای رایگان و متنباز یونیکس نیز ظهور کردند. مهمترین این نسخهها BSD (Berkeley Software Distribution) بود که توسط دانشگاه کالیفرنیا، برکلی توسعه داده شد. BSD بر پایه کدهای یونیکس ساخته شده بود، اما شامل بهبودها و افزونههای زیادی بود. این نسخه بهصورت رایگان در اختیار عموم قرار گرفت و پایهای برای سیستمهای عامل بعدی مانند FreeBSD، OpenBSD و NetBSD شد. بعدها، پروژههایی مانند گنو (GNU) و لینوکس (Linux) نیز با الهام از فلسفه یونیکس و بهصورت کاملاً رایگان و متنباز توسعه یافتند.
همچنین بخوانید : چرا لینوکس بهترین انتخاب برای برنامهنویسان است؟
چرا یونیکس به فراموشی رفت ؟
افول یونیکس به عنوان یک سیستمعامل غالب در صنعت کامپیوتر، دلایل متعددی داشت که ترکیبی از عوامل فنی، تجاری و حقوقی بود.
جنگهای یونیکس (Unix Wars)
در دهه ۱۹۸۰ و ۱۹۹۰، رقابت شدیدی بین نسخههای مختلف یونیکس وجود داشت. شرکتهایی مانند AT&T، IBM، Sun Microsystems، HP و دیگران هر کدام نسخههای اختصاصی خود از یونیکس را توسعه دادند. این رقابتها باعث ایجاد ناسازگاریهایی بین نسخههای مختلف شد و توسعهدهندگان و کاربران را سردرگم کرد. این وضعیت به جنگهای یونیکس (Unix Wars) معروف شد و باعث تضعیف موقعیت یونیکس در بازار شد.
ظهور سیستمهای عامل شبهیونیکس
در اوایل دهه ۱۹۹۰، سیستمهای عامل شبهیونیکس مانند لینوکس (Linux) و BSD ظهور کردند. این سیستمها بر پایه فلسفه و فناوری یونیکس ساخته شده بودند، اما بهصورت کاملاً رایگان و متنباز در دسترس بودند. لینوکس بهویژه به دلیل انعطافپذیری، پشتیبانی گسترده از سختافزار و جامعه توسعهدهندگان فعال، به سرعت محبوب شد و جایگزین یونیکس در بسیاری از کاربردها شد.
هزینههای بالای یونیکس
نسخههای تجاری یونیکس مانند System V و Solaris هزینههای بالایی داشتند. این هزینهها شامل قیمت خرید، هزینههای پشتیبانی و بهروزرسانیهای منظم بود. در مقابل، سیستمهای عامل رایگان و متنباز مانند لینوکس و BSD هیچ هزینهای برای کاربران نداشتند و این باعث شد بسیاری از سازمانها به سمت این سیستمها گرایش پیدا کنند.
عدم تطابق با نیازهای بازار
یونیکس بهدلیل طراحی قدیمی و پیچیدهاش، بهراحتی نمیتوانست با نیازهای در حال تغییر بازار تطبیق یابد. برای مثال، یونیکس در ابتدا برای محیطهای بزرگ و مینیکامپیوترها طراحی شده بود، اما با ظهور کامپیوترهای شخصی (PC) و سرورهای ارزانقیمت، نیاز به سیستمهای عامل سادهتر و انعطافپذیرتر افزایش یافت. لینوکس و دیگر سیستمهای عامل متنباز بهتر توانستند به این نیازها پاسخ دهند.
توسعه سیستمهای عامل اختصاصی
شرکتهای بزرگ مانند مایکروسافت و اپل شروع به توسعه سیستمهای عامل اختصاصی خود کردند. ویندوز مایکروسافت بهسرعت در بازار کامپیوترهای شخصی غالب شد، در حالی که macOS اپل بر پایهی یونیکس (BSD) ساخته شد و جایگزین مناسبی برای یونیکس در محیطهای گرافیکی و کاربرپسند بود.
مسائل حقوقی و مالکیت معنوی
در دهه ۱۹۹۰، دعواهای حقوقی متعددی در مورد مالکیت معنوی کدهای یونیکس وجود داشت. برای مثال، شرکت USL (زیرمجموعه AT&T) علیه BSD و دیگر پروژههای متنباز شکایت کرد. این دعواها باعث ایجاد عدم اطمینان در جامعه توسعهدهندگان و کاربران شد و بسیاری از آنها به سمت سیستمهای عامل دیگر مانند لینوکس گرایش پیدا کردند.
میراث یونیکس
یونیکس پایهای برای بسیاری از سیستمهای عامل مدرن است. برخی از مهمترین سیستمهای عامل که از یونیکس الهام گرفتهاند یا بر پایه آن ساخته شدهاند عبارتند از لینوکس (Linux)، macOS، BSD و Solaris. لینوکس یک سیستمعامل شبهیونیکس است که بهصورت متنباز توسعه یافته و امروزه در سرورها، ابرهای محاسباتی، دستگاههای موبایل (از طریق اندروید) و بسیاری از سیستمهای دیگر استفاده میشود. macOS سیستمعامل شرکت اپل است که بر پایهی BSD (یک نسخه از یونیکس) ساخته شده است. خانوادهای از سیستمهای عامل متنباز شامل FreeBSD، OpenBSD و NetBSD نیز مستقیماً از کدهای یونیکس مشتق شدهاند. Solaris یک سیستمعامل تجاری است که توسط شرکت Oracle توسعه داده شده و بر پایهی یونیکس است.
فلسفه طراحی یونیکس تأثیر عمیقی بر توسعه نرمافزارها و سیستمهای عامل گذاشته است. برخی از اصول کلیدی این فلسفه عبارتند از سادگی، ماژولار بودن، ترکیبپذیری و استفاده از فایلها به عنوان رابط عمومی. هر ابزار باید یک کار را به خوبی انجام دهد و ابزارها باید کوچک و مستقل باشند و بتوانند با هم ترکیب شوند. ابزارها باید بتوانند از طریق رابطهای ساده با هم ارتباط برقرار کنند (مثلاً از طریق پایپها و ردایرکتها). تقریباً همه چیز در یونیکس به عنوان یک فایل در نظر گرفته میشود. این اصول هنوز هم در طراحی سیستمهای عامل و نرمافزارهای مدرن استفاده میشوند.
یونیکس به زبان C نوشته شده است، و توسعه این زبان برنامهنویسی یکی از مهمترین میراثهای یونیکس است. زبان C بهدلیل سادگی، قدرت و انعطافپذیری، به یکی از محبوبترین زبانهای برنامهنویسی تبدیل شد و پایهای برای بسیاری از زبانهای برنامهنویسی مدرن مانند C++، Java و Python شد. زبان C همچنین استانداردهای برنامهنویسی سیستمعامل مانند POSIX را شکل داد.
یونیکس همچنین پایهای برای توسعه نرمافزارهای متنباز بود. فلسفه یونیکس و زبان C الهامبخش جنبش نرمافزارهای متنباز شد و به ایجاد پروژههایی مانند گنو (GNU) و لینوکس (Linux) کمک کرد. این پروژهها بهصورت کاملاً رایگان و متنباز در دسترس هستند و تأثیر عمیقی بر صنعت نرمافزار گذاشتهاند.
یونیکس همچنین پایهای برای توسعه شبکههای کامپیوتری و اینترنت بود. بسیاری از پروتکلها و ابزارهای شبکهای که امروزه استفاده میشوند، مانند
در آخر
توسعه اولیه یونیکس در سال ۱۹۶۹ توسط کن تامپسون و همکارانش، یک داستان الهامبخش از نوآوری و خلاقیت است. تامپسون با استفاده از یک کامپیوتر قدیمی و محدود، سیستمی را ایجاد کرد که نه تنها نیازهای خودش را برآورده میکرد، بلکه پایههای یک انقلاب در دنیای سیستمهای عامل را بنا نهاد. این کار با تلاشهای بعدی تامپسون و ریچی به یک سیستمعامل قدرتمند و تأثیرگذار تبدیل شد که میراث آن تا به امروز ادامه دارد.
منابع : ویکی یونیکس
وبسایت یونیکس
geek for geeks