بهزاد مرادی

UniverseScript: زبانی که برنامه‌نویس بزرگ (خدا) کائنات را با آن دولوپ کرد!

بهزاد مرادی برنامه‌نویس پی‌اچ‌پی

این محتوا بدون نظارت تیم سکان آکادمی تولید شده و صرفاً نظرات شخصی بهزاد مرادی می‌باشد.

معمولاً ما آدم‌ها به صفات عالی که به «ترین» ختم می‌شوند از خود علاقه نشون می‌دیم. به عنوان مثال:

- گران‌ترین خودرو دنیا
- خوبترین کشور دنیا
- برترین برند دنیا
- کوچک‌ترین لپ‌تاپ دنیا و ... 

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

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

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

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

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

دنیا پُر است از ساختارهای IF ... ELSE
شاید زیاد این گزاره را شنیده باشید که «دنیا دار مکافات است.» اما چه‌طور چنین چیزی ممکن است؟ مگر می‌شود بدون وجود برنامه‌ای سنجیده در بک‌اند کائنات، به کسی بدی کنیم و به صورت رَندُم و شانسی در آینده سزای کار خود رو ببینیم؟ مگر می‌شود بدون وجود الگوریتمی پیچیده -که موی لای درزش هم نمی‌رود- در این دنیا به کسی ظلم کنیم و روزی آن هم به صورت خیلی تصادفی مورد ظلم واقع شویم؟ مگر می‌شود از عمد آبروی انسان شریفی را به صورت غیرواقع ببریم و شهرتش را لگه‌دار کنیم اما در عین حال چنین کاری از دید دولوپرمان (خالق‌مان) پنهان بماند؟ (یا مگر می‌شود ناظم مدرسه، معلم قرآن و به طور کلی کسانی که قرار هست Role Model بچه‌های ما باشن و نسل بعدی رو تربیت کنن به بچه‌ها ... کنن؟)

خُب یکی از ساختارهای مورد علاقهٔ خداوند متعادل در پروسهٔ توسعهٔ نرم‌افزار ساختار IF ... ELSE است. به طور مثال، فرض کنیم به کسی ظلم می‌کنیم؛ در چنین شرایط داریم:

var act, payForIt = null;

if (act === 'evil') {
    payForIt = true;
} else {
    payForIt = false;
}

در تفسر کدهای فوق بایستی بگوییم که اگر مقدار متغیر act برابر با evil (کاری بد) باشد، مقدار متغیر payForIt برابر با true می‌شود و در غیر این صورت هم fales (معنی تحت‌الفظی payForIt «پس دادن تاوان چیزی» است.)

حال ممکن است این سؤال پیش بیاید که از گذشته تا به امروز شاهد تبهکاری، ظلم،‌ ستم، بی‌عدالتی و بی‌رحمی برخی مخلوقات خدا بوده‌ایم (به عبارتی شرط داخل if برابر با true است)، اما در عین حال می‌بینیم که خوب و سرحال، راست‌راست راه می‌رن و هیچ اتفاقی هم براشون رخ نمی‌ده!!! خُب خدا فکر چنین Use Case هایی را هم کرده است؛ برای روشن‌تر شدن این مسئله، اسکریپت زیر را ملاحظه کنید:

var act, payForIt, timeToIncreaseSin = null;

if (act === 'evil') {
    if (timeToIncreaseSin == true) {
        payForIt = false;
    } else {
        payForIt = true;
    }
} else {
    payForIt = false;
}

همان‌طور که می‌بینید، خدا این بخش از کد رو ریفکتور کرده و متغیر جدیدی اضافه کرده تحت عنوان timeToIncreaseSin که به صورت تحت‌الفظی می‌شود به صورت «فرصت دادن برای غرق در گناه شدن» ترجمه کرد!

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

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

در پاسخ به این سؤال که یعنی چی همه‌چیز اپن‌سورسه؟ باید گفت که مثلاً گرچه DNA خیلی پیچیده هست، اما دانشمندان با تمرکز روی ساختارش (با بهتر بگیم سورس‌کدش) می‌تونن ازش سر دربیارن. مسئلهٔ زاد و ولد چیز پیچیده‌ای است اما باز هم محققین تونستن با رصد کردن رفتار اسپرم و تخمک، لقاح مصنوعی رو درست کنن. درک ساز و کار سلول‌های بنیادین (Base Cell) که برای خودش دنیایی است، تونسته این امکان رو در اختیار پزشکان قرار بده تا دست به ساخت اعضای بدن بزنن (احتمالاً هم در برخی لابراتورها شروع به ساخت انسان کردن ولی جرأت نمی‌کنن بگن کِلون کردیم!)

کار روی پروژه‌های اینترپرایز و جهانی
اگر فکر می‌کنید که کرهٔ زمین خیلی بزرگ است، سخت در اشتباهید چرا که این کرهٔ خاکی که پُر است از مخلوقاتی که صرفاً نام «اشرف مخلوقات» رو یدک می‌کشن، صرفاً یکی از پروژه‌های دم‌دستی خدا است و این در حالی است که در برابر هزاران کهکشان دیگر که حتی در مخیلهٔ ما هم نمی‌گنجد، حرفی برای گفتن ندارد!

ظاهراً خداوند یک کلاس اولیه ساخته مثلاً تحت عنوان Galaxy، سپس از روش تا می‌تونسته آبجکت ساخته که یکی از آخرین آبجکت‌هاش هم کهکشان راه شیری هست (اینکه او از چه ورژن کنترلی استفاده می‌کنه، خودش جای بحث داره!)

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

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

مثلاً برخی دولوپرها که می‌گن آقا نمیشه، زمان می‌بره و یا اینکه میگن این پلتفرم قابلیت ارتقاء نداره و وقتی از این دست پاسخ‌ها می‌شنویم و از دست چنین دولوپرهایی کلافه می‌شیم، از دست دولوپرمان نیز به بدترین شکل ممکن کلافه شده و گاهی هم دیگر برای فیچر ریکوئست جدید بهش رو نمی‌اندازیم!!

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

- کسانی که به صورت Shemale متولد می‌شوند!
- کسانی که مثلاً با دو سر متولد می‌شوند!
- و کسانی که مثلاً به طور مادرزادی ناشنوا هستن!

به نظر می‌رسه که این دست باگ‌ها به اصطلاح Zero Day هستن که دیگه فرصت نشده دیباگشون کنه (برای کسب اطلاعات بیشتر، توصیه می‌کنم به مقالهٔ آسیب‌پذیری Zero-day چیست؟ مراجعه کنید.)

اما اینجاست که سیاست اپن‌سورسی خالق متعال به داد کاربران نرم‌افزاری‌اش می‌رسد؛ به عبارت دیگه، این امکان در اختیار کاربران (انسان‌ها) قرار گرفته تا مثلاً یک Shemale رو به یک Male یا Female تبدیل کنن، و یا کسانی که دو سر دارند رو جراحی کرده و به حالت معمول درآورند الی‌آخر.

حال نوبت به شماست که بگید چرا UniverseScript یک زبان به اصطلاح OOP و Concurrent باید می‌بود که از قضا این‌گونه هم هست؟

ممنون که وقت گذاشتید. جای نظر، انتقاد و پیشنهاد شما در بخش کامنتینگ است.

ایدهٔ خود را در سکان‌پلاس بنویسید!

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
irib102030
irib102030
۱۳۹۹/۰۲/۱۵
این مقاله رو واقعا دوست داشتم . اینجور طرز فکر برام خیلی جالبه و این که انقدر عمیق به موضوعی به این وسعت نگاه کردین.
ممنونم از مقاله ی خوبتون
در مورد باگ ها : خدا این باگ ها رو خودش قرار داده نه به خاطر این که " ما " دیباگشون کنیم
علت های زیادی داشته که فقط خودش ازشون خبر داره
بازم میگم ؛ مقاله رو واقعا دوست داشتم
کاربر میهمان
امیرمن یک کاربر مهمان هستم
۱۳۹۸/۰۷/۰۹
بسیار شیوا و دلنشین
کاربر میهمان
کاربر میهمانمن یک کاربر مهمان هستم
۱۳۹۸/۰۶/۱۶
يه نكته ناديده گرفته شده و اون علت و منشاء اين باگ هاست، خداوند اين جهان و در نهايت زيبايي آفريد و همه چيز با رياضيات بسيار دقيق و تا ريزترين جزئيات حساب شده بود جهان، كهكشان ها، افلاك، زمين، طبيعت، حيوانات، نبات، جماد ... همه و همه مطيع و هم‌سو با خواست و اراده خداوند و در نهايت زيبايي و نظم در تسبيح و تقديس بودند، داستان باگ ها از اونجا شروع شد كه خدا آدم رو آفريد و به او "قدرت اختيار و اراده آزاد free will" داد و تمام اسماء و اسرار عالم رو به او آموخت و او را خليفه بر روي زمين ناميد ملائكه به خدا عرض كردند: "اي سرور ما با اين همه قدرت و اختياراتي كه به اين موجود ميدي او با خودخواهي ها و سوء استفاده از اين اختيارات، زمين و زمان رو پر باگ خواهد كرد" ((قَالُوا أَتَجْعَلُ فِيهَا مَن يُفْسِدُ فِيهَا وَيَسْفِكُ الدِّمَاءَ وَنَحْنُ نُسَبِّحُ بِحَمْدِكَ وَنُقَدِّسُ لَكَ ))
خداوند فرمود: حكمت كارهاي مرا شما نميدانيد اين هم جزو طرح و نقشه خلقت است، از اين انسان ها آن‌هايي كه با تلاش خود self study و يا "ادب زمانه" مؤدب شوند و اراده و خواست خود را هماهنگ و هم‌سو با خير و خوبي براي همه جهانيان كنند اسماء و اسراري را كه فراموش كرده اند به يادشان ميآورم و آن‌ها را حاكم و سرور تمام موجودات قرار خواهم داد آن‌ها همراه و هم آفرين co-creator با من خواهند بود و آن‌هايي كه
(if (isGameOver == TRUE
شود و آدم نشوند مَتَاعٌ قَلِيلٌ ثُمَّ مَأْوَاهُمْ جَهَنَّمُ ۚ وَبِئْسَ الْمِهَادُ .
کاربر میهمان
مهمانمن یک کاربر مهمان هستم
۱۳۹۸/۰۵/۱۹
ایول آقای مرادی ، باحال بود .
در مورد باگ ها هم با شما موافقم . حتی بزرگانی چون حافظ هم به باگ های آفرینش معتقدند ، این بیت :
پیر ما گفت خطا بر قلم صنع نرفت
آفرین بر نظر پاک خطاپوشش باد .
حسین آقای قربانی هم باحال گفتن .
کاربر میهمان
سعیدمن یک کاربر مهمان هستم
۱۳۹۸/۰۵/۰۷
اینجاست که شاعر شیرین سخت میفرماید:

هرکسی از ظن خود شد یار من از درون من نجست اسرار من
سر من از نالهٔ من دور نیست لیک چشم و گوش را آن نور نیست
تن ز جان و جان ز تن مستور نیست لیک کس را دید جان دستور نیست
spayamani
spayamani
۱۳۹۷/۱۲/۱۰
خیلی قشنگ بود خیلی. تا حدودی میشه به آفرینش خدا نسبت داد ولی تا حدودی هم نه، عجیب و پیچیده تر از این حرف هاست...
rytfsaadat
rytfsaadat
۱۳۹۷/۱۰/۳۰
اگه بخواییم از جنبه علمی به قضیه نگاه کنیم میشه گفت کل جهان به طرز دقیقی کد نویسی شده...
کاربر میهمان
کاربر میهمانمن یک کاربر مهمان هستم
۱۳۹۷/۰۳/۱۵
سلام
جالب بود. اما نمی‌شه کار خدا را دارای باگ دانست. تمامی اعمال خدا (دقت کنید، تمامی اعمال خدا) از روی حکمت و مصلحت هست و حتی اگر ما انسان‌ها برخی از کارهای خدا رو که بر خلاف میل و نظر ماست اصطلاحاً باگ بدونیم دلیل بر اشتباه بودن آن نمی‌شه. شاید در این عمل خدا که از دید ما نادرست یا اشتباه است مصلحتی وجود داشته باشه که موجب هدایت عده‌ای بشه یا به دانش کسی اضافه کنه و ...
پس نمی‌شه اینجوری به کار خدا نگاه کرد.
به هر حال این نظر شماست و محترمه.
موفق و مؤید باشید
کاربر میهمان
کاربر میهمانمن یک کاربر مهمان هستم
۱۳۹۷/۰۳/۱۳
جالب بود ولی نه میشه گفت عالی بود و نه میشه گفت خوب نبود چون دیدگاه های متفاوتی ایجاد میکنه. اما میتونیم‌ با اینطوری تصور کردن خدا و دنیا متوجه بشیم که خداوند دنیایی ساخته بدون نقص و به عظمت خداوند پی ببریم و البته این تصور میتونه خوب هم نباشه و برعکس عمل کنه. درواقع بستگی داره که چجوری به این قضیه نگاه کنیم.
اما درکل جالب بود.
کاربر میهمان
کاربر میهمانمن یک کاربر مهمان هستم
۱۳۹۷/۰۳/۱۲
سلام آقای مرادی عزیز خسته نباشید
مقاله خوبی د ولی نمی توان دنیا رو از دید دولوپر ها نگاه کرد به دلیل زیر :
وقتی قراره برنامه کسی رو تحلیل کنیم باید تمامی سورس کد های اون برنامه نویس رو ببینیم نه فقط بخشی از اونو تا بتونیم تحلیل(قضاوت) خودمون رو بگیم
اما تو دنیا اینجوری نیست ما فقط بخش خیلی کوچکی از سورس کد خدا رو در اختیار داریم و صد در صد به غیر از if و else ای که ما میبینیم ، پشت پرده چندین میلیون یا میلیارد if و else وجود داره که شاید اون چیزی هایی که ما باگ میشناسیمش رو همراه با دلیل خودش تو یکی از اون else و if ها پیدا سازی کرده ، توجیه کنه
همان ماجرای داستان خضر و موسی