لیستی از خواندنی‌های AI

هشدار: متن طولانی
منبع:
این متن ترجمه‌ای است از این مقاله سایت The Verge با کمی مخلفات اضافه.

از کتاب‌های مقدماتی کاربردی تا داستان‌های کوتاه علمی-تخیلی

سایت دوست‌داشتنی The Verge (البته بعد از Ars Technicaی عزیزترین) پرونده ویژه‌ای را در زمینه هوش مصنوعی کار کرده است که همین‌جا توصیه می‌کنم حداقل نگاهی به عنوان‌ مقاله‌های آن بیاندازید. قطعا خواندنی‌های جالبی را می‌توانید آن‌جا بیابید. از میان همه آن‌ها به نظرم این مطلب هم به لحاظ محتوایی و هم به لحاظ فرصتی که داشتم، گزینه خوبی برای بازنشر بود. تنها کاری که علاوه بر ترجمه مقاله انجام داده‌ام این است که کتاب‌ها را هم از این‌طرف و آن‌طرف اینترنت پیدا کرده و لیک دانلودشان را هم اضافه کرده‌ام. امیدوارم به کارتان بیایند.

۱- برش‌هایی از آینده (Profiles of the Future)
نوشته آرتور سی. کلارک (Arthur C. Clarke)

توصیه شده توسط: گرگ بروک‌من (Greg Brockman) و ایلیا سوتسکور (Ilya Sutskever) بنیان گذاران OpenAI

این کتاب دیدگاه ما را نسبت به سرعت تغییراتی که هوش مصنوعی در دنیای ما به وجود می‌آورد، تغییر داد. ما تغییرات فناورانه را فرآیندهایی تدریجی و کند تصور می‌کردیم: جمع تعداد زیادی از نوآوری‌های کوچک که وقتی از دور به آن نگریسته شود، تنها توهم تغییر سریع فناوری را ایجاد خواهد کرد.

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

فرآیند درازمدت پیشرفت هوش مصنوعی چگونه خواهد بود؟ آیا از مسیری قابل پیش‌بینی پیروی خواهد کرد؟ مسیری که در آن دید واضحی از آن‌چه در ۵ تا ۱۰ سال آینده رخ خواهد داد، وجود دارد؟ یا به پیشرفتی شگفت‌آور در زمینه هوش مصنوعی برخواهیم خورد که دنیا را به سرعت عوض می‌کند؟ برش‌هایی از آینده به ما می‌گوید که این سوال‌ها ارزش پرسیدن و پی‌گیری را دارند.

(دانلود کتاب با فرمت epub)

۲- کتاب چرا (The Book of Why)
نوشته جودیا پرل و دانا مکنزی (Judea Pearl & Dana Mackenzie)

توصیه شده توسط: رومن چاودهری (Rumman Chowdhury) سرپرست بخش AI در Accenture

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

مشکل آزاردهنده شیوه‌های کنونی هوش مصنوعی و یادگیری ماشینی که ما برای پیش‌بینی به کار می‌بریم این است که دقیقا نمی‌توانند به ما بگویند که آیا یک موضوع علت موضوع دیگری است یا خیر. در عوض آن‌ها تنها با تکیه بر میلیون‌ها تکرار می‌توانند همبستگی شدید بین دو موضوع را مشخص کنند. بسیاری از مشکلات ما با خروجی‌های پیش‌فرض‌دار (Biased) سیستم‌های هوش مصنوعی نتیجه درک ناقص یا ضعیف ما از متغیرهای مرتبط (به عنوان مثال رابطه نژاد و کدپستی یا رابطه وضعیت اقتصادی جامعه و آموزش) است. گرچه این فرضیه هنوز محل مجادله است، اما «کتاب چرا» روایتی جدید را مطرح می‌کند که عناصر سازنده سیستم هوش مصنوعی کنونی ما را به چالش کشیده و از نو تعریف می‌کند.

(دانلود کتاب با فرمت epub)

۳- فرانشیز (Franchise)
نوشته آیزاک آسیموف (Isaac Asimov)

توصیه شده توسط: تیم هوانگ (Tim Hwang) مدیر کمیته مشترک MIT و هاروارد برای اخلاقیات و مدیریت هوش مصنوعی

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

اما در این کلیشه هدف اصلی از یاد رفته است. در میان آثار ادبی آسیموف این Multivac (و نه سری ربات‌ها) است که وضعیت کنونی یادگیری ماشینی را به بهترین شکل ممکن نشان می‌دهد. در تقابل با داستان‌هایی که در آن‌ها ربات‌ها راه می‌روند و حرف می‌زنند، Multivac یک سرور فارم نه‌چندان گسترده است که کار کردن با آن احتیاج به تخصص دارد و به تناوب خروجی‌هایی تولید می‌کند که حتی برای تکنسین‌هایی که آن را کنترل می‌کنند قابل تفسیر نیست.

یکی از داستان‌هایی که من دوباره و دوباره به سراغش می‌روم، داستان فرانشیز است که در سال ۱۹۵۵ به صورت داستانی کوتاه در شماره آگوست مجله If به چاپ رسیده است. در این داستان آمریکای آینده (۲۰۰۸)، تصمیم می‌گیرد که سیستم رای‌گیری را به یک مدل آماری تقلیل دهد که نتیجه تمام انتخابات را با تعمیم‌دهی پاسخ‌هایی که یک فرد (به عنوان نمونه‌ای از جامعه) به مجموعه‌ای از پرسش‌ها می‌دهد، پیش‌بینی کند.

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

(دانلود کتاب با فرمت pdf)

۴- سلاح‌های کشتار ریاضیات (Weapons of Math Destruction)
نوشته کتی اونیل (Cathy O’Neil)

توصیه شده توسط: کیت دارلینگ (Kate Darling) متخصص تحقیقات در لابراتوارهای رسانه‌ای MIT

اول کار می‌خواستم داستانی علمی-تخیلی را پیشنهاد کنم. اما گاهی واقعیات کنونی ما دیستوپیای جذاب‌تری را به نمایش می‌گذارد! در ژانویه ۲۰۱۹ خانم الکساندرا اوکازیو کورتز (از اعضای کنگره آمریکا) مورد تمسخر قرار گرفت، چرا که ادعا کرده بود که الگوریتم‌ها می‌توانند پیش‌فرض (bias) داشته باشند. مهم نیست چه گرایش سیاسی داشته باشید، از دید من داشتن درکی مقدماتی از حفره‌ها و مشکلات سیستم‌های کنونی هوش مصنوعی می‌تواند برای همه مفید باشد. این کتاب که پر است از مثال‌های جذاب (و ترسناک) دنیای واقعی، برای درک چند موضوع راهنمای گام‌به‌گام خوبی به حساب می‌آید:

نخست درک الگوریتم‌ها و داده‌هایی که مورد استفاده قرار می‌دهیم. دوم درک قدرتی که به تدریج به سیستم‌ها منتقل می‌کنیم و این قدرت می‌تواند زندگی افراد را بسازد یا ویران کند. و از همه مهم‌تر درک تمام تصورات غلط و ویران‌کننده‌ای که در مورد این سیستم‌ها داریم.

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

(دانلود کتاب با فرمت pdf)

۵- عصر الماس: یا کتاب راهنمای مقدماتی مصور یک خانم جوان (The Diamond Age: Or, A Young Lady’s Illustrated Primer)
نوشته نیل استفنسن (Neal Stephenson)

توصیه شده توسط: جرمی هوارد (Jeremy Howard) یکی از بنیان‌گذاران fast.ai

کلمه «کتاب راهنما» در عنوان کتاب اشاره به کتابی با جلد چرمی است. تنها سه «کتاب راهنما» در کل دنیا وجود دارد که هر کدام از آن‌ها در اختیار یک دختر جوان است. کتاب راهنما عظیم‌ترین و مهم‌ترین اثر نویسنده/خالق آن است. خالق این کتاب‌ها یکی از رده‌بالاترین مهندسین نرم‌افزار در یکی از موفق‌ترین شرکت‌های نرم‌افزاری دنیا است. همان‌طور که در داستان خواهید دید، این راهنماها کتاب‌هایی معمولی نیستند، این کتاب‌ها کاملا تعاملی بوده و به خواننده دقیقا همان چیزی را نشان می‌دهند که در آن لحظه به آن احتیاج دارد. و این محتوا به‌گونه‌ای توضیح داده می‌شود که بیشترین جذابیت را برای خواننده داشته باشد. یکی از دخترهایی که یکی از این کتاب‌ها را در اختیار دارد نل است. نل پس از بی‌خانمان شدن در‌می‌یابد که این کتاب به تدریج تمام مهارت‌هایی را که برای بقا و پیشرفت به آن‌ها احتیاج دارد، به او آموزش می‌دهد. در این کتاب ما سفری را که نل با راهنمایی‌های کتابش به پایان می‌برد دنبال می‌کنیم؛ از زمانی که دختری کوچک است که همه چیزش را از دست داده تا زمانی که به دختری جوان تبدیل می‌شود که ممکن است دنیا را عوض کند.

من اولین بار عصر الماس را ۲۰ سال پیش خواندم و از آن زمان این پیام را همیشه به یاد دارم: از فناوری می‌توان برای فراهم کردن فرصت برای افرادی استفاده کرد که بدون فناوری هیچ‌گاه این فرصت‌ها را نخواهند داشت.

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

ماموریت ما در fast.ai فراهم کردن امکان دسترسی به هوش مصنوعی و آموزش برای همگان است. فناوری نیازی حیاتی برای دستیابی به این هدف است. بدون آن، کاربران یا دانش‌آموزان ما نمی‌توانند به جوامع و درس‌های آنلاین (یا پردازش ابری که که ما به آن متکی هستیم) دسترسی داشته باشند. هرچند من هنوز ندیده‌ام که از هوش مصنوعی برای خلق تجربه آموزشی سفارشی‌شده‌ای مانند «کتاب راهنمای» این داستان استفاده شود. شالوده‌های فناوری در حال حاضر در جای خود مستحکم شده‌اند. فقط لازم است کسی قطعات مناسب را کنار هم جفت‌وجور کند. هرگاه چنین اتفاقی بیافتد، ممکن است بتوانیم شاهد داستان‌هایی واقعی شبیه سرگذست نل باشیم.

(دانلود کتاب با فرمت pdf)

[[در حاشیه بگویم که خود من از این آقای نیل استفنسن، کتاب دیگری با نام Snowcrash را خوانده‌ام و لذت زیادی برده‌ام. بخصوص این که انتشار این کتاب در سال ۱۹۹۲ بود که باعث شد اصطلاح آواتار همه‌گیر شده و رواج پیدا کند. این کتاب را هم می‌توانید از این‌جا با فرمت epub و به زیان اصلی دانلود کنید یا ترجمه جادی عزیز را پیگیری کنید که تا فصل ۵۰ کتاب پیش رفته است.]]

۶- یادگیری ماشینی برای انسان‌ها (Machine Learning for Humans)
نوشته ویشال ماینی (Vishal Maini) و سامر صبری (Samer Sabri)

توصیه شده توسط: دمیس هاسابیس (Demis Hassabis) مدیرعامل و یکی از بنیان‌گذاران DeepMind

توصیه یک کتاب در باب زیر و بم هوش مصنوعی که زیادی فنی یا زیادی فیلسوفانه نباشد، به شدت سخت است. به اعتقاد من در چند سال آینده شاهد انتشار تعداد زیادی از این کتاب‌ها خواهیم بود. من کتاب «یادگیری ماشینی برای انسان‌ها» را به عنوان کتابی مقدماتی که احتیاج به معلومات قبلی چندانی ندارد، پیشنهاد می‌کنم. علاوه بر این، نسخه آنلاین کتاب را می‌توانید به صورت رایگان و آزاد مطالعه کنید. ما در DeepMind به شدت تحت تاثیر این کتاب قرار گرفتیم. تا حدی که یکی از نویسندگان آن را استخدام کردیم!

راه دیگری که برای درک و فهم هوش مصنوعی وجود دارد، این است که از سوژه‌ای که با آن آشناتر هستید به عنوان دروازه ورود استفاده کنید. به عنوان مثال، بیشتر افراد مبانی بازی شطرنج را می‌دانند حتی اگر چندان خود بازی را انجام نداده باشند. دو بازیکن حرفه‌ای شطرنج یعنی متیو سدلر (Matthew Sadler) و ناتاشا ریگان (Natasha Regan) کتابی با عنوان «تغییر دهنده بازی» نوشته‌اند که به یکی از تحقیقات اخیر DeepMind که پیشرفتی شگرف در این حوزه بود می‌پردازد. آلفازیرو، شطرنج را از ابتدا و تنها با بازی کردن علیه خودش یاد گرفت تا در نهایت توانست بهترین بازیکن شطرنج جهان شود. این کتاب یکی از کامل‌ترین تحلیل‌هایی است که روی یک برنامه هوش مصنوعی پیشرفته انجام شده است و چشم‌اندازی هیجان‌انگیز از شیوه کارکرد سیستم‌هایی مانند آلفازیرو برای شما فراهم می‌کند.

(دانلود کتاب با فرمت pdf)

۷- مرتب کردن چیزها: طبقه‌بندی و نتایج آن (Sorting Things Out: Classification and Its Consequences)
نوشته جافری سی. بوکر (Geoffrey C. Bowker) وسوزان لی استار (Susan Leigh Star)

توصیه شده توسط: مردیت ویت‌تیکر (Meredith Whittaker) یکی از بنیان‌گذاران و مدیران انستیتوی AI Now در دانشگاه نیویورک

این کتاب یکی از متون پایه برای کسانی است که با پیش‌فرض‌ها (Bias)، انصاف و عدالت هوش مصنوعی درگیر هستند.

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

کتاب «مرتب کردن چیزها» با سیاست و نتایج حاصل از چنین دسته‌بندی‌هایی سروکار دارد و با مفهوم طبقه‌بندی نه به عنوان انعکاسی از «دسته‌بندی‌های طبیعی» بلکه به عنوان نتیجه‌ای حاصل از تاریخ، فرهنگ و قدرت برخورد می‌کند که هر شکلی از آن دیدگاه خاصی را تقویت کرده و دیدگاه‌های دیگری را مسکوت می گذارد. کتاب طیف وسیعی از سیستم‌های طبقه‌بندی را مورد مطالعه قرار می‌دهد: از سیستم جواز تردد نژادپرستانه رژیم آپارتاید آفریقای جنوبی (که سعی می‌کرد دسته‌بندی‌های نژادی خاصی را به بدن انسان‌ها اعمال کند) گرفته تا سیستم دسته‌بندی بیماری‌های انسانی در سازمان بهداشت چهانی (که در تلاش برای نرمال کردن تفاوت‌های فرهنگی در درک بیماری و سلامتی میان ملت‌های مختلف احتیاج به بوروکراسی گسترده‌ای دارد) در این کتاب بررسی شده‌اند. با توجه به این زمینه‌های تاریخی، نویسنده سعی می‌کند نتایج احتمالی طبقه‌بندی‌هایی را به ما نشان دهد که غالبا آن‌ها را بدیهی می‌پنداریم. از این طریق می‌توانیم به منبعی بنیادین برای درک، نقد و مقایسه سیستم‌های هوش مصنوعی برسیم که در حال حاضر به صورت خودکار وظیفه طبقه‌بندی را در بسیاری از حوزه‌های اجتماعی ما برعهده گرفته‌اند. 

(دانلود کتاب با فرمت pdf)

۸- الگوریتم اصلی (The Master Algorithm)
نوشته پدرو دومینیگوس (Pedro Domingos)

توصیه شده توسط: جیمز وینسنت (James Vincent) گزارشگر هوش مصنوعی و روباتیک The Verge

مسلماً من فردی پیشرو در حوزه هوش مصنوعی نیستم، اما به عنوان کسی که با پوشش دادن اخبار دنیای هوش مصنوعی امرار معاش می‌کنم، کتاب‌های مختلفی را برای پیدا کردن راه، مطالعه کرده‌ام و در نتیجه در این زمینه تجربه‌ای اندک دارم. در واقع می‌خواهم دو کتاب را به شما معرفی کنم. یکی الگوریتم اصلی نوشته پدرو دومینیگوس است و دیگری فراهوش (Superintelligence) نوشته نیک باستروم (Nick Bostrom).

فراهوش کتابی است که توسط باستروم، استاد فلسفه دانشگاه آکسفورد، در زمینه خطرات ناشی از هوش عمومی مصنوعی (AGI سرنام Artificial General Intelligence) نوشته شده است. موضع‌گیری‌های (البته قابل تردید) بسیاری از رهبران دنیای فناوری در برابر خطراتی نظیر ربات‌های قاتل الهام‌گرفته از نظریات باستروم در این کتاب است. در عین حال این کتاب بهترین متنی است که مساله ساختن ماشین‌های هوشمند امن را تشریح می‌کند. مساله‌ای که چه ماشین‌ها بسیار باهوش باشند و چه کودن، در هر صورت وجود خواهد داشت. خواندن این کتاب غیرداستانی، به رغم موضوع نگران‌کننده‌ای که دارد، جذاب و لذت‌بخش است بخصوص جاهایی که به رمان‌های علمی-تخیلی نزدیک می‌شود.

(دانلود کتاب با فرمت pdf)

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

(دانلود کتاب با فرمت pdf یا epub)

نوستالژی: زمانی که مردها هنوز مرد بودند! (بخش پایانی- هک‌های عمیق‌تر)

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


برنامه‌نویسی پیشرفته با Commodore 64 Programmers Reference Guide

در کلاس‌های مدرسه و زمانی که با دوستان در مورد کامپیوترهای‌مان و بازی‌ها و غیره حرف می‌زدیم، یکی از دوستان به کتاب «پیشرفته‌ای» اشاره کرده که به تازگی به دستش رسیده بود و دانش برنامه‌نویسی او را چندین پله ارتقا داده بود. با هزار خواهش و التماس توانستم آن را برای یکی دو روز امانت بگیرم. کتابی واقعی در کار نبود. کتاب واقعی را با فناوری فتوکپی (هنوز دستگاه به اصطلاح زیراکس که کیفیت بالاتری داشت همه‌گیر نشده بود و هزینه یک برگ زیراکس بیش از دو برابر فتوکپی بود!) تکثیر کرده بودند و در نبود صحافی‌های سیمی و فنری، آن را با منگنه کتاب دوخته بودند. شما فقط باید تصور کنید که از جلدی که در تصویر زیر می‌بینید، چه اثر سیاه و سفیدی بر روی یک مقوای کرم رنگ نقش می‌بندد!

c64-ProgrammersReferenceGuide

اما برخلاف ظاهر بدترکیب و مدت کوتاهی (کمتر از یک هفته) که آن را در اختیار داشتم، این کتاب تاثیر بسیار شدیدی روی دانش من از کامپیوتر (در مقیاس آن دوران) گذاشت. 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 و عوض کردن خانه‌های مناسب حافظه، خود کدهای برنامه در حال اجرا را عوض کرد به گونه‌ای که در هر بار اجرا عملکردی متفاوت داشته باشد.

escher-hands

برنامه‌ای برای این کار نوشتم و آنقدر با شماره خط‌ها و علامت‌های «:» اضافی (جدا کردن دستورات در یک خط) بازی کردم تا بالاخره تغییر محتویات آدرس‌ها Syntax برنامه را خراب نمی‌کرد. حالا برنامه‌ای داشتم که در یک بار اجرا عدد ۱ را چاپ می‌کرد و بار دوم عدد ۲ را و این کار را با متغیرها انجام نمی‌داد. سورس برنامه عوض می‌شد و اگر از آن LIST می‌گرفتم، هر بار لیستی جدید را به نمایش می‌گذاشت! البته هیچ کاربردی برای این برنامه متصور نبودم، اما همین الان با خواندن مطلب ویکی‌پدیا در مورد self-modifying code فهمیدم که چنین برنامه‌هایی می‌توانند کاربردهای جالبی داشته باشند!

احتمالا الان می‌توانید حدس بزنید که ۲۰۶۱ از کجا آمده است. برنامه بیسیک تنها برای این نوشته شده بود که برنامه اصلی بازی به زبان ماشین را صدا بزند. برنامه‌نویسان هم برای حداکثر استفاده از حافظه، روال‌های زبان ماشین را درست از اولین آدرس خالی بعد از کدهای بیسیک ذخیره کرده بودند.

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

کارتریج ACTION-VI : دنیای جدید

در جست‌وجوی یک کارتریج اسمبلر به کارتریج اکشن ۶ برخورد کردم (که باز هم مطابق دید عموم مردم از کمودور ۶۴ به عنوان یک کنسول بازی) برای «نسوز کردن بازی‌ها» مشهور شده بود. اما ابزاری بسیار قدرتمند بود و توانایی‌هایی بسیار بیشتر از اجرا کردن کدهای تقلب بازی‌ها داشت.

 

ActionReplay-6

این کارتریج یک برنامه اسمبلر سریع با خودش داشت. امکاناتی برای فرمت کردن و آماده‌سازی دیسکت‌ها، گرفتن نسخه‌های پشتیبان، دستکاری تنظیمات حافظه و نصب یک Fast Loader فراهم می‌کرد و از همه مهم‌تر سیستمی داشت که می‌توانست محتوای حافظه RAM کمودور را به اصطلاح فریز کرده و بعد از ویرایش خانه‌های دلخواه دوباره کمودور را وادار به ادامه کارش کند. یکی از کلیدهایی که بالای کارتریج می‌بینید (معمولا سمت راستی) دکمه ریست است و دیگری دکمه فریز کردن حافظه. تصویر زیر صفحه آغازین کمودور را هنگام زدن کلید ریست این کارتریج نشان می‌دهد.

ActionReplay6-ScreenShot

در این صفحه من هیچ‌گاه از گزینه CONFIGURE MEMORY سر درنیاوردم و از آن استفاده نکردم. اما در قسمت UTILITIES یک اسمبلر سریع و راحت وجود داشت که با آن اسمبلی را هم کمی تجربه کردم.

بالن هوای گرم، با سرعت نور

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

balloon

برای کند کردن سرعت برنامه دو حلقه تو در توی ۲۵۶ تایی خالی را برای تلف کردن وقت داخل حلقه اصلی بازی گذاشتم تا موفق شدم بالن را ببینم. اما باز هم بالن با سرعت نور قطر صفحه را طی می‌کرد و برنامه تمام می‌شد. به این فکر افتادم که برنامه ۸ وزیر را برای سرعت بالا با اسمبلی بنویسم ولی سواد واقعی من در اسمبلی به چند دستور JMP و CMP و ADD محدود می‌شد که برای برنامه‌ای پر از شرط و محاسبات مانند ۸ وزیر بسیار کم بود.

مالتی تسکینگ واقعی با IRQ

احتمالا می‌دانید که وقفه‌ها یا IRQ (سرنام Interrupt ReQuest) روال‌هایی هستند که به صورت منظم و در فواصل زمانی مشخص توسط پردازنده کامپیوتر اجرا می‌شوند.  دلیل این که وقفه نامیده می‌شوند این است که پردازنده در این فواصل زمانی برنامه در حال اجرا را متوقف کرده و روال‌های IRQ را اجرا می‌کند و دوباره به سراغ برنامه اصلی باز می‌گردد. استفاده از وقفه‌ها بیشتر به دردبرنامه‌نویس‌های سیستم می‌خورد که توسط آن‌ها تمام مدت ابزارهای جانبی را برای دریافت یا ارسال اطلاعات کنترل کنند یا در بازی‌ها و برنامه‌های بی‌درنگ (Real Time) شرط‌های حیاتی را به صورت مداوم چک کنند. مثلا سیستم پیش‌فرض کمودور از یکی ازهمین وقفه‌ها برای نمایش مکان‌نمای چشمک‌زن استفاده می‌کرد.

IRQ

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

هک آخر، بازی دوست‌داشتنی

و اما آخرین و از دید خودم جذاب‌ترین هکی که انجام دادم، به قابلیت فریز کردن حافظه کمودور توسط کارتریج اکشن ۶ مربوط بود و بازی Arkanoid که در قسمت اول از آن صحبت کردم. اندکی پس از شروع بازی، کلید فریز را می‌زدم و وارد منوهای اکشن ۶ می‌شدم. آن‌جا گزینه‌ای برای نسوز کردن بازی وجود داشت. سیستم کار به این شکل بود که یک بار محتویات حافظه را بررسی (یا ذخیره) می‌کرد. بعد از شما می‌خواست به بازی برگردید و عمدا یک بار ببازید و دوباره حافظه را فریز کنید. وقتی این کار را می‌کردید دوباره حافظه را چک می‌کرد تا ببیند محتویات کدام خانه‌ها عوض شده است. معمولا با همان یک بار و گه‌گاه با دوبار تکرار این فرآیند خانه‌ای که اعداد مربوط به «جان» کاراکتر بازی در آن ذخیره شده بود پیدا می‌شد و کارتریج از آن به بعد محتویات آن خانه را ثابت نگه می‌داشت. یعنی بازی شما دیگر نسوز شده بود!

arkanoid_level_10

اما باز هم بازی کردن ۳۲ مرحله Arkanoid با احتساب هر مرحله ۲ یا ۳ دقیقه، آن هم بدون SAVE کلی زمان می‌برد. هک اصلی این بود که من بعد از نسوز کردن بازی به سراغ محتویات حافظه تصویر می‌رفتم و آن‌ها را پاک می‌کردم. اگر خاطرتان مانده باشد در قسمت قبلی گفتم که پس‌زمینه‌ها و برخی اجزای بازی‌ها با فونت‌ها ساخته می‌شدند. من چیزی مانند دستور cls را اجرا می‌کردم و خلاص! همه آجرها از بین رفته بودند. فقط کافی بود در هر مرحله یک بار فریز کنم، حافظه تصویر را پاک کنم و بعد از برگشت به بازی عمدا بسوزم.

arkanoid_last_level
غول مرحله آخر

جان‌هایم که تمام نمی‌شد، اما بعد از سوختن و شروع مجدد مرحله، کامپیوتر متوجه می‌شد که تمام آجرها پاک شده و من به مرحله بعد می‌رفتم! تنها در برخی مراحل که حریف‌های متحرک هم وجود داشتند، مجبور بودم نهایتا ۵ یا ۶ ضربه موفق (به آن اسپرایت‌ها) بزنم تا آن مرحله هم تمام شود. فقط مرحله آخر بود که در ساخت غول آن از اسپرایت و آجر و غیره خبری نبود و این مرحله را باید حتما به صورت عادی رد می‌کردم. به این ترتیب من تقریبا در ۹۰ درصد اوقات بازی را تا آخر تمام می‌کردم و بلند می‌شدم! باید اعتراف کنم این کار به خصوص در جمع‌های فامیلی، باعث می‌شد حس یک گیک تمام عیار را داشته باشم!

پایان داستان

شاید شما هم کنجکاو باشید که بر سر این ابزار عزیز چه آمد! واقعیت چندان هم جذاب نیست! حدود سال ۸۱ بود، ده سال از خرید کمودور می‌گذشت و در دوران پادشاهی پنتیوم ۲ و ۳ مدت‌ها بود سراغش نرفته بودم. آن زمان هم هیچ‌گاه فکر نمی‌کردم چنین حس نوستالژیکی نسبت به این اولین کامپیوترم پیدا کنم. به همین دلیل آن را با همه کارتریج‌ها و نوارها و دسته‌های بازی در اصفهان به قیمت ۱۰۰۰۰ تومان فروختم. کاری که اکنون حس می‌کنم از انجامش به شدت پشیمانم!

c64_Pack


بعید می دانم کسی از خوانندگان علاقه‌ای به آزمودن سیستمی به این قدمت داشته باشد، اما اگر دوست داشتید کمی با پیرمردهای عصر کامپیوتر و نیای بزرگ پی‌سی‌ها سروکله بزنید می‌توانید یک امولاتور خوب را در این آدرس بیابید. بازی‌های بسیاری در این آدرس موجود است و برنامه‌ها را هم با کمی جست‌وجو در سایت‌های طرفداران کمودور (مثل این) پیدا خواهید کرد.

به هر حال در این چهار پست، با پررنگ‌ترین خاطرات من از آن دوران خوش همراه بودید. حداقل در لحظه‌ای که این مطالب را می‌نویسم فکر نمی‌کنم هیچ ابزار، سرگرمی، کامپیوتر یا چیز دیگری تا این اندازه برایم خاطره‌انگیز بوده باشد یا از این به بعد هم بتواند باشد. اما از کجا معلوم، شاید ۲۰ سال دیگر خاطره نوشتن همین پست هم داستانی نوستالژیک باشد که برای نسلی کوچک‌تر تعریف می‌شود.

تا آن زمان، با ماشین‌های‌تان خوش باشید و لذت ببرید!

نوستالژی: زمانی که مردها هنوز مرد بودند! (بخش سوم- معنای قدیمی هک)

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

Glider

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


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

basic

به هر صورت این‌ها به یادماندنی‌ترین تجربه‌هایی هستند که من ۲۰ سال پیش با ابزار محاسباتی آن دوره داشته‌ام.

حلقه‌های تو در تو: هشت وزیر در یک بعدازظهر تابستانی

پیش از خریدن کمودور برنامه‌نویسی بیسیک را کم‌وبیش بلد بودم. همان‌طور هم که پیش‌تر گفتم اولین برنامه‌ای که روی کمودور نوشتم چاپ اعداد یک تا ده بود. اما نخستین تجربه جدی برنامه‌نویسی‌ام به مساله ۸ وزیر شطرنج برمی‌گردد. این مساله را در یکی از روزهای تابستان از زبان یکی از آشنایان که در خارج از کشور کامپیوتر می‌خواند شنیدم.

8-Queensهمان روز دست به کار شدم و الگویتم حل مساله را به ساده‌ترین و البته ابلهانه‌ترین شکل ممکن نوشتم. ۸ حلقه تودرتوی FOR که به ترتیب موقعیت وزیرها را در هر سطر مشخص می‌کرد. در نهایت در دل داخلی‌ترین حلقه کنترل می‌کردم که آیا این وزیرها یکدیگر را تهدید می‌کنند یا نه. با توجه به این که امتحان کردن این ۱۶ و خورده‌ای میلیون حالت برای کمودور با پردازنده ۴ مگاهرتزی و زبان BASIC V2 مدت مدیدی طول می‌کشید، برنامه را طوری نوشته بودم که با پیدا شدن اولین جواب تمام شود. به نتیجه رسیدن این برنامه یک ظهر تا شب تمام وقت گرفت و من بیش از هر چیز دیگری باید شکایت‌های سایر اعضای خانواده از اشغال بودن تلویزیون را تحمل می‌کردم! البته جواب هم چیزی گرافیکی مانند تصویر بالایی نبود، بلکه ۸ عدد بود که در ۸ سطر روی صفحه تلویزیون چاپ شد و آن‌ها را روی کاغذ یادداشت کردم.

هوش مصنوعی برای کمودور ۶۴؛ واقعا؟

هوش مصنوعی و کمودور ۶۴؟ این یکی دیگر برای خودم هم باور کردنی نبود. در آن سال‌ها مرکز آموزش انفورماتیک شرکت داده پردازی ایران سری کتاب‌هایی را در حوزه انفورماتیک منتشر می‌کرد. سه کتاب اول «انفورماتیک چیست؟»، «انفورماتیک در جهان» و «انفورماتیک از دیدگاه توسعه» نام داشتند. کتاب چهارم اما چیزی بسیار متفاوت بود.

AI-C64

کتاب «مبانی هوش مصنوعی برای کمودور ۶۴» ابتدا به تعریف هوش مصنوعی و صحبت از تورینگ و . . . می‌پرداخت و بعد به تدریج با جهت‌گیری به سمت بازی‌ها، رفتارها و خودگردان‌ها، پردازش زبان طبیعی، تشخیص الگوها و سیستم‌های مکاشفه‌ای برنامه‌های هوشمندتری را به نمایش در می‌آورد که همه با همان بیسیک بدوی کمودور ۶۴ نوشته شده بودند. معماهای کلاسیکی چون برج‌های هانوی، گشت زدن اسب روی صفحه شطرنج و چیزی شبیه برنامه مشهور الیزا (که قبلا هم در مورد آن نوشته‌ام) از جمله نمونه‌هایی هستند که خط به خط روی کمودور تایپ و اجرا کردم. هرچند از شیوه کار آن برنامه شبه لیزا نه آن زمان و نه حتی الان به درستی سر در نیاوردم. یکی از برنامه‌های دیگری که خاطره شفافی از آن دارم، برنامه‌ای بود که مشخصات یک لابیرنت را به صورت پر و خالی بودن خانه‌های یک صفحه شطرنجی می‌گرفت و با وارونه کردن کار (حذف خانه‌های بن‌ست به جای امتحان راه‌های باز) در نهایت مسیر درست را پیدا می‌کرد.

گرافیک: اشباح و کاراکترها

کمی بعد و البته در حین کار با برنامه‌هایی که فقط منطق برنامه‌نویسی‌شان مهم بود، به گرافیک و رنگ‌ها هم علاقه‌مند شده بودم. دوست داشتم حالا که منطق کار این سیستم را می‌فهمم، بتوانم برنامه‌هایم را با ظاهری جذاب‌تر و با رنگ و لعاب بیشتر همراه کنم. به همین دلیل تصمیم گرفتم به سراغ نوشتن یک بازی بروم. در کمودور ۶۴ وقتی می‌خواستید به سراغ گرافیک بروید، به دو چیز مختلف نیاز داشتید. تصاویر متحرک (کاراکترها، گلوله‌ها و . . . ) و تصویرهای ثابت یا همان پس‌زمینه‌ها.

مساله اول به کمک اسپرایت‌ها حل می‌شد. نقش‌هایی گرافیکی شبیه یک آیکن که می‌توانستند هر کجای صفحه ظاهر شوند و با تغییر مختصات‌شان حرکت کنند. البته خود کامپیوتر هم برخورد آن‌ها با یکدیگر یا با قسمت‌های مختلف پس‌زمینه را کنترل می‌کرد.

Sprite-C64

اسپرایت‌ها که هنوز در سیستم‌عامل مدرنی مانند آخرین نسخه Mac OSX Mavericks هم حضور دارند، در کمودور ۶۴ مستطیل‌هایی با ابعاد ۲۴ در ۲۱ خانه بودند. ۳ بایت در هر ردیف که باید نقاط پر و خالی آن را با ۱ و ۰ جایگزین می‌کردیم و بعد عدد را به مبنای ۱۰ می‌بردیم و آن را با دستور POKE در خانه حافظه متناظر با آن می‌نشاندیم. یادم هست که هنوز هیچ داستانی برای بازی در ذهن نداشتم و حتی نمی‌دانستم چند اسپرایت و به چه شکل‌هایی لازم دارم، اما فکر این‌که هر بار این مستطیل شطرنجی را بکشم و خانه‌ها را پر کنم و تبدیل مبنا و . . . اذیتم می‌کرد. اکنون برنامه‌های طراحی اسپرایت زیادی وجود دارند که این کار را به سادگی انجام می‌دهند اما همه به تازگی با زبان‌های جدید و صرفا برای کنجکاوی و یادآوری خاطرات نوشته شده‌اند.

SpriteEditor-C64اما من آن زمان با 180 خط برنامه بیسیک ادیتور اسپرایت خودم را نوشتم. این برنامه با جوی‌استیک کار می‌کرد و در سمت راست صفحه منویی برای انتخاب ابزار (نوشتن یا پاک کردن) و انتخاب رنگ داشت. البته به لحاظ گرافیکی از تصویر بالایی بسیار ضعیف‌تر بود! با حرکت جوی‌استیک نشانگر آن روی صفحه حرکت می‌کرد و با فشرده شدن تنها کلید جوی‌استیک خانه پر (یا خالی) می‌شد. بعد می‌توانستم اطلاعات این اسپرایت را ذخیره کرده و در بازی‌ام استفاده کنم. البته حتما باید اشاره کنم که بعد از تمام این کارها، هیچ‌وقت به نوشتن بازی یا حتی داستان آن نرسیدم!

اما مساله دوم پس‌زمینه‌ها بودند که به علت محدودیت‌های حافظه و امکانات پردازشی نمی‌توانستند تصاویر معمولی باشند. کمودور حالت گرافیکی و به اصطلاح بیت‌مپ هم داشت اما گرافیک بیشتر بازی‌ها از طریق دستکاری فونت‌ها و نوشتن متن روی صفحه نمایش بوجود می‌آمدند. چیزی شبیه به ASCII ART اما به شدت قدرتمندتر. برای درک بهتر، بد نیست اول نگاهی به PETSCII ها بیاندازید که معادل کدهای ASCII در کمودور بودند، بعد به این تصویر که کلیدهای کمودور را از نزدیک نشان می‌دهد دقت کنید.

C64-KeyboardCloseupبا نشانه‌هایی که کمودور به عنوان فونت و متن می‌شناخت، کافی بود اگر می‌خواهید دایره‌ای ترسیم کنید کلید کمودور را نگه دارید و در سطر اول U و I و در سطر دوم هم J و K را تایپ کنید تا با ترکیب چهار ربع دایره شکل شما کامل شود. حال اگر در نظر بگیرید که در کمودور ۶۴ می‌شد به سادگی علامت‌های کلیدها را تغییر داد و جایگزین کرد به تصویر کلی دست پیدا می‌کنید. هر بازی در ابتدا مجموعه‌ای فونت طراحی کرده و با آن‌ها صحنه بازی را می‌ساخت. مثلا یک کاراکتر را طوری تغییر می‌داد که با تکرار آن روی صفحه نمایش ظاهری شبیه آجر دیده شود و از آن برای ساخت یک دیوار استفاده می‌کرد. حال اگر قرار بود دیوار خراب شود کافی بود کاراکترها از روی صفحه نمایش پاک شوند! و البته اگر تا این‌جای مطلب را خوانده‌اید می‌دانید که کار با متن‌ها و کاراکترها برای کامپیوتر هزاران بار ساده‌تر از گرافیک است. کمی بعدتر می‌گویم که از این موضوع چطور برای تقلب در بازی Arkanoid استفاده می‌کردم.


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

عزرائیل در دنیای دیجیتال

عزرائیل انگار بصورت تخصصی کارش رو روی جامعه IT متمرکز کرده! اگرچه باز هم مثل «ریچی» فقید سر و صدایی به پا نشد و نشریات چیزی ننوشتند، اما به هر حال بعد از یک هفته، تصمیم گرفتم حداقل خبر درگذشت «جان مک‌کارتی» رو اینجا بیارم.

مک‌کارتی در سال 1927 در بوستون به دنیا اومد. پدرش یک مهاجر فنلاندی و مادرش یک یهودی اهل لیتوانی بود. بعد از جابجایی‌های زیاد و زمانی که پدرش توی لس‌آنجلس کار پیدا کرد ساکن اونجا شدن. مک‌کارتی استعداد زیادی توی ریاضی از خودش نشون داد و در نوجوانی با خوندن کتاب‌های درسی ریاضیات کالج کالتک (Caltech) پیش خودش ریاضی رو یاد می‌گرفت. به همین خاطر وقتی سال 1944 در کالتک پذیرفته شد تونست دو سال اول دانشگاه رو رد کنه و مستقیما از سال سوم تحصیلش رو شروع کنه. توی همین کالتک بود که بعد از حضور در یک سخنرانی جان فون نویمان، تکلیف آینده کار و زندگی مک‌کارتی مشخص شد. اون مدرک دکترای ریاضیش رو هم در سال 1951 از دانشگاه پرینستون گرفت.

اون در سال 1958 اولین سمینار بین‌المللی در مورد هوش مصنوعی رو برگزار کرد و اصلا اصطلاح «هوش مصنوعی» رو اون سکه زد. ماروین مینسکی (یکی از بزرگترین تئوریسین‌های هوش مصنوعی) از همون سمینار بود که به این حوزه علاقه‌مند شد. تا سال 1960 مک‌کارتی زبان لیسپ وGarbage Collection رو برای حل مشکلات لیسپ، ابداع کرده بود. لیسپ به سرعت به زبان اول حوزه هوش مصنوعی تبدیل شد. در سال 1961 اولین کسی بود که ایده چیزی شبیه پردازش ابری رو مطرح کرد. بعد از ایجاد سیستم‌های اشتراک زمانی (Time-Sharing) در یک سخنرانی توی MIT این ایده رو مطرح کرد که سیستم اشتراک زمانی می‌تونه این فرصت رو فراهم کنه که قدرت پردازشی و حتی شاید برنامه‌های خاصی رو بشه مثل آب و برق و . . . به دست مردم رسوند. در اواسط 1960 این ایده فراموش شد ولی از ابتدای هزاره جدید به شکل‌های مختلف (Grid Computing و SaaS و Cloud Computing) دوباره خودشو نشون داد.

مک‌کارتی بعد از حضور کوتاه مدت ولی پر ثمرش در MIT، کالج دارتموث و پرینستون در سال 1962 به عنوان استاد در دانشگاه استنفورد مشغول کار شد و تا زمان بازنشستگی (سال 2000) همون جا موند. این عکس مک‌کارتی رو در سال 1974 توی لابراتوارهای هوش مصنوعی استنفورد نشون می‌ده.

مک کارتی ایده‌هایی در مورد یک فواره فضایی را نیز مطرح کرده بود. سازه‌ای که بتونه اجرام رو از زمین به فضای خارج از جو منتقل کنه. او طرفدار جدی و سرسخت ریاضی و آموزش ریاضیات بود و حتی پلاکی روی خودروی ب.ام.و اش نصب کرده بود که روی آن نوشته بود:

آن‌ها که به زبان ریاضی حرف نمی‌زنند، محکومند که حرف‌های یاوه بزنند.

بالاخره مک‌کارتی، 24 اکتبر 2011 یعنی حدود یک هفته قبل در سن 84 سالگی توی خونه‌اش در اسنفورد از دنیا رفت و با رفتنش باز بهمون یادآوری کرد که دنیای کامپیوتر و IT داره نسل اول پیشگامانش رو کم کم از دست می‌ده.

دست آخر هم به این دو تا لینک یه نگاهی بکنید. منبع نوشته‌ها و عکس‌های این پست هم همین دوتا سایت بودن. مدخل ویکی‌پدیای جان مک‌کارتی و خبر سایت واشینگتون‌پست درباره مک‌کارتی.

سی‌ری (Siri)، سیراب کننده کاربران

یا چرا iPhone 4S به اندازه iPhone 5 مهم است.

هرچند خیلی از عاشقان و طرفداران اپل از معرفی آیفون 4S به جای آیفون 5 ناامید و سرخورده شدند، اما به نظر می‌رسه بیشتر کسانی که به صورت عمیق‌تر و دقیق‌تر تکنولوژی و اخبار صنعت آی‌تی رو دنبال میکنن قبول داشته باشن که تکنولوژی تشخیص گفتار طبیعی معرفی شده در این نسخه انقلابی‌تر و جذاب‌تر از تمام تغییرات ظاهری و سخت‌افزاری باشه که همه برای آیفون 5 منتظرش بودن. وبلاگ 1پزشک کنفرانس خبری دیروز اپل رو به قول خودش نیمه‌زنده پوشش داده و انصافا هم به خوبی از پس این کار براومده. اما به شدت پیشنهاد می‌کنم که اول از همه توضیحات و به خصوص ویدیوی تبلیغی اپل رو توی این آدرس ببینید و اگر سواد انگلیسی خوبی دارین، حتما تا انتهای مطلب رو بخونید. تشخیص گفتار از اولین نسخه‌های آیفون یکی از قابلیت‌های پیش‌فرض این گوشی‌ها بوده، اما این نرم‌افزار Siri واقعا مرزهای فناوری و کارایی رو چندین پله جلوتر برده و اون رو برای کاربرای عادی هم قابل استفاده کرده.

این نرم‌افزار که در پس‌زمینه با تکنولوژی‌های شرکت نوانس (نوانس در ویکی‌پدیا) کار می‌کنه، به سادگی زبان طبیعی کاربر رو درک میکنه و بهش عکس‌العمل نشون می‌ده. نه تنها زبان طبیعی رو درک و پردازش می‌کنه بلکه (حداقل اینطوری که از دموها و تبلیغ‌ها بر می‌آد) مفهوم جمله‌ها رو هم در حالت‌های مختلف متوجه میشه. اگر بپرسید «امروز پالتو بپوشم یا نه؟» درک می‌کنه که این سئوال شما به وضعیت آب‌وهوا بستگی داره و در نتیجه با چک کردن پیش‌بینی شرایط جوی به شما جواب می‌ده. اگر بپرسید «این طرف‌ها پیتزافروشی خوب کجاست؟» درک میکنه که «این‌طرف‌ها» یعنی باید از GPS موقعیت شما رو دربیاره و بعد رستوران‌های اون منطقه رو جستجو کنه. تازه این سئوال یادش می‌مونه تا اگر بی‌مقدمه پرسیدین «غذای مکزیکی چی؟» نپرسه «چی یعنی چی؟» و بدونه که منظورتون اینه که این‌طرف‌ها غذای مکزیکی هم پیدا میشه یا نه. این یکی از کامل‌ترین و بهترین نمونه‌های تشخیص  گفتاره که قبلا نمونه‌اش رو فقط توی واتسون IBM دیده بودیم. حالا تصور کنید که قابلیت‌های یک سوپرکامپیوتر چند میلیارد دلاری توی یک گجت 130 گرمی توی جیبتون باشه. ضمن اینکه تقریبا با تمام اپ‌های پیش‌فرض آیفون هم سازگاره و بنابراین برقراری تماس، خوندن و نوشتن پیامک و ایمیل، تنظیم ساعت و زنگ هشدار و . . . به سادگی امکان‌پذیر خواهد بود.

سئوالی که اینجا از هر چیز دیگه‌ای مهمتره اینه که آیا اپل API های این نرم‌افزار قدرتمند رو برای توسعه‌دهنده‌ها باز می‌کنه یا نه. اگر چنین اتفاقی بیافته، خدا می‌دونه که از ترکیب این تکنولوژی با بقیه فناوری‌ها و حسگرها و . . . چه کاربردهایی که برای این سیستم تشخیص گفتار ایجاد نمی‌شه. فرض کنید با گفتن «سردمه!» بسته به موقعیت شما سیستم تهویه ماشین یا خونه تنظیم بشه یا با دونستن سابقه بیماری‌هاتون بهتون پیشنهاد بشه که به جای مترو با تاکسی برین خونه. یا با گفتن  «لعنتی، عجب ترافیکی!» مسیرهای جایگزین برای رسیدن به مقصد رو بهتون پیشنهاد کنه. به نظر من فقط یک نکته خیلی مهم باقی می‌مونه. اگر گجت یا کامپیوتر بتونه مثل یک انسان با ما صحبت کنه آیا اپیدمی گوشه‌گیری و انزواطلبی خوره‌های کامپیوتر چندین پله شدیدتر نمی‌شه؟ چون این آدم‌ها همون یک ذره احساس نیاز به یک دوست و یک همزبون رو هم دیگه می‌تونن با کامپیوترشون ارضا کنن. این جنبه‌اش به شدت ترسناکه.


پی‌نوشتشرکت نوانس هم برای خودش غولی محسوب میشه که ارزش تکنولوژی‌هاش چیزی بسیار بیشتر از تشخیص گفتار برای دارندگان آیفونه. به سایتش دوباره سر بزنید.

پی‌نوشت 2: این مطلب را در وبلاگ اهالی شبکه نیز منتشر کرده‌ام.