کد تولید شده توسط هوش مصنوعی توسعه نرم افزار را برای همیشه متحول کرده است. این لزوما خوب نیست. یک فرآیند بازبینی جامد می تواند نفخ را کوچک کند و سطوح را مورد حمله قرار دهد.
طبق گفته GitHub، ابزارهای کدنویسی مانند GitHub Copilot می توانند به توسعه دهندگان کمک کنند تا ۵۵ درصد سریعتر کدنویسی کنند. هورای! درست؟ خوب، شاید نه. GitClear 153 میلیون خط کد تغییر یافته را بین ژانویه ۲۰۲۰ و دسامبر ۲۰۲۳ تجزیه و تحلیل کرد و اکنون انتظار می رود که ” درصد خطوطی که کمتر از دو هفته پس از تألیف بازگردانده یا بهروزرسانی میشوند در سال ۲۰۲۴ دو برابر میشود. به عبارت دیگر، «کد ایجاد شده در طول سال ۲۰۲۳ … شبیه یک مشارکتکننده دورهگرد است»، گویی که شما یک فرد کوتاهمدت استخدام کردهاید. پیمانکار بیش از اطمینان از قابلیت نگهداری آن، به دنبال ایجاد کدهای پرمخاطب است.
کد متورم کابوسهای امنیتی ایجاد میکند، از جمله مسائل دیگر، همانطور که برت هوبرت میگیرد. این بدان معنا نیست که توسعه دهندگان نباید از دستیارهای هوش مصنوعی استفاده کنند. در عوض، این نشان میدهد که باید مراقب بود تا اطمینان حاصل شود که اتکای بیش از حد به هوش مصنوعی، ماشینهای ما و کدی که آنها را اجرا میکند احمقانه نمیکند.
همه در حال انجام آن هستند
اگر هوش مصنوعی مولد (genAI) در سال گذشته مورد استفاده قرار نمی گرفت، نیاز چندانی به نگرانی وجود نداشت. همانطور که سایمون ویلیسون، خالق Datasette برجسته میکند، این پذیرش هم خوب است و هم بد. > او می نویسد: «در ۲۴ تا ۳۶ ماه گذشته، گونه ما کشف کرده است که شما می توانید یک مجموعه غول متنی را بردارید، آن را در انبوهی از GPU ها اجرا کنید و از آن برای ایجاد یک متن جذاب استفاده کنید. نوع جدید نرم افزار.” او ادامه می دهد که این نرم افزار می تواند به طور قابل توجهی زندگی ما را بهبود بخشد، اگر ما یاد بگیریم که بر آن مسلط شویم. خوشبختانه، مدلهای زبان بزرگ (LLM) «در واقع ساختن بسیار آسان هستند» و تنها به چند صد خط کد پایتون نیاز دارند.
بخش دشوار LLM ها کد مورد استفاده برای نوشتن آنها نیست، بلکه داده هایی است که برای آموزش آنها استفاده می شود. در سال ۲۰۲۳ ما روشهای جدیدی را یاد گرفتیم که با استفاده از نسل افزوده شده با بازیابی (RAG) و ابزارهای دیگر، آنها را از ریل دور نگه داریم (“توهم”). این خوب است.
در جنبه بد دفتر کل، ما همچنین متوجه میشویم که چقدر میتوانند پوسته پوسته باشند. از این گذشته، دانستن اینکه چگونه یک LLM را درخواست کنید هنوز یک هنر تاریک است (بدون ثبات). همانطور که ویلیسون میگوید، «کارهایی که گاهی اوقات مجبور میشوید انجام دهید تا مدلها رفتار کنند، اغلب فوقالعاده احمقانه هستند.» این در مورد ایجاد نرم افزار کمتر صادق است تا مثلاً درخواست از ChatGPT برای نوشتن یک مقاله ترم. اما هنوز هم درست است که گرفتن یک LLM برای انجام هر کار خاصی، تمرینی است برای دست زدن به دستگیره ها (اعلان ها) برای رسیدن به آنچه می خواهید.
بدترین بخش نرم افزار تولید شده با هوش مصنوعی – و به طور کلی نرم افزار امروزی – نفخ است. هوبرت میگوید: «هرچه [کد] بیشتری داشته باشید… خطرات بیشتری را متحمل میشوید». از برخی جهات، ما سعی کردهایم با ایجاد مشکل دیگران در اجرای نرمافزارمان، این مشکل را برطرف کنیم. هوبرت میگوید: «نرمافزار اکنون (به حق) آنقدر خطرناک در نظر گرفته میشود که به همه میگوییم خودشان آن را اجرا نکنند. نکته کلیدی این است که کد کمتری بنویسید. نرم افزار Leaner نرم افزار امن تری است. هوبرت میگوید: «دنیا کدهای زیادی ارسال میکند، بیشتر آنها توسط اشخاص ثالث، گاهی ناخواسته، و بیشتر آنها بازرسی نشده است. به همین دلیل، یک سطح حمله عظیم پر از کدهای متوسط وجود دارد.”
هوش مصنوعی مشکل را تشدید می کند.
نصب گیت
بررسی کد، هم به صورت خودکار توسط ماشینها و هم توسط افراد اجرا میشود، پاسخ این سوال است. می توان استدلال کرد که، مطمئنا، دستیارهای کدنویسی کدهای متورم و کمتر قابل نگهداری را ایجاد می کنند، اما هوش مصنوعی نیز نیاز افراد به حفظ آن را به حداقل می رساند. قابل قبول به نظر می رسد، درست است؟ اشتباه. سطح حمله گسترده شده باقی می ماند.
پاسخ به این معمای کیفیت کد احتمالاً همان است که همیشه بوده است: بررسی کد.
جایی که کد از آن ناشی میشود، اهمیت کمتری نسبت به فرآیندی دارد که توسط آن تیمهای توسعه به تولید فشار میآورند. همانطور که یکی از همکاران من اخیراً بیان کرده است، “کد خوب به همان اندازه که توسط توسعه دهندگان خوب ساخته می شود، توسط یک فرآیند خوب ساخته می شود.” این فرآیند بستگی به این دارد که توسعه دهندگان از مسئولیت خود برای یادگیری اصول اولیه توسعه نرم افزار شانه خالی نکنند. این خطر وجود دارد که افراد با تجربه کمتر. توسعهدهندگان از دشوارترین موضوعات مهندسی نرمافزار مانند ساختارهای داده و الگوریتمها، سیستمهای توزیعشده، شبکهها و غیره صرفنظر میکنند. این آنها را در موقعیت ضعیفی برای بررسی کد مؤثر قرار میدهد.
امیدوارم توسعهدهندگان هم فرصتهای جدیدی را که ابزارهای هوش مصنوعی فراهم میکنند، بپذیرند و در عین حال ریشههای خود را در موارد ضروری عمیق کنند که به آنها کمک میکند از ابزارهای هوش مصنوعی به طور مؤثر استفاده کنند و از آنها استفاده نکنند. این امید به واقعیت تبدیل خواهد شد، زیرا سرنخهای توسعه بر بررسیهای قوی کد اصرار میورزند، که به نوبه خود، سطح افرادی را که در فرآیند کدگذاری دخیل هستند، چه انسان و چه ماشین بالا میبرد.
پست های مرتبط
آیا هوش مصنوعی کد ما را احمقانه می کند؟
آیا هوش مصنوعی کد ما را احمقانه می کند؟
آیا هوش مصنوعی کد ما را احمقانه می کند؟