در منقبت تردید

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

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

شنون (C. E. Shannon)

برای دوستانی که این پیامبر رو نمیشناسند باید عرض کنم که ایشون مبدع نظریه ارتباطات هستند و در واقع میشه گفت کلا کلید فن‌آوری اطلاعات رو شنون روشن کرده. کلی کار جالب هم در زمینه رمزنگاری داره که اینجا برای از شنون نوشتن فضا کم است...
اما داور محترم در مورد مقاله «A Mathematical Theory of Communication» که مهم ترین مقاله آقای شنون و جایی که نظریه ارتباطات رو معرفی کرده چه چیزی گفته:

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

و در ادامه یک متن خصوصی هم برای ادیتور مجله ضمیمه شده که جالب‌تره:

تنها چیزی که مطلقا در مورد این نوشته غلطه اینه که اصلا به اینکه جامعه تحقیقاتی به چه موضوعاتی علاقه‌منده توجه نکرده. در هر زمانی موضوعات جذاب و غیرجذاب وجود دارند: مثلا الان تلویزیون جذابه و تلویزیون زنگی حتی از اون هم جذاب تره. کانال‌های گسسته با مجموعه متناهی از نمادهای قابل انتقال برای ارتباطات تلگرافی مناسبه، اما تلگراف ۱۰۰ ساله شده و به سختی بهش میشه گفت یه موضوع تحقیقاتی.
ضمنا نویسنده از رایانه‌های جدید مثل ENIAC نام برده. خب من فکر می‌کنم میشه این ماشین‌ها رو به هم متصل کرد ولی همونطور که IBM گفته یک دوجین از اونها برای هر محاسبه‌ای که در آینده دور و نزدیک لازم داریم کافیه. پس ما هیچ وقت جلوتر از وصل کردن یه دوجین ENIAC نخواهیم رفت.

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

آلن تورینگ (A. Turing)

در مورد آلن تورینگ حرفی نمیزنم جز اینکه اگر کامپیوتری هستید و نمیشناسیدش پس احتمالا کامپیوتری نیستید و اگر هم کامپیوتری نیستید برید و فیلم The imitation game رو ببینید. اما در مورد نقد داور عزیزمون به مقاله معروف آلن تورینگ که محاسبه رو زیر و رو کرده:

در مورد مقاله « On Computable Numbers, with an Application to the Entscheidungsproblem» این یک مقاله عجیت و غریبه. این مقاله با توصیف یک ماشین محاسبه که من هیچ جای دیگر ندیدم شروع می‌شود (مردک بی‌سواد ماشین تورینگ رو جایی ندیده بعد اومده داور شده). بعد مولف شروع میکند به اثبات -البته من فرمالیسم الکی پیچیده‌ی ارائه شده در مقاله را پیگیری نکردم- اینکه اعدادی هستند که نمیتوانند محاسبه‌ شوند. خب تا جایی که من می‌فهمم برای هر ماشین که ساخته می‌شود دو حالت می‌توان متصور شد: یا این اعداد انقدر بزرگ هستند که در این ماشین ها جا نمی‌شوند که نتیجه‌گیری واضح است؛ یا این که اینطور نیست پس ماشین ساخته شده خراب است.
هر رایانه‌ای که ارزش اجاره شدن را داشته باشد، می‌تواند همه مقادیری که در دامنه‌اش هست را محاسبه کند، و هر عددی با یک تابع قابل محاسبه است -با اعمال چهار عمل اصلی روی آن- و رایانه‌های فعلی -برخلاف ماشین عجیب معرفی شده در این مقاله- هر چهار عمل اصلی را به صورت سیم‌بندی شده در خود جای داده‌اند. بنظر میرسد بهبودی که تورینگ ارائه داده به هیچ وجه بهبودی روی تکنولوژی فعلی نیست و من فکر میکنم این ماشین بسیار ساده است که استفاده‌ای برای آن متصور بود

دیکسترا (E. W. Dijkstra)

بنظر من بهترین جنبه‌ای که از دیکسترا من رو شیفته خودش کرده شیوه خاصش در تدریسه. امتحان‌های نهایی شفاهی که در خونه‌اش برگزار می‌کرده و برای هر دانشجو متفاوت بوده. اینکه در مقالاتش کمتر میشه ارجاعی پیدا کرد و اینکه شخصیت خاصش برای اکثر افراد، حتی اونهایی که در زمینه کاری خودش بودند قابل درک نبوده. شاید بگم گل سرسبد انبیا حوزه رایانه همین دیکسترا است. اما همونطور که هر پیامبری در ابتدای بعثتش حرف‌هایی میزنه که با انکار عموم مواجه میشه، دیکسترا هم با انکار داوران مواجه شده بود. و جالب اینه که در مقاله «Goto Statement Considered Harmful» با این مقاومت روبه‌رو شده. مقاله‌ای که بیشتر به جای اینکه فرمال و نظریه پردازانه باشه، توصیه‌ای برای استفاده نکردن از یکی از پرکاربردترین ویژگی های زبان های برنامه نویسی در زمان خودشه. توصیه‌ای که نشان دهنده ذات برنامه‌نویسانه دیکستراست و صد البته جلوتر بودن از زمان خودش. و اما نظر داور در مورد این توصیه:

این مقاله سعی میکند تا ما را قانع کند که عبارت معروف goto را از زبان‌های برنامه‌سازی حذف کنیم یا اقلا کاری کنیم برنامه‌نویس‌ها از این عبارت استفاده نکنند. مشخص نیست که در صورت حذف این عبارت چه چیزی جای‌گزین آن خواهد شد. این مقاله مشخص نمی‌کند چگونه یک عبارت شرطی بدون goto می‌خواهد مسیر اجرا را تغییر دهد. آیا همه postcondition ها باید یک عبارت باشند یا باید همه از if ریاضی استفاده کنیم؟ چطور وقتی به پایان یک تابع یا بلاک کد رسیدیم ادامه کار را از جای دیگری از سر بگیریم؟
نویسنده در این مقاله استایل برنامه نویسی ساخت‌یافته را تشویق می‌کند که اگر درست فهمیده باشم، در آن goto‌ها با indent جای‌گزین شده‌اند. برنامه نویسی ساخت‌یافته برای محافل آکادمیک و مثال‌های کوچک مناسب است، و من شک دارم برنامه واقعی در این استایل نوشته شود. تجربه بیش از ۱۰ سال استفاده از fortran در صنعت برای هرکس که به این موضوع علاقه‌مند بوده این را اثبات می‌کند (یه چیزی تو مایه های این که: بَلْ قَالُوا إِنَّا وَجَدْنَا آبَاءَنَا عَلَى أُمَّةٍ وَإِنَّا عَلَى آثَارِهِمْ مُهْتَدُونَ) که استفاده از goto کاربردی و لازم است. هر چند که وجود این دستور ممکن است دیباگ را سخت‌تر بکند، اما یک استاندارد پذیرفته شده است و باید با آن ساخت و برای حذف آن از زبان‌های برنامه‌سازی به چیزی بیشتر از تلاش‌های یک آرمانگرای آکادمیک نیاز داریم.
منتشر کردن این مقاله هدر دادن کاغذ است: من مطمئنم ۳۰ سال دیگر goto همچنان به وسعتی که امروزه در حال استفاده است، مورد استفاده خواهد بود.

از توصیفش از دیکسترا واقعا لذت بردم: یک آرمانگرای آکادمیک...

کد (E. F. Codd)

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

درباره مقاله «A Relational Model of Data for Large Shared Data Banks» که می‌گوید همه داده‌های یک پایگاه داده باید در قالب روابط -مجموعه‌ای از چندتایی‌های منظم- بیان شوند و همه اَعمال مربوط به دسترسی به داده‌ها روی این مدل اِعمال شوند. بعضی از ایده‌های این مقاله جالب است و ممکن است در آینده مورد استفاده قرار بگیرند اما به صورت عمومی این ایده بسیار اولیه بخاطر نداشتن پیاده‌سازی، کارآیی، و کاربرد عملی در اقناع مخاطب ناکام مانده است. نکته اصلی این نوشته این است که شکل جدولی برای دسترسی به داده‌ها مناسب است ولی من دو مشکل با این نکته دارم: بیان‌پذیری و کارآیی.
این مقاله هیچ مثال دنیای واقعی برای قانع کردن ما در اینکه مدل ارائه شده مناسب است نیاورده است. در نگاه اول من حتی شک دارم چیزی که به اندازه کافی پیچیده باشد را بتوان با این روابط مدل کرد. سادگی این مدل به عنوان مثال توصیف سلسله مراتب را غیرممکن می‌کند و مجبور می‌کند از سیستم پیچیده‌ی کلید خارجی استفاده کنیم. در این حالت هر مدل واقع‌گرایانه تبدیل به یک دوجین جدول متصل به هم می‌شود که به سختی یک راه حل عملی است. در حالی که احتمالا چنین چیزی با دو یا سه فایل قالب‌بندی شده مدل می‌شود. (واقعا هاها!!)
از این بدتر، این مقاله هیچ ارزیابی کارآیی ارائه نکرده است. هیچ آزمایشی با داده‌های واقعی یا مصنوعی برای مقایسه با سیستم‌های فعلی ارائه نشده است. دلیل اصلی استفاده از فایل‌های قالب بندی شده کارآیی بالای آنهاست. در مدل ارائه شده در این مقاله کاربر برای استخراج جواب سوالات بزرگ باید تعداد زیادی join های ناکارآمد اعمال کند. همینطور این مقاله هیچ آزمایشی برای اینکه این راه‌حل مقیاس‌پذیر است ارائه نکرده است.
در مجموع به خاطر نداشتن مثال دنیای واقعی، نداشتن آزمون کارآیی، و نداشتن پیاده‌سازی یا جزئیات کافی ما با یک روش مبهم که از ریاضیات ناآشنا (منظورش جبر رابطه‌ایه خاک بر سر) استفاده کرده است مواجه ایم که در عمل نتیجه‌ای نخواهد داشت. به نظر من به راحتی می‌توان این مقاله را رد کرد.

اما چرا؟

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

مشخصا اینشتین نمی‌خواهد قبول کنه که کار خدا با انداختن تاس داره جلو‌‌ میره و مکانیک کوانتوم رو قبول نداره ولی از اونطرف هم قضیه رو کاملا رد نمی‌کنه. یک تردید همراه با جنگ درونی برای شکستن باورهای قبلی.
اسم این نوشته رو گذاشتم در منقبت تردید ولی باید یک جمله هم در منقبت یقین بگم، اینکه اگر دیکسترا و تورینگ و کد و ۱۲۴۰۰۰ پیغمبر دیگه به کار خودشون یقین نداشتند احتمالا ما الان اینجایی که هستیم نبودیم.

پی‌نوشت:

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