۳۰ شهریور ۱۴۰۳

Techboy

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

هوش مصنوعی خلبان من است: نوید تولید کد هوش مصنوعی

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

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

نقش ما به‌عنوان مهندسان نرم‌افزار در آستانه یک تحول اساسی است که به‌وسیله مدل‌های زبان بزرگ (LLM) به‌طور گسترده در دسترس، که به‌عنوان هوش مصنوعی مولد در دسترس هستند، هدایت می‌شود. (در حال حاضر از این سوال که آیا این واقعاً هوش مصنوعی است پرهیز می کنم، اما شکی نیست که این LLM ها قابلیت های چشمگیری دارند.) همانطور که من این مطلب را می نویسم، ChatGPT نام غالب در این بازی است، اما جایگزین هایی مانند Google Bard هستند. به سرعت به دست می آورد.

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

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

همه اینها قبلاً اتفاق افتاده است

وقتی جوان بودم و اولین وب‌سایت‌هایم را می‌ساختم، از Dreamweaver استفاده می‌کردم، ابزاری که قول می‌داد توسعه وب‌سایت را خودکار کند. شما می توانید یک الگو را انتخاب کنید یا الگوی خود را ایجاد کنید. مقداری کپی و تصویر اضافه کنید. تنظیمات WYSIWYG را انجام دهید. و Dreamweaver HTML و CSS را برای سایت شما منتشر می کند.

Dreamweaver کار کرد، به نوعی. کد تولید شده به طور کلی یک آشفتگی غیرقابل نگهداری بود، بنابراین من همیشه قبل از استقرار HTML را ویرایش می کردم. هنوز هم بسیار سریعتر از نوشتن HTML خام و CSS از ابتدا بود.

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

شما هنوز هم می توانید از Dreamweaver برای توسعه یک وب سایت استفاده کنید، و بسیاری از توسعه دهندگان این کار را انجام می دهند. بسته به قابلیت‌های خود و نیازهای وب‌سایتتان، می‌توانید از Visual Studio Code، Wix، Drupal، React Native، WordPress یا یکی از سازندگان وب‌سایت با قالب بسیار بالا مانند Squarespace نیز استفاده کنید. (من نظرات محکمی در مورد اینکه کدام یک از اینها را باید و نباید استفاده کنید دارم، اما برای نکته‌ای که در اینجا به آن اشاره می‌کنم این مهم نیست.)

بررسی: تجزیه اسناد در AWS، Azure و Google Cloud

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

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

ابزارها جایگزین افراد نشده اند. آنها به سادگی توانایی های خود را افزایش داده اند.

LLM ها پرحرف می شوند

من مجبور نیستم به شما بگویم که LLM ها و هوش مصنوعی مولد به نقطه عطفی رسیده اند. GPT-3، GPT-4، ChatGPT، Google Bard و دیگران از کنجکاوی حاشیه‌ای به وسواس فرهنگی تبدیل شده‌اند. مطمئناً، برخی تبلیغات وجود دارد، اما نوآوری‌های بسیار جالبی نیز در حال رخ دادن هستند، زیرا مردم راه‌های هوشمندانه‌ای برای به کارگیری این فناوری‌های جدید پیدا می‌کنند.

در شرکت خودم، ما به سرمایه‌گذاری در ابزارهای باکیفیت که زندگی مهندسانمان را آسان‌تر و کارآمدتر می‌کنند، اعتقاد داریم، بنابراین اخیراً مجوزهای GitHub Copilot را برای همه مهندسان خود خریداری کرده‌ایم. (ما با علاقه توسعه Amazon CodeWhisperer را تماشا می کنیم.) GitHub Copilot بر اساس OpenAI Codex ساخته شده است که توسط همان سازمانی که GPT-4 و ChatGPT را توسعه داده است. بنابراین Copilot اساساً پسر عموی ChatGPT است که در مهندسی نرم افزار تخصص دارد.

در اینجا نحوه استفاده مهندسان ما از GitHub Copilot آمده است:

  1. بهینه سازی کارهای خسته کننده: Copilot به ما امکان می دهد کارهای خسته کننده مانند پر کردن متغیرها در یک رابط یا الگوسازی یک عملکرد یا رفتار را سریعتر انجام دهیم.
  2. تکمیل خودکار هوشمند: Copilot در درک آنچه که یک مهندس به دنبال آن است و تکمیل آن برای آنها عالی است. این به ویژه برای نوشتن کدهای تکراری یا موارد آزمایشی مفید است، جایی که Copilot می‌تواند خود آزمایش را تولید کند و شرایط بعدی را به‌طور دقیق تحت آزمایش پیش‌بینی کند.
  3. تشخیص الگوها و ایجاد کد رسیدگی به خطا: Copilot می‌تواند الگوهای جدید را در کد شناسایی کرده و بر اساس آن آن را بازنویسی کند، و همچنین کد رسیدگی به خطا را برای توابع تولید کند.
2022: سال امنیت زنجیره تامین نرم افزار

مهندسین ما دریافتند که GitHub Copilot یک ضرب‌کننده نیرو است که باعث صرفه‌جویی در زمان و افزایش کارایی آنها می‌شود. با این حال، مهم است که توجه داشته باشید که Copilot بی خطا نیست و اغلب کدهای نادرست تولید می کند. (مردم GitHub و OpenAI در این مورد کاملاً شفاف هستند و به ما هشدار می دهند که تا زمانی که یک مهندس نرم افزار انسانی واجد شرایط آن را بررسی نکرده است به کد اعتماد نکنیم.)

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

در یک آزمایش اولیه، از ChatGPT (نه Copilot) خواستم تا strcopy() بدنام C را پیاده‌سازی کند، و آن تابعی برای من ساخت که در برابر حملات سرریز بافر آسیب‌پذیر بود. درستش کرد، توجه داشته باشید، وقتی از آن خواستم، اما رویکرد ساده لوحانه ای که در پیش گرفت بد بود. مهندسان من همچنین نمونه‌های کد تولید شده‌ای را با من به اشتراک گذاشته‌اند که در عین اینکه کاربردی هستند، نگهداری، بازسازی یا گسترش آن کابوس‌هایی هستند.

توسعه دهندگان انسانی منسوخ نیستند… حتی نزدیک هم نیستند.

جنون تسریع شده ایجاد کنید

هوش مصنوعی مولد – خواه GitHub Copilot، Amazon CodeWhisperer، Google Bard، یا هر چیز دیگری که قبل از اینکه بتوانم تایپ این کلمات را با چوب های گوشتی انسانی خود به پایان برسانم از تکینگی آینده پدیدار شود – آنچه را که ما در مهندسی نرم افزار بیشترین ارزش را انتخاب می کنیم، تقویت خواهد کرد.< /p>

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

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

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

ابرها نمی توانند توسعه دهندگان را فراموش کنند

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

عصر آهن

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

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

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

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

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

من برای اولین بار به همکاران روبات خود خوش آمد می گویم. آنها اینجا نیستند که شغل ما را بگیرند. اما اگر آنها را به خوبی آموزش دهیم و مسئولانه از آنها استفاده کنیم، ما را بهتر خواهند کرد.