شهاب رهنما
شهاب رهنما
خواندن ۵ دقیقه·۱ سال پیش

بررسی نقادانه(۱): نگاهی به اثرات نرم‌افزارهای تولیدشده توسط هوش مصنوعی

اخیرا ذهنم درگیر این بود که سرنوشت برنامه نویسا چی میشه با این پیشرفت دیوانه وار هوش مصنوعی. گشتم و چندتا مقاله خوندم و اینجا سعی میکنم در چند پست توضیحشون بدم شما هم اگه نظری دارید به اشتراک بزارید ;)

هر طور نگاه کنی، ما در دنیای ماتریکس زندگی می‌کنیم. اگر نئو بود و به ما کمک میکرد تا لایه های اطراف رو کاوش کنیم،در اطرافمون کلی کد میدیدم. در واقع، جامعه مدرن بر روی کدها اداره می‌شه: یعنی چی؟ از زمانی که چیزی آنلاین یا در فروشگاه می‌خرید، کتابی را از کتابخانه به امانت می‌برید، نسخه‌ای از دارو را پر می کنید، مالیات میدید یا ماشینتون رو میرونید، احتمالاً با یک سیستم که توسط نرم‌افزار اداره میشه، تعامل می‌کنید.

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

فقط یه نگاه سریع به چند تا از شکست‌های خنده‌دار و بی‌نظیر نرم‌افزاری از دهه گذشته بندازیم. یادتون هست سال 2005 بود که نرم‌افزار پرخطا برای سیستم پردازش چمدان‌های فرودگاه بین‌المللی دنور طراحی شد؟(نه) اون نرم‌افزار با ارزش ۱۷۶ میلیون دلار به دنور اومده بود و بعدش به سادگی تصمیم گرفتن که کل اون سیستم رو دور بریزن. فراتر از اون، فکر کنید که چگونه یک باگ نرم‌افزاری در سیستم معاملات بورس نزدک در سال ۲۰۱۳ باعث متوقف شدن معاملات به مدت چند ساعت شد. چقدر خسارت زد؟ قابل محاسبه نیست :)‌ . به هر حال، تو سال 2019، یه باگ نرم‌افزاری توی پمپ انسولین شناسایی شد که به هکرها اجازه می‌داد که از راه دور اون پمپ رو کنترل کنن و به بیماران دوزهای اشتباه انسولین تزریق کنن. خداروشکر که هیچ کس چنین چیزی رو تجربه نکرد. واقعاً شکست‌های نرم‌افزاری خنده‌دار خیلی خیلی رایج هستن ولی آخرش همیشه ماهم می‌خندیم و یادگاری ازشون می‌مونه!

پمپ های انسولین
پمپ های انسولین


شکست‌های نرم‌افزاری خیلی از جاها رخ می‌ده. این خنده‌دار نیست، این عادیه! الان تعداد زیادی از برنامه‌های کامپیوتری داریم که یک نقص یا مشکل امنیتی دارند. بر اساس یک نظرسنجی تازه از شرکت Veracode، در حدود سه چهارم برنامه‌ها حداقل یک مشکل امنیتی داشته‌اند. یک پنجم هم حداقل یک مشکل خیلی جدی داشتن.

پس چیکار می‌شه کرد تا این مشکلات رخ ندن؟ تست و اشکال‌زدایی همچنان جزء مهمی از مسائل نرم‌افزاری هستن. اما وقتی می‌خوایم کار امنیتی رو هم در نظر بگیریم، یکم پیچیده‌تر می‌شه. برای اینکه از اول خطاها رو کمتر کنیم، از ابزارهایی مثل بررسی کد و روش‌های رسمی هم می‌شه استفاده کرد. اما دیگه نباید فکر کنیم که با این کارها همه‌چیز حله. به هر حال، باز هم مشکلات نرم‌افزاری و مسائل امنیتی روز به روز بیشتر می‌شن.

در همین حین، انقلاب مداوم هوش مصنوعی تاکید داره که توسعه نرم‌افزار رو دگرگون کنه و مردم راحتتر کد بنویسن، اشکال‌زدایی کنن و نرم‌افزارهاشون رو نگهداری کنن. ببینید، GitHub Copilot که روی OpenAI Codex بنا شده، یه سیستمه که متن زبان طبیعی رو به کد تبدیل می‌کنه و می‌تونه پیشنهادات کد در زبان‌های مختلف رو بر اساس پرامت‌های مناسب بده. و این تنها سیستمی نیست که این کار رو انجام میده، چون تعدادی سیستم دیگه هم مثل Amazon CodeWhisperer، CodeGeeX، GPT-Code-Clippy، Replit Ghostwriter، و Tabnine وجود دارن که با استفاده از هوش مصنوعی به شما کمک می‌کنن توسعه کد و تکمیل کد رو انجام بدید.

خیلی وقت نیست که OpenAI یک چت‌بات با نام ChatGPT را عرضه کرده، یک چت‌بات با ظرفیت نوشتن کد از طریق گفتگو. این باعث می‌شه که افرادی که تا به حال با برنامه‌نویسی سر و کله نزدن، به راحتی از این ابزار استفاده کنن و برنامه نویس بشن :).

میدونید کهChatGPT به تنهایی یک رابط زبانی طبیعی برای مدل زبانی GPT-3 و الان GPT-4 ئه. اما مهم اینه که این نسلی از GPT- 3 است، همانطور که Codex، مدل هوش مصنوعی OpenAI که متن زبان طبیعی را به کد ترجمه می‌کنه. این مدل همچنین برای GitHub Copilot استفاده می‌شه که حتی مورد استقبال برنامه‌نویسان حرفه‌ای شده. این به این معناست که ChatGPT، یک "برنامه‌نویس هوش مصنوعی بر پایه گفتگوئه"، میتونه کد‌های ساده و بسیار پیچیده را در زبان‌های برنامه‌نویسی مختلف بنویسه.

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

هدف اینه که با دقت به اون سوال آخر نگاه بشه، هوش مصنوعی در توسعه نرم‌افزار رو در سیاق مشخصی قرار بده، و مسائل و محدودیت‌های ممکنی که باهاش همراه هستند رو بررسی کنه. ولی خوب چون خسته میشید و میشم:

ادامه دارد ... :)

هوش مصنوعیتوسعه نرم افزاربرنامه نویسی
شاید از این پست‌ها خوشتان بیاید