2010-12-03 25 views
11

systems programming language और Application programming language के बीच अंतर क्या हैं?सिस्टम प्रोग्रामिंग भाषा और अनुप्रयोग प्रोग्रामिंग भाषाओं के बीच अंतर

+1

http://wiki.answers.com/Q/What_is_the_difference_between_system_programming_and_application_programming –

+0

की तलाश यह सवाल पहले आया है, लेकिन मैं इसे SO पर खोजने में विफल रहा हूं। –

उत्तर

16

कुछ कारकों मेरे opinon में विचार

  1. में आना चाहिए एक प्रणाली प्रोग्रामिंग भाषा आप निम्न स्तर के सामान तक पहुंचने के लिए, वास्तविक हार्डवेयर दुनिया के करीब हो रही में सक्षम होना चाहिए। एक आवेदन भाषा में इसके बजाय एक "आभासी दुनिया" (उम्मीद है कि बातचीत के साथ अच्छा और आसान बातचीत) है जिसे भाषा के साथ डिजाइन किया गया है और आपको केवल उसमें सामना करने में सक्षम होना चाहिए।

  2. सिस्टम प्रोग्रामिंग भाषा में प्रदर्शन के संदर्भ में कोई रियायत नहीं होनी चाहिए। एक कोड लिखने में सक्षम होना चाहिए जो हार्डवेयर से सभी रस को निचोड़ा जाता है।यह एप्लिकेशन प्रोग्रामिंग भाषा में सबसे बड़ी चिंता नहीं है, जहां वास्तव में कार्यक्रम लिखने के लिए आवश्यक समय की बजाए अधिक भूमिका निभाती है।

  3. 2 सिस्टम प्रोग्रामिंग भाषा के कारण यह मानने के लिए स्वतंत्र है कि प्रोग्रामर कोई गलती नहीं करता है और इसलिए कोई "रनटाइम त्रुटि" गार्ड नहीं होगा। उदाहरण के लिए सरणी से बाहर अनुक्रमण करना दुनिया के अंत का मतलब है जब तक कि हार्डवेयर उन चेक को मुफ्त में नहीं देता है (लेकिन उस स्थिति में आप शायद इसके बजाय कम महंगे या तेज़ हार्डवेयर चुन सकते हैं)। विचार यह है कि यदि आप मानते हैं कि कोड सही है तो असंभव की जांच के लिए भी एक छोटी सी कीमत का भुगतान करने में कोई बात नहीं है। इसके अलावा एक सिस्टम प्रोग्रामिंग भाषा प्रोग्रामर को कुछ भी करने के लिए मना करने के तरीके में नहीं आना चाहिए/वह जानबूझकर करना चाहता है ... धारणा यह है कि वह जानता है कि यह सही काम है। एक प्रोग्राम प्रोग्रामिंग भाषा में इसके बजाय प्रोग्रामर को कोड की जांच करने में मदद करने और कुछ दार्शनिक स्कीमा का उपयोग करने के लिए कोड को मजबूर करने की कोशिश करने में भी अच्छा लगा माना जाता है। एप्लिकेशन प्रोग्रामिंग भाषाओं में निष्पादन गति, टाइपिंग समय और कोड आकार जैसी चीजें प्रोग्रामर को खुद को शूटिंग से बचाने में मदद करने के लिए बलिदान की जा सकती हैं।

  4. 3 सिस्टम प्रोग्रामिंग भाषा के प्रयोग से सीखना बहुत कठिन होगा। एक अर्थ में वे शक्तिशाली लेकिन खतरनाक औजारों के प्रकार हैं जिन्हें किसी को प्रत्येक कथन को ध्यान से सोचने के लिए उपयोग करना चाहिए और इसी कारण से वे ऐसी भाषाएं हैं जहां डिबगिंग बहुत कठिन है। एप्लिकेशन प्रोग्रामिंग भाषाओं में इसके बजाए प्रयास-और-दृष्टिकोण दृष्टिकोण उचित हो सकता है (यदि वर्चुअल वर्ल्ड एब्स्ट्रक्शन बहुत ज्यादा लीक नहीं कर रहा है) और बाद में उन्हें हटाने के लिए त्रुटियों को देना एक व्यवहार्य विकल्प माना जाता है।

9

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

यह कहकर, स्पष्ट रूप से कुछ भाषाएं दूसरों के मुकाबले सिस्टम प्रोग्रामिंग के लिए उपयुक्त हैं (उदाहरण के लिए सी/सी ++ सिस्टम प्रोग्रामिंग के लिए COBOL/FORTRAN से बेहतर अनुकूल हैं)। इसी प्रकार ऐसी भाषाएं हैं जो अनुप्रयोगों के विकास के लिए उपयुक्त हैं और सिस्टम प्रोग्रामिंग जैसे नहीं। VB.NET।

उपरोक्त उदाहरणों से बाहर निकलने वाली भाषा विशेषताएं सी/सी ++ (जैसे पॉइंटर्स, बिट मैनिपुलेशन ऑपरेटर इत्यादि) जैसी प्रोग्रामिंग भाषाओं की निम्न स्तर की विशेषताएं हैं। निश्चित रूप से पुराना मजाक है कि सी एक "सागर" स्तर की भाषा है (असेंबली स्तर और "उच्च" स्तर के बीच कहीं बैठा है)।

चेतावनी: मैं ओएस डेवलपर/ओएस उपकरण डेवलपर के परिप्रेक्ष्य से सिस्टम प्रोग्रामिंग में आ रहा हूं।

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

वैसे भी, कि निश्चित रूप से दोनों समर्थन ये नहीं सटीक अवधारणाओं में और विपक्षी :)

+0

सी "सिस्टम" प्रोग्रामिंग रहा होगा ;-) –

+1

सी कई अनुप्रयोगों के लिए सबसे अच्छा विकल्प नहीं हो सकता है, लेकिन अभी भी पर्याप्त अनुप्रयोग हैं जहां सी एक अच्छी पसंद है। सी को समानांतर प्रोग्रामिंग भाषाओं (जैसे सीयूडीए, ओपनसीएल) के आधार के रूप में भी पुनर्जीवित किया जा रहा है। यह लोकप्रियता है (विरासत समर्थन के प्रभाव से नहीं) इनकार नहीं किया जा सकता है (उदाहरण के लिए www.tiobe.com प्रोग्रामिंग भाषा सूचकांक)। मैं कई भाषाओं में विकसित हूं, लेकिन मेरे पास हमेशा सी के लिए मुलायम स्थान होगा, मुझे मासोचिस्टिक कहते हैं; मुझे असेंबली भाषा भी पसंद है ;-) –

+0

* "... मेरा मानना ​​है कि ज्यादातर बाइट कोड और जेआईटी'एड/व्याख्या किए गए" * के बजाय देशी संकलित हैं। जेएनओड के लिए, बेस सिस्टम और कोर प्लगइन्स मूल संकलित होते हैं, बाकी जेआईटी संकलित होते हैं (बिना किसी व्याख्या के)। –

5

में लेकिन सार में कुछ टिप्पणियां हलचल के लिए पर्याप्त है, सिस्टम भाषाओं प्रोग्रामिंग ऑपरेटिंग सिस्टम लेखन के लिए उपयुक्त हैं (ताकि वे है कम स्तरीय अवधारणाएं जैसे पॉइंटर्स, असेंबलर के साथ एकीकरण, स्मृति से संबंधित डेटा प्रकार और पंजीकरण संगठन), जबकि एप्लिकेशन प्रोग्रामिंग भाषा अनुप्रयोग लिखने के लिए अधिक उपयुक्त हैं, इसलिए वे आमतौर पर गणना का प्रतिनिधित्व करने के लिए उच्च स्तरीय अवधारणाओं का उपयोग करते हैं (जैसे ओओपी , बंद, अंतर्निहित जटिल डेटाटाइप और इतने पर)।

2

सामान्य रूप से, एक प्रोग्रामिंग भाषा अनुप्रयोग प्रोग्रामिंग भाषाओं की तुलना में निम्न स्तर है। हालांकि, भाषा के पास इसके साथ कुछ लेना देना नहीं है .. यह भाषा के कार्यान्वयन के बारे में अधिक जानकारी है।

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

सी # आमतौर पर एक सिस्टम भाषा नहीं है क्योंकि यह निम्न स्तर के काम नहीं कर सकता है, हालांकि प्रबंधित लाइन ऑपरेटिंग सिस्टम के रूप में भी उस रेखा को धुंधला कर दिया गया है।

2

मुझे नहीं लगता कि अब यहां एक अंतिम उत्तर है।

पर्ल और अजगर लगभग हर linux distro के साथ डिफ़ॉल्ट रूप से आते हैं ... दोनों सी इनलाइन कर सकते हैं ... दोनों काम पर नियंत्रण और अन्य "कम स्तर" कार्य ... थ्रेडिंग आदि

किसी भी भाषा के साथ क्या कर सकते हैं सिस्टम कॉल बाइंडिंग का एक अच्छा सेट और/या एफएफआई मूल रूप से सी-सी ++ के रूप में सिस्टम-जागरूक होना चाहिए।

केवल भाषाओं मैं सिस्टम भाषाओं होने के रूप में छूट चाहते हैं उन है कि विशेष रूप से एक और मंच को संबोधित कर रहे (JVM, CLR) और सक्रिय रूप से देशी बातचीत को रोकने के लिए

संबंधित मुद्दे