
این یادداشت براساس تعدادی از پستهای کانال تلگرامی Out of Distribution نوشته شده؛ کانالی که مهدی سمیعی، دانشجوی دکترای دانشکده مهندسی کامپیوتر شریف آن را میگرداند.
دو سال پیش که هوش مصنوعی درس میدادیم، خیلی راحت از روی کد دانشجوها میشد تشخیص داد کدام دانشجو از روی دست کدام دیگری تقلب کرده و کد اصیل و اورجینال (آن زمان احتمالا کد اصیل خوشتعریفتر بود) تحویل نداده. بعدش هم در همان تمرین اول درس آنچنان متقلبین را نقرهداغ میکردیم که همه دوزاریشان بیفتد و حساب کار دستشان بیاید و کمتر خیال تقلب به سرشان بزند. امسال اما آن شیوه کشف تقلب جواب نمیدهد، چرا؟ چون شیوه تقلب از اساس عوض شده، چون GPTها و Geminiها و Claudeها در دسترساند و روز به روز هم بهتر و دقیقتر و کماشتباهتر و قابل اعتمادتر میشوند. دانشجوها در لابی دانشکده جوری با تمرینها برخورد میکنند که انگار واقعا Vibe Coding پذیرفته و جهانشمول شده و کار مهندسهای نرمافزار صرفا تغذیه LLMها با Promptهای خوب و دقیق است تا هوش مصنوعی با سرعت و کیفیتی بهتر، نرمافزارهای مورد نیاز ما را توسعه بدهد. در کوئرا هم اوضاع نسبت به سالهای قبل غریب و متفاوتتر است. خبری از پرسشهای بیپایان دانشجوها زیر پست کوئرای تمرین نیست. انگار دانشجوها هیچ ابهام و سوالی درباره تمرین ندارند، یا دقیقترش استاد و دستیار آموزشی را محرم این ابهام و پرسششان نمیدانند. درخواستها برای تمدید مهلت تمرینها هم کمتر شده و همه خوش و خرم پاسخها را سر موقع ارسال میکنند. کاری نمیشود کرد، حداقل در زمینه ارزیابی فعلا خیلی عقبایم و چارهای هم نداریم جز پناه بردن به تحویل و ارزیابی حضوری تا سیه روی شود هر که در او غش و ضعف اتکای بیش از حد به LLMها باشد.
اما آیا واقعا استفاده گسترده دانشجوها از ابزارهای هوش مصنوعی را باید تقلب به حساب آورد؟ آن هم ابزارهایی که تا حد خوبی رایگاناند و در دسترس همه و تبعیض خاصی فعلا در استفاده از آنها به چشم نمیخورد. هدف واقعی استاد و دستیار آموزشی مهندسی کامپیوتر که سنجش مهارت کد نوشتن دانشجوها نیست، همانطور که استاد فیزیک نمیخواهد بفهمد کدام دانشجو یک محاسبه ده بیست صفحهای در نظریه میدانهای کوانتومی را سریعتر و دقیقتر از بقیه به ته میرساند، یا استاد مهندسی برایش خیلی مهم نیست که دانشجویش میتواند یک مسئله پرمحاسبه و چغر المان محدود یا یک معادله دیفرانسیل پارهای را بهطور کامل خودش روی کاغذ حل کند و به نتیجه دقیق نهایی برسد یا نه، آن هم وقتی کل ابزار و نرمافزار برای این کار توسعه داده شده است (اگر استاد یا دستیار آموزشیای، خواسته یا ناخواسته این هدف را پس ذهنش دارد هم که همچون احمد نجفی یک نیمهشبی بروید و گل بگیرید در آن کلاس و دانشکده را). هدف غایی کلاس و درس قرار بوده ارتقای فهم و درک دانشجوها از مسائل و مطالب باشد و ارزیابی هم ابزاری برای سنجش این درک و فهم.
در همین راستا، ممنوعیت استفاده از ابزارهای هوش مصنوعی برای تمرینهای دانشگاهی، تا حدی شبیه ممنوعیت استفاده از ماشینحساب برای آنهاست. نه امکانپذیر است و نه منطقی. البته با یکسری تفاوتهای مهم که نمیشود سرسری پشت گوششان انداخت. اصلیترینش این است که ماشینحساب فقط بلد است محاسبه کند، مسئله حل کردن در توانش نیست. ولی LLMها دارند مفهوم پشت مسئله را میفهمند و برایش راه حل ارائه میدهند. مقایسه بین ابزارهای هوش مصنوعی و ماشینحسابها، مقایسه پرتکراریست، اما همیشه باید گوشه ذهنمان داشته باشیم که اساس تکنولوژی الآن با تکنولوژی روزگار اختراع و رواج ماشینحساب، تفاوتهای بنیادی دارد. آندره کارپثی در یکی از پستهای وبلاگش برخی ویژگیهای ماشینحسابها را پشت سر هم ردیف کرده بود تا تفاوتهای بنیادی آن با تکنولوژیهای محاسباتی امروزی، از جمله ابزارهای هوش مصنوعی را توی چشم بیاورد:
اما از تقلب با کمک LLMها که بگذریم، سوال بزرگتر این است که اگر ماشین توانسته پرده را کنار بزند و مفهوم پشت مسئله را هم درک کند، چرا ما هم حتما باید بلد باشیم مستقل از ماشین سراغ مسئله برویم و از پسش برآییم؟ اینکه الآن خیلیهایمان بلد نیستم یا دقیقترش فراموش کردهایم چطور میشود جذر یک عدد سهرقمی را با دقت کافی محاسبه کرد، چیزی از ارزشهایمان کم میکند؟ یا این محاسبه آنقدر پیشپاافتاده هست که دامن دست و فکرمان را بهش آلوده نکنیم و بدهیم ماشینها برایمان بهتر و سریعتر و ارزانتر انجام دهند؟ این قهرمانهای رقابتهای محاسبه سریع ذهنی چه ارزش افزودهای امروز دارند؟ یا صرفا شبیه قهرمانان مسابقات پرورش اندام، مشغول ذهننمایی افراطی شدهاند؟
شاید برخی بگویند به هر حال فهم ذات مسئله و آنچه پشت تایپ سریع LLMها میگذرد، مهم است و هرکس از آن سر در نیاورد، قافیه را باخته (همانطور که یک مهندس باید منطق و کارکرد پشت نرمافزارهای تحلیل مهندسی را خوب بفهمد تا آشغال تحویل نگیرد). در همین موضوع، اخیرا در یک وبلاگ رندوم پستی را دیدم که میگفت نسل جدید برنامهنویسها، یعنی همانها که برنامهنویسی را در عصر LLMها شروع کردهاند، بهخاطر دسترسی ۲۴/۷ به این ابزارهای هوش مصنوعی، کدها را سریعتر تحویل میدهند، اما فهمشان از مسئله ناقص است و استفادهشان از LLMها فراتر از یک دستیار همهفنحریف است (یعنی همان استفادهای که نسل قبلی برنامهنویسها از ابزارهای هوش مصنوعی دارند). مشاهده من از برخی تمرینهایی که دانشجوها تحویل میدهند هم تقریبا همین را میگوید. همه دانشجوها در نهایت به پاسخ رسیدهاند و کدها همگی تمیز و بهینه و خواناست، اما تسلطی که سالهای قبل در فهم دانشجوها به چشم میخورد، تا حدی غایب است. گاهی حتی با راهحلهای غیرمنطقی به جواب میرسند و دقیق هم نمیدانند حکمت این راهحل چه بوده و از کجا سروکلهاش پیدا شده. با نسلی از برنامهنویسها مواجهایم که در عین سرعت بیشتر، دقیق نمیدانند چرا و چطور کدشان کار میکند، اما خوب کار میکند، و شاید تنها هدف همین است.
بیتعارف سرعت رشد هوش مصنوعی در خودکار شدن توسعه نرمافزار بسیار بالاست. ما واقعا نمیدانیم اصلا ده سال بعد نیازی به مهندس نرمافزار خواهیم داشت یا نه؟ پس واقعا فهم مسئله در کوتاهمدت، در بلندمدت هم به کارمان میآید؟ یا صرفا برای اداواطوارش دنبالش هستیم؟ ما هنوز در دوره گذار هستیم. نمیدانیم مرز قابلیتهای LLMها و هوش مصنوعی پشت چه سدی متوقف خواهد شد. آن موقع شاید سر وقت بنشینیم و فکر کنیم ارزش کدام کارها بیشتر است و نباید به ماشین سپردشان و خودمان باید برایشان آستین بالا بزنیم. شاید هم گاهی صرفا از نظر اقتصادی بهصرفهتر باشد که یک آدم کاری را به جای یک ماشین پیش ببرد. احتمالا در نظام آموزشی آن موقع، بچههای کوچک را از دسترسی به ماشینحساب و LLMها منع خواهیم کرد، ولی بزرگتر که شدند، زندگی (حداقل زندگی آکادمیک و تخصصی) بدون ماشینحساب و LLMها برایشان غیرممکن و بهتر بگویم بیمعنی خواهد بود. کمکم کار به جایی خواهید رسید که اعتماد نسلهای بعدی ما به خروجی LLMها به قطعیت اعتماد ما به خروجی ماشینحسابها خواهد بود. راستی آخرین بار کی به خروجی یک ماشینحساب شک کردهاید و خودتان قلم و کاغذ برداشتهاید که محاسبه را چک کنید؟
واقعیت تلخ احتمالا این است که در هر سیستمی، خروجی امتیاز و اهمیت بالایی دارد و نحوه رسیدن به آن، فرع قضیه به حساب میآید. بنابراین بعید نیست فهمیدن ذات مسئله و پشت پردهاش کمکم از اهمیت بیفتد، همانطور که خیلی از ما الآن نمیدانیم جذر یک عدد بزرگ چطور محاسبه میشود، یا کدهایمان در کامپیوتر چطور کامپایل.