بازنویسی یک برنامه قدیمی با AI: یک بررسی واقعیت

tl ؛ دکتر:
- ابزارهای برنامه نویسی هوش مصنوعی و LLM هایی که آنها را هدایت می کنند می توانند قدرتمند باشند ، اما به طور پیش فرض آنها آگاه نیستند.
- بسته های منسوخ و شیوه های ناامن می توانند در آن خزنده شوند. LLM ها را “فقط بدانید” فرض نکنید.
- واضح و روشن و خاص اهمیت بیش از آنچه فکر می کنید اهمیت دارند.
- از خطوط خودکار ، ابزارهای SAST/DAST یا چکرهای وابستگی استفاده نکنید. AI آنها را جایگزین نمی کند.
- بررسی کد هنوز هم اهمیت دارد. خیلی زیاد
در طول حرفه ام ، من یک شک و تردید سالم را به اعتیاد به مواد مخدره که با هر موج جدید فناوری همراه است ، آورده ام و تولید کد AI فرقی ندارد. حتی اکنون ، کار در یک شرکت سازمانی برای بهبود امنیت و بهره وری برای توسعه دهندگان AI ، شک و تردیدهای خود را داشتم. آیا LLM ها در واقع می توانند کد با کیفیت بالا و با کیفیت بالا تولید کنند؟ آیا می توان به برنامه های دنیای واقعی اعتماد کرد ، به خصوص برای افرادی مثل من که توسعه دهنده تمام وقت نیستند؟
این شک و تردید شکل می دهد که چگونه من به اکتشاف خود در مورد این ابزارها نزدیک شده ام. من فقط کنجکاو نیستم که آنها می توانند از جعبه چه کاری انجام دهند ، می خواهم درک کنم که چگونه از آنها استفاده کنم بطور مؤثربشر دستیاران کد نویسی AI و LLM ها واقعاً به کجا کمک می کنند؟ کجا کوتاه می آیند؟ و چگونه می توانیم آنها را راهنمایی کنیم تا نتایج بهتری کسب کنند؟
به سرعت مشخص شد که هوش مصنوعی می تواند به نوشتن کد کمک کند اما مسئولیت آن را به عهده نمی گیرد. این هنوز هم روی ما می افتد ، به خصوص وقتی که امنیت چیزها را حفظ می کند. LLM ها “فقط آن را دریافت نمی کنند.” شما هنوز هم مسئول اطمینان از اطمینان از کدی که مستقر است ، حتی اگر یک هوش مصنوعی آن را بنویسد. “برنامه نویسی VIBE” با هوش مصنوعی شما را در هنگام ایجاد یک صفحه ورود به سیستم ناامن یا از بسته های مستهلک ذخیره نمی کند.
یک آزمایش در دنیای واقعی
برای زمینه: من یک مدرک علوم کامپیوتر دارم و در اوایل کار خود به عنوان یک توسعه دهنده می گذرانم. من به سرعت در زیرساخت ها قرار گرفتم ، جایی که من به شدت روی اتوماسیون متمرکز شدم و اکنون با تمرکز اخیر روی کدگذاری کمک شده هوش مصنوعی در بازاریابی فنی کار می کنم. من درک بنیادی خود را از ساختار برنامه و خطرات امنیتی حفظ کرده ام ، اما من در اینجا به ابزارهای هوش مصنوعی اعتماد کردم تا به خودم بیاموزم که چگونه با آنها کار کنم و شکاف های دانش پیتون خود را پر کنم.
من اخیراً یک برنامه وب بسیار قدیمی مبتنی بر PHP را غرق کردم. این یک ابزار کوچک برای بررسی شرکت کنندگان در جلسات جامعه ، چاپ نشانگرهای نام و انتخاب برندگان برای جوایز درب است. به هیچ وجه از اهمیت ویژه ای برخوردار نیست ، اما من کنجکاو بودم که چگونه یک LLM مانند کلود می تواند به نوسازی آن کمک کند.
بنابراین من از Cline استفاده کردم و از Claude 3.7 Sonnet خواستم تا آن را در پایتون/جنگو بازسازی کند. بعداً چند مورد و تکرارها ، من یک برنامه کار داشتم. پیروزی ، درست است؟
نه کاملاً
مشکلات
-
نسخه های قدیمی: کلود به Django 4 پیش فرض کرد ، حتی اگر Django 5 قبل از قطع دانش آن منتشر شد. کلود احتمالاً این انتخاب را انجام داده است زیرا بیشتر نمونه های عمومی در طول آموزش خود هنوز بر اساس Django 4 ساخته شده است. LLM ها بر اساس آنچه که بیشتر دیده اند ، کد تولید می کنند ، نه لزوماً آنچه در حال حاضر است. من مجبور شدم صریحاً از Django 5 بخواهم قبل از آنکه حتی از آن استفاده کند.
-
وابستگی های منسوخ: بیشتر کتابخانه هایی که انتخاب کرده اند منسوخ شده اند (تا سالها در برخی موارد) حتی در پنجره دانش فرضی مدل.
-
امنیت رمز عبور شکست خورد: برای ورود به سیستم ، Claude MD5 را برای ذخیره رمز عبور اجرا کرد. در سال 2025. yikes.
-
OWASP 10 برتر؟ نه: هنگامی که من از آن خواستم که کد خود را در برابر 10 OWASP Top بررسی کند ، این مسائل درخشان را پیدا کرد: کوکی های ناامن ، خطرات XSS ، رسیدگی به جلسه ضعیف.
این موارد لبه یا سناریوهای طاقچه نبود. آنها اشتباهات کتاب درسی بودند.
آنچه من بردم
این تجربه چند مورد را برای من روشن کرد:
-
مهندسی سریع واقعاً مهم است. اگر من با مشخص کردن نسخه هایی که باید استفاده کنم ، کدام ابزارهایی برای ادغام و استانداردهای امنیتی را دنبال می کردم ، نتایج بهتری کسب می کردم. درعوض ، من یک فوریت گاه به گاه و آزاد دادم و در عوض کد گاه به گاه و آزاد دریافت کردم.
-
ابزار امنیتی ضروری است. احتمالاً حتی بیشتر با گردش کار AI. استفاده از LLM برای تولید کد ، نیاز به خطوط ، اسکنرها یا بررسی های امنیتی را کاهش نمی دهد. این باعث می شود آنها بسیار مهم تر شوند. ابزارهایی مانند
pylint
باbandit
وتtrivy
به وابستگی و اسکن امنیتی کمک کنید. راهنمایی از منابعی مانند OWASP 10 دور از تصویر. اینها اختیاری نیستند ، آنها به عنوان مادام العمر هستند. -
بررسی کد هنوز هم مهم است. فقط به این دلیل که کامپایل و کار می کند به این معنی نیست که خوب است. تجربه به شما کمک می کند تا ببینید که ابزارهای خودکار (از جمله LLMS) چه کاری انجام نمی دهند.
یک لیست چک برای برنامه نویسی ایمن تر AI
اگر از AI برای کمک به نوشتن یا برنامه های Refactor استفاده می کنید:
- خاص بودن: نسخه های مورد نظر ، چارچوب ها و شیوه های امنیتی خود را در سریع نامگذاری کنید.
- آن را به قطعات کوچکتر بشکنید: برای پروژه های مهاجرت ، پایگاه کد را به واحدهای قابل کنترل (DB ، منطق تجارت ، API و غیره) تقسیم کرده و لایه AI را به صورت لایه ای سوق دهید. این باعث کاهش اضافه بار متن می شود و بررسی را آسان تر می کند.
- بررسی خودکار: در خط لوله CI/CD خود از خطوط ، ابزارهای SAST/DAST و اسکنرهای SBOM استفاده کنید. بدون آنها حمل نکنید.
- بررسی انسان را پرش نکنید: هیچ چیز جایگزین چشم با تجربه به کد نمی شود.
فکر نهایی
توسعه با کمک AI قدرتمند است ، اما جادویی نیست. هنوز هم نیاز به تفکر ، بررسی و بهداشت امنیتی خوب دارد. LLMS می تواند در نوشتن و بررسی کد در زمان صرفه جویی کند ، اما در صورت تمیز کردن پس از یک حادثه امنیتی ، پس انداز زمان می تواند به سرعت از بین برود. کمی تلاش اضافی در جلو هنوز بهترین دفاع در برابر شگفتی های پرهزینه است.
اگر ابزارهای کدگذاری هوش مصنوعی را امتحان کرده اید ، چه شگفتی یا خطاهایی را در آن قرار داده اید؟ در نظرات به من اطلاع دهید.