C + अभी भी नवीनतम गतिशील भाषाओं पर भारी GUI ऐप्स बनाने के लिए क्यों पसंद किया जाता है? [बन्द है]


46

मैं देखता हूं कि अधिकांश ऐप्स जिनमें भारी GUI सामग्री शामिल है, वे आमतौर पर C ++ में विकसित की जाती हैं। अधिकांश गेम / ब्राउज़र C ++ में कोडित हैं।

क्या हम केवल नवीनतम गतिशील भाषाओं के साथ बेहतर GUI ऐप विकसित नहीं कर सकते हैं? मुझे पता है कि जावा एक बढ़िया विकल्प नहीं होगा। लेकिन अजगर जैसी भाषाओं के बारे में क्या जो मूल रूप से सी पर निर्मित हैं? क्या नवीनतम भाषाएँ अपने पूर्वजों से बेहतर नहीं मानी जातीं? हमें अभी भी नवीनतम भाषाओं में अधिक उम्र के C ++ को प्राथमिकता क्यों देनी है?

और मैं यह भी जानना चाहूंगा कि वह कौन सी चीज है जो C ++ में जिम्मेदार है, GUI प्रसंस्करण की बेहतर गति के लिए? दूसरी ओर वह क्या है जिसमें अन्य नवीनतम भाषाओं का अभाव है?


22
अगर आपको लगता है कि जावा एक 'गतिशील' भाषा है, तो आप इस संदर्भ में उस शब्द के अर्थ के बारे में गहराई से भ्रमित हैं।
माइक बैरकज़क

15
@ माइक बरनकजक: यह एक लंबी कहानी है। मूल रूप से, पहले स्टैनफोर्ड में एक शोध परियोजना थी, बाद में सन रिसर्च में स्व। स्मॉलटॉक परिवार में सेल्फ एक प्रोग्रामिंग लैंग्वेज है जो स्मालटाक की तुलना में सरल, अधिक शक्तिशाली, अधिक अभिव्यंजक और सबसे महत्वपूर्ण रूप से काफी अधिक गतिशील है। क्योंकि यह एक प्रोग्रामिंग भाषा के रूप में डिज़ाइन किया गया था ताकि पूरे सिस्टम को विकसित किया जा सके (जैसा कि सभी स्मॉलटाक बोलियाँ हैं), जिसमें (लेकिन केवल इन तक सीमित नहीं) डेस्कटॉप एप्लिकेशन, सर्वर, ऑपरेटिंग सिस्टम, डिवाइस ड्राइवर, स्वयं, इसमें बहुत तेज़ी से शामिल होना था। तो, सेल्फ टीम ने नए के पूरे समूह का आविष्कार किया ...
जॉर्ग डब्ल्यू मित्तग

15
... अनुकूलन तकनीक, और जब 1987 में सेल्फ वीएम बाहर आया (और 1992 में दूसरी पीढ़ी से भी अधिक), तो यह तेज था । यह किसी भी अन्य स्मॉलटाक वीएम से तेज था। सेल्फ सिस्टम को बहुत सारे उदाहरण कोड के साथ भेज दिया गया था, और उन उदाहरणों में से एक स्वयं में लिखा गया एक स्मॉलटॉक दुभाषिया था, और यहां तक कि किसी भी अन्य स्मॉलटॉक वीएम की तुलना में तेज था। उस समय कई सी ++ कार्यान्वयन की तुलना में स्वयं तेज था, और यहां तक ​​कि सी। के साथ प्रतिस्पर्धी भी, आप इसे प्राप्त करते हैं। यह तेज था । हालांकि, सन ने फैसला किया कि उन्हें ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग लैंग्वेज या तेज़ वीएम की ज़रूरत नहीं है, इसलिए वे ...
जॉर्ग डब्ल्यू मित्तग

15
... मूल रूप से धन को सूखने से स्व परियोजना को मौत के घाट उतार दिया। जब स्वयं वीएम इंजीनियरों ने सन को निराशा से बाहर निकाला, तो उन्हें लॉन्गव्यू नामक एक स्मॉलटॉक स्टार्टअप द्वारा जल्दी से स्कूप किया गया (जिसे उनके सबसे अधिक उत्पाद के नाम से जाना जाता है, स्मॉलटाक के लिए एक वैकल्पिक स्थिर प्रकार प्रणाली: स्ट्रांगटॉक)। लॉन्गव्यू को पता था कि वे स्मॉलटाक के लिए स्टैटिक टाइपिंग को कभी नहीं बेच पाएंगे, इसलिए उन्होंने सोचा कि वे ग्रह पर सबसे तेज़ स्मॉलटॉक को बेचेंगे और फिर सॉर्टजॉक को पैकेज में एक सॉर्ट ट्रोजन हॉर्स तरह के नाटक में शामिल करेंगे। उन्होंने यह भी महसूस किया कि शांत में से कोई भी नहीं ...
जॉर्ग डब्ल्यू मित्तग

15
... स्व-वीएम का अनुकूलन किसी भी तरह से स्व के लिए विशेष रूप से किया गया था, लेकिन बहुत अधिक किसी भी वस्तु-उन्मुख भाषा (या यहां तक ​​कि किसी भी भाषा में ) पर लागू होता है। तो, सेल्फ वीएम इंजीनियरों को एनीमेटोर्फिक वीएम नामक एक स्मॉलटॉक वीएम पर काम करना पड़ा। फिर से, एनिमोर्फिक वीएम तेजी से अंधा कर रहा था (और अभी भी है, वास्तव में, भले ही कोडबेस को 15 साल या उससे अधिक समय में छुआ नहीं गया है, यह अभी भी आधुनिक उच्च-प्रदर्शन स्मालटैक्स, जेवीएम और .NET के साथ प्रतिस्पर्धा कर सकता है, खासकर यदि आप लेते हैं खाते में यह उन लोगों की तुलना में बहुत कम संसाधनों का उपयोग करता है, क्योंकि यह 20 मेग के साथ 486 के लिए डिज़ाइन किया गया था ...
जॉर्ग डब्ल्यू

जवाबों:


58

मैं उन लोगों में से एक हूं, जो C ++ GUI ऐप्स (ज्यादातर विंडोज़ के लिए) लिखते हैं। क्यूटी के साथ, सटीक होने के लिए। मेरे कारण:

  • मुझे C ++ पसंद है। मैं एक फ्रीलांसर हूं और आमतौर पर मैं अपने टूल (मुझे भाग्यशाली) चुन सकता हूं।
  • प्रबंधित वातावरण में आपके पास एक कठिन समय हो सकता है जब आपको कुछ अप्रबंधित कोड (C #, किसी में भी लंबे समय से WinAPI घोषणाओं का उपयोग करने की आवश्यकता होती है?)
  • कम निर्भरताएं जो अधिक आसानी से तैनात हैं
  • हर चीज पर अधिक नियंत्रण।
  • RAII (बनाम जीसी)। और यहां तक ​​कि अगर मैं साथ आवंटित करता newहूं, तो मुझे शायद ही कभी deleteस्पष्ट रूप से कुछ भी मिलता है, क्योंकि मैं स्मार्ट पॉइंटर्स या QObjectपदानुक्रम का उपयोग करता हूं ।
  • सी ++ इन दिनों बहुत रोमांचक है, मैं नए मानक का पूरी तरह से समर्थन करने के लिए एक कंपाइलर का इंतजार नहीं कर सकता।
  • गति (केवल सूची के अंत में। मैं जानता हूँ कि यह है कि जीयूआई खुद के लिए महत्वपूर्ण है, लेकिन यह नहीं है हो जाता है त्वरित क्योंकि सी ++ प्रोग्राम हैं जो runtimes, बाइट कोड JIT-संकलन और इसी तरह की प्रौद्योगिकी को जोड़ने के भूमि के ऊपर से ग्रस्त नहीं है कार्यक्रम।)

जैसा कि आप देख सकते हैं, ये ज्यादातर व्यक्तिगत प्राथमिकताएं हैं। मुझे अपने काम को सुखद बनाने के लिए यह महत्वपूर्ण लगता है और C ++ मुझे प्रदान करता है।


11
व्यक्तिगत गति से हटकर, +1 गति निश्चित रूप से यहाँ शीर्ष कारण है। हालांकि, मुझे पसंद है "सी ++ इन दिनों बहुत रोमांचक है"। प्रश्न पूछने वाले को संबोधित करने के लिए , @ तमसे सजेलेई: निश्चित रूप से, नए विचारों, प्रतिमानों, प्रौद्योगिकियों, उत्पादों के साथ कंप्यूटिंग में तेज़ी से बदलाव नहीं होते हैं, लेकिन नवीनतम और सबसे बड़ा गुण नहीं है। C ++ कुछ समय के लिए आसपास रहा है और इसका मतलब यह नहीं है कि यह पुराना है, बल्कि नई तकनीकों की तुलना में इसका एक लंबा साबित ट्रैक रिकॉर्ड है। मूल स्ट्रॉस्ट्रुप पाठ (आविष्कारक की पुस्तक) भारी जा रहा है, लेकिन दूसरों द्वारा वहाँ कुछ अच्छी किताबें हैं - उदाहरण के लिए अयस्किल्ली.कॉम देखें।
उपचारात्मक

1
@ टार्नास मुझे लगता है कि "हमेशा तेज़ होगा" थोड़ा संकीर्ण / आधिकारिक है, लेकिन एक अपमानजनक वारंट के लिए पर्याप्त नहीं है ...
मैक्स

2
वास्तविक समर्थन के रूप में: मैं सी + + और जावास्क्रिप्ट का उपयोग करके विंडोज पर महत्वपूर्ण आकार के GUI बनाने के लिए विभिन्न परियोजनाओं में शामिल रहा हूं। मैं C ++ और जावास्क्रिप्ट में अलग-अलग गेम कंसोल प्रोजेक्ट्स में भी शामिल रहा हूं। दोनों ही मामलों में, जावास्क्रिप्ट के साथ काफी अधिक गति और मेमोरी के मुद्दे थे।
रोबोट

2
पार्टी के लिए देर से, लेकिन क्या आप "कम / आसानी से तैनात निर्भरता" पर विस्तार से बता सकते हैं?
वेबर 2

2
मैं 20 से अधिक वर्षों से C ++ का उपयोग कर रहा हूं। 11, 14, और 17 के बाद से कई नई और बेहतरीन सुविधाएँ जोड़ी जाती हैं। आप C ++ को स्क्रिप्टिंग भाषा के रूप में उपयोग कर सकते हैं और फिर भी तेज़ गति का लाभ प्राप्त कर सकते हैं। जब मैं BIG डेटा के साथ काम करता हूं, मुझे लगभग C ++ का उपयोग करना पड़ता है क्योंकि किसी भी अन्य भाषा में 10-1000 धीमे होंगे।
केमिन झोउ

32

क्योंकि गति मायने रखती है।

  • खेल कोर कार्यों के लिए C ++ का उपयोग करते हैं, जहां प्रदर्शन महत्वपूर्ण है। वे स्क्रिप्टिंग कार्यों के लिए गतिशील भाषाओं का उपयोग करते हैं जहां लचीलापन महत्वपूर्ण है।

  • डेस्कटॉप GUI ऐप्स : विज़ुअल स्टूडियो, उदाहरण के लिए, .NET में लिखा गया है, न कि देशी C ++ में। यह एक IDE के लिए काफी अच्छा काम करता है, क्योंकि IDE को स्वयं बहुत सारे प्रदर्शन गहन कार्य करने की आवश्यकता नहीं है। (संकलक, लिंकर और अन्य उपकरण आवश्यक रूप से .NET में नहीं लिखे गए हैं - हालांकि जैसा कि वावा एक टिप्पणी में बताते हैं, कुछ प्रतीत होता है (जैसे VB.NET)

  • ब्राउज़रों को भी तेज होना चाहिए। आखिरकार वे एक तरह के द्वितीयक ओएस हैं। दूसरी ओर, आप तर्क दे सकते हैं कि फ़ायरफ़ॉक्स के बड़े हिस्से वास्तव में "जावास्क्रिप्ट" में लिखे गए हैं, क्योंकि मोज़िला फ्रेमवर्क बहुत हद तक जावास्क्रिप्ट पर निर्भर करता है।

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


1
+1 सर्वश्रेष्ठ उत्तर: यह शुद्ध रूप से C ++ का उपयोग करने के लिए शीर्ष कारण के रूप में है। यहां तक ​​कि Microsoft ने खुद स्वीकार किया कि C ++, c # और विज़ुअल बेसिक की तुलना में प्रदर्शन के लिए सबसे अच्छा है - उनके विज़ुअल स्टूडियो पेजों पर देखें। एक बहुत करीबी दूसरा पोर्टेबिलिटी है - यदि आप Qt जैसे क्रॉस प्लेटफॉर्म लाइब्रेरी का उपयोग करते हैं। सर्वश्रेष्ठ उत्तर भी क्योंकि यह व्यक्तिपरक के बजाय उद्देश्य है।
उपचार:

2
आपका दूसरा बिंदु पूरी तरह सच नहीं है। VB.NET कंपाइलर VB.NET में राइट है और F # कंपाइलर F # में लिखा है। C # कंपाइलर नहीं है, लेकिन जो प्रोजेक्ट रोजलिन के बारे में जारी किया गया है, मुझे लगता है कि C # कंपाइलर को C # में फिर से लिखा जा रहा है।
वेस्ले विजर

5
दृश्य स्टूडियो गिनी (क्रोम) को सी # और WPF में (vs2010 से) लिखा गया है। समाधान एक्सप्लोरर, बिल्ड सिस्टम, कोड ब्राउज़र और टूलबॉक्स को c # / c ++ में winforms के साथ लिखा गया है। संकलक c ++ में लिखा गया है।
मार्टिन बेकेट

अधिकांश डेस्कटॉप ऐप्स के लिए, केवल रेंडरिंग और लेआउट इंजन (यानी, व्यू) को तेज होना चाहिए। मॉडल का वैसे भी इसमें अधिक समय नहीं लगता है, और नियंत्रक अपना अधिकांश समय उपयोगकर्ता को कुछ करने के लिए इंतजार करने में बिताता है (और कुछ उपयोगकर्ता किसी भी विश्वसनीयता के साथ सेकंड के 10 गुना अधिक क्लिक कर सकते हैं)।
डोनल फैलो

@MartinBa: मैं ध्यान दूंगा कि C # और VB (रोजलिन) के लिए वर्तमान संकलक C # में लिखा गया है।
jmoreno

17

जीयूआई ऐप जो आप सी ++ में लिखे हुए देखते हैं, वे आमतौर पर विरासत कारणों से किए जाते हैं। पायन (क्यूटी या जीटीके के साथ) जीयूआई अनुप्रयोगों के लिए बहुत अधिक व्यवहार्य है, जैसे कि आप एक विंडोज घर में काम करते हैं। जब कुछ नया शुरू करने, या तो है बहुत ज्यादा किया जा सकता है कि पाइपलाइन काम की कमी की वजह सी को प्राथमिकता दी ++।


5
+1 मौजूदा कोड महत्वपूर्ण है। नए कार्यक्रमों को विकसित करते समय खरोंच से पूरी तरह से शुरू करना दुर्लभ है

7
क्यूटी के साथ पायथन का उपयोग क्यूटी के साथ सी ++ का उपयोग करने के लिए और अधिक बेहतर कैसे है? अगर मैं आज एक नई परियोजना शुरू करता, तो मैं अभी भी GUI के लिए C ++ का उपयोग करता। क्योंकि: ए) यह मुझे पता है, ख) यह काम अच्छी तरह से करता है। सिर्फ इसलिए कि C ++ कुछ समय के लिए है, इसे "पुराना" नहीं बनाया गया है।
TZHX

2
@TZHX: "यह वही है जो मैं जानता हूं" एक व्यवहार्य तर्क है। यदि यह नहीं दिया गया है, तो स्मृति प्रबंधन की देखभाल नहीं करना एक बहुत बड़ा प्रदर्शन है, और यह एक एकल परियोजना के लिए भी पायथन सीखने के प्रयास को बंद कर सकता है। अजगर का उपयोग करने का एक अन्य कारण क्रॉस-प्लेटफ़ॉर्मेंस होगा - सी ++ के साथ, आपको सावधान रहना होगा और विशेष उपाय करने होंगे, जबकि अजगर सिर्फ काम करने की संभावना है।
तदमर्स

4
मैं किसी ऐसे व्यक्ति के लिए C ++ के बजाय PyQt का उपयोग करने का कोई लाभ नहीं देखता, जो C ++ जानता है।
बेंजामिन

13
C ++ में सिर्फ काम करने की संभावना है। पायथन के साथ आपको चिंता करनी होगी कि उपयोगकर्ता ने अजगर के किस संस्करण को स्थापित किया है, या इसे बंडल करने के बारे में चिंता करें। जब तक आप बेवकूफियां नहीं करेंगे, तब तक "मेमोरी की देखभाल" करने के लिए वास्तव में इतना काम नहीं है। मुझे लगता है कि बहुत से लोग "मेमोरी मैनेजमेंट" को सी ++ के साथ काम करने के लिए एक बड़ी बाधा के रूप में देते हैं, वास्तव में यह जाने बिना कि इसमें कितना अंतर है।
TZHX

16

क्योंकि कोई भी बात नहीं है कि कितने प्रदर्शन परीक्षण .NET और जैसे भीड़ दिखाते हैं, चाहे वे बेंचमार्क में कितने भी करीब आएं, अंत में C ++ ऐप सबसे ऊपर आता है। यह ठंडी बूट पर तेज़ है, यह तड़क-भड़क वाला है, और इसमें और भी तरीके हैं जिससे इसमें सुधार किया जा सकता है।

मैंने इस परियोजना के चरणों में कई सबूतों को सुना है कि .NET जाने का रास्ता है, लेकिन एक बार जब यह चुना जाता है, तो वे हमेशा एक भारी ठग बन कर रह जाते हैं।

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


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

10

अधिकांश गेम इंजनों को C ++ में कोडित किया गया है। बहुत सारे ब्राउज़र इंजन C ++ में कोडित हैं। लेकिन ब्राउज़र GUI को अक्सर कुछ हल्की स्क्रिप्ट (जावास्क्रिप्ट, पायथन) का उपयोग करके कोडित किया जाता है। स्रोत इंजन के उल्लेखनीय अपवाद के साथ, अधिकांश गेम इंजन भी स्क्रिप्टिंग भाषाओं (जैसे लुआ या पायथन) का उपयोग करते हैं। [संदर्भ के लिए: लुआ पटकथा खेल की सूची ]

लोकप्रिय क्यू ++ जीयूआई लाइब्रेरी जैसे क्यूटी भी लें। वर्तमान संस्करण (4.7) में यह GUI के लिए QML का उपयोग करता है। QML मूल रूप से Qt बाइंडिंग के साथ जावास्क्रिप्ट है।

तो वास्तव में कोई C ++ बनाम गतिशील भाषा नहीं है, यह मिश्रित है।


[प्रशस्ति पत्र की जरूरत]। मुझे पता है कि कई गेम स्क्रिप्टिंग भाषाओं का उपयोग करते हैं ताकि उपयोगकर्ताओं को उनका विस्तार करने में मदद मिल सके, लेकिन जहां तक ​​मुझे पता है कि उनकी रिलीज़-बाइनरी-कार्यक्षमता के लिए स्क्रिप्टिंग भाषाओं का उपयोग करते हुए वास्तव में कई गेम नहीं हैं।
प्रोडिजीसिम

1
@ProdigySim: मुझे पता है कि कई करते हैं। मेरे सिर के ऊपर से, World of Warcraft (Lua + XML), शरारती डॉग्स अनचार्टेड सीरीज़ (Lisp), Unreal Series (UnrealScript), टॉर्क और यूनिटी इंजन पर आधारित गेम, डंगऑन घेराबंदी, नेवर वाइट नाइट्स, और कई अन्य। डेटा-संचालित गेम आदर्श बन रहे हैं, जहां स्क्रिप्टिंग होस्ट अधिकांश (यदि सभी नहीं) यूआई सुविधाओं और गेम स्टेट को ऊपर से नीचे तक ले जाता है।
ग्रेफेड

@ProdigySim: भले ही यह सामान्य उपयोगकर्ताओं से छिपा हो, इसका मतलब यह नहीं है कि आंतरिक रूप से वे स्क्रिप्टिंग इंजन का उपयोग नहीं करते हैं। मूल रूप से गेम डेवलपर्स के पास दो विकल्प हैं - मॉडल के लिए अपनी स्क्रिप्टिंग भाषा बनाएं या सामान्य उद्देश्य वाले लोगों में से एक का उपयोग करें। लुआ खेल के लिए विशेष रूप से अच्छा है, क्योंकि यह आम तौर पर वास्तविक समय प्रणालियों के लिए अच्छा है।
वार्टेक

स्रोत इंजन में स्क्वरेल स्क्रिप्टिंग भाषा का उपयोग किया गया है।
cubuspl42

6

पहला कारण होगा: (पुरानी) आदत

दूसरा कारण: वर्चुअल मशीन पर कम विश्वसनीयता, दुभाषियों को स्थापित करने की आवश्यकता आदि।

और C ++ में कोड विकसित करने के लिए अभी भी कुछ उत्कृष्ट IDE हैं।


1
' अभी भी उत्कृष्ट IDEs' .. मैं चाहता हूँ कि विजुअल स्टूडियो और एक्लिप्स अत्याधुनिक हैं और बहुत लंबे समय से हैं।
JBRWilkinson

@JBRWilkinson: मैंने यह नहीं कहा कि दूसरी भाषा उनके पास भी नहीं है।
रोहट

6

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

त्वरित उदाहरण के लिए यहां देखें ।


2
एडोब लाइटरूम, जो मूल रूप से फ़ोटोशॉप का सबसेट है, लूआ में लिखा गया है।
जोर्ग डब्ल्यू मित्तग

4
@ Jörg: और इसका बाकी हिस्सा C ++ है। वास्तव में यह संभव है कि सबसे अच्छा संयोजन उपलब्ध हो, नींव के लिए सी ++, बाकी के लिए लुआ (मैं अभी भी निम्न स्तर की चीजों के लिए सी ++ से अधिक पसंद करता हूं)।
जेवियर

2
@ जेवियर: हाँ, लाइटरूम मूल रूप से फोटोशॉप से ​​इमेज हेरफेर एल्गोरिदम है (जो कि संभवतः ज्यादातर एमएमएक्स / एसएसई असेंबली में लिखे गए हैं) और SQLite3 (जो पोर्टेबिलिटी के लिए पूर्व-ऐतिहासिक एएनएसआई सी में लिखा गया है) लुआ से एक साथ चिपके हुए हैं। Adobe ने भी पूरी तरह से Lua में अपनी Lua IDE विकसित की। क्या किसी को पता है कि वे किस ग्राफिक्स टूलकिट का उपयोग करते हैं? AFAIR फ़ोटोशॉप बहुत सारे आधुनिक टूलकिट्स की भविष्यवाणी करता है, इसलिए यह शायद कुछ घर का बना हुआ है?
जोर्ज डब्ल्यू मित्तग

4
कोई अपराध नहीं है, लेकिन अगर आपको लगता है कि एएनएसआई सी प्रागैतिहासिक है, तो आप गलत कोड नमूने पढ़ रहे हैं
जेवियर

6

C ++ सांख्यिकीय रूप से टाइप किया गया है। यह एक संकलक को दिए गए प्लेटफ़ॉर्म पर उपलब्ध सिस्टम प्रक्रिया में आपके अमूर्त फिट होने से कोड निष्पादन को पहले से ही अनुकूलित करने की अनुमति देता है। अब तक, गतिशील भाषाओं को एक अतिरिक्त सॉफ़्टवेयर परत (= दुभाषिया) की आवश्यकता होती है, जो सिस्टम संसाधनों तक पहुंच को धीमा कर देती है।


4

दिए गए अधिकांश कारण तकनीकी या "तालिका के ऊपर" हैं ... यहां व्यावसायिक कारण या "तालिका के नीचे" हैं:

संकलित कोड वितरित करना बनाम स्रोत कोड वितरित करना। जब आप c / c ++ में विकासशील होते हैं तो आप बायनेरिज़ वितरित करते हैं। यदि आप आधुनिक भाषाओं में से एक में विकसित हो रहे हैं, तो आप स्रोत वितरित करते हैं। प्रबंधन के लिए पर्यवेक्षकों के विचार को बेचना मुश्किल है जो शेयरधारकों / निवेशकों को जवाब देना है ताकि परेशान न हों।

बेवकूफ उपयोगकर्ता: कम से कम प्रबंधन के दिमाग में। वे अभी भी अपने उपयोगकर्ताओं को मुश्किल से "setup.exe" पर डबल क्लिक करने में सक्षम होने का अनुभव करते हैं। यदि आप सेटअप के हिस्से के रूप में एक दुभाषिया की स्थापना शामिल करते हैं, तो वे अपने सिर को एक तरफ से हिला देंगे।

पुराने डेवलपर्स: अनुभव वाले अधिकांश लोग लंबे समय से आसपास हैं, और खुद को अपडेट नहीं रखा है। वे C ++ में प्रोग्राम करते हैं और नई भाषाओं में नहीं, क्योंकि वे नई भाषाओं को नहीं जानते हैं।


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

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

4

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

इसके अतिरिक्त C ++ आमतौर पर सिस्टम एपिस (जैसे GUI) तक सीधी पहुंच प्रदान करता है जो उपयोग को अनुकूलित करने और समान समाधानों से खुद को अलग करने का सबसे अच्छा अवसर देता है।


3

मुझे लगता है कि GUI टूलकिट के लिए एपीआई के साथ बहुत कुछ करना है। उन सभी के पास C / C ++ API है, लेकिन उन सभी में पायथन बाइंडिंग नहीं है। और कभी-कभी टूलकिट्स खुद सी ++ को ध्यान में रखकर लिखे गए थे, इसलिए भले ही वे अन्य भाषाओं के लिए समर्थन करते हों, वे उन्हें पूरी तरह से समर्थन नहीं करते हैं (उदाहरण के लिए, वे tupleएक तर्क के रूप में पायथन का समर्थन नहीं करेंगे)।


ओह, वे पूरी तरह से उनका समर्थन नहीं करते हैं, क्योंकि वे नहीं चाहते हैं, या उस पर अमल करने का समय नहीं है। इसलिए नहीं कि यह असंभव है।
cubuspl42

2

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

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

हालाँकि, नवीनतम प्रोग्रामिंग भाषाओं के लिए चौखटे की कमी है। उदाहरण के लिए, वास्तव में पायथन के लिए कोई व्यवहार्य देशी जीयूआई पुस्तकालय नहीं है। निश्चित रूप से, आप PyQt या PyGtk का उपयोग कर सकते हैं और वे अच्छी तरह से काम करते हैं, लेकिन अंत में, वह केवल सी कोड के साथ फिर से हस्तक्षेप कर रहा है। फिर से, C # (और यकीनन Obj-C) अपवाद लगता है और शायद, MacRuby या IronPython उस गेम को बदल सकते हैं।


0

सी ++ या जावा को बदलने के लिए एक भाषा के लिए, यह करना होगा कि इन भाषाओं में जो कुछ भी याद किया जाता है, उन्हें अलग-अलग अपनी ताकत पर प्रदर्शन करने के अलावा। साथ ही, इन भाषाओं में भारी निवेश हुआ है। इसका मतलब है कि कई प्लेटफार्मों पर एक मानक सी ++ लाइब्रेरी है, जो ब्राउज़र, गेम और ऐसे प्रोग्राम आसानी से उपयोग कर सकते हैं। तो कुछ जड़ता होने के लिए बाध्य है। सॉफ्टवेयर के अन्य टुकड़ों के विपरीत भाषाएं धीरे-धीरे बंद हो जाती हैं।

अगर आप इसे देखें, तो एनाकोंडा (रेडहैट का इंस्टॉलर प्रोग्राम) लगभग 10 या इतने सालों से है, जिसे शुरुआत से पायथन में लिखा गया था। जब एनाकोंडा नया था तब पायथन यह लोकप्रिय नहीं था।

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


1
वास्तव में, वहाँ विंडोज के लिए एक वाणिज्यिक जाओ संकलक जो जाओ में लिखा है है, इसलिए वहाँ है जाओ के लिए एक बूटस्ट्रैप संकलक। (यह अभी भी बंद बीटा में है, हालांकि।)
जोर्ग डब्ल्यू मित्तग

ओह, मैं स्पर्श से बाहर था, तब। बताने के लिए धन्यवाद :)
vpit3833

2
इसे erGo कहा जाता है और इसका निर्माण Newquist Solutions नामक कंपनी द्वारा किया गया है ।
जॉर्ग डब्ल्यू मित्तग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.