ترکیب کد با کمک یادگیری ماشینی

سیستم هوش مصنوعی جدید با تقلید از سایر برنامه ها، کدهای اختصاصی خود را می نویسد

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

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

به بیان Armando Solar-Lezama از MIT که در این حوزه فعالیتی نداشته، با استفاده از این سیستم بهره وری افراد و نیروی انسانی افزایش پیدا می کند و آنها قادر به ساخت سیستم هایی می گردند که پیش از این ساختشان غیرممکن بود.

به گفته یکی از سازندگان DeepCoder به نام Marc Brockschmidt، بدین ترتیب افرادی که فعالیتی در زمینه کدنویسی ندارند قادر به شرح ایده برای برنامه می گردند و سیستم مابقی کار را به عهده می گیرد و ایده ذهنی آنها را عملی می کند.

ترکیب کد با کمک یادگیری ماشینی

DeepCoder از تکنیکی با نام program synthesis (ساخت خودکار برنامه توسط کامپیوتر) بهره می گیرد که در حقیقت ساخت برنامه های جدید با کنار هم قرار دادن خطوط کد از نرم افزار کنونی می باشد که مشابه عملیاتی است که توسط برنامه نویس صورت می پذیرد. با در اختیار قرار دادن لیستی از ورودی ها و خروجی ها برای هر فرگمنت از کد، DeepCoder یاد گرفت که کدامیک از بخش های کد برای دستیابی به نتیجه موردنظر لازمند.

"این سیستم افرادی را که کدنویسی بلد نیستند، قادر به شرح ایده برای برنامه و ساخت آن توسط سیستم می نماید."

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

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

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

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

در حال حاضر DeepCoder تنها قادر به حل چالش های برنامه نویسی است که حدود 5 خط کد دارند. و معمولا همین چند خط هم برای برنامه های نسبتا پیچیده اهمیت دارند.

به گفته Solar-Lezama تولید حجم بزرگی از کد در مدت زمان اندک کار دشوار و غیر واقع بینانه ای است، اما این بخش های بزرگ از کد با در کنار هم قرار دادن بخش های کوچک ساخته می شوند.

 

https://www.newscientist.com برگرفته از

اینها را هم بخوانید