स्वचालित प्रोग्रामिंग

कंप्यूटर विज्ञान में, स्वचालित प्रोग्रामिंग एक प्रकार की कंप्यूटर प्रोग्रामिंग है जिसमें कुछ तंत्र मानव प्रोग्रामर को उच्च अमूर्त स्तर पर कोड लिखने की अनुमति देने के लिए एक कंप्यूटर प्रोग्राम उत्पन्न करता है।

स्वचालित प्रोग्रामिंग की सटीक परिभाषा पर बहुत कम सहमति रही है, ज्यादातर इसलिए क्योंकि समय के साथ इसका अर्थ बदल गया है। प्रकाशित शोध में स्वचालित प्रोग्रामिंग के इतिहास का पता लगाने वाले डेविड पारनास ने नोट किया कि 1940 के दशक में इसने कागज का टेप  को पंच करने की मैन्युअल प्रक्रिया के स्वचालन का वर्णन किया। बाद में इसने फोरट्रान और ALGOL जैसी उच्च-स्तरीय प्रोग्रामिंग भाषाओं के अनुवाद का उल्लेख किया। वास्तव में, एक संकलक के रूप में पहचाने जाने वाले शुरुआती कार्यक्रमों में से एक को ऑटोकोड कहा जाता था। डेविड पारनास ने निष्कर्ष निकाला कि प्रोग्रामर के लिए उपलब्ध होने की तुलना में स्वचालित प्रोग्रामिंग हमेशा उच्च-स्तरीय भाषा में प्रोग्रामिंग के लिए एक प्रेयोक्ति रही है। कार्यक्रम संश्लेषण एक प्रकार की स्वचालित प्रोग्रामिंग है जहां गणितीय आवश्यकताओं के आधार पर स्क्रैच से एक प्रक्रिया बनाई जाती है।

उत्पत्ति
प्रारंभिक UNIVAC प्रोग्रामर, मिली कोस बताते हैं: मशीन कोड लिखने में कई थकाऊ चरण शामिल होते हैं - असतत निर्देशों में एक प्रक्रिया को तोड़ना, सभी कमांडों को विशिष्ट मेमोरी स्थान निर्दिष्ट करना और I/O बफ़र्स का प्रबंधन करना। गणितीय दिनचर्या, एक उप-दिनचर्या पुस्तकालय, और छँटाई कार्यक्रमों को लागू करने के लिए इन चरणों का पालन करने के बाद, हमारा काम बड़ी प्रोग्रामिंग प्रक्रिया को देखना था। हमें यह समझने की जरूरत थी कि हम परीक्षण किए गए कोड का पुन: उपयोग कैसे कर सकते हैं और प्रोग्रामिंग में मशीन की मदद कैसे ले सकते हैं। जैसा कि हमने प्रोग्राम किया, हमने प्रक्रिया की जांच की और इन चरणों को अमूर्त करने के तरीकों के बारे में सोचने की कोशिश की ताकि उन्हें उच्च-स्तरीय भाषा में शामिल किया जा सके। इसने दुभाषियों, असेंबलरों, संकलकों और जनरेटरों के विकास का नेतृत्व किया - अन्य प्रोग्रामों को संचालित करने या उत्पादन करने के लिए डिज़ाइन किए गए प्रोग्राम, जो कि स्वचालित प्रोग्रामिंग है।

जनरेटिव प्रोग्रामिंग
जनरेटिव प्रोग्रामिंग और संबंधित शब्द मेटाप्रोग्रामिंग|मेटा-प्रोग्रामिंग ऐसी अवधारणाएँ हैं जिनके द्वारा स्वचालित तरीके से सॉफ़्टवेयर घटकों के निर्माण के लिए प्रोग्राम लिखे जा सकते हैं ठीक वैसे ही जैसे स्वचालन ने पारंपरिक वस्तुओं जैसे वस्त्र, ऑटोमोबाइल, रसायन और इलेक्ट्रॉनिक्स के उत्पादन में सुधार किया है। लक्ष्य प्रोग्रामर उत्पादकता में सुधार करना है। यह अक्सर घटक-आधारित सॉफ़्टवेयर इंजीनियरिंग जैसे कोड-पुन: उपयोग विषयों से संबंधित होता है।

स्रोत-कोड जनरेशन
सोर्स-कोड जेनरेशन समस्या के विवरण के आधार पर सोर्स कोड जनरेट करने की प्रक्रिया है या एक ऑन्कोलॉजी (सूचना विज्ञान) मॉडल जैसे टेम्पलेट और एक प्रोग्रामिंग उपकरण  जैसे टेम्पलेट प्रोसेसर या एक एकीकृत विकास वातावरण (आईडीई) के साथ पूरा किया जाता है। ये उपकरण विभिन्न माध्यमों में से किसी के माध्यम से स्रोत कोड की पीढ़ी की अनुमति देते हैं।

आधुनिक प्रोग्रामिंग भाषाओं को Json4Swift (स्विफ्ट (प्रोग्रामिंग भाषा)) और Json2Kotlin (कोटलिन (प्रोग्रामिंग भाषा)) जैसे उपकरणों का अच्छा समर्थन प्राप्त है।.

प्रोग्राम जो COBOL कोड उत्पन्न कर सकते हैं उनमें शामिल हैं: ये एप्लिकेशन जेनरेटर COBOL आवेषण और ओवरराइड का समर्थन करते हैं।
 * DYL250/DYL260/DYL270/DYL280 श्रृंखला
 * व्यापार नियंत्रण निगम का एसबी-5
 * KPMG का PMM2170 एप्लिकेशन-प्रोग्राम-जेनरेटर पैकेज

एक मैक्रो (कंप्यूटर विज्ञान)  प्रोसेसर, जैसे सी प्रीप्रोसेसर, जो अपेक्षाकृत सरल नियमों के अनुसार स्रोत कोड में पैटर्न को बदलता है, स्रोत-कोड जनरेटर का एक सरल रूप है। सोर्स-टू-सोर्स कंपाइलर | सोर्स-टू-सोर्स कोड जेनरेशन टूल्स भी मौजूद हैं।

लो-कोड एप्लिकेशन
एक लो-कोड डेवलपमेंट प्लेटफॉर्म | लो-कोड डेवलपमेंट प्लेटफॉर्म (एलसीडीपी) सॉफ्टवेयर है जो पारंपरिक कंप्यूटर प्रोग्रामिंग के बजाय ग्राफिकल यूज़र इंटरफ़ेस  और कॉन्फ़िगरेशन के माध्यम से अनुप्रयोग प्रक्रिया सामग्री बनाने के लिए एक पर्यावरण प्रोग्रामर का उपयोग करता है।

यह भी देखें

 * स्वचालित बग फिक्स
 * स्वचालित मशीन लर्निंग
 * कोड जनरेशन टूल्स की तुलना
 * फ़ीचर-उन्मुख प्रोग्रामिंग
 * भाषा उन्मुख प्रोग्रामिंग
 * मॉडलिंग भाषा
 * कार्यक्रम परिवर्तन
 * शब्दार्थ अनुवाद
 * शब्दावली आधारित परिवर्तन
 * चौथी पीढ़ी की प्रोग्रामिंग भाषा
 * लो-कोड डेवलपमेंट प्लेटफॉर्म

संदर्भ

 * Generative Programming: Methods, Tools, and Applications by Krzysztof Czarnecki and Ulrich W. Eisenecker, Addison Wesley, 2000.

बाहरी संबंध

 * Code Generation for Dummies