کامپیوترها خودشان را تعمیر می‌کنند

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

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

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

تست کردن و باز هم تست کردن …

یکی از راههای معمول تست یک نرم افزار این است که آن را اجرا می کنیم و سپس از آن می خواهیم که کارهای خاصی را انجام دهد و ببینیم چگونه از پس آنها بر میاید. ابزارهای زیادی برای انجام این روش که به تحلیل پویا یا Dynamic Analysisمعروف است، وجود دارد که هزاران تست تصادفی روی نرم افزار انجام می دهند و جوابها را بررسی می کنند.

فیسبوک اخیر از ابزاری به اسم Sapienz پرده برداری کرد که جهشی عظیم در این راستا محسوب می شود. Sapienz که در اصل توسط دانشگاه کالج لندن توسعه یافته است، قادر است تا اشکالات یا باگهای برنامه های اندروید را به صورت اتوماتیک و با تستهایی بسیار مؤثرتر از رقبا انجام می دهد. این روش بجای انجام انتخابهای متعدد ( معمولا چیزی نزدیک به ۱۵۰۰۰) نیاز به انتخاب ۱۰۰ تا ۱۵۰ انتخاب توسط  کاربر دارد.

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

 

Software Bug's

 

Sapienz احتمالا بزودی مجبور است تا با رقیبی تازه به نام Diffblue دست و پنچه نرم کند. Diffblue پروژه ای جدا شده از دانشگاه آکسفورد است  دارای یک موتور هوش مصنوعی است که برای فهم و بررسی نوع فعالیت یک برنامه طراحی شده است. کمپانی توسعه دهنده Diffblue همچنین در حال توسعه چند ابزار دیگر برای کمک به برنامه نویسان است. یک از آنها باگها را پیدا می کند و تستهای نرم افزاری می نویسد، دیگری نقطه ضعفهایی را پیدا می کند که می تواند توسط هکرها مورد استفاده قرار گیرند و سومی کدهایی را که می توانست بهتر نوشته شود و یا قدیمی هستند را، بهینه سازی می کند. Diffblue اخیرا ۲۲ میلیون دلار سهام سرمایه گذاری جمع کرده است و ادعا می کند که در حال ارائه این ابزارها به تعداد زیادی از کمپانیهای بزرگ است.

نرم افزاری که ما در حال توسعه اش هستیم مخصوص شکار باگهای برنامه نویسی است. باگها معمولا اشتباهات تایپی هستند، مثلا تایپ کردن + به جای –  ، دقیقا مثل اشتباهاتی که در تایپ یک فایل ورد اتفاق می افتد. بعضی هم به دلیل این اتفاق می افتند که بعضی دانشمندان علم کامپیوتر،  جور دیگری شمارش می کنند، یعنی به جای شروع از عدد یک از عدد صفر شروع می کنند. این اشتباه به Off by one error معروف است.

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

 

ٌ Where's Waldo

 

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

ما این ابزار را به مدت ۴ ماه در شرکت Reykjavik با حدود ۲۰۰ کاربر آزمایش کردیم و در این مدت ۲۲ باگ گزارش شد که همه آنها به صورت خودکار تصحیح شد. همه این راه حلها در شیفت شب شرکت پیدا شدند. یعنی وقتی برنامه نویسها صبح سرکار آمدند یک لیست برای تصحیح این باگها برای آنها آماده شده بود.

ایده آن است که امکان کنترل بیشتری به برنامه نویس داده شود. بررسی های روتین کمتر و خلاقیت بیشتر. تاثیر این ابزار در برنامه نویسی قابل مقایسه با تاثیر غلط گیرهای املایی در تایپ صحیح اسناد است. هر دوی این ابزارها به نویسنده کمک می کنند تا مدت زمانی را که به بد بیراه گفتن به کامپیوتر می گذرانند، کاهش دهند.

ما توانستیم نشان دهیم که این روند می تواند در فعالیتهای دیگری هم اعمال شود. مثل کمک به سریعتر اجرا شدن برنامه ها و بالاتر بردن نرم افزارهایی که برای پیش بینی از آنها استفاده می شود.

آیا این تغییرات در آینده تاثیری منفی بر حرفه برنامه نویسی خواهد داشت ؟

تشخیص اینکه چرا این برنامه ها می توانند برای برنامه نویسها مؤثر باشند، کار سختی نیست ولی درباره جنبه های منفی آن چه می توان گفت؟ آیا همه کمپانی ها خواهند توانست بخش IT خود را سبک تر کنند یا اینکه آیا برنامه نویس ها باید منتظر دریافت نامه اخراج خود توسط این برنامه های خودکار باشند؟

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

شغلها در حوزه کامپیوتر حذف نخواهند شد ولی حذف بعضی از وظایف خسته کننده آنها امکان پذیر است. برنامه نویسان، مهندسین نرم افزار و کد نویسها ابزارهای خودکار ساز بیشتری در اختیار خواهند داشت تا کارشان را آسانتر کند و بازده کارشان را بالاتر ببرد.

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

تانی کال

نت نوشت

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *