Mohammad Aref 120452 اشتراک گذاری ارسال شده در 9 شهریور، ۱۳۸۸ برنامه نویسی خودکار1 به گونه ای از برنامه نویسی کامپیوتری گفته می شود که در آن به کمک مکانیزم هایی یک برنامه کامپیوتری ایجاد می کنند. این گونه برنامه نویسی درست نقطه مقابل برنامه نویسی کامپیوتر توسط برنامه نویس (فرد) است. البته در این تعریف توافق کمی وجود دارد و به سختی می توان به تعریفی دقیق و جامع رسید، چرا که معنای برنامه نویسی خودکار در طول زمان تغییر کرده است. دیوید پارناس2، یکی از ارکان اساسی پنهان سازی اطلاعات در برنامه نویسی ماژولار، تاریخچه این واژه را بررسی و اشاره کرده است که در دهه 40 میلادی، برنامه نویسی خودکار به مکانیزه کردن امور لازم برای سوراخ کردن کاغذهای کد می گفتند. اما بعدها به ترجمه زبان های برنامه نویسی سطح بالایی چون فورترن3 و الگول4 اطلاق شده است. در حقیقت، یکی از نخستین کامپایلرهای دنیا، به نام اتوکد5 ایجاد شده بود. دیوید پارناس همچنین نتیجه گیری کرده است که: «برنامه نویسی خودکار همواره تعبیر یک زبان سطح بالاتر به زبانی سطح پایین تر بوده که برای برنامه نویس ساده تر باشد.» 1. برنامه نویسی نسلی برنامه نویسی نسلی6 نوعی از برنامه نویسی کامپیوتر است که طی آن، خودش اقدام به تولید کد منبع برنامه می کند. این تولید به کمک استفاده از جنریک ها7، فریم ها8، کلاس ها، الگوها9 و دیدگاه ها10 انجام می شود و باعث بالارفتن میزان بهره وری می گردد. در مباحث استفاده مجدد از کد، به شیوه تولید خودکار کد، گاه به «مهندسی نرم افزار مولفه محور11» و «مهندسی خانواده محصول12» نیز نسبت داده می شود. 2. تولید کدمنبع تولید کدمنبع، یعنی عمل ایجاد کد منبع بر مبنای مدلی آنتولوژیک13 مانند یک الگو که با یک ابزار برنامه نویسی مثل پردازنده الگو یا محیط توسعه یکپارچه ( (ide 14 همراه باشد. این ابزارها توسعه کد منبع را به مقاصد مختلفی انجام می دهند. برای مثال، یکی از مفاهیم پایه برنامه نویسی خودکار، پردازنده ماکرو در زبان c است که به سادگی کد منبع را با ماکروهای نوشته شده در کد جایگزین می کند و قوانین ساده ای دارد. پیاده سازی محیط های توسعه یکپارچه ای چون interface builder (برای سیستم های mac os x ) و یا مایکروسافت ویژوال استودیو (برای سیستم های ویندوزی) شکل های پیشرفته تر و پیچیده تری از تولید خودکار کد را انجام می دهند، در آن هابرنامه نویس می تواند به صورت تعاملی و پویایی تکه کدهای منبع خود را ایجاد یا ویرایش کند. ویزاردهای برنامه به سادگی و با محیطی گرافیکی به برنامه نویس اجازه می دهند رابط کاربری مورد نظر خود را ایجاد کند و کامپایلر به صورت نامرئی کدمنبع لازم برای ایجاد آن رابط کاربری را تولید کند. این ها هم شکل دیگری از تولید خودکار کد به شمار می روند. صرف نظر از تولید کد بر مبنای ویزارد یا الگو، محیط های توسعه یکپارچه همچنین کد را ریفاکتور15 می کنند تا در مقابل وقوع خطا مقاوم سازی شود، این روند اگر به روش دستی انجام شود، وقت بیشتری را صرف می کند. مزایای تولید خودکار کد تولید کد فقط سرعت کدنویسی را بالا نمی برد. بلکه چهار امتیاز برجسته نسبت به تولید کد به روش دستی دارد: الف) کیفیت: تولیدکننده های کد از الگوهایی برای کدهای لازم استفاده می کنند. بنابراین هر چه این الگو بهتر باشد، کد خروجی بهتر خواهد بود. بنابراین تنها کافی است برای بالابردن کیفیت الگوهای کد تلاش کرد تا تاثیر آن را در تمام کد منبع یک نرم افزار مشاهده کرد. ب) ثبات: کلاس ، متدها و نام گذاری متغیرها در این روش ثبات بیشتری دارد و باعث می شود از رابط کاربری راحت تر استفاده کرد. همچنین امکان افزودن کدهای تولیدی دیگری روی نرم افزار فعلی ساده تر خواهد بود. پ) بهره وری: این عامل رابطه مستقیم با مهارت تولیدکننده کد دارد تا بتواند با تغییراتی در کد، کل پروژه را به سمتی برساند که به ذهن برنامه نویس نزدیک تر شود. ت) تجرید: تولیدکننده هایی که نیازهای لازم یک نرم افزار را داخل بستری خاص نگه می دارند (مثلا به شکل دیتابیس یا فایل (xml از زبان پیاده سازی فاصله می گیرند و به تجرید نزدیک تر می شوند. به همین جهت می توان مطالعه بعدی روی تمام پروژه را صرف نظر از زبان پیاده سازی و شیوه آن انجام داد و در صورت لزوم تغییرات را روی آن ها اعمال کرد. معایب تولید خودکار کد درست مانند هر تکنیک دیگر، تولید کد نیز معایب خود را دارد. از مهم ترین دغدغه هایی که در بحث تولید خودکار کد وجود دارد، به ترتیب زیر است: تولیدکننده های کد معمولا غیرقابل تعمیرند و به همین دلیل مهندسان نرم افزار از آن دوری می کنند. همچنین گاهی اوقات کد تولیدی بسیار پیچیده می شود و مرور و رفع عیب آن به مراتب دشوارتر و وقت گیرتر از حالت دستی است. چند مثال از نرم افزارهای برنامه نویس خودکار altova mapforce ابزار یکپارچه سازی، تبدیل و نگاشت داده که قادر به تولید کد به زبان های جاوا، c# یا c++ است. nconstruct ابزاری است برای پیاده سازی نرم افزارها با معماری توسعه سریع، در محیط های وب یا ویندوز و تحت محیط . net فعالیت می کند و کد تولیدی آن، به زبان c# است و با ویزاردهای ساده خود، تمام کدهای لازم برای نرم افزار را تولید می کند. mygeneration تولیدکننده کد برمبنای الگوهاست که برای دات نت فریم ورک مایکروسافت نوشته اند. ebenezer eterprises سرویس آنلاینی است که عملیات مارشال کردن کد را به زبان c++ انجام می دهد. latticeframework studio ابزار توسعه سریع نرم افزار بر مبنای مدل و الگو است که برای محیط دات نت نوشته شده است. این ابزار کدهایی به زبان های c# ، vb.net ، جاوا، php و دیاگرام ها و مستندات را طی پروسه های ویزاردی بسیار ساده تولید می کند. myprolang ابزار تولید خودکار کد است که برمبنای الگو فعالیت می کند و می تواند از رابط کاربری تا کدهای عملیاتی را ایجاد کند و در یک برنامه اجرایی دیگر کامپایل شود. viewpoints ابزاری برای مدل سازی تصویری و تولید کد برای ویژوال استودیو دات نت است که محوریت فعالیت های تجاری و مولفه های مرتبط را مدنظر قرار داده است. جام جم آنلاین 1 لینک به دیدگاه
ارسال های توصیه شده