چند هفته پیش بود که با همکار خوبم حسین در مورد اکستنشنهای vscode صحبت میکردیم و رسیدیم به بحث auto complete و بهم گفت اخیرا یه چیزی معرفی شده به نام Github copilot که به نظر چیز جالبی میاد.
وجود کلمه Github در اسم این افزونه به عنوان سازنده این پروژه منو مصمم کردم که حتما یه نگاهی بهش بندازم، به همین جهت وبسایت این پروژه رو باز کردم و عملکردشو بررسی کردم.
همون ابتدای کار در وبسایتش یه جمله به چشم میخوره که نوشته Your AI pair programmer. هرچند وقتی شروع به کار باهاش بکنید متوجه میشین که copilot میتونه خیلی فراتر از یه pair programmer باشه :) همچنین ذکر شده که در حال حاضر در وضعیت Technical Preview قرار داره و فعلا انتشار همگانی نداشته.
توی وبسایتش نمونه کدهای مختلفی رو میتونید از زبانهای برنامهنویسی مختلف مشاهده کنید که به سادگی نوشتن یه کامنت تولید میشن. این امکان وجود داشت که برای بررسی این افزونه توی لیست انتظار ثبت نام کرد و از سر کنجکاوی تصمیم گرفتم ثبت نام کنم.
خوشبختانه حدود دو هفته بعد یه ایمیل از Github اومد که از الان میتونید Copilot رو نصب و شروع به بررسی بکنید. وقتی توی وبسایت رسمی Copilot نمونه عملکردشو بررسی میکردم برام جالب بود اما باید اعتراف کنم زمانی حیرتزده شدم که خودم به طور مستقیم باهاش کار کردم.
افزونه Github Copilot علاوه برای Auto complete قدرتمند، هوش مصنوعی فوق العاده و البته ترسناکی داره که ممکنه هر برنامه نویسی رو به فکر فرو ببره.
این افزونه علاوه بر تکمیل کردن کد شما هنگام کدنویسی، میتونه ادامه منطق برنامه شما رو حدس بزنه و نیاز شما رو به فکر کردن در مورد ادامه برنامهنویسی مرتفع کنه! اغراق نمیکنم... واقعا همینطوره.
زبانهای برنامهنویسی مختلف رو پشتیبانی میکنه و میتونه کد شما رو بر اساس نوع فایل، نام کامپوننت، تابع یا کلاس تکمیل کنه و پیشنهادهای موثری بده.
نیاز شما رو تا حد بسیار زیادی نسبت به پیدا کردن snippetهای مختلف و حتی پیچیده رو برطرف میکنه و به سادگی نوشتن یه کامنت میتونید به اونا دسترسی داشته باشین بدون اینکه برید سراغ گوگل.
به عنوان یه برنامه نویس خیلی پیش میاد که به تابع یا قطعه کدی نیاز داشته باشیم و بخوایم از اون داخل پروژه خودمون استفاده کنیم. Copilot این کد رو برای ما پیدا میکنه اونم با یه کد خیلی تمیز و مرتب و حتی براساس کدهای از پیش نوشته شده ما در فایل یا پروژه جاری. یعنی حتی کدهای موجود در پروژه خودتون رو پردازش میکنه تا کد پیشنهادیش بتونه تطبیق بهتری با کد پروژه شما داشته باشه.
برای مثال تنها با نوشتن این کامنت:
// function to add the "Amir" word to center of an image
کد زیر تولید شده:
function addText(image) { const canvas = document.createElement("canvas"); const ctx = canvas.getContext("2d"); const text = "Amir" const font = "30px Arial" const textWidth = ctx.measureText(text).width; const textHeight = 30; const imageWidth = image.width; const imageHeight = image.height; const x = (imageWidth - textWidth) / 2; const y = (imageHeight - textHeight) / 2; canvas.width = imageWidth; canvas.height = imageHeight; ctx.drawImage(image, 0, 0); ctx.font = font; ctx.fillStyle = "black" ctx.fillText(text, x, y); return canvas; }
همونطور که مشاهده میکنید داخل کامنت یکم شرایط رو خاص کردم و کد نهایی طبق اون شرایط تولید شده. (به صورت دستی هیچ گونه تغییری داخل کد تولید شده ندادم)
این کد رو داخل یه سند جاوااسکریپت نوشتم با این حال شما میتونید تقریبا توی هر زبانی درخواسستون رو داخل کامنت بنویسید تا یه کد خفن تحویل بگیرید.
البته برای تولید کد حتما نیاز به نوشتن کامنت نیست و برای مثال با نوشتن یک عنوان مناسب برای یک تابع هم میتونین به یه کد پیشنهادی خوب برسین. مثلا اگر هنگام کدنویسی تابعی تحت عنوان fetchUserFromGithub بنویسید، Copilot اون رو به صورت زیر تکمیل میکنه:
const fetchUserFromGithub = (username) => { return fetch(`https://api.github.com/users/${username}`) .then((response) => response.json()) .then((json) => json); };
خب... در صورتی که فکر کنین کمی دونستن زبان انگلیسی کافیه تا بتونیم به راحتی کدنویسی بکنیم باید بگم که Github Copilot حتی فارسی هم میفهمه!!
به کامنت زیر و کد تولید شده از روی اون توجه کنید:
// آرایه ای از استان های ایران var countries = [ "آذربایجان شرقی", "آذربایجان غربی", "اردبیل", "اصفهان", "ایلام", "بوشهر", "تهران", "چهارمحال و بختیاری", ];
و یا برای لود کردن jquery با cdn داخل یک سند html فقط کافیه کامنت زیر رو بنویسید تا نتیجه رو تحویل بگیرید:
<!-- jquery cdn --> <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous">
عملکردهای متنوعی رو میشه به کمک این افزونه انجام داد، همچنین این افزونه رفته رفته در حال پیشرفت، رفع نواقص و افزودن امکانات جدید هم. اگر شما هم تا الان با این افزونه کار کردین خوشحال میشم تجربیاتتون رو داخل کامنت ارسال کنین.
دنیای AI و هوش مصنوعی به سرعت رو به پیشرفته و حالا میتونیم به وضوح اون رو در بحث توسعه نرمافزار هم مشاهده کنیم. موردی که میتونه هر برنامه نویسی رو در مورد آینده شغلیش نگران کنه.
ضمنا، نظر شما در مورد پیشرفت روز افزون هوش مصنوعی چیه؟ آیا به عنوان یک برنامه نویس نگران از دست دادن شغلتون هستید؟