یه توییت ساده باعث شد این فکر توم شکل بگیره. امیرحسین، دوست دانشگاهم، نوشته بود: چیه انسان، همش باگ!
به این فکر افتادم که ورژن آلفای نرم افزارها یا پروژهها همیشه پر از باگه و بعد ورژن بتا میاد و بعدم نسخه نهایی. اگه انسان هم ورژن آلفا باشه چی؟اگه ابر انسان یا هوش مصنوعی وٰرژن بتای ما باشن چی؟ نسخه نهایی چی میشه؟
سوال یکم زیادی علمی بود و از توان من خارج اما تونستم عمق حرفتون رو درک کنم. ولی جوابی ندارم!
یه جورایی خودم از اینکه فکرم درست باشه خوشم نمیاد. ولی بد نیست در موردش یه بحثی بشه
تکامل عملا به این ذهنیت صحه میزاره. موجودات مختلف براساس معیاری باگهایی که دارن که به تدریج خودش رو نشون میده، نسل موجود یا منقرض میشه یا موجوداتی منطبقتر وارد صحنه میشن. ولی بعید میدونم که تعریف باگ با بعضی قیدهای طبیعی بخونه، برای مثال، قید جذب و مصرف انرژی خودش در طبیعت قید بزرگیه که باعث میشه که هزینه رفع یک باگ، عملا ایجاد باگی ظاهرا کمریسکتر باشه. میشه از لحاظ برنامهنویسی این طور در نظر گرفت که یا تعداد خطهای برنامه یا حافظهی در دسترس برای نرمافزار محدوده و شما باید انتخاب کنین که کدوم باگ رو رفع کنین و از کدوم باگها صرفنظر کنین!
خب این به شرطی درسته که این فکر رو بخوایم در مقیاس موجودات در نظر بگیریم، اما اگر در مقیاس جهان باشه چی؟
از لحاظ فیزیکی، انتظار داریم در نهایت این دو مسئله یکسان باشن و فقط مقیاس و پیچیدگی جزئیات متفاوت باشه. در واقع همین انتظار به نحوی در سیستمهای فیزیکی پیچیده تا حدودی اتفاق میوفته: مثلا سیستمهای آشوبناک چند جسمی وقتی به تحول ادامه میدن در زمانهای مختلف، بارها انواع مختلف ساختارها رو ایجاد میکنن و از بین میرن چون با اکشن فیزیک تا حدی متفاوته و همین روند به شکلهای گوناگون اتفاق میوفته.
یادگیری، معمولا به شکل یک تابع هزینه در سیستمها اتفاق میوفته، ما امروز از نظر دانش تا حدود زیادی با این مفهوم در انواع سیستمها آشنا هستیم ولی الزاما نمیدونیم «تابع موثر هزینه» در سیستم به چه شکلی بوده. به همین خاطر هست که مثلا اگر که شما در سیستم طبیعی دست ببرین، با دیدگاهی ناقص از تابع هزینه، احتمالا چیزی بیشتر از تحول معمول تکامل طبیعی در طولانیمدت به دست نخواهید آورد! تازه در اکثر حالتها ممکنه خیلی سریعتر به شکستهای عجیبی بخورین.
در مفاهیم کار برنامهنویسی چیزی هست به اسم «کار با دادههای زمان واقعی» که با کار علمی با دادههای کنترل شده و ثابت آزمایشگاهی فرق داره. در این تیپ کار، شما فرصتی محدود برای آزمون و خطا دارین و بنابراین همیشه سعی میکنن با تستهای اصلی و تغییرات کمریسک برای قدم بعدی، برنامه بهتری بسازین. در کار پژوهشی یا داده ثابت، شما فرصتی بسیار زیاد برای تست دارین و برای اون نوع داده، ممکنه نتایج بسیار بهتری به دست بیارین ولی در عمل میبینین که در آزمون دادههای واقعی، باز هم به دلیل تحول ورودیها به مشکل برمیخورین.
طبیعت و تکامل، مثل مورد کار با داده واقعیه و نه کار با داده ثابت. در هر قدم باید تصمیمی سریع و کمریسک برای تغییر براساس داده محدود بگیره که بتونه در قدم بعدی یا حداقل خودش رو حفظ کنه یا بهبود بده. معمولا شکل نتیجه در این تیپ کار، پر از تصحیحات تدریجی، کدهای کهنهی فراموش شده، روشهای عملگرا و کمی کثیف و … هست!
ورژن آلفا که نه دیگه، حداقل نسخه بتا و یا حتی نسخه کاندید قابل انتشار[1] باشیم. آخه اگه نسخه آلفا باشیم به این معناس که جهان و تمام هر چه در اوست و ما تا الان دیدیم/کشف کردیم، فقط گروه کوچکی از دوستان خیلی صمیمی هستن که میشه ماست ترش رو برای چشیدن داد دستشون!
ولی حالا حتی اگه نسخه آلفا یا بتا باشیم، بعید میدونم نسخه اصلی، هوش مصنوعی باشه. چون هوش مصنوعی مخلوق ماست، یعنی مخلوقِ نسخه ی آلفا، پس حتما تعداد باگهاش خیلی خیلی بیشتر از خودِ نسخه آلفاس.
-
release candidate ↩︎