خب بچهها، امروز میخوام باهاتون درباره یه موضوع خیلی باحال و داغ توی دنیای علوم کامپیوتر حرف بزنم: مدلهای محاسباتی سطح بالا! اگه فکر کردید منظورم همون مدلهای قدیمی و کلاسیکی مثل ماشین تورینگ هست که سر همهش توی دانشگاهها غر میزنیم، باید بگم ماجرا خیلی فرق داره!
بذارید اول یکم مرور کنیم: مدلهای کلاسیک محاسباتی مثل ماشین تورینگ یا ماشین حالت متناهی، همون ابزارای قدیمیان که به کمکشون میفهمیم کدوم مسائل «قابل حل» هستن و کدومشون نه. ولی این مدلها فقط برای برنامههای کوچیک و تکی خوبن، مثلاً وقتی میخوایم بفهمیم یه الگوریتم جواب میده یا نه. اما دنیا عوض شده. الان ما با سیستمهایی سروکار داریم که خیلی بزرگ و پیچیدهان، مثلاً شبکههایی که کلی دستگاه و کاربر با هم ارتباط دارن یا سرویسهایی که توی فضای ابری اجرا میشن. اینجا دیگه مدلهای کلاسیکی کم میارن و نمیتونن اون چیزی که توی واقعیت داره اتفاق میافته رو خوب نشون بدن.
حالا توی این شلوغی و دنیای مدرن، علوم کامپیوتر نظری اومده و چند تا ابزار و مدل خفنتر معرفی کرده که اسمشون رو گذاشتن «مدلهای محاسبات سطح بالا» یا همون High-Level Computation Models. این مدلها داستانشون اینه که به جای اینکه فقط یه کامپیوتر تکی رو بررسی کنن، میان گروهی از سیستمها رو که با هم تعامل دارن (یعنی با هم حرف میزنن و همکاری میکنن) توصیف میکنن. مثلاً فرض کن یه پروژه بزرگ برنامهنویسی داری که چند تا تیم مختلف توش کار میکنن؛ این مدلها بهمون کمک میکنن بفهمیم تعامل بین این تیمها و دستگاهها چجوری پیش میره.
حالا Technical term بازی درنیاریم! منظور از High-Level (یا «سطح بالا») اینه که دیگه روی جزییات ریز پیادهسازی یا مرحله به مرحله بودن کد متمرکز نیستن؛ بیشتر روی مفاهیم کلیتر و نحوه کارکرد کلی سیستمها کار میکنن. مثلاً بررسی میکنن بین چند سیستم یا فرآیند، اطلاعات چطور رد و بدل میشه.
چندتا مثال از این مدلها؟ خب، مثلاً
– مدل فرآیندهای ارتباطی (Communicating Processes): یعنی یه جور روش مدلسازی که سیستمها میتونن همزمان کار کنن و اطلاعات رو بین خودشون بفرستن.
– سیستمهای چندعاملی (Multi-agent systems): یعنی جایی که چند عامل مستقل (مثلاً ربات یا نرمافزار) با هم همکاری یا رقابت میکنن.
– مدلهای محاسبات پراکنده (Distributed computation): این دیگه تابلوئه؛ همون چندتا کامپیوتر که هر کدومشون یه بخشی از کار رو انجام میدن و با هم سینک میشن.
حالا چرا این مدلها رو ساختن؟ چون دنیای واقعی الان پر از پیچیدگی و تو در توییه! مدلهای کلاسیک فقط این رو میگفتن که یه کار شدنی هست یا نه، اما به ما نمیگفتن که وقتی میلیاردها دستگاه با هم کار کنن چیا ممکنه پیش بیاد و چطور باید ساختارشون رو ببینیم. این مدلهای جدید، میان سطح انتزاع رو بالا میبرن (انتزاع یا همون Abstraction یعنی اینکه از جزییات فنی فاصله میگیریم و فقط کَلیت و ساختار رو نگاه میکنیم). اینطوری خیلی راحتتر میتونیم سیستمهای بزرگ رو تحلیل کنیم و ایرادها یا حتی نقاط قوتشون رو ببینیم.
اگه تا اینجا گیج شدی، خلاصهاش اینه: علوم کامپیوتر داره سعی میکنه مدلهایی بسازه که فقط روی یک کامپیوتر تمرکز ندارن، بلکه کل شبکه یا مجموعهای از کامپیوترها که با هم تعامل دارن رو بررسی میکنن. این جور مدلها باعث میشه راحتتر بفهمیم سرویسهای بزرگ مثل شبکههای اجتماعی، سرویسهای بانکی آنلاین یا حتی بازیهای آنلاین بزرگ چطوری دارن کار میکنن و کجاها ممکنه مشکل بخورن.
ته ماجرا اینه که توی این مقاله اومدن همه این مدلهای سطح بالا رو زیر یک چتر مشترک جمع کردن و یه معرفی دمدستی و ساده ازشون دادن (که منم سعی کردم خوشگلتر و سادهترش رو اینجا برات توضیح بدم!). پس دفعه بعدی که اسم مدلهای سطح بالا یا High-Level Computation رو شنیدی، یادت نره داریم راجع به دنیای بزرگی از تعاملات بین سیستمها و شبکهها و دستگاهها حرف میزنیم ـــ نه فقط یه کامپیوتر تک و تنها! 😄
منبع: +