برنامه نویسی

توسعه AI محور: آزمایش پایگاه داده من

بحث های زیادی در مورد نقش AI در برنامه نویسی وجود دارد. من به عنوان یک مهندس ، من از روزهای ابتدایی آنها با مدل های بزرگ زبان و Genai کار کرده ام. من تصمیم گرفتم که از این بحث استفاده کنم و هوش مصنوعی را در یک آزمایش عملی قرار دهم: یک سرویس پایگاه داده مانند DynamoDB را از ابتدا با کمک هوش مصنوعی بسازید. زیرا چه کسی عاشق یک چالش پایگاه داده خوب نیست؟

ایده ایجاد یک سرویس با ویژگی های زیر بود:

  1. API مانند DynamoDB: اجرای ملزومات از PutItem به TransactWriteItemsبشر
  2. لایه ذخیره سازی قوی: اجرای RocksDB با پشتیبانی کامل از معامله.
  3. ارتباط مدرن: سرویس GRPC با کارایی بالا ، سریال سازی بافر پروتکل و TLS 1.3 (از جمله احراز هویت متقابل).
  4. کانتینر سازی: پشتیبانی Docker Multi-arch و تجمع Kubernetes.
  5. شبیه سازی توسعه چابک: به جای ارائه یک طراحی کامل به صورت مقدماتی ، شروع به اضافه کردن (تولید) ویژگی های جدید و مکرر کنید. (این تا حدودی یک ضرورت بود زیرا من در آخر هفته ها روی آن کار کردم).
  6. توسعه AI محور: بگذارید AI روند توسعه را تا حد امکان هدایت کند.

نتایج

رویکرد توسعه عملی و تعاملی بود. گردش کار به شرح زیر بود:

  1. با جلسات هوش مصنوعی تعاملی برای ترسیم استراتژی های اجرای با استفاده از چت آمازون Q شروع کنید.
  2. کد تولید شده را بررسی کرده و تکرار کنید تا زمانی که استانداردهای من را رعایت کند.
  3. از کد تولید شده به عنوان پایه استفاده کنید.
  4. تولید کد درون خطی را برای اصلاحات ، پسوندها و ویژگی های جدید با استفاده از تولید کد درون خط آمازون Q اهرم کنید.
  5. مفاهیم منتخب را با استفاده از گپ Google Gemini بررسی کنید.

این اعداد حتی من را شگفت زده کردند: تقریباً 80 ٪ از کد برنامه تولید شده بود ، با پوشش آزمایشی 90 ٪ چشمگیر (اگر بیشتر نباشد).

Amazon Q دانش چشمگیر را در سراسر پشته فناوری انتخاب شده نشان داد: ساخت ابزار و چارچوب های آزمایش (Gradle ، Junit5 ، Mockito) ، پروتکل های ارتباطی از جمله امنیت حمل و نقل (GRPC ، بافر پروتکل ، TLS 1.3) ، بانک اطلاعاتی RocksDB و فن آوری های استقرار (Docker ، Kubernetes).

من می خواهم از این آزمایش سه چیز اصلی را صدا کنم:

  1. گردش کار توسعه. برای بیان واضح: اولین کد تولید شده همیشه بهترین نیست. با ارائه بازخورد و درخواست پیشرفت ، کیفیت کد تولید شده به میزان قابل توجهی بهبود یافته است.
    به عنوان مثال ، تست های پیش فرض Junit برای سرویس GRPC از مسخره استفاده نمی کردند بلکه در عوض از اجرای اساسی استفاده می کردند. وقتی درخواست مسخره کردم ، تست های Junit را با مسخره های رابط دریافت کردم. هنگامی که من تست هایی با Mocks داشتم ، تولید کد درون خطی کد موجود را دنبال کرد و شروع به تولید کد با مسخره کرد.

  2. برجسته در TransactWriteItems پیاده سازی به ویژه قابلیت های هوش مصنوعی را نشان می دهد ، و همه چیز را از تعاریف بافر پروتکل ، اجرای GRPC ، اجرای RocksDB تا @FunctionalInterface جاوا لامبدا برای ارسال معاملات RocksDB.
    در ابتدا ، تولید کد درون خطی در تولید زنجیره های صحیح سازندگان جاوا برای این عملیات پیچیده مشکل داشت (TransactWriteItems ترکیبی از لیستی از PutItemبا UpdateItemبا DeleteItem عملیات) برای به دست آوردن زنجیره های صحیح سازندگان جاوا ، من از رابط چت Amazon Q استفاده کردم و تعریف Proto را به عنوان ورودی ارائه دادم. پس از دریافت کد کار ، اجرای باقی مانده را با استفاده از تولید کد درون خطی انجام دادم. آزمون واحد برای TransactWriteItems تقریباً به طور کامل توسط تولید کد درون خطی اجرا شد ، به جز مسخره کردن بیان جاوا لامبدا برای ارسال معامله RocksDB ، که به نظر می رسید یک چالش برای ابزار درون خطی است. باز هم ، من آن را با استفاده از ویژگی چت ، جایی که مشکل را توضیح دادم حل کردم و آن را چسباندم @FunctionalInterface تعریف برای زمینه اضافی. بقیه آزمون واحد توسط تولید کد درون خطی به پایان رسید.
    در نتیجه ، بیشتر (حدود 95 ٪) از TransactWriteItems ویژگی (تعریف ProtoBUF ، اجرای سرویس GRPC ، اجرای RocksDB و تمام تست های واحد) تولید شده است. کاملاً چشمگیر ، باید بگویم.

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

غذای اصلی

در اینجا غذای اصلی من است:

  1. هوش مصنوعی در اجرای الگوهای خوب تعریف شده بسیار عالی است. هرچه زمینه بیشتر باشد ، کد تولید شده بهتر و دقیق تر خواهد بود.
  2. هوش مصنوعی در تولید کد دیگ بخار عالی است.
  3. هوش مصنوعی برای نوشتن تست های واحد بسیار مفید است. ژنراتور کد درون خطی بسیار دقیق از الگوی Arrange-Act-Asert پیروی می کند و بسیار دقیق پیش بینی می کند که چه چیزی و چگونه می خواهید کد خود را آزمایش کنید.
  4. جلسات هوش مصنوعی تعاملی برای شروع از ابتدا یا در شرایطی که هنوز (هنوز) زمینه کافی در کد موجود وجود ندارد ، عالی است.
  5. جلسات هوش مصنوعی تعاملی نتایج بهتری نسبت به نسل های خطی سریع ایجاد می کند.
  6. تصمیمات پیچیده معماری از نظارت و تجربه انسان بهره می برد.
  7. برخی از جنبه ها (موارد متقاطع) هنوز به ورودی قابل توجهی انسانی احتیاج دارند.

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

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

آیا می خواهید به آزمایش بپیوندید؟

این پروژه منبع باز است و از مشارکتها استقبال می کند – با یک شرط: درخواست های کشش باید در درجه اول از کد تولید شده AI تشکیل شود 🙂

برای اطلاعات بیشتر ، به: https://github.com/lukaszbudnik/roxdb مراجعه کنید.

نوشته های مشابه

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

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

دکمه بازگشت به بالا