कई लोकप्रिय प्रोग्रामिंग भाषाएं C से प्रभावित क्यों हैं? [बन्द है]


23

TIOBE इंडेक्स के अनुसार टॉप 10 प्रोग्रामिंग लैंग्वेज सी से काफी प्रभावित होती हैं:

1. जावा

भाषा सी और सी ++ से इसके सिंटैक्स का अधिकांश भाग लेती है लेकिन इसमें एक सरल वस्तु मॉडल और कम निम्न-स्तरीय सुविधाएं होती हैं। - wikipedia.org

2. सी

C सभी समय की सबसे अधिक उपयोग की जाने वाली प्रोग्रामिंग भाषाओं में से एक है और बहुत कम कंप्यूटर आर्किटेक्चर हैं जिनके लिए C कंपाइलर मौजूद नहीं है। - wikipedia.org

3. सी #

.NET फ्रेमवर्क के विकास के दौरान, क्लास लाइब्रेरी को मूल रूप से प्रबंधित कोड कंपाइलर सिस्टम का उपयोग करके लिखा गया था जिसे सरल प्रबंधित सी (एसएमसी) कहा जाता है। जनवरी 1999 में, एंडर्स हेजेल्सबर्ग ने कूल नामक समय में एक नई भाषा बनाने के लिए एक टीम का गठन किया, जो "सी-लाइक ऑब्जेक्ट ओरिएंटेड भाषा" के लिए खड़ा था। - wikipedia.org

4. सी ++

इसका विकास Bjarne Stroustrup द्वारा 1979 में बेल लैब्स में C भाषा में वृद्धि के रूप में शुरू किया गया था। - wikipedia.org

5. उद्देश्य-सी

ऑब्जेक्टिव-सी एक रिफ्लेक्टिव, ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग लैंग्वेज है जो स्मॉलटाकल-स्टाइल मैसेजिंग को C प्रोग्रामिंग लैंग्वेज में जोड़ती है। - wikipedia.org

6. PHP

उन्होंने इन लिपियों को C प्रोग्रामिंग लैंग्वेज कॉमन गेटवे इंटरफेस (CGI) बायनेरिज़ के रूप में फिर से लिखा, उन्हें वेब रूपों के साथ काम करने की क्षमता जोड़ने और डेटाबेस के साथ संवाद करने के लिए और इस कार्यान्वयन को "पर्सनल होम पेज / फॉर्म इंटरप्रेटर" या PHP / FI कहा। - wikipedia.org

8. अजगर

पायथन की कल्पना 1980 के दशक के अंत में की गई थी और इसका कार्यान्वयन दिसंबर 1989 में नीदरलैंड के सीडब्ल्यूआई में गुइडो वैन रोसुम द्वारा शुरू किया गया था, जो एबीसी प्रोग्रामिंग भाषा (स्वयं एसईटीएल से प्रेरित) के उत्तराधिकारी के रूप में अपवाद से निपटने और अमीबा ऑपरेटिंग सिस्टम के साथ इंटरफेस करने में सक्षम था। - wikipedia.org

एबीसी (प्रोग्रामिंग भाषा) इसके डिजाइनर दावा करते हैं कि एबीसी कार्यक्रम आम तौर पर बराबर पास्कल या सी कार्यक्रमों के आकार के एक चौथाई के आसपास होते हैं, और अधिक पठनीय होते हैं। - wikipedia.org

9. पेरल

पर्ल उधार में C, शेल स्क्रिप्टिंग (sh), AWK, और sed सहित अन्य प्रोग्रामिंग भाषाओं की सुविधाएँ हैं। - wikipedia.org

10. जावास्क्रिप्ट

जावास्क्रिप्ट सी। से प्रभावित वाक्य रचना का उपयोग करता है - wikipedia.org

ऐसा प्रतीत होता है कि उनमें से ज्यादातर सी से अपना सिंटैक्स उधार लेते हैं और / या कई अन्य तरीकों से बहुत प्रभावित होते हैं, कम से कम अपनी शुरुआत में। क्यूं कर?


15
सिंटैक्स की तरह c होने के कारण c पर आधारित होने के समान नहीं है।
Oded

15
इसके अलावा, TIOBE एक जंक इंडेक्स है।
डेडएमजी

3
बल्कि, क्या मैं पूछ सकता हूं कि C पर आधारित प्रोग्रामिंग भाषाएँ अधिक लोकप्रिय क्यों हैं?
मनोज आर

3
@YannisRizos प्रश्न का महान निस्तारण! यह वास्तव में एक महान प्रश्न है।
maple_shaft

16
क्योंकि C ALGOL का वंशज है, और ALGOL इब्राहिम ईसाई, यहूदियों और मुसलमानों के लिए क्या है, इस बात पर रोक लगाया है।
इंगो

जवाबों:


40

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

  • एक नई भाषा को डिजाइन करते समय, यह अपने सिंटैक्स को आधार बनाने के लिए समझ में आता है, जहां संभव हो, एक लोकप्रिय मौजूदा भाषा पर जिसे सामान्य ज्ञान माना जा सकता है।
  • यदि सीखने की अवस्था उथली है, तो एक नई भाषा के सफल होने की अधिक संभावना है, और एक वाक्यविन्यास जो पहले से ही ज्ञात भाषा से मिलता-जुलता है, आमतौर पर सीखना आसान होता है (जब तक कि यह स्पष्ट समानता के बावजूद मौलिक रूप से भिन्न व्यवहार नहीं करता है)। इसलिए जो भाषाएं C से वाक्यविन्यास उधार लेती हैं वे आम तौर पर उन लोगों की तुलना में अधिक तेज़ी से कर्षण प्राप्त करते हैं जो नहीं करते हैं।

लेकिन अन्य भाषाएं मौजूद थीं, और वे अभी भी करते हैं, उनमें से कुछ सी भी भविष्यवाणी कर रहे हैं - वहां एलआईएसपी परिवार (सीएल, क्लोजर और स्कीम सबसे लोकप्रिय आधुनिक बोलियां हैं), एमएल परिवार (कई आधुनिक बोलियों के साथ), पूरी सेना है बुनियादी बोलियाँ (VB.NET और VBA आधुनिक कार्यान्वयन हैं), पास्कल और उसके रिश्तेदार हैं (डेल्फी सबसे अच्छी तरह से ज्ञात है) और कई 'ऑडबॉल' भाषाओं ने कई अन्य भाषाओं से प्रभाव लिया और कुछ चीजों का आविष्कार खुद किया; उदाहरणों में गो, पायथन, लुआ, हास्केल (और इसके पूर्ववर्ती, मिरांडा), प्रोलॉग और एरलंग शामिल हैं। जबकि इनमें से कोई भी भाषा (पायथन को छोड़कर) आपके शीर्ष 10 में नहीं है, उनमें से कई में स्थिर उपयोगकर्ता आधार और एक सक्रिय समुदाय है; वे निश्चित रूप से दूर नहीं जा रहे हैं।

इसके अलावा, यह ध्यान दिया जाना चाहिए कि इन भाषाओं में C प्रभाव की मात्रा लगभग 100% C संगत भाषाओं C ++ और ऑब्जेक्टिव-C से लेकर, Python तक (जो जानबूझकर C के कई सिंटैक्स फीचर्स को छोड़ देती है) से अलग है। और यह केवल वाक्य रचना है: शब्दार्थ के संदर्भ में, उस सूची की अधिकांश भाषाओं में सी के साथ बहुत कुछ नहीं है। भारी बहुमत में भाषा में स्मृति प्रबंधन का निर्माण होता है, और परिणामस्वरूप, शब्दार्थ, तर्क पारित करना आदि। , बहुत अलग हैं। उदाहरण के लिए, जावास्क्रिप्ट का स्कीम से मजबूत प्रभाव पड़ता है, जबकि इसके सिंटैक्स को जावा के सदृश बनाया गया था (जो बदले में C पर इसके बिट्स और टुकड़ों के सिंटैक्स को आधार बनाता है, लेकिन इसके शब्दार्थ को नहीं)। अन्य अंतर (सी ++ और ऑब्जेक्टिव-सी के अपवाद के साथ, जो ज्यादातर सी के साथ पीछे-संगत हैं) त्रुटि से निपटने, स्कोप,#include), और यह तथ्य कि इनमें से कई भाषाएं 'वर्चुअलाइज्ड' हैं, यानी ये एक दुभाषिया, जेआईटी कंपाइलर या एक वर्चुअल मशीन पर चलती हैं।

अजगर, वैसे, कुछ सी प्रभाव पड़ता है, लेकिन यह निश्चित रूप से "सी" पर आधारित नहीं है। वाक्य रचना और शब्दार्थ दोनों सी से काफी भिन्न हैं, और यह डिजाइन द्वारा है। पायथन केवल C से सुविधाएँ लेता है जहाँ अन्य विकल्प समान रूप से "अच्छे" हैं (जैसा कि "पायथन के ज़ेन" के अनुसार - import thisएक अजगर दुभाषिया में टाइप करें )।

प्रोग्रामिंग के भविष्य के लिए के रूप में; पूर्वानुमान अलग-अलग होते हैं। C का प्रभाव दूर नहीं हो रहा है, लेकिन हार्डवेयर में हाल के विकास (मल्टी-कोर मशीन आम हो रहे हैं, शक्तिशाली GPU है, CPU को विशिष्ट प्रदर्शन अड़चन, तेजी से विश्वसनीय नेटवर्क कनेक्शन, आदि के रूप में जाना जाता है) प्रोग्रामिंग के लिए मौलिक रूप से विभिन्न तरीकों के लिए कॉल करता है। सामान्य रूप में। जिस किसी ने कभी भी एक अनिवार्य भाषा में एक बहुस्तरीय वितरित आवेदन लिखा है, वह बता सकता है कि यह अविश्वसनीय रूप से कठिन है, जबकि हास्केल जैसी भाषाओं में ऐसी विशेषताएं हैं जो अधिकांश विशिष्ट समस्याओं को दूर करती हैं और वितरित, समवर्ती और समानांतर प्रसंस्करण के लिए अधिक सार और अधिक संरचित दृष्टिकोण प्रदान करती हैं। (इस संदर्भ में शुद्धता एक महत्वपूर्ण अवधारणा है)। नई प्रोग्रामिंग भाषाओं (जैसे C # या D) में पहले से ही इस तरह के मुहावरे का समर्थन करने के लिए कई विशेषताएं शामिल हैं। किसी भी स्थिति में,


अच्छा जवाब है, लेकिन "सीपीयू के लिए विशिष्ट प्रदर्शन अड़चन है"? मेरे अनुभव में, प्रदर्शन की समस्याएं समाप्त हो गई हैं - सीपीयू, आईओ, आप इसे नाम देते हैं। यदि नहीं, तो प्रोफाइलर की जरूरत नहीं होगी, भले ही वे बहुत प्रभावी न हों।
माइक डनलवे

6
@ मायिक डनलैवी: आमतौर पर, मेरे द्वारा सामना की जाने वाली अड़चनें आई / ओ, नेटवर्किंग, सीपीयू कैश प्रदर्शन, बस थ्रूपुट और (अक्षम) इंटरप्रोसेस संचार के कारण होती हैं। वापस दिनों में, सीपीयू लगभग अनिवार्य रूप से अड़चन था; यह अभी सच नहीं है।
tdammers

1

यह बहुत कुछ पूछने जैसा है कि अमेरिका में अंग्रेजी प्रमुख भाषा क्यों है। स्पैनिश या फ्रेंच क्यों नहीं? उन्होंने अंग्रेजी उपनिवेशों की तुलना में अमेरिकी क्षेत्र का अधिक नियंत्रण किया। डच क्यों नहीं? पहली अमेरिकी राजधानी एक पूर्व डच कॉलोनी में थी। मुझे यकीन नहीं है कि संभवतः इसका "उत्तर" हो सकता है।

हालाँकि, "कंप्यूटर लैंग्वेज हिस्ट्री" टाइमलाइन ( http://www.levenez.com/lang/ ) सभी उत्तर प्रदान करती है जो संभवतः हो सकती है।


6
क्योंकि 1600-1880 से ग्रेट ब्रिटेन दुनिया का प्रमुख औद्योगिक और वित्तीय महाशक्ति था, जिसके बाद संयुक्त राज्य अमेरिका 1880-वर्तमान (<- डिबेटेबल) था। यह अंतर्राष्ट्रीय व्यापार की भाषा बन गई और दुनिया भर में 2 अरब से अधिक लोगों द्वारा धाराप्रवाह बोली जाती है। यही कारण है कि और कोई भी :) स्पेनिश या डच बात करने के लिए चाहता है
maple_shaft

6
@maple_shaft - "कोई भी स्पेनिश बोलना नहीं चाहता" ?! ... क्या आपको भी पता है कि यह कितने देशों में बोली जाती है? en.wikipedia.org/wiki/Spanish_language
Rook

12
@ S.Lott: आपका मतलब उस हिस्से से है, जहाँ ब्रिटिश साम्राज्य अब तक का सबसे बड़ा साम्राज्य था, और पूरी दुनिया की सतह के 25% हिस्से पर कब्जा था? उस तरह का "शक्तिशाली नहीं"?
डेडएमजी

3
@ डीडीएमजी: मैं दुनिया के बारे में बात नहीं कर रहा हूं। मैं 1700 में अमेरिका के बारे में बात कर रहा हूं, जहां फ्रांसीसी ने तट के साथ एक छोटे से क्षेत्र में ब्रिटिश हेमड किया था। मैं इस थियेटर में केवल ब्रिटिशों की सैन्य व्यस्तता के बारे में बात कर रहा हूं। फ्रांसीसी स्पष्ट रूप से नियंत्रित करता था कि वह यूएस क्या है। फिर भी। अमेरिका ने अंग्रेजी बोलने का घाव भर दिया। फ्रेंच नहीं। सी। के लिए एक ही विश्लेषण लागू होता है। यह कई कारकों को प्रभावित करने वाला एक जटिल इतिहास है। कोई तुच्छ, पैट जवाब नहीं है।
S.Lott

4
@ S.Lott फ्रांसीसी ने हर एक मुठभेड़ को नहीं जीता। बस उत्तरी अमेरिका को देखते हुए उन्होंने बहुमत हासिल किया; लेकिन 1559/60 के दौरान NA में 5 बड़ी लड़ाइयों में से 4 में हारने से थिएटर में करारी हार मिली। फोर्त्स टोंडरडोगा और नियाग्रा, द प्लेन्स ऑफ अब्राहम, और रेस्टिगॉचे की लड़ाई सभी ब्रिटिश जीत थी। आपूर्ति में कटौती / सुदृढीकरण के कारण बाद में सैंटे-फोए अप्रासंगिक में फ्रांसीसी जीत हासिल हुई।
डैन नीली

0

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

इसके अलावा, मुझे लगता है कि सी-स्टाइल सिंटैक्स पढ़ना अपेक्षाकृत आसान है। पास्कल के साथ तुलना करने के लिए, कोड के ब्लॉक के लिए "{" और "}" प्रतीकों का उपयोग करना "शुरू" और "अंत" की तुलना में अधिक सुपाठ्य है, जो वैकल्पिक रूप से पहचानकर्ताओं के समान हैं। पायथन और भी अधिक सुपाठ्य है, लेकिन वाक्य रचना में व्हॉट्सएप सहित संपादन के साथ समस्याओं का एक नया सेट खोलता है। एक और उदाहरण: लिस्प और जावास्क्रिप्ट कुछ विचार साझा करते हैं, लेकिन जब सी-स्टाइल सिंटैक्स में एक ही बात लिखी जाती है, तो यह कम अस्पष्ट होता है।

मुझे यकीन है कि कई लोग दूसरे पैराग्राफ से असहमत होंगे, क्योंकि सभी की अपनी पसंदीदा भाषा है, लेकिन मुझे लगता है कि सी-स्टाइल सिंटैक्स की लोकप्रियता आंशिक रूप से एक ऐतिहासिक संयोग है, लेकिन आंशिक रूप से यह भी पता चलता है कि सी के लेखकों ने कुछ अच्छा बनाया है निर्णय।


-1

प्रोग्रामिंग भाषाएं समय के साथ-साथ प्राकृतिक भाषाओं की तरह विकसित होती हैं, कुछ पुरानी भाषाएं जो उस विकास को दूसरों की तुलना में अधिक मजबूत तरीके से प्रभावित करती हैं, जबकि अन्य अस्पष्टता में फीके पड़ जाते हैं और उनका प्रभाव सतह के स्तर, अर्थात वाक्य रचना पर पड़ना कठिन होता है।

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

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

पर विचार करने के लिए भाषा के इतिहास का एक अच्छा समयरेखा दृश्य


आपने गलत समझा। PASCAL और C दोनों ALGOL वंशज हैं।
इंगो

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

terse C- जैसे सिंटैक्स में अधिक अपील थी फिर 70 के दशक में 70 और 80 के दशक में C के पास्कल और अन्य प्रतियोगियों के अल्गोल-व्युत्पन्न सिंटैक्स की क्रिया करें । प्रोग्रामर शुरू करते हैं मनुष्य बहुत अंत होते हैं जो मानते थे कि यह शुरू करने के लिए शब्दों के विराम चिह्नों के लिए सुविधाजनक है, जैसे शुरू-अंत में अपनी कहानी को कहानी के अंत में
घुमाने के

मुझे कोई सबूत नहीं दिखता है कि सी सिंटैक्स कम अस्पष्ट है, इस अर्थ में कि ज्यादातर डेवलपर्स सी या किसी प्रकार की सी-संबंधित भाषा जानते हैं, और इसलिए यह अधिक परिचित दिखता है। AFAICT, C ने अपनी संरचना के कारण पास्कल पर जीत हासिल की और तथ्य यह है कि कार्यान्वयन को अपने स्वयं के लिंकिंग को रोल करना नहीं था, सिंटैक्स नहीं।
डेविड थॉर्नले

@ डेविड-मुझे जो याद है, उनमें से एक कारण सी को अन्य भाषाओं पर जीतना था क्योंकि सी (यानी पॉइंटर्स) में मेमोरी एक्सेस करने की सापेक्ष आसानी थी। मुझे पता है कि वे अभी तक घिरे हुए हैं, लेकिन जब 1 केबी की रैम बहुत अधिक मेमोरी थी, तो यह भाषा की बहुत शक्तिशाली विशेषता थी। मुझे पता है कि अन्य भाषाओं में पॉइंटर जैसे फीचर्स दिए गए हैं, लेकिन कोई भी आसानी से सी
डंक

-3

आप जिन भाषाओं को सूचीबद्ध करते हैं उनमें से अधिकांश में अप्रासंगिक सिंटैक्टिक समानता के अलावा सी के साथ कुछ भी नहीं है। केवल दो वास्तविक C व्युत्पन्न Objective-C और C ++ हैं।


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

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

1
@maple_shaft: सही है! मुझे एक साक्षात्कार में मशीन भाषा (असेंबलर) और प्रोग्रामिंग भाषा के बीच अंतर बताने के लिए कहा गया था। मेरा जवाब था: "मशीन भाषा मशीनों के लिए है, प्रोग्रामिंग भाषा प्रोग्रामर के लिए है।"
ट्रेब

1
@maple_shaft: सिंटेक्स अप्रासंगिक है क्योंकि यह लोगों के लिए संचार है । यदि मैंने एक अंग्रेजी शब्द को एक अलग वर्तनी के साथ बदल दिया, तो भी अंग्रेजी एक ही भाषा होगी। वाक्य-रचना रूप अप्रासंगिक है, जो संप्रेषणीय है वह भाषा शब्दार्थ है।
डेडएमजी

3
@DeadMG: लेकिन सवाल सिंटेक्स के बारे में है। आप वाक्यात्मक समानताओं को अप्रासंगिक मान सकते हैं, लेकिन सवाल पूछने वाला व्यक्ति जानना चाहता है कि ये अप्रासंगिक समानताएं क्यों मौजूद हैं
निकोल बोल्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.