هوش مصنوعی در حال تغییر توسعه نرم‌افزار است، اما نه همیشه به بهتر شدن

هوش مصنوعی، برنامه نویسی، تاثیر هوش مصنوعی در برنامه نویسی 1404/2/22
نویسنده: مدرس بهمن آبادی

هوش مصنوعی در حال تغییر توسعه نرم‌افزار است، اما نه همیشه به بهتر شدن

AI is changing software development, but not always for the better

منبع: https://www.developer-tech.com

هوش مصنوعی در حال تغییر توسعه نرم‌افزار است، اما نه همیشه به بهتر شدن

 

توسعه نرم‌افزار درست جلوی چشمان ما در حال تغییر است و هوش مصنوعی به یک همکار واقعی برای توسعه‌دهندگان در سراسر جهان تبدیل شده است.

این تغییر فقط در استارتاپ‌های مد روز اتفاق نمی‌افتد، غول‌های فناوری هم کاملاً درگیر آن هستند. اخیراً به لطف گفت‌وگویی بین ساتیا نادلا، مدیرعامل مایکروسافت، و مارک زاکربرگ از متا، نگاهی جذاب به پشت پرده این موضوع داشتیم.

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

در رویداد LlamaCon AI متا، زاکربرگ مستقیماً از نادلا درباره تأثیر هوش مصنوعی در مایکروسافت سؤال کرد. سؤالش ساده بود: «آیا حس می‌کنید که چه مقدار از کد، مثلاً چند درصد از کدی که الان در مایکروسافت نوشته می‌شود، توسط هوش مصنوعی نوشته شده و نه توسط مهندسان؟»

نادلا پاسخ داد که مایکروسافت میزان پذیرش پیشنهادات کدنویسی هوش مصنوعی توسط توسعه‌دهندگان را رصد می‌کند و اگرچه این مقدار از پروژه‌ای به پروژه دیگر متفاوت است، حدود 20 تا 30 درصد از کدهای موجود در مخازن مایکروسافت امروزه «احتمالاً تماماً توسط نرم‌افزار نوشته شده‌اند.»

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

نادلا نکته‌ای را هم اضافه کرد: به نظر می‌رسد هوش مصنوعی در نوشتن کدهای جدید از صفر بسیار بهتر عمل می‌کند تا در تلاش برای بازسازی یا اصلاح نرم‌افزارهای قدیمی و موجود. او همچنین به چالش زبان‌های برنامه‌نویسی قدیمی‌تر اشاره کرد و C++ را به‌عنوان مثال آورد.

نادلا C++ را به‌عنوان زبانی «چندان عالی» برای کار با هوش مصنوعی ارزیابی کرد، احتمالاً به دلیل پیچیدگی‌های آن. در مقابل، او توانایی هوش مصنوعی در نوشتن زبان‌های مدرن مانند پایتون را «فوق‌العاده» توصیف کرد.

این یک یادآوری خوب است که هوش مصنوعی در توسعه نرم‌افزار یک چوب جادویی نیست؛ کارایی آن به نوع وظیفه، زبان برنامه‌نویسی و میزان ساختارمند بودن پروژه بستگی دارد.

وقتی نادلا سؤال را به زاکربرگ برگرداند و درباره آمار متا پرسید، زاکربرگ کمی محتاط‌تر بود و از ارائه یک عدد مشخص در حال حاضر خودداری کرد.

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

اما زاکربرگ درباره جهت‌گیری متا در استفاده از هوش مصنوعی در توسعه نرم‌افزار کاملاً شفاف بود. او حتی فاش کرد که متا روی «ساخت یک مهندس هوش مصنوعی و یادگیری ماشین برای پیشبرد توسعه خود لاما» متمرکز است.

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

در این پروژه خاص، زاکربرگ پیش‌بینی جسورانه‌ای کرد که در سال آینده «نیمی از توسعه توسط هوش مصنوعی انجام خواهد شد، نه توسط انسان‌ها، و این میزان از آنجا به بعد افزایش خواهد یافت.»

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

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

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

این تغییر هوش مصنوعی واقعاً برای توسعه‌دهندگان و صنعت چه معنایی دارد؟

شنیدن صحبت‌های نادلا و زاکربرگ واقعاً دو روی این سکه را نشان می‌دهد: پتانسیل عظیم در کنار موانع بسیار واقعی.

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

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

با این حال، هوش مصنوعی سؤالات و چالش‌های جدی را نیز به همراه دارد:

  • اعتماد به کد: هوش مصنوعی «فکر» نمی‌کند؛ بر اساس الگوها تولید می‌کند. می‌تواند کدی تولید کند که ظاهراً درست به نظر می‌رسد اما به‌طور ظریفی خراب، ناامن یا کاملاً اشتباه است («توهمات»). آزمایش کامل و نظارت انسانی اختیاری نیست، بلکه حیاتی است.
  • نگرانی‌های امنیتی: وقتی از هوش مصنوعی برای توسعه نرم‌افزار استفاده می‌شود، ممکن است عادات امنیتی بد را از داده‌های آموزشی خود کپی کند یا نقاط ضعف جدیدی ایجاد کند که شناسایی آن‌ها برای انسان‌ها دشوار است.
  • رفع اشکال کد هوش مصنوعی: رفع باگ در کدی که خودتان ننوشته‌اید همیشه سخت‌تر است. اگر کد توسط هوش مصنوعی تولید شده و منطق داخلی آن واضح نباشد، این کار حتی دشوارتر می‌شود.
  • مشکل «چیزهای قدیمی»: همان‌طور که نادلا درباره C++ اشاره کرد، هوش مصنوعی اغلب در سیستم‌های قدیمی و پیچیده با ویژگی‌های عجیب و تاریخچه مستند نشده به مشکل برمی‌خورد. استفاده از هوش مصنوعی برای مدرن‌سازی این غول‌های قدیمی همچنان بسیار دشوار است.
  • مالکیت و حق کپی‌رایت: کد تولیدشده توسط هوش مصنوعی س вопросы قانونی پیچیده‌ای درباره حق کپی‌رایت و مجوزها ایجاد می‌کند. اگر هوش مصنوعی از کد منبع باز یاد گرفته باشد، چه قوانینی برای کدی که تولید می‌کند اعمال می‌شود؟ شرکت‌ها هنوز در حال حل این موضوع هستند.
  • چه بر سر مهارت‌های انسانی می‌آید: اگرچه هوش مصنوعی احتمالاً توسعه‌دهندگان را یک‌شبه منسوخ نمی‌کند، شغل آن‌ها در حال تغییر است. آیا بیش از حد به هوش مصنوعی وابسته خواهیم شد و مهارت‌های اساسی را از دست خواهیم داد؟ نقش به نظر می‌رسد به سمت هدایت هوش مصنوعی، بررسی کار آن و یکپارچه‌سازی سیستم‌ها در حال تغییر است.
  • سوگیری‌های پنهان: هوش مصنوعی از داده‌هایی که روی آن‌ها آموزش دیده یاد می‌گیرد. اگر این داده‌ها شامل سوگیری‌هایی (مرتبط با جنسیت، نژاد و غیره) باشند، هوش مصنوعی ممکن است آن‌ها را در نرم‌افزاری که کمک به ساخت آن می‌کند بازتولید کند.

موضع نادلا و زاکربرگ به نظر نمی‌رسد که هوش مصنوعی قرار است کنترل را به دست بگیرد، بلکه بیشتر به شراکت اشاره دارد. نقش توسعه‌دهنده به نظر می‌رسد در حال تحول به چیزی شبیه یک خلبان و استراتژیست است، با هوش مصنوعی که به‌عنوان یک کمک‌خلبان قدرتمند عمل می‌کند.

توسعه‌دهنده انسانی: همچنان در جایگاه راننده

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

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

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

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

ویرایشگر و مترجم : مهندس بهمن آبادی

منبع: https://www.developer-tech.com/news/ai-is-changing-software-development-not-always-for-the-better/