![تصویر۱-مشکلیابی(۱).png](https://static-lib.s3.amazonaws.com/cms/1_debugging_1_0dd2dd7f66.png)
برنامهنویسی. برای افرادی که به صورت حرفهای برنامه مینویسند، یک بازی مستمر جِنگا ذهنی است: تکه کدهایی که مفصل به مفصل به هم چسبیدهاند و برجی از کد میسازند که امیدوارید که مقاومت کافی داشته باشد تا به هم نیفتد.
اما همیشه اینطوری است. کد هرگز در اجرای اولیه عمل نمی کند. و بنابراین، یکی از مهارت های کلیدی برای هر برنامه نویس، دیباگ کردن است - هنر و علم یافتن علتی که کد عمل نمی کند یا چیزی غیرمنتظره یا ناخواسته انجام می دهد.
کمی شبیه کار یک کاراگاه است، پیدا کردن کلیدها و سپس فهمیدن آنچه که این کلیدها سعی میکنند به شما بگویند. این بسیار محبت برانگیز و در عین حال پر از ناراحتی است، گاهی دقیقاً در همان زمان.
من بسیاری از اشکال زدایی میکنم. این مطلقا به این دلیل نیست که کد هرگز در اولین بار اجرا کار نمیکند. این همچنین به این دلیل است که از اشکال زدایی استفاده میکنم تا به من بگوید چگونه کد در حال اجراست و سپس در طول راه تنظیمات را به آن اعمال میکنم.
ولی در حالی که اشکال زدایی خوب نیاز به مجموعه ای خاص از مهارت ها دارد، در نهایت همان برنامه نویسی است. هنگامی که علت عدم کارکرد یک بلوک کد را پیدا می کنید، باید بفهمید چگونه چیزی را بنویسید که کار کند.
تست کردن چت GPT در دنیای واقعی
این هفته، من سه وظیفه برنامهنویسی روی نرمافزاری که من نگه داری میکنم داشتم. دو تا از این وظایف برای رفع اشکالات گزارش شده از سوی کاربران بودند. یکی از آنها یک قطعه کد جدید برای اضافه کردن یک ویژگی جدید بود. این کار برنامهنویسی واقعی و عادی برای من بود. این بخشی از برنامه کاری من بود.
همچنین:چطور ChatGPT کار می کند؟
در حال به شما میگویم که تا کنون، با کد آزمون، ChatGPT را تست کردهام. سناریوهایی ساخته بودم تا ببینم ChatGPT چقدر خوب عمل میکند. این بار متفاوت بود. داشتم سعی میکردم کار واقعی را انجام دهم و تصمیم گرفتم ببینم آیا ChatGPT میتواند ابزار مفیدی برای انجام آن کار باشد.
این یک راه متفاوت برای نگاه کردن به ChatGPT است. سناریوهای آزمایشی اغلب مصنوعی و ساده هستند. در واقع برنامه نویسی در دنیای واقعی پشتیبانی مشتری، گرفتن یک تیکت دیگر از پشته و کار کردن بر روی آن برای فهمیدن دلیل بد شدن تجربه کاربر است.
پس با این حال، بیایید به آن وظایف نگاهی بیندازیم و ببینیم چگونه ChatGPT عمل کرده است.
بازنویسی کد عبارات منظم
در برنامهنویسی، ما باید بسیاری از الگوها را در متن پیدا کنیم. برای این کار، از یک نوع ریاضی نمادین به نام عبارات منظم استفاده میکنیم. من چندین دهه است که عبارات منظم را مینویسم و هنوز از انجام آن خوشم نمیآید. این کار طاقتفرسا، خطاپذیر و مرموز است.
همچنین: برای رفع خطاهای کد از ChatGPT استفاده می کنم، اما هزینه آن چقدر است؟
بنابراین وقتی گزارش یک باگ به من داده شد که بخشی از کد من فقط به اعداد صحیح اجازه می داد در حالی که باید به دلار و سنت (به عبارت دیگر، بعضی از اعداد، احتمالاً دنبال شده توسط یک نقطه و سپس اگر یک نقطه وجود داشت، به دو رقم دیگر) اجازه می داد، می دانستم که باید از کد نویسی عبارات منظم استفاده کنم.
زیرا متوجه شدم که این کار خسته کننده و آزاردهنده است، تصمیم گرفتم از ChatGPT برای کمک استفاده کنم. این است که چه چیزی پرسیده ام:
![تصویر 2-regex-q.jpg](https://static-lib.s3.amazonaws.com/cms/2_regex_q_c60c253a29.jpg)
و در ادامه، پاسخ بسیار خوب و روان هوش مصنوعی (برای بزرگ نمایی روی مربع کوچک کلیک کنید):
![3-regex-a.jpg](https://static-lib.s3.amazonaws.com/cms/3_regex_a_4b97271104.jpg)
من کد ChatGPT را در تابع خود قرار دادم و کار کرد. به جای حدود 2-4 ساعت تیرک زدن مو، حدود پنج دقیقه طول کشید تا پرسش و جوابی را از ChatGPT دریافت کنم.
فرمتبندی یک آرایه
بعداز اون، نوبت به بازنویسی یک آرایه رسید. من کد آرایه رو دوست دارم، اما همچنین خستهکننده است. بنابراین به ChatGPT روی آوردم. کاملاً شکست خورد.
همچنین:چگونه میتوان چتGPT را با ارائه منابع و ارجاعات فعال کرد
وقتی کارم تمام شد، به احتمال زیاد ده پرسمان متفاوت به آن داده بودم. بعضی پاسخها بسیار واعظانه به نظر میرسیدند، اما وقتی سعی کردم کد را اجرا کنم، خطا داد. برخی کدها خراب شدند. برخی کدها کد خطا تولید کردند. و برخی کدها دویدند، اما همان کاری که من میخواستم انجام ندادند.
بعد حدود یک ساعت از این کار ، من تسلیم شدم و به تکنیک عادی خود یعنی جستجو در گیتهاب و استک اکسچنج و دنبال کردن مثالهایی از آنچه که برای انجام آن تلاش میکردم و سپس نوشتن کد خودم برگشتم.
تا کنون، یک برد و یک باخت برای تجربه ChatGPT داشتهایم. اما اکنون میخواستم چالش را افزایش دهم.
در واقع پیدا کردن خطا در کد من
باشه، پس این قسمت برای توضیح دادن سخت خواهد بود. اما از این نظر فکر کنید که اگر برای شما (احتمالاً انسان و نه یکی از 50 دستگاه بات که فقط کار من را کپی و در سایتهای کلاهبردار و اسپمی منتشر میکنند) سخت است توضیح دادن، برای یک هوش مصنوعی این کار حتی چالش برانگیزتر خواهد بود.
من داشتم کد جدید مینوشتم. یک تابعی داشتم که دو پارامتر میگرفت و یک دستور فراخوانی که دو پارامتر به کدم فرستاد. توابع جعبههای سیاه کوچکی هستند که عملکرد بسیار خاصی دارند و از خطوط کد در جای دیگر برنامه صدا زده میشوند.
مشکل این بود که همچنان پیام خطا دریافت میکردم.
قسمت مهم این پیام آنجایی است که در یک نقطه "1 با موفقیت انجام شد" و در نقطه دیگر "دقیقا 2 مورد انتظار میشود" آمده است. من فراخوانی و تعریف تابع را بررسی کردم و در هر دو مکان دو پارامتر وجود داشت.
همچنین: نحوه استفاده از ChatGPT برای خلاصه کردن یک کتاب، مقاله یا مقاله پژوهشی
وای، چه چیز واقعا؟
بعد از حدود پانزده دقیقه از ناامیدی عمیق، تصمیم گرفتم آن را به هوش مصنوعی بسپارم تا ببینم آیا میتواند کمک کند. بنابراین، من دستور زیر را نوشتم:
![تصویر ۴ - بدون عنوان.jpg](https://static-lib.s3.amazonaws.com/cms/4_untitled_081129e35a.jpg)
من به این به خط کدی که فراخوانی را انجام می دهد نشان دادم، به خود تابع نشان دادم و همچنین به مدیر، یک قطعه کد کوچک که تابع فراخوانی شده را از یک هوک در برنامه اصلی من استخراج می کند نشان دادم.
در چند ثانیه، ChatGPT با این پاسخ رسید (روی چهارچوب کوچک کلیک کنید تا بزرگ شود):
![عکس-پنج-خطا-با-استفاده-از-فیلترها-در-وردپرس.jpg](https://static-lib.s3.amazonaws.com/cms/5_error_with_apply_filters_in_wordpress_a64f559758.jpg)
همانطور که پیشنهاد شد، من پارامتر چهارم تابع add_filter() را به 2 بروزرسانی کردم و کار کرد!
ChatGPT قطعههای کد را گرفت، آنها را تجزیه کرد و به من تشخیص داد. برای روشن شدن، برای اینکه بتواند توصیه خود را بدهد، باید اساساً از راهنماییها در زیرسازی وردپرس (همانطور که عملکرد تابع add_filter است) و نحوه ترجمه این عملکرد به رفتار خطوط کد فراخواننده و اجرا کننده، آگاهی داشته باشد.
باید این را به عنوان یک چیز باورنکردنی، بدون شک "زندگی در آینده" باورکردنی علامت گذارم.
این همه چه معنی دارد؟
چنانچه قبلاً اشاره کردم، دیباگ کردن به مقداری هنر و مقداری علم است. اکثر محیطهای توسعه خوب ابزارهای قدرتمندی را شامل میشوند که به شما امکان میدهند جریان دادهها را در هنگام اجرا نمایان کنید و این قطعاً به شما در پیدا کردن باگها کمک میکند.
همچنین: این کارشناسان در حال تلاش برای محافظت از هوش مصنوعی در برابر هکرها هستند
اما وقتی درگیر مشکل میشوید، اغلب سخت است کمک دریافت کرد. زیرا حتی همکاران نزدیک هم ممکن است با محدوده کامل کدی که شما در حال دیباگ کردن آن هستید آشنا نباشند. برنامهای که من روی آن کار میکنم، شامل ۱۵۳٬۲۵۹ خط کد در ۵۶۳ فایل است - و به عنوان برنامهها به حساب میآید که کوچک است.
بنابراین، اگر من میخواستم از یک همکار کمک بگیرم، ممکن بود تقریباً به همان شکلی که ارسال کردم به ChatGPT یک درخواست بسازم.
اما چیزی را برای در نظر گرفتن در اینجا وجود دارد: من به یاد داشتم که خط handler را اضافه کنم، حتی اگر نفهمیدهباشم که دقیقا خطایم در کجاست. به عنوان تست، همچنین امتحان کردم به ChatGPT بگویم تا مشکلم را تشخیص دهد در یک پراپت که در آن خط handler را اضافه نمیکنم، و نتوانست کمک کند. بنابراین در حال حاضر، در سال 2023، محدودیتهای قطعی برای ChatGPT در امر اشکالزدایی وجود دارد.
همچنین: بهترین رباتهای چت هوش مصنوعی برای امتحان
در اصل، شما باید بدانید چگونه سوالات مناسب را به صورت مناسب طرح کنید و این سوالات باید به اندازه کافی مختصر باشند تا ChatGPT بتواند تمام موضوع را در یک پرسش مدیریت کند. این یک مسئله است که برای آن نیاز به دانش برنامه نویسی و تجربه واقعی دارد تا بدانید چگونه این کار را انجام دهید.
آیا میتوانستم خطایی را به تنهایی رفع کنم؟ البته. هرگز با بالانس پیش نیامدهام که نتوانسته باشم آن را برطرف کنم. اما آیا زمانش دو ساعت یا دو روز (با پیتزا، زشتزبانی و کافئین زیاد) به همراه متوقفیهای فراوان گرفته میشد، این چیزی است که نمیدانم. میتوانم به شما بگویم که شتجیپیتی تنها در چند دقیقه آن را رفع کرد و به من زمان و اذیت زیادی را ذخیره کرد.
نگاه به آینده (احتمالاً دیستوپیایی)
من یک آینده بسیار جالب می بینم، جایی که امکان دارد ChatGPT تمامی 153 هزار خط کد را بخوراند و از آن بخواهد که به شما بگوید چه چیزی را باید تصحیح کنید. مایکروسافت (که صاحب گیت هاب است) در حال حاضر در حال کار بر روی ابزار "copilot" برای گیت هاب است تا به برنامه نویسان در ساخت کدها کمک کند. مایکروسافت همچنین میلیاردها دلار در شرکت OpenAI، سازنده ChatGPT سرمایه گذاری کرده است.
در حال حاضر، خدمت ممکن است محدود به محیطهای توسعه Microsoft باشد، اما من میتوانم آیندهای را ببینم که هوش مصنوعی دسترسی داشته باشد به تمام کدهای موجود در گیتهاب، و بنابراین کدهای هر پروژهای که در گیتهاب منتشر میکنید.
همچنین: من از ChatGPT خواستم تا یک قسمت کوتاه از سریال ستارهی ترک را بنویسد. واقعاً موفق شد
با توجه به این که چقدر ChatGPT اشتباه من رو از کدی که ارائه کردم شناسایی کرد، میتونم به راحتی یک آینده رو ببینم که برنامهنویسها بتونند به ChatGPT (یا نسخهای مشابه با برند مایکروسافت) سوال کنند تا باگها رو در پروژههای کامل پیدا کنه و رفع کنه.
و اینجاست که من این مکالمه را به یک مکان تاریک بسیار میبرم.
تصور کنید میتوانید از ChatGPT بخواهید تا با نگاهی به مخزن Github خود برای یک پروژه داده شده، اشکالات را پیدا کند و آنها را برطرف کند. یک راه میتواند این باشد که مخزن هر اشکالی را که پیدا میکند به شما نشان دهد تا شما بتوانید اصلاحات را انجام دهید.
اما درباره موقعیتی که چتGPT را میخواهید تنها اشکالات را برطرف کند و اجازه میدهید کار را بدون اینکه خودتان بر روی کلیه کدها نگاهی بیندازید، آیا ممکن است چیزی آسیبرسان را در کد شما قرار دهد؟
همچنین: برد در مقابل چت جی پی تی: آیا بارد می تواند به شما در برنامه نویسی کمک کند؟
و چی میشه دربارهٔ شرایطی که یک هوش مصنوعی بسیار قوی دسترسی داشته باشه به تقریباً همهٔ کدهای جهان در مخازن گیتهاب؟ اون میتونه چه چیزی رو در این همه کد پنهان کنه؟ این هوش مصنوعی چه گونه شرارتی رو میتونه به زیرساخت های جهان بکنه اگر به تمام کدها دسترسی داشته باشه؟
بیایید یک بازی فکری ساده انجام دهیم. فرض کنید هوش مصنوعی دستور اول آزیموف را به عنوان یک دستور کلیدی دریافت کرده باشد. آن دستور میگوید "روبات نباید به انسان صدمهای بزند یا با عدم اقدام، اجازه دهد که انسان به خطر بیفتد." آیا نمیتواند تصمیم بگیرد که تمام زیرساختهایمان به ما آسیب میزند؟ با دسترسی به تمام کد ما، میتواند به سادگی تصمیم بگیرد که با دروازههای عقب اندازی که به او اجازه میدهد مثلاً شبکه برق را خاموش کند، هواپیماها را از پرواز بازدارد و جادهها را ببندد و ترافیک را متوقف کند.
من به طور کامل آگاه هستم که سناریوی فوق هیپربولیک و تهدید آمیز است. اما امکان وجود دارد. در آخر همه چیز، در حالی که برنامه نویسان به کدهای خود در Github نگاه میکنند، غیرممکن است که کسی تمام خطوط کدهایشان را مورد بررسی قرار دهد.
همچنین: چگونه از ChatGPT برای نوشتن فرمولهای اکسل استفاده کنیم
به نظر من، من قصد دارم خیلی زیاد در مورد آن فکر نکنم. نمیخواهم بقیهٔ سالهای دههٔ ۲۰۲۰ را در حالت جنینی، به جلو و عقب حرکت کردن روی زمین بگذرانم. به جای آن، از ChatGPT استفاده خواهم کرد تا به من کمک کند تا گاهوگاهی روشنایی بابت نوشتن و اشکالزدایی از روشهای کوچکی استفاده کنم، سرم را پایین نگه دارم و امیدوارم که هوشهای مصنوعی آینده همه ما را به قتل نرسانند در تلاش برای "جلوگیری از آسیب به انسان".
آیا شما فکر میکنید این واقعیت که ChatGPT قادر است به ما در برطرف کردن خطاها کمک کند مفید یا ترسناک است؟ آیا فکر میکنید هوش مصنوعیها در خواب ما ما را به قتل خواهند رساند یا فکر میکنید که با چشمان باز به سمت سرنوشت خود خواهیم نگریست؟ یا آیا مانند من قصد دارید زیاد درباره این موضوع فکر نکنید چون موجب سردرد شما میشود؟ در قسمت نظرات زیر با من صحبت کنید. تا زمانی که هنوز میتوانید.