در علوم کامپیوتراصطلاح **برنامه‌نویسی خودکار** (انگلیسی: Automatic programming) یک نوع از برنامه‌نویسی کامپیوتر است که در آن با استفاده از برخی مکانیسم‌ها به تولید یک برنامه کامپیوتری پرداخته می‌شود و به برنامه نویسان انسانی اجازه می‌دهد در یک انتزاع سطح بالاتر برنامه بنویسند.

توافق کمی بر سر تعریف دقیق برنامه‌نویسی خودکار وجود دارد این عدم تفاهم عمدتاً به دلیل این است که معنای آن در طول زمان تغییر کرده‌است. پژوهشگر کانادایی؛ دیوید پاماس با ردیابی تاریخی "برنامه نویسی خودکار "در تحقیقات منتشر شده خود اشاره کرده‌است که آغاز برنامه‌نویسی خودکار در دهه ۱۹۴۰ و خودکارسازی فرایند پانچ دستی نوار کاغذی بوده‌است. بعد از آن به ترجمه زبان‌های برنامه‌نویسی سطح بالا مانند Fortran و ALGOL اشاره می‌کند. در واقع یکی از اولین برنامه‌هایی که به عنوان یک کامپایلر شناخته می‌شود، Autocode نامیده می‌شد. Parnas به این نتیجه رسید که "برنامه نویسی خودکار همیشه تعبیری برای برنامه نویسی با زبان‌های سطح بالاتر است که در دسترس برنامه نویس بود."

سنتز برنامه یک نوع اتوماتیک برنامه‌نویسی است که در آن یک روال از ابتدا و بر اساس ملزومات ریاضیاتی ایجاد شده‌است.

ریشه
----

میلدرد Koss به عنوان یک برنامه‌نویس پیشتاز در UNIVAC توضیح می‌دهد: «نوشتن کد شامل چندین مرحله خسته کننده شامل: —شکستن یک فرایند به دستورالعمل‌های گسسته، تخصیص مکان‌های حافظه ای خاص به تمام دستورها و مدیریت بافر I/O است. بعد از دنبال کردن این مراحل به منظور پیاده‌سازی روال‌های ریاضی، کتابخانه ای از زیرروال‌ها و مرتب‌سازی برنامه‌ها، وظیفه بعدی بررسی روال بزرگتر برنامه‌نویسی بود. ما نیاز به دریافت درک درست از روش صحیح استفاده مجدد از کدهای تست شده داشتیم و ماشین در این برنامه‌نویسی کمک می‌کرد. همان‌طور که برنامه می‌نوشتیم، روال‌ها را امتحان می‌کردیم و تلاش می‌کردیم به روشهایی برای انتزاعی سازی این گام‌ها فکر کنیم تا بتوانیم آنها را در برنامه‌های سطح بالاتر ترکیب کنیم. این تلاش‌ها منجر به توسعه مفسرها، اسمبلرها، کامپایلرها و مولدهای برنامه‌نویسی برای کار و تولید برنامه‌های دیگر شد که به‌صورت خودکار برنامه‌نویسی شده‌اند.»

هدف این است که بهره‌وری برنامه‌نویس بهبود داده شود. این ایده اغلب مربوط به موضوعات استفاده مجدد از کد از جمله مهندسی نرم‌افزار مبتنی بر مولفه است.

تولید منبع کد
-------------

*تولید منبع-کد،* فرایند تولید منبع کد بر اساس شرح مسئله یا یک مدل آنتولوژی مانند یک الگو است و با یک ابزار برنامه‌نویسی مانند یک پردازنده الگوی یا یک محیط توسعه مجتمع (IDE) انجام می‌شود. این ابزارها اجازه تولید منبع کد از طریق گونه‌های مختلف معنی را می‌دهد.

برنامه‌هایی که می‌توانند کد کوبل را تولید کنند: عبارتند از:

* سری DYL250/DYL260/DYL270/DYL280
* شرکت کنترل کسب و کار 's SB-5
* بسته نرم‌افزار-برنامه-ژنراتور PMM2170 از پیت مارویک میچل'

این ترم افزار درج و لغو کدهای کوبل را پشتیبانی می‌کند.

جستارهای وابسته
---------------

* زبان مدل‌سازی
* زبان برنامه‌نویسی نسل چهارم

منابع
-----

1. ↑  Ricardo Aler Mur, "Automatic Inductive Programming بایگانی‌شده در ۲۰۱۶-۰۳-۰۴ توسط Wayback Machine", *ICML 2006 Tutorial*. June 2006.
2. ↑  D. L. Parnas. "Software Aspects of Strategic Defense Systems." *American Scientist*. November 1985.
3. ↑  Chun, Wendy. "On Software, or the Persistence of Visual Knowledge." Grey Room 18. Boston: 2004, pg. 30.
4. ↑  James Wilcox, "Paying Too Much for Custom Application Development", March 2011.
5. ↑  "Application generator". PCmag.com. Software that generates application programs from descriptions of the problem rather than by traditional programming. It is at a higher level and easier to use than a high-level programming language such as ...
6. ↑  "DYL-280 Command Syntax" (PDF). Archived from the original (PDF) on 30 July 2018. Retrieved 6 May 2020.

* مشارکت‌کنندگان ویکی‌پدیا. «Automatic programming». در *دانشنامهٔ ویکی‌پدیای انگلیسی*، بازبینی‌شده در ۲۰ سپتامبر ۲۰۱۹.

|  |  |
| --- | --- |
| داده‌های کتابخانه‌ای: کتابخانه‌های ملی ویرایش در ویکی‌داده | 
* فرانسه (داده‌ها)
* آلمان
* اسرائیل
* ایالات متحده آمریکا

 |