«علوم کامپیوتر به همان اندازه دربارهی کامپیوترهاست که اخترشناسی دربارهی تلسکوپها.» این جملهی مشهور که به ادسخر دایکسترا، دانشمند پیشگام و برندهی جایزهی تورینگ نسبت داده میشود، در نگاه اول تشبیهی ساده و منطقی بهنظر میرسد، ولی اغلب درهای ورودی یکی از جنجالیترین مباحثات دنیای علم را باز میکند.
دایکسترا بهعنوان مردی صاحبنظر، صریح و گاه تندخو شناخته میشد؛ مردی که زبان برنامهنویسی فورترن را اختلالی کودکانه میخواند و معتقد بود آموزش زبان کوبول «ذهن را فلج میکند و باید یک جرم تلقی شود.»
وقتی از او میپرسیدند چرا در کارهای نظریاش تمایلی به استفادهی عملی از کامپیوترها ندارد، با کنایه جواب میداد: «پژوهشگران علوم پزشکی که مجبور نیستند از بیماریهایی که روی آنها تحقیق میکنند، رنج ببرند!»
خلاصه صوتی
خلاصه صوتی، ساختهشده با هوش مصنوعی
شما چقدر با تشبیه معروف تلسکوپ و اخترشناسی موافقید؟ فکر میکنید اگر کامپیوتر را از علوم کامپیوتر کنار بگذاریم چه چیزی باقی میماند؟ اگر علوم کامپیوتر واقعا علم مطالعهی کامپیوترها نباشد، پس موضوع اصلیاش چیست؟
آیا ما با رشتهای روبهرو هستیم که ماهیتش با مدارهای سیلیکونی، سختافزارها و دستگاههای دیجیتال تعریف میشود، یا باید کامپیوتر را صرفاً ابزاری قدرتمند بدانیم؛ تلسکوپی که به ما اجازه میدهد به کیهان محاسبه خیره شویم و به پرسشهایی پاسخ دهیم که مدتها پیش از اختراع اولین پردازندهها وجود داشتهاند؟
یک رشته با دو والد
ریشهی تمام اختلافنظرهای امروزی بر سر ماهیت علوم کامپیوتر، به سالهای ابتدایی شکلگیری این رشته بازمیگردد.
در دههی ۱۹۳۰، ریاضیدانان و منطقدانان نظریهی ریاضیاتی محاسبه را پایهریزی میکردند؛ تلاشهایی کاملا نظری برای درک مرزهای منطق و استدلال. یک دهه بعد، در دههی ۱۹۴۰، مهندسان نخستین کامپیوترهای الکترونیکی همهمنظوره را ساختند تا معادلات پیچیده را با سرعتی حل کنند که تا آن زمان سابقه نداشت.
در دهههای بعد، علوم کامپیوتر دقیقا از تلاقی این دو جهان، یعنی پیوند انتزاع ریاضیات با عملگرایی مهندسی ظهور کرد. اما با تولد این رشتهی دانشگاهی جدید، خیلی زود مباحثهها و مجادلهها بر سر ماهیتش بالا گرفت.
علوم کامپیوتر از پیوند نظریهی محض ریاضی با ضرورتهای عملی مهندسی متولد شد
سال ۱۹۶۷، سه تن از بزرگان این حوزه یعنی آلن نیوئل، آلن پرلیس و هربرت سایمون، نامهای پرشور به سردبیر مجلهی ساینس نوشتند تا وضع خود را در برابر منتقدانی مشخص کنند که میگفتند علم تنها باید به مطالعهی پدیدههای طبیعی بپردازد.
سه دانشمند در نامهی خود میگفتند: «هر جا پدیدهای وجود داشته باشد، میتواند علمی برای توصیف و تبیین آن پدیدهها نیز وجود داشته باشد. کامپیوترها وجود دارند. بنابراین علوم کامپیوتر، علم مطالعهی کامپیوترهاست.»
هربرت سایمون دو سال بعد در کتاب مشهور خود، علوم مصنوعی، ایدهاش را بسط داد و استدلال کرد که تمرکز بر سیستمهایی که عامدانه و به دست انسان طراحی شدهاند، به علوم کامپیوتر هویتی مستقل میبخشد.
اما دونالد کنوت، یکی دیگر از چهرههای افسانهای این رشته، سمت دیگر میدان ایستاد و دیدگاهی کاملاً متفاوت ارائه داد. او در سال ۱۹۷۴ در مقالهای با عنوان علوم کامپیوتر و ارتباط آن با ریاضیات، کانون توجه را از روی سختافزار برداشت و تأکید کرد که «الگوریتمها» و خود فرایند محاسبه، موضوعات اصلی این رشتهاند.
از نگاه کنوت، ماشینها صرفاً مجری دستورالعملهای مرحلهبهمرحلهای هستند که ما به زبانهای مختلف برنامهنویسی ترجمه میکنیم؛ درست همانطور که یک ایده را میتوان به زبان انگلیسی، ماندارین یا فارسی بیان کرد. کامپیوترها تنها از این نظر اهمیت دارند که به ما اجازه میدهند سراغ مسائلی برویم که حل دستی آنها از عمر و حوصلهی بشر فراتر میرود.
هربرت سایمون: علوم کامپیوتر، علم مطالعهی کامپیوترهاست
ویلیام راپاپورت، استاد فلسفه و علوم کامپیوتر دانشگاه بوفالو، دلیل تقابل دیدگاههای بنیادین را در تاریخچهی دوگانهی رشته میبیند. به عقیدهی او علوم کامپیوتر دو خاستگاه متفاوت دارد؛ یک والد ریاضیاتی و یک والد مهندسی.
میراث ریاضی این علم روی قواعد، اثباتها و محدودیتهای محاسبه متمرکز میشود و میراث مهندسیاش راه ساخت دستگاهها و سیستمهایی را بررسی میکند که محاسبات را در جهان واقعی انجام میدهند. همین امر باعث میشود پژوهشگران از زوایای مختلفی به ماهیت کار خود نگاه کنند.
بااینحال، راپاپورت هم باور دارد این رشته از نوعی یکپارچگی فکری بهره میبرد که در قالب دو پرسش پایهای خلاصه میشود، دو سؤال که مسیر تمام پژوهشهای این حوزه و البته ادامهی مقالهی ما را تعیین میکنند. اول، چه چیزهایی را میتوان محاسبه کرد و دوم، آن چیزها را چگونه میتوان محاسبه کرد.
آلن تورینگ، ریاضیدانی که مرزهای منطق را ترسیم کرد
در پاسخ به این سؤال که چه چیزهایی را میتوان محاسبه کرد، ذهنمان به سمت جمع و ضرب میرود، یا شاید نظریهی مجموعهها. شاید هم با خودتان فکر کنید هر پدیدهای که ویژگیهایش قابلسنجش باشد، در این گروه جای میگیرد.
ولی ریاضیدانان برای تعیین مرزهای محاسبه به تعریف دقیقتری نیاز داشتند. باید مشخص میشد یک محاسبه، از چه گامهایی تشکیل میشود و آیا میتوان هر مسئلهای را با دنبالکردن مجموعهای محدود از دستورها حل کرد؟
در دههی ۱۹۲۰ دیوید هیلبرت تلاش کرد روشی عمومی برای بررسی گزارههای ریاضی پیدا کند. سیستم ایدهآل هیلبرت باید گزارهای را میگرفت، مجموعه مراحل مشخصی را میگذراند و در زمانی محدود مشخص میکرد که آیا گزاره در چارچوب منطقی موردنظر صحیح است یا خیر.
سال ۱۹۳۶، یک ریاضیدان جوان بریتانیایی به نام آلن تورینگ، مقالهای جریانساز منتشر کرد که پایههای درک امروزی ما از محاسبه را شکل داد.
آلن تورینگ مفهوم محاسبه را سالها پیش از ساخت نخستین ترانزیستور فرمولبندی کرد
تورینگ در آن زمان نه قصد داشت دستگاهی فیزیکی بسازد و نه حتی رؤیای طراحی کامپیوترهای آینده را در سر میپروراند. بزرگترین دغدغهاش یافتن راهحلی برای عمیقترین بحران مبانی ریاضیات آن دوران بود: «آیا اصولاً روشی مکانیکی و قطعی وجود دارد که بتواند درستی یا نادرستی هر گزارهی ریاضی را مشخص کند؟»
تورینگ ماشین فرضی و کاملاً ذهنیای ابداع کرد که البته چرخدنده و سیمکشی نداشت، فقط مدل ریاضی عجیب و دقیقی بود که واژهی محاسبه را تعریف میکرد. در آن سالها کامپیوترها یا محاسبهگران، انسانهایی بودند که محاسبات طولانی را روی کاغذ انجام میدادند و ماشین تورینگ رفتار و فعالیت ذهنی محاسبهگرها را شبیهسازی میکرد.
ماشین تورینگ نواری داشت که به خانههای جداگانه تقسیم شده بود. هر خانه میتوانست نمادی مانند صفر، یک یا یک جای خالی را در خود نگه دارد. بخشی از ماشین که هد نامیده میشد، نماد موجود در یکی از خانهها را میخواند، در صورت لزوم آن را تغییر میداد و سپس یک خانه به چپ یا راست حرکت میکرد.
جدولی از دستورالعملها نیز رفتار بعدی دستگاه را تعیین میکرد. برای مثال اگر ماشین در وضعیت مشخصی قرار داشت و عدد یک را میدید، عدد صفر را جایگزینش میکرد، یک خانه به راست میرفت و وارد وضعیت تازهای میشد. تورینگ فرض کرد نواری که از داخل این ماشین میگذرد انتهایی ندارد، زیرا بینهایت بودن محدودیتهای حافظه و ظرفیت را کنار میزد.
تورینگ با ماشین انتزاعیاش نشان داد مسائلی وجود دارند که هیچ الگوریتمی قادر به حل آنها نیست، پس سیستم رؤیایی هیلبرت هم به بنبست میخورد. او توانست مرزهای آنچه را که در جهان منطق قابلمحاسبه است، ترسیم کند و مهمتر اینکه به «محاسبه» هویتی کاملاً مستقل از فعالیتهای عملی و مدارهای الکترونیکی داد.
محاسبه الگویی جهانشمول است که از ژنتیک تا سیاهچالهها جریان دارد
وقتی محاسبه را بهعنوان فرایندی قانونمند و انتزاعی تعریف کنیم، ناگهان ردپای آن را در همهجای کیهان میبینیم. امروزه پژوهشگران با استفاده از همان زبان محاسبه، به سراغ پیچیدهترین پدیدههای علمی میروند و دینامیک تکامل زیستی در ژنومها، رفتارهای آشوبناک در سیستمهای فیزیکی و حتی معماهای حلنشدنی گرانش کوانتومی و سیاهچالهها را با عینک محاسباتی تحلیل میکنند.
محاسبه در این مقیاس دیگر صرفاً کاری نیست که یک لپتاپ یا سرور انجام میدهد؛ بلکه چارچوبی اساسی برای شناخت هر فرایندی محسوب میشود که در جهان هستی طبق مجموعهای از قواعد پیش میرود.
چرا بعضی مسائل ذاتاً سختاند؟
حالا به پرسش دوم راپاپورت میرسیم. وقتی فهمیدیم چیزی قابلمحاسبه است، چگونه باید آن را محاسبه کنیم؟ اگرچه ماشین انتزاعی تورینگ مرزهای نظری قابلیت محاسبه را مشخص کرد، اما کار با کامپیوترهای فیزیکی در دنیای واقعی، چالش جدیدی روبهرو ساخت؛ محدودیتهایی از جنس زمان، ظرفیت حافظه و مرزهای قوانین فیزیک.
فرض کنید میخواهید کوتاهترین مسیر بین خانهی خود و یک فروشگاه را پیدا کنید؛ کاری که انجام میدهید تحت مسئلهای ساده تعریف میشود. اما حالا تصور کنید یک پستچی باید بستههایی را در ۶۱ شهر مختلف تحویل دهد و میخواهد کوتاهترین مسیر ممکن را پیدا کند که از همهی شهرها بگذرد.
در دنیای پستچی، با اضافهشدن هر شهر جدید، تعداد مسیرهای احتمالی با سرعتی فزاینده افزایش مییابد و حتی کار به جایی میرسد که برای پیداکردن بهترین مسیر میان تنها چند ده شهر، حتی اگر تمام اتمهای کیهان را به سریعترین ابرکامپیوترهای ممکن تبدیل کنیم، باز هم عمر جهان برای بررسی تمام حالتها کافی نخواهد بود.
در واقع برخی مسائل حلشدنیاند و با الگوریتمی خاص به جواب میرسند، ولی تعداد گامهای لازم آنقدر زیاد میشود که حتی در عمر جهان هم نمیگنجد. همین تفاوت قابلمحاسبه بودن و امکان محاسبه در زمانی معقول، زمینه را برای پیدایش نظریهی پیچیدگی محاسباتی فراهم کرد.
سال ۱۹۶۵، یوریس هارتمانیس و ریچارد استرنز در مقالهای توضیح دادند که حتی در مجموعهی مسائل محاسبهپذیر؛ بعضی محاسبات منابع اندکی میخواهند و برخی دیگر ذاتاً به زمان یا حافظهی بسیار بیشتری نیاز دارند، پس میتوان مسئلهها را بر اساس زمان و حافظه طبقهبندی کرد.
برخی مسائل چنان پیچیدهاند که حتی تمام اتمهای جهان هم زمان کافی برای حلشان ندارند
توجه کنید که مسئله اصلاً سرعت کامپیوتر یا قدرت پردازندهی شما نیست. همانطور که کریستوفر مور، دانشمند علوم کامپیوتر اشاره میکند، برخی مسائل ساختار ریاضی پنهانی دارند که آنها را ذاتاً آسانتر یا دشوارتر میکند. تلاش برای درک همین تفاوتهای کیفی و ترسیم نقشهی این جغرافیای پنهان، رسالت اصلی نظریهی پیچیدگی است.
نکتهی جالب اینکه دشواری محاسباتی در دنیای مدرن نقش مهمی بهعنوان سپر دفاعی ایفا میکند. بسیاری از سیستمهای رمزنگاری امروزی، بر مسائلی متکیاند که حل آنها با الگوریتمهای شناختهشده به زمان یا منابع محاسباتی بسیار زیادی نیاز دارد، مثل مسئلهی تجزیهی اعداد بسیار بزرگ به عوامل اول.
نظریهی پیچیدگی در دهههای ۱۹۸۰ و ۱۹۹۰ پژوهشگران را به سمت مفاهیمی بهغایت غریب و شگفتانگیز سوق داد که درک ما را از واژهی اثبات دگرگون کردند.
وقتی اثبات به گفتوگو تبدیل شد؛ برهان دانایی صفر
اثبات ریاضی سنتی غالباً بهصورت متنی کامل و ثابت ارائه میشود، یعنی ریاضیدان مجموعهای از فرضها را مینویسد، استدلالش را مرحلهبهمرحله پیش میبرد و به نتیجه میرسد. داور یا شخص دیگری مراحل را میخواند و صحت هرکدام را بررسی میکند.
نظریهی پیچیدگی نشان داد چگونه دشواری محاسباتی به سپر امنیتی دنیای دیجیتال تبدیل میشود
پژوهشگران علوم کامپیوتر فرم دیگری از اثبات را معرفی کردند، جایی که طرف اثباتکننده با طرف بررسیکننده وارد گفتوگو میشود. بررسیکننده پرسشهایی تصادفی میپرسد و پاسخها را کنار هم میگذارد تا از درستی ادعا مطمئن شود. یکی از مهمترین دستاوردهای این حوزه اثبات دانایی صفر (Zero-Knowledge Proof) نام دارد.
اثبات دانایی صفر به زبان بسیار ساده، یعنی شما بتوانید به شخص دیگری ثابت کنید که رازی را میدانید یا ادعایتان حقیقت دارد، بدون آنکه خود اطلاعات محرمانه را فاش کنید. برای درک بهتر این مفهوم به مثال مشهور غار علیبابا توجه کنید:


غاری حلقهای یا U شکل را تصور کنید که دری مخفی در میانهاش قرار دارد. فقط کسی که رمز این در را میداند میتواند از یک سمت وارد شود، در را باز کند و از سمت دیگر بیرون بیاید. حالا فرد مدعی وارد یکی از دو مسیر میشود و داور بیرون غار میماند؛ یعنی نمیبیند فرد مدعی از کدام مسیر رفته است.
داور بهطور تصادفی از فرد مدعی میخواهد از مسیر چپ یا راست بیرون بیاید. کسی که رمز در را میداند هر بار خواستهی داور را بهدرستی انجام میدهد؛ درحالیکه مدعی دروغگو باید حدس بزند، پس در هر دور ۵۰ درصد شانس دارد که موفق شود و لو نرود. تکرار آزمون هم احتمال فریب را بسیار کم میکند.
به یاد داشته باشید که داور هرگز رمز در را یاد نمیگیرد؛ اما شواهد کافی به دست میآورد تا مطمئن شود مدعی رمز را میداند.
با توسعهی دامنهی برهان دانایی صفر مشخص شد که میتوان صحت بسیاری از گزارههای دشوار محاسباتی را به همین شیوه اثبات کرد. امروز کاربردهای عملی این رویکرد از سیستمهای احراز هویت تا شبکههای بلاکچین امتداد یافتهاند؛ مکانیزمی قوی که به کاربر اجازه میدهد دارابودن یک اعتبار یا دانستن یک راز را ثابت کند، بیآنکه خود داده را فاش سازد.
از کارتهای پانچ ببیج تا چالشهای عملی کدنویستی
تا این مرحله دیدیم که علوم کامپیوتر دامنهای وسیعتر و انتزاعیتر از کامپیوترهای فیزیکی دارد. شاید تصور کنید کامپیوترها فقط ظرفی برای اجرای ایدهها هستند، اما فناوری در طول تاریخ سؤالاتی را پیش روی پژوهشگران گذاشت که فوریت و اهمیتشان بدون تجربهی ساخت و استفادهی عملی از دستگاه روشن نمیشد.
در قرن نوزدهم دستکم یک نفر خودش را به مرزهای مسائل محاسباتی رساند. چارلز ببیج، دانشمند همهچیزدان بریتانیایی، در حال طراحی دستگاهی مکانیکی به نام «ماشین تحلیلی» بود که برنامه را از کارتهای پانچشده میگرفت.
ببیج در یادداشتهایش پیشبینی کرده بود با ظهور کامپیوترهای قابلبرنامهریزی، مسائل جدیدی مطرح میشود. مثلا وقتی میخواهیم به کمک یک دستگاه به نتیجهای برسیم، ماشین از کدام مسیر محاسباتی میتواند در کوتاهترین زمان ممکن به جواب دست یابد؟ چارلز ببیج دریافته بود که علاوه بر جواب، مسیر طیشده نیز اهمیت دارد.
ماشین تحلیلی ببیج هرگز در زمان حیاتش ساخته نشد، اما پرسش او خیلی زود در نظریهی پیچیدگی بازتاب یافت. وقتی ماشین محاسبهگر میسازید، ناچار میشوید به کارایی روشهای محاسبه هم فکر کنید.
در دههی ۱۹۶۰ زمانی که پژوهشگران برای اولینبار مشغول کار با کامپیوترهای الکترونیکی شدند و برنامههایشان را روی سیستم اجرا کردند، محدودیتهای فیزیکی زمان و حافظه آشکار شدند. از همان دوران تفاوت میان مسئلهای آسان که سریع حل میشد و مسئلهای دشوار که کامپیوتر را مدتها درگیر میکرد، به بحرانی جدی و عملی تبدیل شد.
چالشهای عملی در ساخت ماشینها، شکافهای نظریهپردازی محض را روشن کردند
با مرور تاریخ علوم کامپیوتر در مییابیم که ماشینهای فیزیکی صرفاً ابزاری برای اجرای نظریههای از پیش موجود نبودهاند. هر نسل جدید از کامپیوترها پرسشهای دیگری هم پیش پای پژوهشگران گذاشت. محدودیت حافظه، سرعت پردازنده، خطای انتقال و نیازهای کاربران، باعث شد متخصصان راههای بهتری برای محاسبه پیدا کنند.
نظریه راه ساخت ماشینهای بهتر را نشان میدهد و ماشین نیز خلأهای نظریه را نمایان میکند.
موتور بخار و الگوریتم، پیروزی مسائل عملی
روایت سنتی معمولا مسیر علم را سادهسازی میکند. ابتدا دانشمندان علوم محض به کشفی مهم میرسند و سپس مهندسان از آن برای خلق فناوریهای جدید استفاده میکنند؛ درست مانند فیزیک کوانتومی که در نهایت مسیر را برای اختراع ترانزیستورها و GPS هموار کرد. اما تاریخ علوم کامپیوتر به ما نشان میدهد که این مسیر همیشه یکطرفه نیست.
بسیاری از اوقات، ابزارها و چالشهای کاملاً عملی دانشمندان را بهسوی پرسشهای نظری بیسابقه سوق میدهند، پدیدهای که البته در سایر علوم نیز دیده میشود.
قانون دوم ترمودینامیک و مفهوم آنتروپی که میگوید بینظمی در کیهان همواره افزایش پیدا میکند، یکی از بنیادیترین قوانین حاکم بر جهان هستی بهشمار میرود. این قانون نه در خلوت ریاضیدانها، بلکه دقیقاً زمانی صورتبندی شد که انسانها در حال سروکله زدن با موتورهای بخار و تلاش برای بهبود بازدهی آنها بودند.
پایان مناقشهی هشتادسالهی ماهیت علوم کامپیوتر را شاید بتوانیم با جملهی درخشان رایان ویلیامز، نظریهپرداز پیچیدگی، خلاصه کنیم: «مسائل عملی، اگر بهاندازهی کافی جالب باشند، پرسشهای نظری بزرگی پدید میآورند.»