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

هوش مصنوعی شاخهای از علوم کامپیوتر است که هدف آن ساخت سیستمهایی است که بتوانند وظایفی را انجام دهند که معمولاً نیازمند هوش انسانی هستند.
برخی از این وظایف عبارتاند از:
درک زبان طبیعی
تشخیص تصویر
یادگیری از دادهها
تصمیمگیری
پیشبینی
تولید محتوا
تولید کد
برنامهنویسی فرایند طراحی، پیادهسازی، آزمایش و نگهداری نرمافزارهاست.
برنامهنویس تنها کسی نیست که کد مینویسد؛ بلکه فردی است که:
مسئله را تحلیل میکند.
راهحل مناسب طراحی میکند.
محدودیتهای سیستم را در نظر میگیرد.
امنیت و کارایی را ارزیابی میکند.
نرمافزار را توسعه و نگهداری میکند.
برنامهنویسی مجموعهای از مهارتهاست که شامل منطق، طراحی، معماری نرمافزار، الگوریتمها، مدیریت دادهها و درک نیازهای کاربران میشود.
رایجترین نوع هوش مصنوعی امروزی است.
نمونهها:
مترجمهای ماشینی
سیستمهای پیشنهاددهنده
چتباتها
تولیدکنندگان تصویر
سیستمی که بتواند همانند انسان در حوزههای مختلف فکر کند.
چنین سیستمی هنوز ساخته نشده است.
نوعی هوش فرضی که توانایی آن از انسان بیشتر است.
این مفهوم هنوز صرفاً نظری محسوب میشود.
هوش مصنوعی و برنامهنویسی رقیب یکدیگر نیستند.
در واقع هوش مصنوعی محصول برنامهنویسی است.
تمام مدلهای هوش مصنوعی توسط برنامهنویسان توسعه داده میشوند.
برای ساخت یک سامانه هوش مصنوعی نیاز است:
داده جمعآوری شود.
مدل طراحی گردد.
زیرساخت پردازشی آماده شود.
APIها توسعه یابند.
امنیت سیستم بررسی شود.
رابط کاربری ساخته شود.
بنابراین حتی پیشرفتهترین سامانههای هوش مصنوعی نیز بدون برنامهنویسی قابل ایجاد نیستند.
بله.
امروزه مدلهای زبانی میتوانند:
توابع ساده ایجاد کنند.
کلاسها را تولید نمایند.
کدهای تکراری بنویسند.
خطاهای رایج را اصلاح کنند.
تست واحد تولید نمایند.
مستندات بنویسند.
اما توانایی آنها محدودیتهای مهمی دارد.
نداشتن درک واقعی از مسئله
هوش مصنوعی الگوها را یاد میگیرد.
اما مسئله را مانند انسان درک نمیکند.
پروژههای سازمانی معمولاً شامل هزاران فایل هستند.
مدیریت وابستگیها و تصمیمات معماری برای مدلهای فعلی دشوار است.
گاهی مدلها کدهایی پیشنهاد میکنند که دارای آسیبپذیریهای امنیتی هستند.
برای مثال:
SQL Injection
XSS
CSRF
افشای اطلاعات حساس
مدلها ممکن است بر اساس دادههای آموزشی قدیمی پاسخ دهند.
در نتیجه همیشه نمیتوان به خروجی آنها اعتماد کامل داشت.
بخش زیادی از زمان برنامهنویسان صرف نوشتن کدهای تکراری میشود.
هوش مصنوعی میتواند این کارها را در چند ثانیه انجام دهد.
برنامهنویسان تازهکار میتوانند:
مثال دریافت کنند.
توضیح کدها را بخوانند.
اشکالات خود را رفع کنند.
مستندسازی یکی از بخشهای زمانبر توسعه نرمافزار است.
هوش مصنوعی میتواند مستندات اولیه را تولید کند.
ابزارهای مبتنی بر هوش مصنوعی قادرند:
سناریوهای تست ایجاد کنند.
تستهای واحد بنویسند.
برخی خطاها را شناسایی نمایند.
اگر برنامهنویس بدون درک مفاهیم صرفاً کدهای تولیدشده را کپی کند، ممکن است با مشکلات زیر مواجه شود:
ناتوانی در رفع خطاها
وابستگی شدید به ابزارها
ضعف در طراحی الگوریتم
کاهش توانایی حل مسئله
عدم درک معماری سیستم
تا حدی بله.
ابزارهای Low-Code و No-Code امکان ساخت پروژههای ساده را فراهم کردهاند.
برای مثال:
صفحات فرود
فرمهای آنلاین
وبسایتهای شخصی
اتوماسیونهای کوچک
اما برای ساخت سامانههای پیچیده معمولاً دانش فنی ضروری است.
نمونههایی از پروژههای پیچیده:
بانکداری الکترونیک
فروشگاههای بزرگ اینترنتی
سامانههای رزرو هواپیما
شبکههای اجتماعی
نرمافزارهای پزشکی
برخی مشاغل احتمالاً کاهش خواهند یافت.
مانند:
تولید صفحات ساده
نوشتن کدهای تکراری
انجام تغییرات جزئی
اما تقاضا برای متخصصان زیر افزایش مییابد:
معماران نرمافزار
متخصصان امنیت
مهندسان داده
توسعهدهندگان هوش مصنوعی
مهندسان یادگیری ماشین
مدیران فنی
مهمترین مهارت یک برنامهنویس همچنان توانایی تحلیل مسائل است.
طراحی سیستمهای بزرگ هنوز عمدتاً توسط انسان انجام میشود.
بررسی آسیبپذیریها نیازمند دانش تخصصی است.
توانایی ارتباط مؤثر با مدلهای هوش مصنوعی اهمیت زیادی پیدا کرده است.
برنامهنویسان باید بتوانند کیفیت کدهای تولیدشده را ارزیابی کنند.
احتمالاً در سالهای آینده توسعه نرمافزار به سمت همکاری انسان و هوش مصنوعی حرکت خواهد کرد.
مدل رایج آینده میتواند چنین باشد:
انسان نیازمندیها را مشخص میکند.
هوش مصنوعی کد اولیه را تولید میکند.
برنامهنویس آن را بازبینی میکند.
تستها اجرا میشوند.
سیستم نهایی توسط انسان تأیید میشود.
در این سناریو، نقش برنامهنویس حذف نمیشود، بلکه از «نویسنده کد» به «طراح و ناظر سیستم» تغییر پیدا میکند.
هوش مصنوعی یکی از بزرگترین تحولات تاریخ صنعت نرمافزار است، اما هنوز جایگزین کامل برنامهنویسان نشده است.
افرادی که تنها کدنویسی تکراری انجام میدهند، بیشتر در معرض تأثیر این فناوری قرار دارند. در مقابل، برنامهنویسانی که توانایی تحلیل، طراحی، معماری، امنیت و حل مسئله دارند، نهتنها جایگاه خود را حفظ خواهند کرد، بلکه بهرهوری بیشتری نیز خواهند داشت.
به نظر میرسد آینده متعلق به برنامهنویسانی باشد که از هوش مصنوعی بهعنوان یک دستیار قدرتمند استفاده میکنند، نه کسانی که صرفاً به آن وابسته میشوند یا در برابر آن مقاومت میکنند.