۳۰ آذر ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

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

شاید شما آماده نباشید که هوش مصنوعی کد شما را بنویسد، اما برای آزمایش و تجزیه و تحلیل کد بسیار مفید است.

شاید شما آماده نباشید که هوش مصنوعی کد شما را بنویسد، اما برای آزمایش و تجزیه و تحلیل کد بسیار مفید است.

توسعه نرم‌افزار مبتنی بر هوش مصنوعی دیگر رویای آینده‌نگر نیست. با استفاده از GitHub Copilot، بیش از ۱.۲ میلیون توسعه‌دهنده در حال حاضر برای تولید کد از طرف خود به هوش مصنوعی متکی هستند و در زمان آنها (و پول شرکتشان) صرفه‌جویی می‌شود. اما در حالی که تمایل داریم بر روی Copilot به دلیل قابلیت‌های تولید کد چشمگیر و البته نوپای آن تمرکز کنیم، فرصت‌های بهتر و سریع‌تری برای مدل‌های AI/زبان بزرگ (LLM) در توسعه نرم‌افزار وجود دارد.

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

دومو آریگاتو، آقای روبوتو

توسعه دهندگان می دانند که باید کد خود را آزمایش کنند. با این حال آزمایش نرم افزار (و توسعه مبتنی بر تست) بیشتر مورد بحث قرار گرفته است. از انجام توسعه دهندگان ممکن است فاقد عینیت برای آزمایش مؤثر کد خود باشند، یا آن را به سادگی دشوار و کند می دانند. از تست واحد گرفته تا آزمایش ادغام تا تست رگرسیون (و فراتر از آن)، روش‌های مختلفی برای آزمایش وجود دارد، اما همگی هزینه‌ای دارند: آن‌ها تمایل به کاهش سرعت توسعه دارند – یا بهتر است بگوییم که به نظر می‌رسند. خروجی توسعه کوتاه مدت احتمالاً کند می شود، اما آزمایش خوب منجر به خروجی سریعتر و بلندمدت می شود.

پروژه هوش مصنوعی مولد شما شکست خواهد خورد

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

این جایی است که LLMهایی که چیزهایی مانند Copilot را تامین می‌کنند می‌توانند تأثیر زیادی داشته باشند.

در دهه ۸۰، استیکس آواز می‌خواند: “خیلی متشکرم، آقای روبوتو / برای انجام کارهایی که هیچ‌کس نمی‌خواهد.” بسیاری از توسعه دهندگان از انجام کارهای زشت اما ضروری تست نرم افزار بیزارند. چه می‌شد اگر هوش مصنوعی بتواند از آن مراقبت کند؟

یافتن ایرادات

LLMs می‌توانند با تولید کد دیگ بخار، به‌عنوان مثال، به ایجاد کد کمک کنند، تا توسعه‌دهندگان بتوانند روی کدهای با ارزش بالاتر تمرکز کنند، اما وابستگی به هوش مصنوعی جعبه سیاه می‌تواند کمی اعصاب خردکن باشد. همانطور که Ben Kehoe، دانشمند سابق تحقیقات رباتیک ابری iRobot، تاکید کرد، “بسیاری از برداشت‌های هوش مصنوعی که من می‌بینم ادعا می‌کنند که هوش مصنوعی می‌تواند کل مسئولیت را بر عهده بگیرد. یک وظیفه معین برای یک فرد، و به طور ضمنی فرض کنید که مسئولیت پذیری شخص در قبال آن کار به نوعی … از بین می رود؟ یک توسعه‌دهنده باتجربه ممکن است احساس راحتی کند که به LLM اجازه دهد برای او کد تولید کند، زیرا او این تخصص را دارد که تشخیص دهد چه زمانی ممکن است هوش مصنوعی اشتباه باشد. در مقابل، برای توسعه‌دهندگان کم‌تجربه، LLM می‌تواند آنها را به موقعیت‌هایی سوق دهد که برای انجام کارشان به ماشین‌ها متکی هستند، شاید کاملاً متوجه نباشند که هنوز مسئولیت آن کار را بر عهده دارند.

چگونه توسعه دهندگان برای ایمن سازی آسیب پذیری Log4j تلاش کردند

در مقابل،

داشتن کد بازبینی LLM با خطر کمتری همراه است. دوگان خاطرنشان می‌کند: «من شخصاً متعجب شده‌ام که [LLM] در شناسایی موارد آزمایش گم‌شده، منابع منتشر نشده، یا حتی به من گفتن اینکه چه مشکلی در خط‌مشی IAM من وجود دارد، چقدر مفید بوده‌اند. این به این معنی نیست که آنها کامل هستند. او ادامه می‌دهد، LLM‌ها “برای پیشنهاد بهینه‌سازی چندان مفید نیستند.” در عوض، «در یک سطح بالا، آنها می‌توانند در مورد فرصت‌هایی که وجود دارد صحبت کنند، اما نتایج در اولویت درستی نیستند. آنها برای حذف کد یا پاکسازی نیز مفید نیستند.”

گوگل از پروژه های منبع باز برای هوش مصنوعی رونمایی می کند

با این وجود، آنها می توانند به یک برنامه نویس کمک کنند تا به طور مؤثرتری مسائل را در زبان هایی که کمتر با آنها آشنا هستند شناسایی کند. به عنوان مثال، یک توسعه دهنده جاوا ممکن است از LLM برای بررسی کد Go استفاده کند. یا او می‌گوید، LLM‌ها همچنین می‌توانند برای “پیمایش بلوک‌های کوچک کد [یا] خاص خوب باشند. الگوریتم هایی که من با آنها آشنا نیستم. هوش مصنوعی کار هیچ توسعه‌دهنده نرم‌افزاری را از آن‌ها نمی‌گیرد. به هر حال به این زودی. اگر درست انجام شود، هوش مصنوعی می تواند به توسعه دهندگان کمک کند تا در کار خود بسیار بهتر شوند.

در مجموع، LLM ها، به طور خاص، و AI، به طور کلی، می توانند کار توسعه دهندگان را تکمیل کنند. نبوغ انسان را نمی توان جایگزین کرد، اما برخی از کارهای خسته کننده (مانند آزمایش) به طور فزاینده ای توسط ماشین ها انجام می شود تا توسعه دهندگان بتوانند زمان بیشتری را صرف … انسان کنند.