من فکر میکنم در حد خودم با کتاب و ادبیات دمخور بودهام، اما متاسفانه در دیگر شاخههای هنر، مهارت و شناخت چندانی ندارم. شناختم از نقاشی صفر مطلق است. انتخاب و سلیقهام در زمینه موسیقی بیشتر از آنکه به هنر موسیقایی و آهنگسازی و … مرتبط باشد، به نوستالژی مرتبط است. از عکاسی بیشتر تکنیک را میدانم و در سینما هم فقط یک ژانر خاص را دنبال (اگر کلمه مناسبی برای دیدن سالی ۳ تا ۴ فیلم باشد) میکنم. به همین دلیل شاید نوشتن درباره هنر آن هم «هنر مولد» که ژانری به نسبت نو محسوب میشود، چندان مناسب من نباشد. اما انگیزه شکلگیری این پست، بیش از هر چیز فرونشاندن کنجکاوی خودم درباره مفهوم هنر مولد بود. چرا که به دلیل ارتباط قدرتمند این شاخه از هنر با کامپیوترها، احساس کردم که این جا همان پل گمشدهای است که میتواند دنیای ریاضی و قاعدهمند من را به دنیای رنگارنگ، سرخوشانه و آزاد هنر پیوند بزند.
دسته: فناوری
یادداشتهای روزانه؛ قسمت اول: «وردپرس» پرتابل روی فلش
زندگی هر انسانی یک دفترچه خاطرات است که میخواهد در آن داستان خاص خودش را بنویسد، اما در نهایت داستانی دیگر مینویسد. و تحقیرآمیزترین لحظات زندگی زمانی است که او نسخه نوشته شده را با آنچه قسم خورده بود بسازد، مقایسه میکند. جِی. ام. باری
قبلا هم نوشته بودم که عاشق نوشتنام و به خصوص سابقهای قدیمی در روزانهنویسی دارم. به تاریخنگاری و ثبت وقایع هم علاقهمندم. به همین خاطر در این دوره دیجیتال و Paperless بسیار به وردپرس علاقهمند شدم. غیر از تواناییاش در قدرت بخشیدن به بیش از نیمی از صفحات وب، به نوعی همه نیازهای نوشتن روزانه را برآورده میکند.
ادامه خواندن “یادداشتهای روزانه؛ قسمت اول: «وردپرس» پرتابل روی فلش”
لیستی از خواندنیهای AI
هشدار: متن طولانی
منبع: این متن ترجمهای است از این مقاله سایت The Verge با کمی مخلفات اضافه.
از کتابهای مقدماتی کاربردی تا داستانهای کوتاه علمی-تخیلی
سایت دوستداشتنی The Verge (البته بعد از Ars Technicaی عزیزترین) پرونده ویژهای را در زمینه هوش مصنوعی کار کرده است که همینجا توصیه میکنم حداقل نگاهی به عنوان مقالههای آن بیاندازید. قطعا خواندنیهای جالبی را میتوانید آنجا بیابید. از میان همه آنها به نظرم این مطلب (که به معرفی برترین کتابهای هوش مصنوعی میپرداخت) هم به لحاظ محتوایی و هم به لحاظ فرصتی که داشتم، گزینه خوبی برای بازنشر بود. تنها کاری که علاوه بر ترجمه مقاله انجام دادهام این است که کتابها را هم از اینطرف و آنطرف اینترنت پیدا کرده و لیک دانلودشان را هم اضافه کردهام. امیدوارم به کارتان بیایند.
از Slefie تا Selfish، درباب خصوصیات نسل جدید
در اواخر دهه چهارم زندگی احساس میکنم به جایی رسیده باشم که بتوانم برای کسانی که از من کم سن و سالتر هستند درباره «گذشته» حرف بزنم. این گذشته برای من هم مانند بسیاری دیگر پر از نوستالژی است و هم البته یادآور شیوهای از زندگی که سرعت تغییر کردنش در بازههای سالها و دههها با هیچ زمانی از تاریخ قابل مقایسه نیست.
تاثیر فناوری و شیوههای ارتباطی نوین در شکل زندگی ما آنچنان زیاد بوده است که غالب ما وقتی به تفاوتهای گذشته و حال فکر میکنیم تنها به تفاوت فناوریهای در دسترس در هر دوره زمانی میاندیشیم و تغییر ایجاد شده در انسانها (در خودمان و عادات و رفتارمان) به عنوان عناصر اصلی سازنده تاریخ و جامعه را فراموش میکنیم. فراموش میکنیم که فناوری وسیله رسیدن ما به هدف و ابزاری برای نمایش و برآوردن تمایلات ماست و گرچه خود میتواند به عنوان محرک عمل کند اما غالبا پاسخی است به نیازهای روزافزون ما «انسانها». به همین دلیل هم من بیش از آنکه تفاوتهای گذشته و حال و آیندهمان را در تغییر فناوریها ببینم در تغییر نوع نگاه انسانها به زندگی و ارزشها و باورهایشان میبینم.
با این مقدمه و از عنوان مطلب احتمالا حدس زدهاید که میخواستم درباره خصوصیات نسل جدید و بهویژه «خودخواهی» به عنوان یکی از بارزترین تفاوتهای میان آنها و نسلهای قدیمیتر حرف بزنم و البته یکی از مدهای این زمانه «social» را هم نشانهای از این تغییر دیدگاه میدانم. پیشاپیش برای رفع شبهات و پیشگیری از گلایههای بعدی بگویم که این مطلب تنها یک نظر شخصی است و البته به همه افراد نسل جدید (اصلا اگر بتوان مرزبندی دقیقی برای این تعریف پیدا کرد) قابل تعمیم نخواهد بود. نکته بسیار مهم دیگر این که بعد از نوشتن طرح کلی این مطلب و زمانی که به دنبال تصاویری برای آن میگشتم به چندین و چند متن مشابه، قدیمیتر و البته علمیتر انگلیسی برخوردم که دو مورد از آنها به نظرم ارزشمند بودند و کلا ساختار نوشته من را هم تغییر دادند و مسلما خواندنشان را به همه پیشنهاد میکنم. یکی این مطلب با عنوان «سلفیها و طلوع نارسیسیسم دیجیتال» و دیگری مقاله مجله تایم با نام Millennials: The Me, Me ,Me Generation که به دلیل رایگان نبودن، میتوانید متن آن را به صورت یک فایل پیدیاف از اینجا دانلود کنید.
ده توصیه برای برنامهنویسان جوان
من عاشق برنامهنویسی و لینوکس و منبعباز هستم. و خب وقتی به همه اینها علاقهمند باشی و هکری بزرگ مثل «اریک ریموند» از چیزی تعریف کرده باشد، نمیتوانی در برابرش مقاومت کنی. توی گوگل پلاس دیدم که لینکی در مورد برنامهنویسی را به اشتراک گذاشته و تصمیم گرفتم ترجمهاش کنم.
اصل مطلب را میتوانید اینجا بخوانید و این هم ترجمهاش:
کد نوشتن درست شبیه جادوگری است. کلمات درست را به کار ببرید و وقایعی هیجانانگیز رخ خواهند داد، یا اتفاقاتی هولناک به وقوع خواهند پیوست.
تبدیل شدن به یک برنامهنویس بزرگ کار سادهای نیست، به زمان احتیاج دارد. من در اینجا ده توصیه برای برنامهنویسان تازهکار دارم که می تواند در طی کردن این مسیر به آنها کمک کند.
۱- وقت بگذارید
تبدیل شدن به یک برنامهنویس خوب به سالها زمان نیاز دارد، پس صبر داشته باشید. هر چقدر هم که باهوش باشید، نخستین پروژههای شما به یقین ضعیف خواهند بود. اگر هر روز کد مینویسید، ظرف پنج سال برنامهنویس قابل قبولی میشوید و پس از ده سال یک برنامهنویس خوب خواهید بود. و در نهایت پس از بیست سال ممکن است به شهرت و بزرگی برسید!
کوان پانزدهم، استاد فو و طراح سختافزار
چند روز قبل از طریق ایمیلی که میلاد زنگنه فرستاده بود، فهمیدم که یک کوان جدید به مجموعه پندهای یونیکسی استاد فو نوشته اریک ریموند اضافه شده.
گرچه خود ترجمه میلاد عزیز هم بسیار خوب بود، اما برای یک دست شدن این مطلب با سایر قسمتهایی که قبلا نوشته بودم، متن رو دوباره ترجمه کردم. ترجمه من از این کوان جدید را میتوانید در این آدرس پیدا کنید.
همه این کوانها هم مثل همیشه از منوی بالای صفحه در دسترس هستند. خواندن مقدمه این مجموعه مطالب هم بیفایده نخواهد بود. البته اگر حوصله و تم گیکی بیشتری دارید پیشنهاد میکنم به پادکست شماره ۳۲ رادیو گیک که جادی تهیه کرده و در آن ۱۰ کوان اول (که تا آن موقع ترجمه شده بودند) را خوانده گوش کنید.
نوستالژی: زمانی که مردها هنوز مرد بودند! (بخش پایانی- هکهای عمیقتر)
در قسمت قبلی در مورد تجربههای برنامهنویسیام و سروکله زدن با گرافیکهای کمودور صحبت کردم. در این قسمت پایانی میخواهم در مورد زبان ماشین صحبت کنم و همچنین کتاب و ابزاری جانبی که کمک کردند تا درک بهتر و بیشتری از ماشینام داشته باشم. و در آخر از هکی صحبت خواهم کرد که آن را بیش از همه دوست دارم.
برنامهنویسی پیشرفته با Commodore 64 Programmers Reference Guide
در کلاسهای مدرسه و زمانی که با دوستان در مورد کامپیوترهایمان و بازیها و غیره حرف میزدیم، یکی از دوستان به کتاب «پیشرفتهای» اشاره کرده که به تازگی به دستش رسیده بود و دانش برنامهنویسی او را چندین پله ارتقا داده بود. با هزار خواهش و التماس توانستم آن را برای یکی دو روز امانت بگیرم. کتابی واقعی در کار نبود. کتاب واقعی را با فناوری فتوکپی (هنوز دستگاه به اصطلاح زیراکس که کیفیت بالاتری داشت همهگیر نشده بود و هزینه یک برگ زیراکس بیش از دو برابر فتوکپی بود!) تکثیر کرده بودند و در نبود صحافیهای سیمی و فنری، آن را با منگنه کتاب دوخته بودند. شما فقط باید تصور کنید که از جلدی که در تصویر زیر میبینید، چه اثر سیاه و سفیدی بر روی یک مقوای کرم رنگ نقش میبندد!
اما برخلاف ظاهر بدترکیب و مدت کوتاهی (کمتر از یک هفته) که آن را در اختیار داشتم، این کتاب تاثیر بسیار شدیدی روی دانش من از کامپیوتر (در مقیاس آن دوران) گذاشت. Commodore 64 Programmers Reference Guide در واقع کتاب مقدس برنامهنویسان کمودور بود:
مرجعی کامل برای درک کامل یک کامپیوتر.
چیزی که بعید میدانم در دنیای کنونی ما برای یک گوشی کوچک موبایل هم وجود داشته باشد. با این کتاب تازه فهمیدم که چیزی به اسم زبان ماشین هم وجود دارد. مفهوم IRQ و عملکردهای بیتی AND و OR را فهمیدم و مفاهیم پوینتر و ذخیره آدرس دو بایتی و بسیاری چیزهای دیگر را درک کردم. بارهای اولی که بازیهای کمودور را LOAD میکردم با تصور اینکه با خواندن کد برنامه میتوانم آن را درک کنم و تغییر دهم، دستور LIST را اجرا میکردم تا برنامه بازی را ببینم و غالبا تنها با یک خط روبرو میشدم:
10 SYS 2061
بعد از خواندن کتاب تازه فهمیدم کل برنامه بازی به زبان ماشین در حافظه سیستم بار شده و این دستور تنها کنترل اجرا را به روالی در آدرس 2061 منتقل میکند. اما چرا 2061؟
صرفهجویی در حافظه، برنامهای که خودش را تغییر میداد
در همین کتاب خواندم که کمودور باز هم برای صرفهجویی در حافظه، هیچگاه مانند کامپیوترهای دیگر سورس برنامه را به صورت متن نگهداری نمیکند. بلکه هر یک از کلمات کلیدی و عملگرها و غیره را با یک کد عددی یک بایتی جایگزین میکند. فکر میکنم شروع این اطلاعات از آدرس ۲۰۴۹ حافظه بود. به این ترتیب هر خط دستور مانند
10 FOR I=1 TO 100
به جای اینکه با احتساب فضاهای خالی ۱۷ کاراکتر جا بگیرد، تبدیل میشد به ۹ بایت کد. دو بایت برای شماره خط، دو بایت برای آدرس شروع خط بعدی، یک بایت کد FOR، یک بایت I، یک بایت علامت مساوی، یک بایت عدد ۱، یک بایت کد TO و یک بایت هم ۱۰۰. وقتی این را فهمیدم به این فکر افتادم که احتمالا میشود با چند دستور POKE و عوض کردن خانههای مناسب حافظه، خود کدهای برنامه در حال اجرا را عوض کرد به گونهای که در هر بار اجرا عملکردی متفاوت داشته باشد.
برنامهای برای این کار نوشتم و آنقدر با شماره خطها و علامتهای «:» اضافی (جدا کردن دستورات در یک خط) بازی کردم تا بالاخره تغییر محتویات آدرسها Syntax برنامه را خراب نمیکرد. حالا برنامهای داشتم که در یک بار اجرا عدد ۱ را چاپ میکرد و بار دوم عدد ۲ را و این کار را با متغیرها انجام نمیداد. سورس برنامه عوض میشد و اگر از آن LIST میگرفتم، هر بار لیستی جدید را به نمایش میگذاشت! البته هیچ کاربردی برای این برنامه متصور نبودم، اما همین الان با خواندن مطلب ویکیپدیا در مورد self-modifying code فهمیدم که چنین برنامههایی میتوانند کاربردهای جالبی داشته باشند!
احتمالا الان میتوانید حدس بزنید که ۲۰۶۱ از کجا آمده است. برنامه بیسیک تنها برای این نوشته شده بود که برنامه اصلی بازی به زبان ماشین را صدا بزند. برنامهنویسان هم برای حداکثر استفاده از حافظه، روالهای زبان ماشین را درست از اولین آدرس خالی بعد از کدهای بیسیک ذخیره کرده بودند.
به هر حال این کتاب و آشنایی با زبان اسمبلی و کدهای ماشین و خانههای حافظه باعث شد که به دنبال برنامه اسمبلر بگردم که البته پیشاپیش بگویم همانند بازیها و برنامههای خودتغییر، هیچگاه چیز خاصی از آن حاصل نشد! نخستین برنامههای اسمبلر را باید مثل همه برنامهها از روی کاست میخواندم، اما مشکل طولانی بودن بارگذاری و محدودیت امکانات باعث شد به سراغ ابزاری سریعتر و با قابلیتهای بیشتر بروم.
کارتریج ACTION-VI : دنیای جدید
در جستوجوی یک کارتریج اسمبلر به کارتریج اکشن ۶ برخورد کردم (که باز هم مطابق دید عموم مردم از کمودور ۶۴ به عنوان یک کنسول بازی) برای «نسوز کردن بازیها» مشهور شده بود. اما ابزاری بسیار قدرتمند بود و تواناییهایی بسیار بیشتر از اجرا کردن کدهای تقلب بازیها داشت.
این کارتریج یک برنامه اسمبلر سریع با خودش داشت. امکاناتی برای فرمت کردن و آمادهسازی دیسکتها، گرفتن نسخههای پشتیبان، دستکاری تنظیمات حافظه و نصب یک Fast Loader فراهم میکرد و از همه مهمتر سیستمی داشت که میتوانست محتوای حافظه RAM کمودور را به اصطلاح فریز کرده و بعد از ویرایش خانههای دلخواه دوباره کمودور را وادار به ادامه کارش کند. یکی از کلیدهایی که بالای کارتریج میبینید (معمولا سمت راستی) دکمه ریست است و دیگری دکمه فریز کردن حافظه. تصویر زیر صفحه آغازین کمودور را هنگام زدن کلید ریست این کارتریج نشان میدهد.
در این صفحه من هیچگاه از گزینه CONFIGURE MEMORY سر درنیاوردم و از آن استفاده نکردم. اما در قسمت UTILITIES یک اسمبلر سریع و راحت وجود داشت که با آن اسمبلی را هم کمی تجربه کردم.
بالن هوای گرم، با سرعت نور
اولین برنامه کاملی که با دستورهای اسمبلی نوشتم، اسپرایت بالن مشهور کمودور را در بالا سمت چپ صفحه نمایش میداد و سپس در یک حلقه هر بار یک واحد به x و y آن اضافه میکرد تا به سمت پایین سمت راست صفحه حرکت کند. البته اول اسپرایت را با برنامه اسپرایت ادیتوری که خودم نوشته بودم، ساختم و در خانههای حافظه گذاشتم و بعد با اسمبلر کارتریج مختصاتدهی آغازین و روال حلقه را پیاده کردم. بار اول با این که برنامه کامل و بیاشکال بود هیچ چیزی روی صفحه ظاهر نشد. بعد از چندین بار آزمایش و خطا فهمیدم که سرعت این برنامه به حدی زیاد است که بالن حرکت را انجام میدهد، اما من آن را نمیبینم.
برای کند کردن سرعت برنامه دو حلقه تو در توی ۲۵۶ تایی خالی را برای تلف کردن وقت داخل حلقه اصلی بازی گذاشتم تا موفق شدم بالن را ببینم. اما باز هم بالن با سرعت نور قطر صفحه را طی میکرد و برنامه تمام میشد. به این فکر افتادم که برنامه ۸ وزیر را برای سرعت بالا با اسمبلی بنویسم ولی سواد واقعی من در اسمبلی به چند دستور JMP و CMP و ADD محدود میشد که برای برنامهای پر از شرط و محاسبات مانند ۸ وزیر بسیار کم بود.
مالتی تسکینگ واقعی با IRQ
احتمالا میدانید که وقفهها یا IRQ (سرنام Interrupt ReQuest) روالهایی هستند که به صورت منظم و در فواصل زمانی مشخص توسط پردازنده کامپیوتر اجرا میشوند. دلیل این که وقفه نامیده میشوند این است که پردازنده در این فواصل زمانی برنامه در حال اجرا را متوقف کرده و روالهای IRQ را اجرا میکند و دوباره به سراغ برنامه اصلی باز میگردد. استفاده از وقفهها بیشتر به دردبرنامهنویسهای سیستم میخورد که توسط آنها تمام مدت ابزارهای جانبی را برای دریافت یا ارسال اطلاعات کنترل کنند یا در بازیها و برنامههای بیدرنگ (Real Time) شرطهای حیاتی را به صورت مداوم چک کنند. مثلا سیستم پیشفرض کمودور از یکی ازهمین وقفهها برای نمایش مکاننمای چشمکزن استفاده میکرد.
برای امتحان کردن این قابلیت عجیب هم تنها هنری که توانستم به خرج دهم این بود که روالی را به اسمبلی نوشتم که دایما بیتهای کنترلی کلیدهای SHIFT و CONTROL را تست میکرد و در صورت فشرده شدن این کلیدها به ترتیب رنگ زمینه متن و رنگ حاشیه آن را عوض میکرد. این چیزی بود که در جمع دوستان هم کسی به سراغش نرفته بود و برای همهمان جذاب بود که سیستم در عین حالی که وظایف معمولش را انجام میدهد، بدون هیچ کد مریی کار دیگری را هم به صورت همزمان در دست اجرا دارد.
هک آخر، بازی دوستداشتنی
و اما آخرین و از دید خودم جذابترین هکی که انجام دادم، به قابلیت فریز کردن حافظه کمودور توسط کارتریج اکشن ۶ مربوط بود و بازی Arkanoid که در قسمت اول از آن صحبت کردم. اندکی پس از شروع بازی، کلید فریز را میزدم و وارد منوهای اکشن ۶ میشدم. آنجا گزینهای برای نسوز کردن بازی وجود داشت. سیستم کار به این شکل بود که یک بار محتویات حافظه را بررسی (یا ذخیره) میکرد. بعد از شما میخواست به بازی برگردید و عمدا یک بار ببازید و دوباره حافظه را فریز کنید. وقتی این کار را میکردید دوباره حافظه را چک میکرد تا ببیند محتویات کدام خانهها عوض شده است. معمولا با همان یک بار و گهگاه با دوبار تکرار این فرآیند خانهای که اعداد مربوط به «جان» کاراکتر بازی در آن ذخیره شده بود پیدا میشد و کارتریج از آن به بعد محتویات آن خانه را ثابت نگه میداشت. یعنی بازی شما دیگر نسوز شده بود!
اما باز هم بازی کردن ۳۲ مرحله Arkanoid با احتساب هر مرحله ۲ یا ۳ دقیقه، آن هم بدون SAVE کلی زمان میبرد. هک اصلی این بود که من بعد از نسوز کردن بازی به سراغ محتویات حافظه تصویر میرفتم و آنها را پاک میکردم. اگر خاطرتان مانده باشد در قسمت قبلی گفتم که پسزمینهها و برخی اجزای بازیها با فونتها ساخته میشدند. من چیزی مانند دستور cls را اجرا میکردم و خلاص! همه آجرها از بین رفته بودند. فقط کافی بود در هر مرحله یک بار فریز کنم، حافظه تصویر را پاک کنم و بعد از برگشت به بازی عمدا بسوزم.
جانهایم که تمام نمیشد، اما بعد از سوختن و شروع مجدد مرحله، کامپیوتر متوجه میشد که تمام آجرها پاک شده و من به مرحله بعد میرفتم! تنها در برخی مراحل که حریفهای متحرک هم وجود داشتند، مجبور بودم نهایتا ۵ یا ۶ ضربه موفق (به آن اسپرایتها) بزنم تا آن مرحله هم تمام شود. فقط مرحله آخر بود که در ساخت غول آن از اسپرایت و آجر و غیره خبری نبود و این مرحله را باید حتما به صورت عادی رد میکردم. به این ترتیب من تقریبا در ۹۰ درصد اوقات بازی را تا آخر تمام میکردم و بلند میشدم! باید اعتراف کنم این کار به خصوص در جمعهای فامیلی، باعث میشد حس یک گیک تمام عیار را داشته باشم!
پایان داستان
شاید شما هم کنجکاو باشید که بر سر این ابزار عزیز چه آمد! واقعیت چندان هم جذاب نیست! حدود سال ۸۱ بود، ده سال از خرید کمودور میگذشت و در دوران پادشاهی پنتیوم ۲ و ۳ مدتها بود سراغش نرفته بودم. آن زمان هم هیچگاه فکر نمیکردم چنین حس نوستالژیکی نسبت به این اولین کامپیوترم پیدا کنم. به همین دلیل آن را با همه کارتریجها و نوارها و دستههای بازی در اصفهان به قیمت ۱۰۰۰۰ تومان فروختم. کاری که اکنون حس میکنم از انجامش به شدت پشیمانم!
بعید می دانم کسی از خوانندگان علاقهای به آزمودن سیستمی به این قدمت داشته باشد، اما اگر دوست داشتید کمی با پیرمردهای عصر کامپیوتر و نیای بزرگ پیسیها سروکله بزنید میتوانید یک امولاتور خوب را در این آدرس بیابید. بازیهای بسیاری در این آدرس موجود است و برنامهها را هم با کمی جستوجو در سایتهای طرفداران کمودور (مثل این) پیدا خواهید کرد.
به هر حال در این چهار پست، با پررنگترین خاطرات من از آن دوران خوش همراه بودید. حداقل در لحظهای که این مطالب را مینویسم فکر نمیکنم هیچ ابزار، سرگرمی، کامپیوتر یا چیز دیگری تا این اندازه برایم خاطرهانگیز بوده باشد یا از این به بعد هم بتواند باشد. اما از کجا معلوم، شاید ۲۰ سال دیگر خاطره نوشتن همین پست هم داستانی نوستالژیک باشد که برای نسلی کوچکتر تعریف میشود.
تا آن زمان، با ماشینهایتان خوش باشید و لذت ببرید!
نوستالژی: زمانی که مردها هنوز مرد بودند! (بخش سوم- معنای قدیمی هک)
بعد از دو بخشی که اشارهای داشتند به سختافزار و نرمافزار در آن دوران خوش گذشته، میخواهم از عمیقترین لذتها و یادگیریهای آن دوره حرف بزنم. از لذت برنامهنویسی و سر و کله زدن با ماشینها، چیزهایی که احتمالا بسیاری از گیکها موافق خواهند بود که تجربههای ناب هک به معنای واقعی (و نه مفهوم عام و هالیوودی آن) هستند. (اگر هنوز هم فکر میکنید هک یعنی به دست آوردن دسترسی غیرمجاز روی یک سیستم، بهتر است این مطلب را به صورت کامل بخوانید و اگر فرصت کردید به این پادکست هم گوش بدهید.)
بد نیست همین ابتدای کار هم بگویم که این دو مقاله طولانی آخر پر است از جزییات فنی و توضیحات یک سیستم کامپیوتری که الان دیگر باید در موزهها به دنبالش بگردید و اگر شما نمیدانید IRQ چیست، اسمبلی به چه دردی میخورد و یا اصلا برنامهنویسی را دوست ندارید، مطالب بسیار جذابتری را میتوانید روی اینترنت برای خواندن پیدا کنید.
پیش از همه باید اعتراف کنم که من هم مثل تمام هم سن و سالهایم در آن دوران، بیشتر از هر کار دیگری با کمودورم بازی کردهام. تجربههایی که قصد دارم اینجا شرحشان دهم، بیشتر مدیون کلاسهای کامپیوتری هستند که مدرسه ما از سوم راهنمایی به اجبار برای دانشآموزان برگزار میکرد و همینطور مدیون جمع کوچکی از دوستان که همهشان مثل من از سروکله زدن با سیستمهای کامپیوتری لذت میبردند.
به هر صورت اینها به یادماندنیترین تجربههایی هستند که من ۲۰ سال پیش با ابزار محاسباتی آن دوره داشتهام.
حلقههای تو در تو: هشت وزیر در یک بعدازظهر تابستانی
پیش از خریدن کمودور برنامهنویسی بیسیک را کموبیش بلد بودم. همانطور هم که پیشتر گفتم اولین برنامهای که روی کمودور نوشتم چاپ اعداد یک تا ده بود. اما نخستین تجربه جدی برنامهنویسیام به مساله ۸ وزیر شطرنج برمیگردد. این مساله را در یکی از روزهای تابستان از زبان یکی از آشنایان که در خارج از کشور کامپیوتر میخواند شنیدم.
همان روز دست به کار شدم و الگویتم حل مساله را به سادهترین و البته ابلهانهترین شکل ممکن نوشتم. ۸ حلقه تودرتوی FOR که به ترتیب موقعیت وزیرها را در هر سطر مشخص میکرد. در نهایت در دل داخلیترین حلقه کنترل میکردم که آیا این وزیرها یکدیگر را تهدید میکنند یا نه. با توجه به این که امتحان کردن این ۱۶ و خوردهای میلیون حالت برای کمودور با پردازنده ۴ مگاهرتزی و زبان BASIC V2 مدت مدیدی طول میکشید، برنامه را طوری نوشته بودم که با پیدا شدن اولین جواب تمام شود. به نتیجه رسیدن این برنامه یک ظهر تا شب تمام وقت گرفت و من بیش از هر چیز دیگری باید شکایتهای سایر اعضای خانواده از اشغال بودن تلویزیون را تحمل میکردم! البته جواب هم چیزی گرافیکی مانند تصویر بالایی نبود، بلکه ۸ عدد (نشانگر موقعیت وزیرها در ۸ ردیف افقی) بود که در ۸ سطر روی صفحه تلویزیون چاپ شد. آنها را روی کاغذ یادداشت کردم و روی صفحه شطرنج واقعی مهرهها را چیدم.
هوش مصنوعی برای کمودور ۶۴؛ واقعا؟
هوش مصنوعی و کمودور ۶۴؟ این یکی دیگر برای خودم هم باور کردنی نبود. در آن سالها مرکز آموزش انفورماتیک شرکت داده پردازی ایران سری کتابهایی را در حوزه انفورماتیک منتشر میکرد. سه کتاب اول «انفورماتیک چیست؟»، «انفورماتیک در جهان» و «انفورماتیک از دیدگاه توسعه» نام داشتند. کتاب چهارم اما چیزی بسیار متفاوت بود.
کتاب «مبانی هوش مصنوعی برای کمودور ۶۴» ابتدا به تعریف هوش مصنوعی و صحبت از تورینگ و . . . میپرداخت و بعد به تدریج با جهتگیری به سمت بازیها، رفتارها و خودگردانها، پردازش زبان طبیعی، تشخیص الگوها و سیستمهای مکاشفهای برنامههای هوشمندتری را به نمایش در میآورد که همه با همان بیسیک بدوی کمودور ۶۴ نوشته شده بودند. معماهای کلاسیکی چون برجهای هانوی، گشت زدن اسب روی صفحه شطرنج و چیزی شبیه برنامه مشهور الیزا (که قبلا هم در مورد آن نوشتهام) از جمله نمونههایی هستند که خط به خط روی کمودور تایپ و اجرا کردم. هرچند از شیوه کار آن برنامه شبه الیزا نه آن زمان و نه حتی الان به درستی سر در نیاوردم. یکی از برنامههای دیگری که خاطره شفافی از آن دارم، برنامهای بود که مشخصات یک لابیرنت را به صورت پر و خالی بودن خانههای یک صفحه شطرنجی میگرفت و با وارونه کردن راهحل (حذف خانههای بنست به جای امتحان کردن راههای باز) در نهایت مسیر درست را پیدا میکرد.
گرافیک: اشباح و کاراکترها
کمی بعد و البته در حین کار با برنامههایی که فقط منطق برنامهنویسیشان مهم بود، به گرافیک و رنگها هم علاقهمند شده بودم. دوست داشتم حالا که منطق کار این سیستم را میفهمم، بتوانم برنامههایم را با ظاهری جذابتر و با رنگ و لعاب بیشتر همراه کنم. به همین دلیل تصمیم گرفتم به سراغ نوشتن یک بازی بروم. در کمودور ۶۴ و البته در غالب سیستمهای کامپیوتری (حتی نمونههای مدرن امروزی مانند گوشیهای هوشمند) وقتی بخواهید به سراغ بازی دوبعدی بروید، به دو چیز مختلف نیاز دارید. تصاویر متحرک (کاراکترها، گلولهها و . . . ) و تصویرهای ثابت یا همان پسزمینهها.
در کمودور ۶۴ مساله اول به کمک اسپرایتها حل میشد. نقشهایی گرافیکی شبیه یک آیکن که میتوانستند هر کجای صفحه ظاهر شوند و با تغییر مختصاتشان حرکت کنند. البته خود کامپیوتر هم برخورد آنها با یکدیگر یا با قسمتهای مختلف پسزمینه را کنترل میکرد.
اسپرایتها که هنوز در سیستمعامل مدرنی مانند آخرین نسخه Mac OSX Mavericks هم حضور دارند، در کمودور ۶۴ مستطیلهایی با ابعاد ۲۴ در ۲۱ خانه بودند. ۳ بایت در هر ردیف که باید نقاط پر و خالی آن را با ۱ و ۰ جایگزین میکردیم و بعد عدد را به مبنای ۱۰ میبردیم و آن را با دستور POKE در خانه حافظه متناظر با آن مینشاندیم. یادم هست که هنوز هیچ داستانی برای بازی در ذهن نداشتم و حتی نمیدانستم چند اسپرایت و به چه شکلهایی لازم دارم، اما فکر اینکه هر بار این مستطیل شطرنجی را بکشم و خانهها را پر کنم و تبدیل مبنا و . . . اذیتم میکرد. اکنون برنامههای طراحی اسپرایت زیادی وجود دارند که این کار را به سادگی انجام میدهند اما همه به تازگی با زبانهای جدید و صرفا برای کنجکاوی و یادآوری خاطرات نوشته شدهاند.
اما من آن زمان با 180 خط برنامه بیسیک، ادیتور اسپرایت خودم را نوشتم. این برنامه با جویاستیک کار میکرد و در سمت راست صفحه منویی برای انتخاب ابزار (نوشتن یا پاک کردن) و انتخاب رنگ داشت. البته به لحاظ گرافیکی از تصویر بالایی بسیار ضعیفتر بود! با حرکت جویاستیک نشانگر آن روی صفحه حرکت میکرد و با فشرده شدن تنها کلید جویاستیک خانه پر (یا خالی) میشد. بعد میتوانستم اطلاعات این اسپرایت را ذخیره کرده و در بازیام استفاده کنم. البته حتما باید اشاره کنم که بعد از تمام این کارها، هیچوقت به نوشتن بازی یا حتی داستان آن نرسیدم!
اما مساله دوم پسزمینهها بودند که به علت محدودیتهای حافظه و امکانات پردازشی کمودور نمیتوانستند تصاویر معمولی باشند. کمودور حالت گرافیکی و به اصطلاح بیتمپ هم داشت اما گرافیک بیشتر بازیها از طریق دستکاری فونتها و نوشتن متن روی صفحه نمایش بوجود میآمدند. چیزی شبیه به ASCII ART اما به شدت قدرتمندتر. برای درک بهتر، بد نیست اول نگاهی به PETSCII ها بیاندازید که معادل کدهای ASCII در کمودور بودند، بعد به این تصویر که کلیدهای کمودور را از نزدیک نشان میدهد دقت کنید.
با نشانههایی که کمودور به عنوان فونت و متن میشناخت، کافی بود اگر میخواهید دایرهای ترسیم کنید کلید کمودور را نگه دارید و در سطر اول U و I و در سطر دوم هم J و K را تایپ کنید تا با ترکیب چهار ربع دایره شکل شما کامل شود. حال اگر در نظر بگیرید که در کمودور ۶۴ میشد به سادگی علامتهای کلیدها را تغییر داد و جایگزین کرد به تصویر کلی دست پیدا میکنید. هر بازی در ابتدا مجموعهای فونت طراحی کرده و با آنها صحنه بازی را میساخت. مثلا یک کاراکتر را طوری تغییر میداد که با تکرار آن روی صفحه نمایش ظاهری شبیه آجر دیده شود و از آن برای ساخت یک دیوار استفاده میکرد. حال اگر قرار بود دیوار خراب شود کافی بود کاراکترها از روی صفحه نمایش پاک شوند! و البته اگر تا اینجای مطلب را خواندهاید میدانید که کار با متنها و کاراکترها برای کامپیوتر هزاران بار سادهتر از گرافیک است. کمی بعدتر میگویم که از این موضوع چطور برای تقلب در بازی Arkanoid استفاده میکردم.
ابتدا قصد داشتم تمام داستانهای برنامهنویسی و . . . را در قالب یک پست بیاورم. اما به دلیل طولانی شدن مطلب، آن را به دو قسمت تقسیم کردهام. در قسمت بعدی از کارتریج اکشن ۶، زبان اسمبلی، برنامههایی که خودشان را تغییر میدادند و چیزهایی مشابه حرف خواهم زد.
نوستالژی: زمانی که مردها هنوز مرد بودند! (بخش دوم- دردسرهای نرمافزار)
در قسمت قبلی، سختافزاری را معرفی کردم که من را به دنیای کامپیوترها وارد کرد. در این قسمت میخواهم از نرمافزارها حرف بزنم و داستانهایی که برای استفاده از آنها داشتیم.
سطح پایینترین فناوری ذخیرهسازی که خورههای کامپیوتر امروزی (آن هم احتمالا) به یاد میآورند فلاپیهای 3.5 و 5.25 اینچی هستند. اما اگر هم سن و سال من باشید، خاطرتان هست که کمودور و البته بسیار پیشتر از آن اسپکتروم ZX از نوارهای کاست معمولی برای ذخیره دادهها استفاده میکردند. اسپکتروم که فناوری قدیمیتری داشت با یک فیش معمولی هدفون و میکروفون به ضبط صوتهای معمولی متصل میشد و دادهها را روی کاست ذخیره میکرد یا اطلاعات را از روی آن میخواند.
اما کمودور ۶۴ به احتمال به واسطه فشردهتر شدن اطلاعات ضبط شده و مناسب نبودن کیفیت صوتی ضبطهای معمولی، از یک کاستپلیر اختصاصی با کابل و رابط اختصاصی استفاده میکرد. البته کمودور هم دیسک درایو داشت و با فلاپیهای 5.25 اینچی (و ظرفیت حدود ۱۷۰ کیلوبایت) کار میکرد. اما قیمت این ابزار به اندازه قیمت خود دستگاه بود و معمولا به درد فروشندگان کامپیوتری میخورد که از آن درآمد کسب میکنند. به این ترتیب بود که هنوز عقده این دو سه دستور در دل من مانده است:
LOAD "$" , 8
LIST
LOAD "{PROGRAM}" , 8
دستور اول چیزی شبیه dir در DOS بود که نام کل فایلهای روی دیسک را میخواند و دستور دوم آنها را چاپ میکرد. بعد از دیدن و انتخاب اسم برنامه مورد نظر با دستور سوم برنامه بارگذاری میشد. این انتخاب، سرعت و سهولت دسترسی در آن زمان چیزی بسیار خواستنی بود.
راه دیگر ذخیرهسازی اطلاعات (البته برای شرکتها) و خواندنشان برای ما استفاده از کارتریجها بود. کارتریجها بسیار سریع و معمولا گرانقیمت بودند و مشکل اصلیشان (بعد از قیمت) این بود که تنها حاوی تعداد محدودی (یک تا نهایت سه یا چهار) برنامه یا بازی بودند و نمیتوانستیم چیزی را روی آنها ذخیره کنیم.
نوارهای کاست و دردسرهایشان
به این ترتیب آرشیو ارزشمند بازیها و برنامههای من در آن زمان به جای هاردهای اینترنال و اکسترنال یا فلشدیسکها، روی مجموعهای نوار کاست معمولی و در جعبهای مخصوص نگهداری میشدند که بچههای فامیل هنوز درباره وسواس من روی آنها داستانسرایی میکنند. البته کار با این نوارهای کاست به رغم ارزانی، فراوانی و فراگیر شدن باز هم دردسرهایی داشت.
دایرکتوری کاغذی، جستوجوی دستی
نخستین مشکل با کاستها این بود که بدون جلدهای کاغذیشان به هیچ دردی نمیخوردند، مگر این که شما وقت زیادی برای تلف کردن داشتید! داستان این بود که دسترسی اطلاعات روی کاستها ترتیبی بود و در غیاب سیستمعامل و دایرکتوری و جستوجوی فایلها شما باید میدانستید هر برنامه کجای نوار ذخیره شده است. وگرنه کامپیوتر شما باید از ابتدای نوار شروع میکرد و به ترتیب تمام فایلها را میخواند تا به برنامه موردنظر شما برسد. این مشکل همانطور که در قسمت قبل هم اشاره کردم، با یک شمارنده ساده که روی کاستپلیر نصب شده بود حل میشد.
به این ترتیب ما باید نام برنامه را به همراه (به اصطلاح آن زمان) کانتر شروع و کانتر پایان پشت جلد نوارها مینوشتیم. اگر برنامههای کوچکی را خودتان مینوشتید و تعداد زیادی از آنها را روی کاست Programs! خودتان ذخیره میکردید، مجبور بودید علاوه بر جلد کاغذی کاستها، نوارهای کاغذی طولانی را خطکشی کنید و بقیه دایرکتوریتان را روی آن بنویسید. به همین دلیل گفتم نوارها بدون جلدهای کاغذیشان به هیچ دردی نمیخوردند.
دقیقا کجای نوار مغناطیسی؟
مشکل دیگر کاستها این بود که هد نوشتن و خواندن دستگاههای مختلف و حتی یک دستگاه کاستپلیر در زمانهای مختلف، در یک نقطه دقیقا ثابت قرار نداشت. زمانی که شما با دادههای صوتی سروکار داشته باشید، تاثیر این جابهجایی نامحسوس خواهد بود و بعید است شما تغییر یا اشکالی در صدا احساس کنید. اما اگر شما با اطلاعات دیجیتال سروکار داشته باشید، تغییر تنها یک صفر یا یک کافی است تا کل دادههایتان را به هم بریزد. در کمودور بسیار پیش میآمد که مثلا ۵ دقیقه (بله ۵ دقیقه!) برای لود شدن یک برنامه از نوار صبر میکردید و در نهایت با پیغام LOAD ERROR روبرو میشدید!
البته تمام کاستپلیرها سوراخ کوچکی درست بالای هد خواندن و نوشتن داشتند که از طریق آن و به کمک یک پیچگوشتی کوچک میتوانستید هد را دقیقا در جای درستش تنظیم کنید. اما مشکل این بود که جای درست را چگونه تشخیص بدهیم؟ به عبارت دیگر از کجا بفهمیم که هد الان درست روی اطلاعات قرار گرفته یا نه؟
ما برای حل این مشکل معمولا سه راهحل مختلف پیش رو داشتیم.
راه اول: چسب!
عدهای با بستن پیچ تا آخرین حد و ریختن چسب مایع روی پیچ تنطیم هد، آن را در وضعیت ثابتی قفل میکردند. دردسر این روش این بود که هر زمان میخواستید برنامهای را از جایی غیر از سیستم خودتان ضبط کنید (مثلا از مغازهای بخرید یا بازی دوستی را کپی کنید)، باید کاستپلیر خودتان را هم به همراه میبردید تا ضبط اطلاعات توسط همان دستگاه و با همان وضعیت هد انجام شود.
راه دوم: برنامه تنظیم هد (متداولترین شیوه!)
راه دوم که بیشترین استفاده را داشت، این بود که درست همان روز خرید دستگاه و در همان مغازه کامپیوتری، هد دستگاهتان را تا ته ببندید و سپس یک برنامه تنظیم هد را از یک کاست دیگر یا از یک کارتریج با همان وضعیت هد بسته روی یک نوار نو ضبط کنید. به این ترتیب هر زمان که میخواستید برنامهای را با تنظیم هد جدید لود کنید باید مراحل زیر را به ترتیب طی میکردید:
- ۱– هد دستگاه را تا ته میبستید.
- ۲- نوار تنظیم هد را (که قبلا با هد بسته ضبط کرده بودید) در دستگاه قرار داده و برنامه را لود میکردید.
- ۳- بعد از لود شدن برنامه، نوار تنظیم هد را خارج میکردید.
- ۴- نوارحاوی برنامه موردنظر را داخل دستگاه قرار داده و آن را به کانتر ابتدای برنامه جدید میآوردید.
- ۵- برنامه تنظیم هد را اجرا کرده و با پیچگوشتی آنقدر هد را بالا و پایین میکردید تا برنامه تنظیم هد بهترین وضعیت (باریکترین خط) را بدون پراکندگی نقاط به شما نشان دهد.
- ۶- کاست را دوباره به کانتر ابتدایی برنامه باز میگرداندید و شانستان را برای لود کردن برنامه امتحان میکردید.
تازه با همه اینها باید خدا خدا میکردید که تنظیمتان تا حد امکان دقیق بوده باشد وگرنه با یک LOAD ERROR چندین دقیقه وقتتان تلف میشد و دوباره باید مراحل بالا را طی میکردید! جالبتر این که این پیغامهای خطا هیچگاه در حین لود اتفاق نمیافتاد. برنامه شما باید تا انتها لود میشد تا بعد پیغام به شما نشان داده شود. یا زمانی متوجه میشدید که هد درست تنظیم نشده که کاست چند ده شماره از کانتر پایانی هم جلوتر رفته بود اما متوقف نمیشد. نمیدانم کسی از بچههای آن زمان هست که بابت رفتن تا پشت کیس برای زدن یک فلش به پورت USB غر بزند؟
راه سوم: کارتریج تنظیم هد
این روش یک کم پولداری(!) به این ترتیب بود که شما یک کارتریج تنظیم هد بخرید و این شانسی بود که نصیب من شد. به این ترتیب میتوانستم با نصب کارتریج در محل مخصوص و روشن کردن کمودور یک ضرب کار را از مرحله ۴ شروع کنم که خودش صرفهجویی عظیمی بود.
به هر حال بعد از تنظیم هد روی نوار مورد نظر، دستور LOAD را تایپ میکردیم و با پیغام PRESS PLAY ON TAPE کلید پخش را فشار میدادیم. در حین لود شدن برنامه هم میتوانستیم از خطوط رنگی نمایش داده شده در پسزمینه تصویر لذت ببریم! اگر اشتباه نکنم دلیل نمایش این خطوط یک برنامه Fast loader بود که ابتدای برنامههای درست و حسابی لود میشد تا فرآیند لود شدن بقیه برنامه را تسریع کند.
به خاطر یک مشت بازی
اما همه این دردسرها برای چه نرمافزارهایی بود؟ تا آنجا که من خودم به خاطر دارم، جز بازیها هیچ نرمافزار دیگری برای کمودور ۶۴ در بازار موجود نبود. من سالها بعد از خریدن کمودورم و با دیدن یک مجله آلمانی کامپیوتر تازه متوجه شدم که کمودور چاپگر دارد، و البته انواع نرمافزار را هم دارد. انواع نرمافزارهای کاربردی از واژهپرداز و نرمافزار صفحه گسترده گرفته تا برنامههای حسابداری شخصی و موارد مشابه. نرمافزارهایی دارد که فایلهای اطلاعات تولید میکنند و میتوانند آن را روی دیسک یا نوار ذخیره کنند. بعدتر فهمیدم که این ماشین پرفروشترین کامپیوتر شخصی تمام دوران بوده است. بعدها مودمهای بادکشیاش را در فیلمها دیدم و فهمیدم میتوان از راه دور به دیگر کامپیوترها متصل شد.
البته این به دورانی مربوط است که هنوز از اینترنت (حداقل در مملکت ما) خبری نبود. به هر حال آن چه ما در دیتا کامپیوتر و الکترون کامپبوتر شیراز میدیدم، تنها بازی بود و بس و در نتیجه نرمافزارهایی که میتوانم از آنها نام ببرم برخی از بازیهایهایی هستند که هنوز از آن دوران به یاد دارم:
Opertation Wolf که نسخه بسیار زیباتر آن را روی پیسیهای XT مدرسه بازی میکردیم. کیفیت Head Shot را میتوانید در عکسهای زیر ببینید! (نمیدانم چرا وردپرس عکسها را به صورت عمودی کراپ میکند. بنابراین اگر روی این عکسها کلیک کردید و به جای تصویری Landscape یک تصویر Portrait دیدید، روی آن دوباره کلیک کنید تا تصویر اصلی را ببینید.)
Last Ninja 3 که آخر سر نتوانستم از مرحله سوم آن پیشتر بروم. دقبق یادم هست که جایی دو قطعه چوب را با یک زنجیر ترکیب میکردم و به یک نانچیکو میرسیدم. بعد با کشتن حریف باید منتظر میماندم تا مرحله بعدی از روی نوار لود شود و بازی درست همینجا فریز میشد و مجبور میشدم سیستم را ریست کنم.
Arkanoid که در قسمت بعدی مفصل درباره آن خواهم نوشت. فکر کنم هفتاد هشتاد درصد وقت بازی کردنم را به خودش اختصاص داده بود و به خاطر نداشتن امکان ذخیره بازی، همیشه باید ۳۲ مرحله را از اول بازی میکردم. داستان این بازی یکی از گیکیترین کارهایی است که تا حالا انجام دادهام!
و البته آن زمانها شاید یکی از پرطرفدارترین، خلافترین و س.ک.س.ی ترین بازیهای کمودور هم Stri p P oker بود که داشتنش درست مانند داشتن ویدیو و ماهواره ممنوع بود! من اما متاسفانه یا خوشبختانه به رغم داشتن این بازی به واسطه بلد نبودن پوکر هیچگاه به چیزهایی که دیگران رسیده بودند نرسیدم!!
در نهایت یک بازی رانندگی هم بود که ممکن است درست همین تصاویر زیر (بازی Chase HQ) نباشد، اما اولین بازی بود که از سیستم دو بعدی خطی خارج شده بود و فرمی شبه سهبعدی و پرسپکتیوی را ایجاد میکرد.
این بخشی از داستان نرمافزارها و شیوه سروکله زدن ما با آنها بود. به هر حالت در قسمت بعد به گیک بازیهای آن دوران خواهم پرداخت، چیزی که بیشتر از تمام آنچه تا کنون گفتم، برای خودم لذتبخش است!
نوستالژی: زمانی که مردها هنوز مرد بودند! (بخش اول)
احتمالا بعضی از شماها میدانید که عنوان این مطلب از یکی از نامههای لینوس توروالدز در میلینگ لیست مینیکس (comp.os.minix) برداشته شده است. در این ایمیل که در تاریخ 5 اکتبر 1991 (13 مهرماه 1370) ارسال شده، توروالدز این طور شروع میکند:
«آیا شما هم دلتان برای روزهای خوش مینیکس 1.1 تنگ شده است؟ زمانی که مردها هنوز مرد بودند و خودشان درایورهای ابزارهایشان را مینوشتند؟ آیا پروژه خوبی در دست ندارید و تشنه این هستید که با سیستمعاملی سروکله بزنید که بتوانید براساس نیازهایتان تغییرش دهید؟ و . . . »
مقدمه
من در زمان نوشته شدن این ایمیل تازه مقطع دبیرستان را شروع کرده بودم و هنوز یک سالی تا خرید اولین کامپیوترم فاصله داشتم. این اولین کامپیوتر هم البته یک کمودور 64 بود که خب نه سیستمعاملی داشت و نه ابزار جانبی چندانی به آن متصل میشد که بخواهم (و البته بتوانم) برای آن درایوری بنویسم.
اما نمیدانم چرا خواندن این جملات همواره حسی نوستالژیک را در من زنده میکند! انگار توروالدز مستقیما من را هدف گرفته است! همیشه حسی غریب نسبت به مفهوم «کامپیوتر» در آن دوران دارم. ابزاری که بسیاری آن را تنها کنسولی قدرتمندتر از آتاری و سگا برای بازی میدیدند. تنها معدودی از دوستان و آشنایان به آن دسترسی داشتند و حداقل در بازاری که من میشناختم (محدوده چهارراه سینما سعدی شیراز و پاساژ برق!) به جز بازیها هیچ برنامه کاربردی برای آن وجود نداشت. حتی فروشندگان این دستگاه هم آن را نوعی بازی کامپیوتری میدیدند!
گوشی هوشمند، اپ، رابط کاربری گرافیکی و ابزارهای محاسباتی که حتی کودکان هم میتوانند با آنها کار کنند، فکر کنم هنوز به ذهن سازندگانشان هم نرسیده بود.
به هر حال دراین مجموعه پستها که احتمالا بسیار هم طولانی خواهد شد، برای فرونشاندن آن حس نوستالژی، و شاید برای آشنا شدن کاربران تازه و متولدین دهه 60 و 70 با حال و هوای آن دوره و برای یادآوری خاطرات خوب گذشته یعنی همان زمانی که «مردها هنوز مرد بودند» میخواهم مروری کلی داشته باشم بر تجربههای اولیهای که در شروع روزهای همهگیری کامپیوترهای خانگی (و نه شخصی) از سر گذراندهام.
پیش از آنکه (اگر حوصله کردید) ادامه مطلب را بخوانید، بد نیست خواهش کنم که اگر تجربهای از این نوستالژیهای قدیمی دارید و حوصلهای برای نوشتن، حتما آنها را بنویسید و اطلاع بدهید تا همه را یکجا جمع کنیم. بویژه روی صحبتم با هم سن و سالهایی مثل جادی است که از طریق پادکستها و غیره میدانم از اسپکتروم و دوران BBSها هم خاطرات جذابی دارد. در ادامه با «صفحه آبی زندگی» مطلب اصلی را شروع میکنم.
صفحه آبی زندگی
برای بسیاری دیدن صفحهای آبی با متنهای سفید، به مفهوم مشکلی جدی (و غالبا سختافزاری) در سیستمهای ویندوزی و هنگ کردنی است که معمولا تنها علاجش ریاستارت کردن کامپیوتر است. این صفحه، «صفحه آبی مرگ» یا Blue Screen Of Death یا به اختصار BSOD نامیده میشود.
اما در آن زمانی که من کمودور را روشن میکردم، رنگ آبی صفحه و متنهایی که با آبی کمرنگ مایل به سفید نشان داده میشدند نه تنها هیچ نشانی از مرگ و خرابی نداشتند، بلکه نشانه راهاندازی بلااشکال سیستم بودند. تنها دو چیز این صفحه از همان ابتدای کار آزاردهنده بود. یکی فرم مربعی مکاننما بود و دیگری متنها که یا همیشه با حروف بزرگ نشان داده میشدند یا با حروف کوچک! حالتی برای ترکیب وجود نداشت! البته در همان زمان در پیسیهای XT مدرسه دیده بودم که مکاننمای داس یک زیر خط بود و فونتهایش هم بسیار زیباتر با قابلیت ترکیب حروف بزرگ و کوچک. به هر حال این صفحه آبی و آن عدد کذایی 38911 تا مدتها زندگی ما بود . . .
درست خاطرم هست که در آن تابستان سال ۱۳۷۱ بعد از خرید این دستگاه و برخی متعلقاتش (که آن زمان با قیمت ۲۴هزار تومان تقریبا حقوق یک ماه پدرم را مصرف کرد) به خانه داییام رفتیم و من در میان نگاههای کنجکاو فامیل بعد از روشن دستگاه، تنها هنری که توانستم نشان دهم این بود:
FOR I=1 TO 10:PRINT I:NEXT
و نتیجه چاپ شدن اعداد یک تا ده بود و ادامه نگاه متعجب حاضران که هنوز نمیدانم از شگفتی این محصول جادویی بود یا شگقتی این که چنین پولی خرج نمایش اعداد ۱ تا ۱۰ روی صفحه تلویزیون شده است. واقعیت این است که در آن دوران نه آنها و نه حتی خود من نمیدانستیم که از این ابزار چه انتظاری میتوان داشت!
این دسکتاپ من در آن دوران بود و در غیاب دکمهها و آیکونها و تصاویر، تنها شخصیسازی قابل انجام تغییر رنگ پسزمینه و پیشزمینه بود که تازه آن هم با نشاندن دستی شماره رنگها در خانههای خاصی از حافظه انجام میشد. حتی هنوز اعداد و دستورات را به یاد دارم:
POKE 53280,5
POKE 53281,11
اولی برای نشاندن رنگ سبز در مستطیل حاشیه و دومی برای پر کردن محل نوشتن متنها با رنگ خاکستری.
قطعات جانبی
اما متعلقاتی که از آنها حرف زدم چه بودند؟ برای داشتن یک تجربه کاربری نسبتا کامل علاوه بر آداپتوری که به واسطه سایز بزرگش به Brick یا آجر مشهور بود، به یک کاستپلیر مخصوص کمودور، و یک جویاستیک نیاز داشتم و البته توانستم یک کارتریج تنظیم هد را هم به این مجموعه اضافه کنم! عکس این قطعات را به همراه مختصری توضیحات در ادامه میبینید.
آداپتور
هنوز هم واقعا نمیدانم که چرا این آداپتور سایزی به این بزرگی داشت. آن زمان فکر میکردم که دلیلش باید سیمپیچها و هستههای آهنی باشد که مانند ترانسفورماتور عمل میکند! اما همان موقع هم امکان تبدیل برق AC به DC و تغییر ولتاژ با تجهیزات الکترونیک وجود داشت و بعید است این آداپتور هم به شیوهای غیر الکترونیکی این کار را میکرده است.
کاستپلیر
شاید در نگاه اول تفاوت چندانی با کاست پلیرهای معمولی نبینید. اما مهمترین بخش افزودهای که این دستگاه داشت، آن شمارندهای بود که در غیاب ابزارهای دخیرهسازی دارای دسترسی تصادفی، برای تعیین شروع و پایان فایلهای مختلف روی نوار کاست مورد استفاده قرار میگرفت.
جویاستیک
این همان جویاستیک آتاری است که همان زمان هم به واسطه خشکی، سادگی و امکانات کم (حتی در مقایسه با دستههایی که خلبانی نامیده میشدند) به آنها لقب «گوشتکوبی» داده بودیم.
کارتریج تنظیم هد
این قطعه سختافزاری یکی از دشوارترین فرآیندهای کار با برنامهها را برای من ساده میکرد و مایه حسرت بسیاری از کمودور داران دیگر بود. درباره کارکرد آن هنگام صحبت از نرمافزارها توضیح خواهم داد. کارتریجی که من داشتم مثل همین تصاویر بدون برچسب بود و رنگ صورتی دخترانهای داشت.
این مجموعه، کل چیزهایی بود که پای من را به دنیایی جدید و تاحدی ناشناخته باز کرد که آن زمان دنیای کامپیوتر، کمی بعدتر حوزه انفورماتیک، بعدها دنیای محاسبات و گاه عرصه فناوری اطلاعات نامیده شد.
در قسمت بعدی درباره نحوه تهیه، تکثیر و استفاده از نرمافزارها (میتوانید بخوانید بازیها!) صحبت خواهم کرد.