چند وقت پیش از وبلاگ جادی دیدم که کتاب فقط برای تفریح رو ترجمه کرده! نشستم خوندمش و به نظرم کتاب خیلی زیبایی بود. (از وبسایت linuxstory.ir می تونید کتاب رو بخونید.) توی این نوشته قصد دارم درباره کتاب توضیح بدم و از قسمت هایی از کتاب نقل قول هایی بیارم. شاید در نهایت خوشتون اومد و خوندیدش!
کتاب درباره مصاحبه یه نفر به نام دیوید دیاموند با لینوس توروالدز سازنده لینوکسه که درباره ساخته شدن لینوکس توش صحبت می کنه. کتابیه پر از جمله هایی که عشق به کامپیوتر رو با تمام وجود به زبون می آره توسط کسی که همه خوشی زندگیش کامپیوتر بوده. چیزی برجسته تر و لذت بخش تر از خاطراتش با کامپیوتر توی ذهنش ثبت نشده. کامپیوتر بهترین دوستشه. توصیف هایی که از کامپیوتر می کنه شما رو به وجد می آره.
(توضیح این که نوشته ای که قراره بخونید ممکنه طولانی به نظر بیاد ولی در هر صورت بخش حرف نهایی توی آخر نوشته رو بخونید 🙂 )
مقدمه ی کتاب
توی مقدمه که می شه گفت برای جذب مخاطب نوشته شده لینوس سعی می کنه که به سوال “معنی زندگی چیه؟” جواب بده. “در زندگی سه چیز معنادار هست. عواملی که باعث میشوند شما کارهایی را انجام دهید که یک موجود زنده میکند: اولی بقاست، دومی نظم اجتماعی و سومی تفریح. ” لینوس بیان می کنه که همه چی این ها رو دونه دونه طی می کنه نهایتا به مورد سوم یعنی تفریح ختم می شه، حتی جنگ ها. و میگه که لینوکس هم از این قاعده مستثنی نیست. “اولی انگیزه بقاست که کسانی که کامپیوتر دارند، منطقا قبلا آن را تامین کردهاند. واضح است که اگر کامپیوتر داشته باشید، غذا برای خوردن و اینجور چیزها هم دارید. دومین انگیزه، نظم اجتماعی است. لینوکس به گیکهایی که در گوشه اتاقهایشان نشستهاند، در نظم اجتماعی جایی میدهد. ” و در ادامه می گه که “لینوکس تفریح هم هست؛ از آن نوع تفریحهایی که با پول به این راحتیها قابل خریدن نیست. ” به اعتقاد لینوس هر چیزی به سمت تفریح پیش می ره و در مسیر به تفریح تبدیل شدنه. ولی نه همه هم زمان، برای مثال جنگ داره به سمت تفریح می ره ولی هنوز بهش نرسیده در حالی که فناوری عملا به مرحله تفریح دست یافته. مثلا وقتی فناوری اومد، هدفش آسون تر کردن کارها و ارزون تر کالاها و هزینه ها بود (مرحله بقا و نظم اجتماعی) و رفته رفته که این نیاز ها تامین شد فناوری رو به تفریح تبدیل شدن پیش رفت و به چیزی که امروز هست رسید. و نهایتا اعتقاد داره که همه ما به این دنیا اومدیم که تفریح کنیم. فلسفه اسم کتاب هم از همین موضوع میاد. شاید بشه گفت که این فلسفه توروالدز ناشی بشه از زندگی مرفح و شادش توی فنلاند. شاید کسی که توی جایی زندگی کنه که پر از سختی و فقر باشه این عقیده رو قبول نداشته باشه.
تولد یک نرد
توی این فصل لینوس در مورد بچگیش صحبت می کنه. طوری که خودش رو توصیف می کنه، ” یک سگآبیِ کوتوله عینکی با موهای نامرتب در اکثر روزها -و موهای واقعا نامرتب در بقیه روزها- و با لباس بد” بوده. از لحاظ اخلاقی یه نرد بود و ریاضیش و درسهای دیگش با اینکه هیچی نمی خوند خیلی خوب بود و به کسی که ریاضیش خوبه توی مدرسه معروف بود.
لینوس با پدربزرگش رابطه خیلی خوب و نزدیکی داشته. پدربزرگش استاد آمار توی دانشگاه بوده و یه روز توی حدودای یازده سالگیش لینوس یه کامپیوتر VIC-20 میاره خونه. اون موقع ها مانیتور نبوده و به تلویزیون وصل می شده. اون موقع حتی تولید این کامپیوترها به مرحله تجاری هم نرسیده بوده. ” شروع کردم به خواندن راهنماهای کامپیوتر و واردکردن برنامههای آمادهشده. مثالها، شامل بازیهای سادهای بودند که خودتان میتوانستید آنها را وارد کنید. اگر همه چیز را درست تایپ میکردید، یک آقایی با گرافیک بد، روی صفحه راه میرفت. بعد میتوانستید برنامه را عوض کنید تا آقای راه رونده، رنگش عوض شود. شما خودتان میتوانستید این کار را انجام دهید. این بالاترین لذت بود. ”
و اولین برنامه خودشو با زبون بیسیک مثل خیلی از برنامه نویسای دیگه اینطوری مینویسه که تا ابد براش چاپ کنه سلام. ” اما این، قدم اول است. بعضیها همینجا متوقف میشوند. برای آنها، این برنامه احمقانهای است چون «چرا باید کسی علاقهمند باشد به میلیونها کلمه «سلام» خیره شود؟» اما به هرحال، این برنامه تقریبا همیشه اولین برنامه در راهنماهایی بود که آن روزها همراه کامپیوترهای شخصی داده میشدند. نکته جادویی اینجاست که شما میتوانید این برنامه را تغییر دهید. خواهرم میگوید که من یک تغییر ریشهای در برنامه دادم تا نسخه دومی بسازم که به جای نوشتن «سلام»، روی صفحه بارها و بارها مینوشت «سارا بهترین است». در کل، من برادر بزرگتر مهربانی نبودم؛ ولی این ژست برنامهنویسی، تاثیر زیادی روی خواهرم گذاشت. ”
و بعد درباره زندگیش توی فنلاند صحبت می کنه. فنلاند کشور بسیار سردی با زمستون های پر از برف و یخ که امون نمی دن بیرون بری. و کاری هم نداری که بیرون انجام بدی ولی ” البته یک ورزش در فضای بسته وجود داشت که من در زمستان جذبش شدم: برنامهنویسی.”
و میگه که چطور با التماس از پدربزرگش پول برای خریدن کامپیوتر گرفت و برای هیچی از زبون انگلیسی بلد نبود کلی سر و کله باید می زد با کامپیوتر و چقدر از پول تو جیبی هاش رو پای مجله های کامپیوتری داده و درنهایت به زبون ماشین علاقه مند شده، ” صفرها و یکهایی که کامپیوتر آنها را میفهمد.”
اینجا خیلی توصیف قشنگی می کنه: ” اینجوری است که کشف میکنید زبان کامپیوترها، بیسیک نیست بلکه آنها با یک زبان بسیار سادهتر کار میکنند. بچههای هلسینکی دارند با پدر و مادرشان هاکی بازی میکنند یا در جنگلها اسکی میکنند. شما دارید یاد میگیرید که کامپیوترها واقعاً چگونه کار میکنند. بدون اینکه بدانید برنامههایی هستند که میتوانند اعداد قابل خواندن انسانها را به صفر و یکهای مورد علاقه کامپیوترها تبدیل کنند، شروع میکنید به نوشتن برنامهها با اعداد و تبدیلهای لازم را هم با دست انجام میدهید. این برنامهنویسی به زبان ماشین است و از طریق آن قادر هستید کارهایی را بکنید که قبلا فکر میکردید غیرممکن هستند. میتوانید کامپیوترها را به مرز کارهایی که برایش ممکن است برانید. کوچکترین جزییات را خودتان کنترل میکنید. شروع میکنید به فکر کردن در این باره که چطور میتوانید کار مشابهی را کمی سریعتر و با حجمی کمی کمتر انجام دهید. از آنجایی که هیچ لایهای بین شما و کامپیوتر نیست تا حد ممکن به جواب نزدیک میشوید. این همان چیزی است که میتوانید به آن صمیمی شدن با ماشین بگویید. دوازده سالتان است، شاید هم سیزده یا چهارده، فرقی نمیکند. بقیه بچهها در بیرون دارند فوتبال بازی میکنند. کامپیوتر پدربزرگتان جذابتر است. کامپیوترش دنیایی است که منطق بر آن حکم میراند. فقط سه نفر در کلاس هستند که کامپیوتر دارند و فقط یکی از آنها به این دلایل از آن استفاده میکند. به گردهمآییهای هفتگی میروید. این تنها فعالیت اجتماعی در برنامه روزانه شما است البته به جز مواردی که گاهگداری در خانه یکی از کسانی که کامپیوتر دارد جمع میشوید و شب آنجا میخوابید. برای شما مهم نیست. دارید لذت میبرید. ”
آخر نصف بدن پدربزرگش رو لخته خونی می گیره و سکته می کنه ولی نکته مثبتش برای لینوس این بوده که کامپیوتر پدربزرگش به کلی مال اون می شه.
” هیچ تفریحی به پای کار با کامپیوتر نمیرسد. حالا که کامپیوتر در خانه است، میشود همه شب را بیدار ماند. همه پسرها شب را با خواندن مجله در زیر پتو بیدار میماندند. در عوض من خودم را به خواب میزدم تا مادرم سراغ کارهای خودش برود و بعد از تخت بیرون میپریدم و پشت کامپیوتر مینشستم. این، قبل از دوره چت رومها بود. «لینوس! وقتِ غذاست!» بعضی وقتها حتی غذا را هم بیخیال میشدید. بعد مادرتان شروع میکرد به تعریف این داستان برای همکارانش که شما بچه بسیار کم دردسری هستید و تنها کاری که برای راضی نگهداشتنتان کافی است، این است که شما را با یک کامپیوتر در یک کمد تاریک بیاندازند و گاهگداری هم کمی ماکارونی خشک برایتان بگذارند. خیلی هم بیراه نرفته. هیچکس نگران این نبود که این بچه را بدزدند -اصلا کسی متوجه میشد؟”
زمان می گذره تا وقتی که وارد دانشگاه می شه و رشته کامپیوتر رو به عنوان رشته اصلیش انتخاب می کنه و درس های ریاضی و فیزیک رو به عنوان درس های فرعی.
” سال اول دانشگاه برای من خاطرهای مبهم است از سفرهای درونشهری با مترو از اتاقخواب که پر بود از کتاب و قطعات کامپیوتر به کلاسهای درس و برعکس. من روی تخت دراز میکشیدم و سهگانه علمی تخیلی داگلاس آدامز را میخواندم. بعد آن را زمین میگذاشتم و به سراغ کتاب درسی فیزیک میرفتم. بعد از تخت بیرون میآمدم و سراغ کامپیوتر میرفتم و برنامه یک بازی جدید را مینوشتم. آشپزخانه، درست بیرون اتاق من بود و گاهی برای کمی قهوه و چیپس ذرت، سری به آنجا میزدم.”
تولد یک سیستم عامل
” بعضی از آدمها، تاریخ را با ماشینهایی که داشتهاند یا شغلهایشان یا مکان زندگی یا حتی عشقهایی که داشتهاند به یاد میآورند. سالهای زندگی من، با کامپیوترها مشخص میشوند.”
” وقتی هر کاری که میتوانستم با VIC-20 انجام دهم را انجام دادم، شروع کردم به پسانداز پول برای خرید کامپیوتر بعدی. این در زندگی من مساله مهمی بود. همانطور که قبلا هم گفتهام، یادم نیست که کدام فامیل در کدام دوره در کجا زندگی میکرده است و خیلی چیزهای دیگر را هم فراموش کردهام؛ ولی مسیری که برای تصاحب کامپیوتر دومم رفتهام را به این راحتیها فراموش نخواهم کرد. من از پولهایی که به عنوان هدیه کریسمس و هدیه تولد به من داده میشد، کمی پسانداز داشتم. مقداری پول هم از طریق کار تابستانی به عنوان تمیزکننده پارکهای هلسینکی به آن اضافه میشد. من همیشه طرفدار فعالیت در فضای باز بودهام. در یک دوره هم روزنامه پخش میکردم. ” ” من هرسال به خاطر «مرد ریاضی» بودن، مستمریها و جوایز میگرفتم. در دبیرستان، جوایز بزرگتر بود. بزرگترین آنها حدود ۵۰۰ دلار بود و اکثر پول کامپیوتر دوم من هم از همینجا میآمد؛ وگرنه پول تو جیبی هفتگی من به کامپیوتر خریدن نمیرسید. راستی کمی پول هم از پدرم قرض کردم”.
” پس من نزدیک به ۲۰۰۰ دلار خرج کامپیوتر سینکلرم کردم. بیشترین کاری که با آن میکردم، تمام کردن یک پروژه و رفتن سراغ پروژه بعدی بود. همیشه دنبال یک کار جالب برای انجام دادن بودم. یک مفسر و کمپایلر زبان فورت داشتم تا با آن ور بروم. فورت زبان عجیبی بود که دیگر کسی با آن کار نمیکند. یک زبان خاص و جالب که در دهه ۱۹۸۰ برای کارهای متنوعی استفاده میشد. ولی به دلیل پیچیدگیهای برنامهنویسی با آن هیچوقت تبدیل به زبانی مرسوم نشد و افراد غیرفنی از آن استفاده نکردند. این زبان در عمل بیمصرف بود.
من برای خودم چند ابزار برنامهنویسی نوشتم. یکی از اولین چیزهایی هم که برای دستگاهم خریدم، یک کارت توسعه دارای حافظه EEPROM (حافظه فقط خواندنی قابل پاککردن و برنامهنویسی مجدد با برق) بود. این حافظهای است که با استفاده از یک دستگاه خاص میتوانید چیزهایی را روی آن بنویسید و حتی وقتی برق کامپیوتر را قطع میکنید، اطلاعات روی آن باقی میمانند. با این دستگاه میتوانستم ابزارهایی که خودم نوشته بودم را بدون اینکه مجبور باشم هربار آنها را در RAM (حافظه با دسترسی اتفاقی) بارگذاری کنم، همیشه دم دست داشته باشم. در عین حال با استفاده از این ابزار، حافظه ارزشمند RAM برای بقیه کارهای کامپیوتر باقی میماند.”
اینجا داستان سر و کله زدن با سیستم عامل کامپیوترش رو می گه 🙂
“چیزی که من را به سیستمعاملها علاقهمند کرد: یک کنترلکننده فلاپی خریدم تا مجبور نباشم از میکرودرایو خود سینکلر استفاده کنم اما درایوری که روی این کنترلکننده بود چنگی به دل نمیزند و در نهایت، خودم نشستم و کنترلکننده آن را نوشتم. طی نوشتن این کنترلکننده به چند باگ در سیستمعامل هم پی بردم؛ یا لااقل به چند ناهماهنگی بین چیزی که راهنماها ادعا میکردند سیستمعامل انجام میدهد و آنچه که واقعا انجام میداد. اینها را کشف کردم چون برنامهای که نوشته بودم درست کار نمیکرد.”
“کدهای من همیشه، اوم…، بدون نقص هستند. پس مطمئن هستم مشکل باید از جای دیگری باشد. پس بررسی را ادامه دادم و سیستمعامل را دیساسمبل کردم. میتوانید کتابهایی را بخرید که حاوی بخشهایی از کدهای سیستمعامل باشند. این کمک میکند. همچنین نیازمند یک دیساسمبلر هستید؛ ابزاری که برنامه به زبان ماشین را میگیرد و آن را به زبان اسمبلی ترجمه میکند. این برنامه هم کمک بزرگی است؛ چون وقتی با زبان ماشین روبرو هستید، دنبال کردن دستورات بسیار مشکل است؛ مثلا جهشها فقط به آدرسهای عددی اشاره میکنند و پیگیری آنها دردسر زیادی دارد. یک دیساسمبلر خوب، این آدرسهای عددی را به اسمهای معنادارتری ترجمه میکند یا حتی به خود شما اجازه میدهد تا اسمهای مورد نظرتان را وارد کنید. در عین حال کمک میکند تا مجموعهای از دستورالعملها را که کار خاصی انجام میدهند شناسایی کنید. من هم دیساسمبلر خودم را داشتم که ترجمههای نسبتا خوبی انجام میداد و لیستهای قابل فهمی تولید میکرد. اگر برنامه کار نمیکرد میتوانستم به آن بگویم که در طول لیست جلو برود و از جای خاصی، اجرای برنامه را پیگیری کند و با این کار، دقیقا میدیدم که سیستمعامل مشغول انجام چه کاری است. گاهی هم نه به خاطر کشف باگها که به خاطر درک بهتر اینکه چه چیزی در جریان است، از دیساسمبلر استفاده میکردم. ”
“یکی از چیزهایی که درباره سینکلر مورد تنفرم بود، وضعیت «فقط خواندنی» سیستمعامل بود. نمیتوانستید آن را تغییر بدهید. میشد کدهایی را به بخشهایی از آن اضافه کرد ولی فقط به همان بخشهایی که از قبل این قابلیت در آنها تعبیه شده بود. بسیار بهتر میبود اگر میشد کلا سیستمعامل را با یک سیستمعامل جدید جایگزین کرد. پیادهسازی سیستمعامل در حافظه رام (فقط خواندنی) ایده بدی است. ”
“…این ماجرا وقتی که میخواستم یک اسمبلر بخرم تا کدهای اسمبلیام را به کدهای ماشین (صفر و یک) ترجمه کند و وقتی که یک ادیتور خریدم تا از آن به عنوان ویرایشگر متن استفاده کنم، تکرار شد.
اسمبلر و ادیتور بهخوبی کار میکردند ولی هر دو، روی میکرو درایو بودند و نمیشد آنها را به EEPROM منتقل کرد. برای حل این مشکل، ادیتور و اسمبلر خودم را نوشتم و از آنها برای تمام کارهای برنامهنویسی استفاده کردم. هر دو را با اسمبلی نوشتم که طبق استانداردهای امروزی، کار احمقانهای بوده. نوشتن به اسمبلی بسیار کندتر و پیچیدهتر است و فکر کنم حل یک مساله با اسمبلی صد برابر بیشتر از حل همان مساله با زبانی مثل سی طول بکشد که آن روزها هم موجود بود.” (ولی امروز شاید 95% افراد حوصله نداشته باشن چیز جدیدی برای خودشون بنویسن چون انقدر ابزار زیاد شده همه چی پیشرفت کرده و انقدر افرادی فکر کردن که برای خودشون بنویسن و نوشتن و منتشر کردن که دیگه به فکر ما (حداقل من) زیاد این فکر که “از اول خودمون بنویسیمش” خطور نمی کنه. شاید هم اصلا خیلی افراد به امکانات راضی باشن و اصلا این نیاز رو برای خودشون حس نکنن که برن از یه ابزار پیشرفته استفاده کنن یا یه ابزار پیشرفته تر از چیزی که دارن درست کنن.)
بله، روند کتاب این شکلی هست و من سعی کردم که جمله هایی که برای من وجد آور و تعجب برانگیز بودن رو تا اولای فصل “تولد یک سیستم عامل” بیارم. دیگه ادامه نمی دم چون در این صورت خیلی این نوشته طولانی می شه.
حرف نهایی
طی خوندن این کتاب به بزرگی و خفن بودن توروالدز پی می برید و شاید به عنوان یکی از پدر های کامپیوتریتون قبولش کنید 🙂 ممکنه بعد از خوندن این کتاب ناامید بشید و بگید که من هرگز مثل اون نمی تونم بشم پس از این کار دست می کشم یا احساس دلسردی پیدا می کنید. همینطور ممکنه بعد خوندنش کلی امید پیدا کنید. به هر حال اگر هم نمی تونیم (شاید هم بتونیم ولی شاید از ترس یا تنبلی یا دلایل دیگه خودمون رو قانع می کنیم و گول می زنیم که نمی تونیم) سیستم عامل بنویسیم، لااقل می تونیم که مثلا به گسترش لینوکسی که از قبل درست شده بپردازیم یا کلی کارهایی کنیم که افراد عادی و خنگ تر از توروالدز کردن و کار بزرگی بوده. کسایی که هرروز توی گیت هاب در حال رفع کردن ایشو های لینوکس هستن چیزی از ما کم ندارن. ما از کسی که توییتر رو ساخته چیزی کم نداریم. ما از دارا خسروشاهی که دیروز CEOی Uber شد چیزی کم نداریم. فقط به یه ضربه کوچک نیاز داریم که به خودمون بیایم. (a little push) این کتاب ممکنه اون ضربه ای باشه که ما نیاز داریم.
کتاب رو می تونید از linuxstory.ir بخونید. اگه از خوندنش لذت بردید و اگه دوست داشتید، توی وبسایتش از این کتاب حمایت کنید. اگر از خوندن این مطلب لذت بردید، با بقیه به اشتراک بزارید.
دیدش به کامپیوتر خیلی باحال و قشنگه
ولی من به شخصه اصلا زندگی این سبکی رو دوست ندارم.
درسته خیلی کامپیوتر و مخلفاتش رو دوست دارم ولی قطعا زندگیم فقط این نیست و کلی چیزای جذابتر و مهم تر هستن.
کلا دیدش خیلی افراطیه
فک کنم فقط کسایی که تو یه قضیه دیوانه وار افراط دارن باعث یه تغییر بزرگ میشن.