منبع: اینفورمیشنویک
یکی از بزرگترین نرمافزارهایی که من سراغ دارم، اصلاً نرمافزار نیست، بلکه ماشینی است به نام Colossus که انگلیسیها آن را در جنگ جهانی دوم ساختند. این ماشین میتوانست پیامهای رمز آلمانی را به سرعت ترجمه کند؛ یعنی کاری که تا پیش از آن شش ساعت به طول میانجامید. رساندن این پیغام به دست نیروهای امنیتی و طراحی نقشه و دستور علیه آن فرایندی بود که یک روز یا بیشتر طول میکشید. آنها توانستند با استفاده از کولوسوس به سرعت تصویری از فعالیت نیروهای نظامی آلمان در کانال انگلیس تهیه کنند و با اطمینان عملیات اشغال معروف به D-Day را طرحریزی نمایند. کولوسوس در سال 1944 ساخته شد.
ورودی این ماشین، نوار داده کاغذی با سرعت سی مایل در ساعت بود و عملیات جبر بول روی آن اجرا میشد. منطق کار ماشین توسط سیمی به آن اعمال میشد. شاید این بزرگترین نرمافزاری بود که هیچ وقت نوشته نشد. کولوسوس از آنجا که نوشتههای مکانیکی را به الکترونیکی تبدیل میکرد، یک کامپیوتر بود و میتوانست به سرعت کدها را رمزگشایی کند. کولوسوس به نوعی تاریخ را عوض کرد.
دیگر برنامه بزرگ نوشته شده، سیستم IBM 360 بود. این نرمافزار اولین سیستمعامل با کاربرد عمومی بود که در سال 1964 نوشته شد. اصول نرمافزارنویسیای که امروزه بدان رسیدهایم، در کتابی به نام نفر- ماه افسانهای، نوشته فردریک بروکز آورده شده است. از جمله اینکه، نرمافزارهای ساده بهتر از نرمافزارهای پیچیده کار میکنند. یا اینکه چند نرمافزارنویس ماهر بهتر از تعداد زیادی نرمافزارنویس میتوانند با هم کار کنند. بروکز پیش از شروع پروژه 360 میدانست که در پروژههای نرمافزاری بزرگ چه اشتباهاتی میتواند رخ دهد. از این رو از جمله افرادی بود که با اجرای چنین پروژهای مخالف بود.
اما به نظر من دقیقاً به همین دلیل IBM او را مسئِول انجام آن کرد. نتیجه کار آنها اولین سیستم کامپیوتری بود که میتوانست چندین برنامه را به صورت همزمان اجرا کند. IBM پس از آن خط تولید mainframeهای خود را راهاندازی و آن را به سیستمهای سری 370 و سری z متحول کرد. حتی امروز هم این سیستمها در برخی شرایط با سیستمعامل 360 بروکز سازگاری دارند. این مطلب مرا به نکته دیگری درباره نرمافزارهای بزرگ رساند و آن اینکه: جایگزینی سیستمهای بزرگ کاری زمانبر است.
بهترینها را میشناسیم
در حال حاضر همه براینباورند که IBM 360 ازجمله بهترین برنامههایی است که تاکنون نوشته شده است؛ زیرا مدت زمان زیادی از آن گذشته و قضاوت درباره آن آسان است. هر چه یک نرمافزار تازهتر تولید شده باشد، نامگذاری آن به عنوان یک نرمافزار بزرگ، سختتر است.
من در یک پروژه، سعی کردهام برترینهای نرمافزاری را از زمان کولوسوس تا به امروز با دقت جمعآوری کنم. برای این کار با افراد زیادی مشورت کردهام. از جمله James Rumbaugh (یکی از بهترین نرمافزارنویسها)، Stuart Feldman (رئیس مؤسسه ماشینهای پردازشگر)، Ann Winblad و Gary Morgenthaler (دو سرمایهگذار)، Zeev Suraski وAndi Gutmans از نویسندگان کتابهای اسکریپت پایگاه داده و همچنین برادر کوچکترم.
من هنوز هم از پیچیدگی سیستم کنترلی فضاپیمای آپولو که توسط آزمایشگاه ابزاردقیق MIT ساخته شد، در تعجب ماندهام. این سیستم، آپولو 11را در سال 1969 به ماه برد، مدار گرد آنرا جدا کرد، آن را بر سطح ماه نشاند و سپس سه فضانورد آن را به زمین برگرداند.
ظرفیت حافظه موجود در کامپیوتر Raytheon تنها هشت کیلوبایت بود: ظرفیتی که امروز برای راهاندازی یک چاپگر هم کافی نیست. در صورت وقوع نقص در سیستم به هنگام حرکت سفینه، حتی زمان برای راهاندازی مجدد سیستم عامل نیز وجود نداشت. شاید تنها به این خاطر که ویندوز هنوز نوشته نشده بود.
سیستم هدایت آپولو، در مقایسه با سیستمهای ناوبری بسیار پیچیده امروز، بسیار ساده به نظر میرسد. این سیستم از الگوریتمهای سادهای تشکیل شده بود، اما از نظر من تمام علم موشکسازی در آپولو پیاده شده بود. آن نرمافزار بزرگ آنچنان دقیق نوشته شده بود که میدانست برای هر پیشامدی چه واکنشی نشان دهد.
من از کسانی که سیستم آپولو را ساده میانگارند میپرسم تا چه حد به سیستمهای نقل و انتقال امروزی اعتماد دارند و آیا حاضرند اسباب و وسایل خود را برای جابهجایی به آنها بسپارند؟
BAE، نرمافزاری است که در سیستمهای جابهجایی خودکار اشیا در فرودگاه بینالمللی دنیور به کار گرفته شده است. این سیستم از زمان نصب خود در 1993 تاکنون، آنقدر اشیای مسافران را اشتباه جابهجا کرده است که مسئِولان مربوطه در مجموع مجبور شدهاند به اندازه شانزده ماه فرودگاه را تعطیل کنند؛ کاری که روزانه 1/1 میلیون دلار خسارت در پی داشته است.
زندگی روزانه ما به دست چنین نرمافزارهایی است. مدیریت ناوبری فدرال تاکنون نه یک بار، بلکه سه بار هزارها میلیون دلار صرف بهینهسازی سیستم کنترل ترافیک هوایی کرده است. این نرمافزار تاکنون نیمی از آنچه را برای انجامش طراحی شده بود، هدر داده است؛ چیزی در حدود 144 میلیون دلار. با وجود چنین نرمافزاری معلوم است که باید از سیستم ناوبری و هدایت آپولو طرفداری کرد؛ زیرا حداقل توانست وظیفه خود را به خوبی و تا آخر به انجام برساند.
درباره VisiCalc، اولین نرمافزار صفحه گسترده، داستان مشابهی وجود دارد. اهمیت این نرمافزار از آن جهت است که توانست قدرت محاسبات شخصی را بالا ببرد. هر کس که تجارتی راهاندازی کرده است، میتواند با کمک این نرمافزار تمام دادههای خود را تحلیل و بررسی کند. اما ویزیکالک، بهرغم خارقالعاده بودن خود، نرمافزار بزرگی نیست. این نرمافزار اشکالات زیادی داشت و نمیتوانست خواست کاربران را تأمین کند. پیادهسازی اصلی صفحهگستردهها را نه ویزیکالک و حتی لوتوس 3-2-1، بلکه اکسل مایکروسافت انجام داد. اکسل قابلیت صفحه گستردهها را افزایش داد و انواع ابزارهای محاسباتی را به آن افزود. هر کس میتواند به این نرمافزار مایکروسافت انتقاداتی وارد کند، اما اکسل امروزه همه جا وجود دارد و هر کس استفاده از آن را تجربه کرده است.
به دنبال هوشمندی
انتظار آن است که در زمینه هوش مصنوعی نرمافزارهای بزرگی وجود داشته باشد. یک زمان AI قصد داشت مانند انسان حرف بزند، پاسخ بدهد، به ما چیزهایی بیاموزد که نمیدانیم، و قدرت استنتاج فرمان را با اتکا به حجم عظیمی از داده داشته باشد. اما خروجی آن چه بود؟ مصنوعات بسیاری که هیچ کدام بهره کافی از هوش نداشتند.
شبکههای عصبی که در نتیجه تحقیقات AI متولد شدند، شناسه انگشتنگاریای تولید کرد که در سراسر دنیا از آن استفاده میشود. البته توانمندی تطبیق بالایی دارد، اما آیا این همان هوشی است که به دنبالش بودیم؟ من که اینطور فکر نمیکنم.
اولین محصول بزرگ AI، موتور استنباطی بود که براساس یک پایگاه دانش از شرایط و قوانین کار میکرد. چنین کامپیوتری میتوانست تب 104 درجهای بیمار را اندازهگیری کند و چنین نتیجه بگیرد که باکتریها عامل آن بودهاند.Mycin، یکی از بهترین سیستمهای تشخیص پزشکی، میتواند عفونت ناشی از فعالیت باکتریها را بر اساس نشانههای آن در 65 درصد مردم تشخیص دهد. این تشخیص بسیار بهتر از تشخیص بسیاری از پزشکان نامتبحر است. اما هیچگاه نتوانست در بین مردم جایگاهی پیدا کند؛ زیرا کسی نمیداند که اگر دستگاه خطا کرد، به چه کسی باید مراجعه کند.
برنامه AI مورد علاقه من برنامه Deep Blue شرکت IBM است که توانست قهرمان تاریخی شطرنج، گری کاسپاروف، را در شش بازی شکست دهد. کاسپاروف ادعا کرد کسانی از پشت صحنه به Deep Blue خط میدهند و حق داشت. برنامهنویسان IBM، آبی عمیق را به گونهای برنامهریزی کرده بودند که با مقایسه دیگر بازیهای کاسپاروف، روش بازی او را حدس بزند. همین باعث شد Deep Blue را از فهرست برنامههای بزرگ خود خارج کنم. البته کار IBMخلاف مقررات نبود، ولی نباید این کار را میکرد. مگر کاسپاروف چطور باید بازی میکرد؟ آیا باید مدارات مغزی خود را دستکاری میکرد؟
نرمافزارهای هوش مصنوعی ناامیدکننده هستند و یک به یک از فهرست من خارج شدند. من برنامه مرورگر وب را یک نرمافزار بیدستوپا و غیرهوشمند میدانستم، اما برادرم (والی که یک محقق است)، مرا قانع کرد که موزاییک، اولین جستوجوگر تصویری، <وب را از یک محیط ساده و کوچک وارد فضای بزرگ انسانها کرد.> قبل از این نرمافزار، گوفر وجود داشت که نرمافزار شلوغی بود و پس از آن نیز Viola WWW آمد که اولین جستوجوگر با کلیدهای backward و forward بود.
 |
کلوسوس، بزرگترین نرمافزاری که هرگز نوشته نشد. |
اما در موزاییک وجود خط آدرس، امکان اشاره و انتخاب با استفاده از ماوس، نمایش فایلهای محیطی و وجود ابرپیوند، فضای ایدهآلی را برای استفاده کاربران از سرویسدهندههای روی اینترنت فراهم کرده بود.
موزاییک اولین نرمافزاری بود که جهت تسهیل کاربران، نوار ابزاری را در بالا و نوارهای کشویی را در پایین صفحه قرار داده بود و همین فرم در نتاسکیپ، اینترنت اکسپلورر و فایرفاکس تکرار شد (اگر در Internet Explorer، قسمت Help را باز کنید و روی About Internet Explorer کلیک کنید، عبارت credit to Mosaic را خواهید دید). کار فنی فوقالعادهای است، نه؟
نه چندان. بلکه ترکیبی بدیع از ابزارهای مورد نیاز بود. این فناوری تنها مسیر را برای بقیه باز کرد.
آیا میتوان درباره خود شبکه جهانی وب چنین ادعایی کرد؟ تیم برنرزلی مجموعهای از ابر پیوندها، موقعیتیابهای جهانی منابع و نمایش صفحه HTML را با یکدیگر ترکیب کرد که واقعاً دنیا را تکان داد. اما وب از همین ایدههای موجود نمونهبرداری کرده بود که تماماً به پروتکلهای زیرساخت شبکه، TCP/IP و سرویسدهندههای حوزه نام BIND (حوزه اینترنت برکلی، یک نرمافزار بسیار مکانیکی که مسیریابها را راه میاندازد)، بستگی دارد. نمیتوان وب را یک کار خارقالعاده دانست؛ هر چند حوزه تأثیر آن بسیار گسترده بوده است.
علاقه کاربران
اگر به دنیای جدید قدم بگذاریم، به گوگل میرسیم. جستوجو تا پیش از گوگل به روش لیکاس و آلتاویستا انجام میشد. اما گوگل با ایجاد ساختار جدید، صفحات را براساس دفعات استفاده رتبهبندی کرد. یک محقق میگوید: <ارزش یک مقاله دانشگاهی به تعداد دفعاتی است که در دیگر مقالات از آن نام برده شده است>. گوگل این ایده را درباره صفحات وب پیاده کرد. این نرمافزار همچنین ابزارهای ارزشمندی را به دست میلیونها کاربر داد که میتوانستند اطلاعات را براساس ساختار مورد نظر خود جستوجو کنند. پس گوگل نرمافزار بزرگی است.
زمانی فکر میکردم نرمافزار جاوای شرکت سان نرمافزاری است که از منابع دیگر گرتهبرداری شده است. این نرمافزار، از خانواده نرمافزارهای C است که برخی از قابلیتهای سنتی آن بهبود یافته است، اما با پرسوجویی که به عمل آوردم، متوجه شدم که در اشتباه بودهام. جاوا با پیادهسازی یک ماشین مجازی روی ماشین کاربر، کد را از طریق شبکه به پیسی مقصد منتقل میکند و بدون آنکه اطلاعات چندانی درباره خود ماشین بداند، کد را روی آن به اجرا درمیآورد.
جاوا بر اساس کد میانی کار میکند، شکلی از کد منبع که کامپایل اولیه شده و اجازه میدهد که به محض رسیدن به مقصد به کد ماشین ترجمه شود. این کار همان قابلیت انتقال و اجراست. جاوا امکان دانلود کد را به sandbox یا مرزهای خاصی محدود کرده است، به عنوان مثال، دیسکسخت مشترک شدیداً تحت چنین محدودیتهایی قرار دارد. Sandbox کاربر را در برابر خطرات امنیتی که ممکن است به هنگام استفاده از کنترلهای Active X محدود نشده پیش آید، مصون نگاه میدارد.
جاوا با بهرهگیری از این قابلیت مبتنی بر شبکه، به سرعت گسترش یافت. مایکروسافت به هنگام ساخت Visual Studio.Net بهترین ویژگیهای آن را نمونهبرداری کرد. جاوا که در ابتدا با مخالفت روبهرو شده بود، اکنون مورد استقبال قرار گرفته و همه از آن استفاده میکنند.
نرمافزارهای کاربردی کاربران چطور؟ مثلاً نرمافزارهایی مانند برنامههای نشر رومیزی. این نرمافزار توسط فناوریPostScript شرکت ادوبی ساخته شده و میتواند حروف و تصاویر روی کامپیوتری یا یک چاپگر لیزری را به صورت دیجیتالی فرمت کند. ادوبی سیستم تنظیم حرفهای حروف را که توسط مؤسسه تحقیقاتی درهسیلیکون، شرکت زیراکس به نام مرکز تحقیقات PARC ابداع شده بود، برای استفاده در PostScript به صورتی ساده و کاربردی درآورد و با این کار نشر رومیزی را همگانی نمود.
کار خوبی بود، اما نه آنقدر بزرگ که بتوان آن را در فهرست برترینها آورد. اپل مکینتاش بر اساس سیستم آزمایشگاه پارک بنا شده بود. Alto اولین سیستمی بود که دارای واسط پنجرهای، ماوس و واسط گرافیکی یکپارچه کاربر بود، اما هیچگاه آن را تجاری نکرد. مدتی طول کشید تا اپل با ایجاد تغییراتی، از آن استفاده کند. من زمانی را که برای اولین بار پشت یک رایانه مکینتاش نشستم، به خاطر دارم. احساس من همان احساسی بود که درباره <علوم موشکی> داشتم: میدیدم، اما باور نمیکردم. آنها قدرت برنامههای شیگرا را به استخدام واسطهای کاربر درآورده بودند. به گونهای که هیچ کاربری پیش از آن چنین چیزی ندیده بود. اولین سیستم عامل مکینتاش، حقیقتاً نرمافزاری عالی بود.
 |
سیستم IBM360 |
چرخش کرمها
فناوریهایی را که در زندگی روزمره ما نفوذ کردهاند، به نام نرمافزارهای بزرگ میشناسند. نامزد دیگری که چنین شرطی را برآورده میکرد، نرمافزاری دوستداشتنی نبود. در سال 1988 هنگامی که کرم موریس در اینترنت به راه افتاد، کامپیوترهای سرویسدهنده دانشگاهها و بسیاری دیگر از ادارات را از کار انداخت. رابرت موریس، دانشجوی آن زمان دانشگاه کرنل، میگوید: من که این کرم را نوشتم، میتوانستم گستردگی اینترنت را اندازه بگیرم.
این نرمافزار نیز مانند بسیاری دیگر از نرمافزارها از لحاظ تئوری تنها میتوانست روی یک یا دو محیط هدف اجرا شود، اما با قابلیت خود مطلب جدیدی را درباره شبکه آشکار نمود. این کرم میتوانست با استفاده از خطای موجود در سرریز بافر Sendmail، خود را از سرویسدهندهای به سرویسدهنده دیگر منتقل کند.
ما تا آن زمان نمیدانستیم چه حفرههایی در سیستمهایی مانند یونیکس، Sendmail و فینگر وجود دارد. این کرم پیوسته به سرویسدهندهها نیز سرکشی میکرد و به صورت تصادفی خود را در آنها کپی مینمود. موریس میگوید: او این ویژگی را به این علت در این کرم گذاشته بود که از انتشار کرم مطمئن شود. او موفق شده بود!
این قطعه برنامه کوچک مزاحم، هر چند از نظر اجتماعی مورد پسند نبود، اما همه را هوشیار کرد؛ زیرا ما معمولاً برای هشیار شدن به زنگ خطری نیاز داریم. باید به موریس تبریک گفت؛ زیرا کرم در تحقق این ایده موفق عمل کرده بود.
Sabre، برنامه سیستم خطوط هوایی امریکن ایرلاینز، از بزرگترین نرمافزارهایی است که تاکنون نوشته شده است. Sabre نشان داد که چگونه یک نرمافزار میتواند فراتر از نیازهای بازار و تنها با تکیه بر مسائل فنی به وجود آید. Sabre نیاز مسافران را با خطوط پرواز موجود در دفتر فروش بلیت که شامل شرکتهای رقیب نیز میشد، تطبیق میداد. این نرمافزار هزینه مالی و زمانی شرکت امریکن و کارمندان دفتر را کاهش داد و به گروه کمک کرد سهام بازار را از آن خود کنند.
شرکت امریکن از آنجا که پی برد که اگر در نتایج جستوجو رتبه شرکت را ارتقا دهد، مسافران بیشتری را به سوی خود میکشاند، در این نرمافزار دستکاری کرد. خود امریکن آن را <علم نمایشی> خواند و دولت ایالات متحده آن را <تبعیض نمایشی> دانست و از ادامه استفاده از آن جلوگیری کرد. Sabre دو مسیر را برای همه روشن کرد: تدبیر تجاری و تبعیض تجاری. با ظهور اینترنت، موتورهای جستوجوی پرواز دوباره آغاز به کار کردند؛ موتورهایی مانند Travelocity.
سه رتبه نخست
حال من چگونه باید این دوازده نامزد خود را رتبهدهی میکردم؟ این نرمافزارها از پایین به بالا اینگونه مرتب شدند:
12- کرم موریس
11- روش رتبهبندی گوگل
10- سیستم هدایت آپولو
9- صفحه گسترده اکسل
8- سیستم عامل مکینتاش
7- سیستم Sabre
6- برنامه جستوجوی صفحات وب موزاییک
5- زبان جاوا
4- سیستم عامل IBM 360
اکنون نوبت به سه نرمافزار برتر و دست آخر برترین نرمافزار رسیده بود. این سه از این قرارند:
رتبه سوم به نرمافزار رتبهبندی ژنتیک مؤسسه تحقیقات ژنوم رسید. این نرمافزار، سیستم نرمافزار نیست و به گفته Morgenthaler <کاملاً فنی است و از ده امتیاز، همه را میگیرد.> این سیستم با تقسیم کار رتبهدهی به بخشهای مختلف، به مرتبسازی و درک ساختار DNA بیست هزار نفر کمک کرد. این نرمافزار خارقالعاده، دید روشنی را در موضوع ژن و تحلیل رتبهبندی آن ارائه کرد و توانست با ترکیب آنالیز واحدهای کوچک، آن را به کل سیستم اشاعه دهد Morgenthaler.
اعتقاد دارد: <این نرمافزار علم ژنتیک را ده سال به جلو انداخت.> ما اکنون قادریم مسیر ژنتیک انسان را از افریقا ردگیری کنیم. ژنوم انسان نشان میدهد که بین نژادهای گوناگون تفاوت اندکی وجود دارد. این نرمافزار همچنین توانسته است برای حس برادری انسانها به هم، پایهای علمی تعریف کند. از این نرمافزار در بسیاری دیگر از رتبهبندیهای مهم علمی استفاده شده است و برای یافتن ریشه بسیاری از بیماریها و جدول توارث همچنان به آن نیاز است. به ندرت پیش میآید که یک کار تحقیقاتی بزرگ در کنار یک نرمافزار بزرگ قرار گرفته باشد.
گزینه شماره دوم من، سیستم R آیبیام است؛ یک پروژه تحقیقاتی در آزمایشگاه تحقیقاتی آلمادن در سنخوزه کالیفرنیا، که منجر به ارائه پایگاههای داده رابطهای شد. در سال 1970، ادگار کد با نگاه به دانش ریاضی تئوری مجموعهها به روشی برای استفاده از آن در ذخیره سازی و بازیابی داده رسید. یک مجموعه از تعدادی عنصر مرتبط به هم تشکیل شده که با یکدیگر یک کل را تشکیل میدهند. به عنوان مثال، رنگهای آبی، سفید و قرمز مجموعه رنگهای مرتبطی هستند که در پرچم فرانسه به کار رفته است. یک پایگاه داده رابطهای میتواند با استفاده از این فرضیه و با برچسب زنی، این دادهها مرتبط با هم را ذخیره کند. با استفاده از این ایده میتوان بدون مقدمه و تنها با داشتن یک شناسه منحصر به فرد از هر مجموعه، عناصر آن را جاگذاری نمود.
تأثیر سیستم R و مشتقات آن مانند DB2، اوراکل، SQL Server مایکروسافت، Sybase ،PostgreSQL و MySQL تازه آشکار شده است. پایگاههای داده رابطهای میتوانند هم مجموعه دادههایی را درباره مشتریان ذخیره کنند و هم دیگر مجموعهها را برای یافتن فهرست خرید یک مشتری خاص جستوجو نمایند.
داده به محض گردآوری وارد پایگاه داده میشود و پایگاه، ارتباطات مخفی موجود در آن را مییابد. پایگاه داده نسبی و زبان دسترسی SQL آن، قابلیتی را به وجود آورده است که روزی دور از ذهن به نظر میرسید: ذخیرهسازی انبوهی از دادههای مرتبط با هم بدون اینکه بدانیم کجا ذخیره شدهاند یا چه ارتباطی با هم دارند. تمام آنچه نیاز است، اندکی دانش برای دسترسی به مجموعه است. علت علاقه من به سیستم R، کار فوقالعاده راحت با آن و مقیاسپذیری و کارایی آن برای افرادی است که با حجم عظیمی از دادهها سر و کار دارند.
... و اکنون بزرگترین نرمافزاری که تاکنون نوشته شده است: یونیکس! اعتبار نگارش سیستمعامل یونیکس اغلب به آزمایشگاههای بل داده میشود؛ هر چند این آزمایشگاه دیگر سهمی در توسعه آن ندارد. به عبارت دیگر، مدیران این آزمایشگاه چیزی درباره آن نمیدانند. آزمایشگاههای بل تعدادی از توسعهدهندگان را به پروژه مشترکی به نامMultics فراخواند تا با استفاده از ایدههای جدید، سیستمعاملی جدید بسازند. فلدمن، عضو پروژه یونیکسAT&T و مدیر فعلی مؤسسه ماشینهای پردازشگر، میگوید: پروژه ناتمام ماند، اما یکی از اعضا به نام کن تامپسون اعلام کرد تصمیم دارد با درخواست یک نسخه شخصی از Multics، بازیهایی جنگی بنویسد.
بنا به یک گفته قدیمی، خود یونیکس خودش را حفظ میکند. تامسون یونیکس را با وجود مخالفت آزمایشگاه روی مینیرایانه 7DEC PDP که تنها شانزه یا 32 کیلوبایت حافظه داشت، ایجاد کرد. تردید میزان حافظه، از فلدمن است. او میگوید: <یونیکس با وجود محدودیتهای فراوان نوشته شد. در آن زمان حجم حافظه کم بود و CPU توان چندان بالایی نداشت. البته پذیرش این حرف در زمانی که ساعت مچی هم حافظه و CPU دارد مشکل است.>
تامسون سیستمعامل خود را به گونهای نوشته بود که اطلاعات را به صورت بلوک یا <صفحاتی> از RAM به دیسک منتقل کند تا فضای حافظه خالی بماند. این بود که این سیستمعامل بزرگ میتوانست تنها با حجم کمی حافظه کار کند. سیستمعامل او، دارای سیستم چند کاربره هم بود. در حالی که Mainframeهای آن زمان هم تک کاربره بودند و به همین خاطر، هزینه پردازش بالا بود. سیستم اطلاعات و پردازش Uniplex تامسون اجازه میداد دو کاربر به صورت همزمان از یک کامپیوتر استفاده نمایند.
گروه تحقیقات علوم کامپیوتر آزمایشگاه با شنیدن اخباری درباره یونیکس، نسخهای از آن را خواستار شد. با این درخواست تامسون و همکارش، دنیس ریچی، توافق کردند با دراختیار گذاشته شدن PDP11.20 از طرف شرکت که ماشینی بزرگتر بود، قابلیت شکلدهی متن را نیز به آن اضافه کنند. با این توافق پردازنده متن یونیکس هم متولد شد. Unics به Unix تغییر نام داد و در قالب زبان قدرتمندتر و قابل انتقالتر C، نوشته شد و توسط AT&T و به نام سیستم یونیکس 3 روانه بازار گردید. از نظر من سیستم یونیکس 3 بزرگترین نرمافزاری است که تاکنون نگارش یافته است.
فلسفه GNU
سیستم یونیکس 3 نرمافزار پیشرفتهای بود، اما چیزهای زیادی کم داشت: سیستم پنجرهای، واسط گرافیکی کاربر و روش کار با سیستمهای توزیع شده. به منظور رقابت با سلطه IBM بر کامپیوترهای بزرگ، AT&T سیستم یونیکس را به قیمت پایینی در اختیار دانشگاهها گذاشت. برخی از مردم فکر میکنند کد منبع باز نرمافزاری است که بتوان آن را مجانی از اینترنت دانلود کرد. اما اینگونه نیست. ریشه منبع باز بودن یونیکس به روزهای اولیه توزیع آن برمیگردد. یکی از آن توزیعها مربوط به کار شبانه گروهی بود که برای بهبود نسخه موجود، در دانشگاه برکلی کار میکردند.
دیگر محققین از برنامههای الحاقی بیل جوی چیزهایی شنیده بودند و از این رو از وی درخواست کرده بودند نسخهای از آن را هم برای آنان ارسال کند. اولین کد منبع باز یک فایل دیجیتال نبود، بلکه یک نوار مغناطیسی بود که جوی آن را آخر شب و پس از اتمام کارش در صندوق پست انداخت.
این داستان از قول اریک المان، یکی از همکلاسیهای جوی در برکلی و مؤسس Sendmail نقل شد. در سال 1977، به کامپایل این ملحقات جوی و دیگر دانشجویان، توزیع نرمافزار برکلی یا BSD میگفتند.
یونیکس از مجموعه ماجولهای جدا از یکدیگر تشکیل شده که هر کدام مربوط به قسمت خاصی از سختافزار است. از این رو، مرور این سیستم راحتتر از سیستم عامل IBM است. دانشجویان برکلی به سرعت تغییراتی در آن اعمال کردند: سیستم فایل سریع، شبکهبندی قابل اطمینان و ویرایشگر قدرتمند کد vi آنها با اضافه کردن سوکت API برکلی، انتقال فایل را در شبکه، به راحتی انتقال آن به حافظه محلی کردند.
بولت برانک و نیومن در آن زمان پیمانکاران پیادهسازی TCP/IP برای آژانس پروژههای تحقیقات پیشرفته وزارت دفاع بودند. دانشجویان برکلی در BSD 4.1a، در TCP/IP تغییراتی را مطابق خواست خود داده بودند. در سال 1986، آژانس پروژههای پیشرفته TCP/IP را براساس BSD تست و آن را بهتر از BBN تشخیص داد.
بیل جوی برکلی را در سال 1982 ترک کرد تا در تأسیس سانمایکروسیستمز مشارکت کند. آنها توزیع نرمافزار برکلی را پایهای برای SunOS و سولاریس قرار داده بودند. سان و AT&T برای ارتقای سیستم V با یکدیگر همکاریهایی را آغاز کردند که به تولید نسخه 4 سیستم V منجر شد. آنها این نسخه را استاندارد و مبنای یونیکس در آینده قرار دادند. AT&T خواستار بازگشت سرمایه خود روی یونیکس شد و قیمت نرمافزار را افزایش داد.
اما دانشجویان برکلی را نمیشد به راحتی آرام کرد.
آنها BSD یونیکس را دوبارهنویسی کردند و با گرفتن فایلهای آن از AT&T توزیع جدیدی از آن را به وجود آوردند که میتوانست روی سختافزار ارزانقیمت اینتل اجرا شود. از آنجا که این نسخه شباهت زیادی به نسخه AT&T داشت و میتوانست درآمد AT&T را از این راه کاهش دهد، آزمایشگاههای سیستمهای یونیکسAT&T شکایت نامهای را علیه BSDi، شرکت توزیعکننده یونیکس برکلی برای اینتل، تنظیم کرد.
اما آزمایشگاههای سیستمهای یونیکس، در این رقابت قضایی پیروز و توزیع یونیکس مبتنی بر اینتل تا سالها ممنوع شد.
در همین حال، هزینههای بالای یونیکس، ریچارد استالمن، یکی از دانشجویان آزمایشگاه هوش مصنوعی MIT را به شدت عصبانی کرد. او به این دیدگاه رسیده بود که نرمافزار یک سرمایه فکری است که باید آزادانه در اختیار همه باشد. به همین خاطر او مجموعه ابزارهایی را به نام GNU طراحی کرد که از بلوکهایی تشکیل شده بود. برنامهنویسان میتوانستند با تلفیق این بلوکها برنامه مورد نظر خود را بنویسند.
این مجموعه ابزارها به دست دانشجوی 21 سالهای از اهالی هلسینکی فنلاند به نام لینوس توروالدز رسید. او به دنبال نسخهای از یونیکس میگشت که روی پیسی اینتلِ او اجرا شود. او از آنها برای توسعه کرنل لینوکس استفاده کرد و بعد ادامه ماجرا.
لینوکس آنقدر فراگیر شد که جای توزیعهای نرمافزاری برکلی را روی سختافزار اینتل گرفت. امروزه حتی کار لینوکس به جایی رسیده که توانسته بازار را هم در اختیار بگیرد. اما لینوکس مشابه نسخه کامل نشده سیستمGNU و BSDهای قبلی است. آنها تمام نکات کلیدی را که در لینوکس وجود دارد در خود پیاده کرده بودند. از این روSendmail و BIND، بلوکهای سازنده اینترنت، بر اساس یونیکس برکلی توسعه داده شدند و نه سیستم V.
به همین علت مایکروسافت هنگامی که به دنبال بهترین پیادهسازی از TCP/IP میگشت، از یونیکس BSD استفاده کرد. هنگامی که Darpa در سال 1983 قصد داشت سیستم بین شبکهای خود یا همان اینترنت را ایجاد کند، پروتکلهای موجود را رها کرد و به سراغ TCP/IP یونیکس BSD رفت.
مشاهده میکنید که مؤثرترین نرمافزاری که تاکنون نوشته شده BSD 4.3 است. دیگر نسخههای یونیکس از موفقیت تجاری بالاتری برخوردار بودهاند. اما در مقام مقایسه، در هیچکدام از آنها این میزان از نوآوری به کار نرفته است. BSD 4.3 بزرگترین پایه علمی اینترنت است. علاوه بر آنکه ایده شکلگیری لینوکس و کدهای منبع باز نیز از ایده اصلی BSD گرفته شده است؛ علاقه به پردازشی قدرتمند و باور به فراقیمت بودن تلاش خرد آدمی و لزوم در دسترس بودن آن، باور قدرتمندی است که جایگاه این قطعه برنامه را در دنیا تا به این حد برجسته کرده است.