क्रॉस-प्लेटफ़ॉर्म डेस्कटॉप प्रोग्रामिंग: सी ++ बनाम पायथन [बंद]


11

ठीक है, शुरू करने के लिए, मेरे पास शौकिया ओबज-सी / कोको और रूबी डब्ल्यू / रेल्स प्रोग्रामर के रूप में अनुभव है। ये महान हैं, लेकिन वे क्रॉस-प्लेटफ़ॉर्म एप्लिकेशन लिखने के लिए वास्तव में सहायक नहीं हैं (उम्मीद है कि GNUStep एक दिन पहले मल्टी प्लेटफॉर्म के लिए पर्याप्त होगा, लेकिन वह दिन आज नहीं है)।

C ++, जो मैं इकट्ठा कर सकता हूं, वह अत्यंत शक्तिशाली है, लेकिन एक विशाल, बदसूरत गोमेद भी है जो गुरु के लिए आधा दशक या उससे अधिक समय ले सकता है। मैंने यह भी पढ़ा है कि आप बहुत आसानी से न केवल पैर में खुद को गोली मार सकते हैं, बल्कि अपने पूरे पैर को इसके साथ उड़ा सकते हैं क्योंकि स्मृति प्रबंधन सभी मैनुअल है। जाहिर है, यह सब काफी डराने वाला है। क्या यह सही है?

अजगर सी + + की अधिकांश शक्ति प्रदान करने के लिए लगता है और गति की लागत पर लेने के लिए बहुत आसान है। यह कितना बड़ा बलिदान है? क्या यह सार्थक है या इसे अनदेखा किया जा सकता है?

जिससे मुझे समय की उचित मात्रा में तेज, स्थिर, अत्यधिक विश्वसनीय अनुप्रयोग लिखने होंगे?

इसके अलावा, क्या आपके UI के लिए Qt का उपयोग करना बेहतर है या इसके बजाय प्रत्येक प्लेटफ़ॉर्म के लिए अलग, मूल फ्रंट सिरों को बनाए रखना है?

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


आप ऐसे प्रश्न पूछ रहे हैं जिनके उत्तर अत्यधिक व्यक्तिपरक होंगे - IMHO जो रचनात्मक नहीं है, इस प्रकार मतदान बंद हो सकता है। आप एक में कम से कम 4 अलग-अलग प्रश्न पूछ रहे हैं। कोई और कैसे कर सकता है लेकिन आप जानते हैं कि क्या C ++ या पायथन आपके लिए बेहतर विकल्प है ? मेरा सुझाव है कि आप पायथन के साथ एक छोटा जीयूआई एप्लिकेशन बनाने की कोशिश करें (जो आपको एक दिन से अधिक नहीं लेनी चाहिए), और सी ++ के साथ एक ही एप्लिकेशन, और खुद की तुलना करें।
डॉक्टर ब्राउन

मैं क्या मैं सच में पूछने के लिए दिया जाता है मैं क्या देख रहा हूँ, जो कि कोशिश कर रहा हूँ लगता है कि निष्पक्ष बेहतर विकल्प?
जॉन वेल्स

क्या आप कुछ अतिरिक्त संदर्भ दे सकते हैं - आपके डेस्कटॉप ऐप को क्या करने की आवश्यकता है? गणित के बहुत सारे? उत्पादकता ऐप? डेटाबेस का उपयोग? एक खेल?
JBRWilkinson

जो मैं करना चाहता हूं, उसे स्पष्ट करने के लिए एडिट एड किया।
जॉन वेल्स

मैं ऑपरेटिंग सिस्टम और / या GUI लाइब्रेरी की समान भाषा का उपयोग करने का विकल्प चुनूंगा। आप अधिक आसानी से यूआई में गहराई से जोड़तोड़ कर सकते हैं। उच्च स्तरीय लैंग जैसे जावा या सी # में फुल स्क्रीन (अपने ब्राउज़र में F11 दबाएं) के रूप में सरल रूप में कुछ अनुकरण करने का प्रयास करें। बस इतना ही कहना चाहता हूं। मूल समाधान, उच्च स्तर के समाधान जैसे जावा (विडंबना) की तुलना में व्यापक प्रकार के उपकरणों के लिए पोर्टेबल हैं।
लॉर्ड टाइडस

जवाबों:


9

C / C ++ तेज है। वास्तविकता यह है कि अधिकांश ऐप को वर्तमान हार्डवेयर की स्थिति के साथ उस प्रदर्शन की आवश्यकता होती है। सामान्य तरीका यह है कि उच्च स्तरीय भाषा में, जैसे कि C / C ++ जैसी निचले स्तर की भाषाओं के साथ आवश्यकता होने पर अनुकूलन की तुलना में उच्च स्तरीय भाषा में एप्लिकेशन को विकसित किया जाए।

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

Standart GUI ऐप्स के लिए, अजगर आपको पर्याप्त प्रदर्शन दे सकता है। और अजगर के पास कुछ बहुत अच्छा है जिसे किवी कहा जाता है , एक GUI ढांचा जो मैक, विंडोज, लिनक्स, एंड्रॉइड और आईओएस पर चलता है, और मल्टी टच का समर्थन करता है। बोनस भाग है, प्रदर्शन महत्वपूर्ण भागों को सी के साथ अनुकूलित किया गया है, साइथन का उपयोग करके।


1
आप शायद गति के बारे में सही हैं। कीवी बहुत ही सक्षम लगता है, लेकिन क्या यह सिस्टम-देशी विजेट को आकर्षित कर सकता है?
जॉन वेल्स

नहींं, यह OpenGL ES का उपयोग करते हुए, विगेट्स के लिए अपने ग्राफिक्स इंजन का उपयोग करता है। Qt शायद क्रॉस प्लेटफॉर्म देशी विजेट के लिए आपका सबसे अच्छा दांव होगा।
हकन डेरिल

5

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

मैं क्रोम इंजन को एम्बेड करने और जैसी तकनीकों का उपयोग करने की सलाह दूंगा: UI के लिए HTML5 + CSS3 + जावास्क्रिप्ट + JQuery + कैनवस।

एक ढांचा है जो आपके सी ++ ऐप में क्रोम इंजन को एम्बेड करना आसान बनाता है, इसे सीईएफ - क्रोमियम एंबेडेड फ्रेमवर्क कहा जाता है । यह विंडोज, लिनक्स, मैक ओएस को सपोर्ट करता है।

यदि आप पायथन को पसंद करते हैं, तो सीईएफ पायथन पर एक नज़र डालें , यह एक परियोजना है जो सीईएफ ढांचे ( साइथन का उपयोग करके ) के लिए अजगर बाँधने की सुविधा प्रदान करता है । CEF अजगर वर्तमान में केवल Windows का समर्थन करता है, लेकिन अन्य OS'es के लिए योजनाएं हैं।

यहां उन अनुप्रयोगों की एक सूची दी गई है जो सीईएफ ( यहां से लिए गए ) का उपयोग करके सफल हुए हैं :

  • एडोब ब्रैकेट - वेब के लिए कोड संपादक
  • Adobe Edge - मल्टीमीडिया संलेखन उपकरण
  • AppJS - Node.js का उपयोग करके डेस्कटॉप एप्लिकेशन का निर्माण करें
  • एओएल इंस्टेंट मैसेंजर - विंडोज़ क्लाइंट CEF का उपयोग करता है
  • क्यूबिज - डेस्कटॉप में आपकी पसंदीदा सामग्री को एकीकृत करता है
  • देसुरा - ऑनलाइन खेल मंच
  • डिश वर्ल्ड आईपीटीवी - स्ट्रीमिंग वीडियो प्लेटफॉर्म
  • एवरनोट - नोटिंग सॉफ्टवेयर
  • ExeOutput - आप डेस्कटॉप अनुप्रयोगों के रूप में html5 / php अनुप्रयोगों को तैनात करने की अनुमति देता है
  • विंडोज के लिए GitHub - विंडोज के लिए GitHub क्लाइंट सॉफ्टवेयर
  • जेनेटेटर - ट्विटर क्लाइंट सॉफ्टवेयर
  • mChef - mIRC ब्राउज़र प्लगइन
  • MediaMan - आयोजक सॉफ्टवेयर
  • MetaVR - भौगोलिक सिमुलेशन सॉफ्टवेयर
  • एमटीजी स्टूडियो - खेल आयोजक सॉफ्टवेयर
  • ओपनस्पेस 3 डी - 3 डी विकास मंच
  • Rdio - स्ट्रीमिंग संगीत मंच
  • Spotify - स्ट्रीमिंग संगीत मंच
  • स्टीम क्लाइंट - ऑनलाइन गेम प्लेटफॉर्म
  • Tencent QQ - त्वरित संदेश कार्यक्रम और वेब ब्राउज़र
  • ट्रेंड माइक्रो - इंटरनेट सुरक्षा सॉफ्टवेयर
  • WBEA डेस्कटॉप - आप डेस्कटॉप अनुप्रयोगों के रूप में html5 अनुप्रयोगों को तैनात करने की अनुमति देता है

इसके अलावा इस ब्लॉग प्रविष्टि पर एक नजर है: वेब टेक्नोलॉजीज पर एक डेस्कटॉप गुणवत्ता वाले अनुप्रयोग का निर्माण - कोष्ठक संपादक टीम बताया गया हो कि वे इसे का उपयोग करके बनाया CEF ढांचे की तरह और वेब प्रौद्योगिकियों: jQuery , बूटस्ट्रैप , कम सीएसएस , requireJS , इकाई परीक्षण के लिए चमेली , JSlint

अस्वीकरण: मैं सीईएफ पायथन परियोजना का लेखक हूं।


आपके सहयोग के लिए धन्यवाद! सीईएफ काफी अच्छा दिखता है, लेकिन मैं प्रत्येक मंच पर एक देशी अनुभव प्रदान करने की उम्मीद कर रहा हूं यदि संभव हो तो, जिसे HTML, CSS और JS के साथ पुन: पेश करना मुश्किल है।
जॉन वेल्स

@ जॉन, क्यों देशी? लोगों को वेब अनुभव के लिए उपयोग किया जाता है। विंडोज 8 को देखें, माइक्रोसॉफ़्ट के प्रत्येक अगले ओएस का मूल निवासी के साथ कम संबंध है, वे वेब तकनीकों को मजबूर कर रहे हैं और यह भविष्य है, "देशी अनुभव" जैसी कोई चीज नहीं है, यह अतीत की बात है।
Czarek Tomczak

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

1
सही JBRWilkinson, लेकिन मैं वास्तव में विजेट-मिमिक CSS (CEF के मामले में) प्रत्येक प्लेटफ़ॉर्म के लिए लिखना नहीं चाहता, अगर मुझे नहीं करना है।
जॉन वेल्स ने

1
स्वयं मैक उपयोगकर्ता होने के नाते, देशी अनुभव मेरे लिए बहुत मायने रखता है। मेरी नजर में, ऐसा कुछ भी नहीं है जो एक एप्लिकेशन से भी बदतर नहीं है जो दिखाई नहीं देता है और उस ओएस के अनुरूप काम करता है जिस पर वह चल रहा है। यहां तक ​​कि एक बड़े पैमाने पर उत्पादकता को बढ़ावा देने जैसा कुछ भी इसे पछाड़ने के लिए पर्याप्त नहीं है।
जॉन वेल्स

5

C ++ का Qt तरीका शानदार और साफ है, इसलिए कृपया, "बदसूरत बीहोम" भाग को छोड़ दें, मैंने उन दोनों को आज़माया है, और व्यक्तिगत रूप से मैं पायथन के क्यूटी बाइंडिंग की तुलना में Qt / C ++ के साथ अधिक उत्पादक / आरामदायक हूं। यदि आप Qt के साथ जाना चुनते हैं तो मेरी सलाह है। यदि आप ऐसा करने का विकल्प चुनते हैं, तो QML तकनीक के साथ Qt विजेट प्रदान करते हैं, Qt5 और QtQuick2 और QML तकनीक के साथ जावास्क्रिप्ट और HTML5 को एम्बेड करने की क्षमता के अलावा, मूल अनुभव के साथ, यदि आप ऐसा करना चुनते हैं।

इसलिए, मुझे डेस्कटॉप ऐप्स में पायथन पसंद नहीं है और मैं इसे स्क्रिप्टिंग या सर्वर साइड चीजों के लिए रखना पसंद करता हूं?

  • पायथन ने क्रॉस-प्लेटफॉर्म आनन्द को थोड़ा तोड़ दिया, आपके क्लाइंट को आपके ऐप (विशेष रूप से विंडोज पर) को चलाने के लिए पायथन को स्थापित करना होगा, और अजगर के आधिकारिक वेबसाइट पर अलग-अलग पायथन संस्करण अब क्लाइंट को भ्रमित करते हैं, जिसे डाउनलोड / इंस्टॉल करने के लिए ।

  • बाहर निकलने के लिए अजगर , बड़े ऐप बनाएं (आकार में)।

  • पायथन ऐप, अधिक मेमोरी खाएं।

यह एक व्यक्तिगत दृष्टिकोण है। क्यूटी की मूल प्रणाली, स्मार्ट पॉइंटर्स, न तो आप अपने आप को पैर में गोली मार सकते हैं, न ही पैर, सी ++ 11 आपको और अधिक सुविधाएं देगा।


3
"आपके ग्राहक को आपके ऐप को चलाने के लिए पायथन को स्थापित करना होगा" - आप अपने ऐप के साथ अजगर dlls वितरित कर सकते हैं, उपयोगकर्ता को मैन्युअल रूप से अजगर स्थापित करने की कोई आवश्यकता नहीं है। आपको py2.exe या अन्य छोटी गाड़ी के एक्स निर्माताओं (मेरे अनुभव से) का उपयोग करने की आवश्यकता नहीं है, पायथन एंबेडिंग देखें , यह c ++ कोड की केवल कुछ पंक्तियाँ हैं, PyRun_SimpleString को PyRun_SimpleFile से प्रतिस्थापित करें, आप इसे आसानी से स्वयं संकलित कर सकते हैं, जिससे कोई ओवरहेड नहीं होना चाहिए आपके ऐप का आकार। "पायथन ऐप्स, अधिक मेमोरी खाएं।" - अपने ऐप के मेमोरी डिमांड पार्ट्स को ऑप्टिमाइज़ करने के लिए साइथन का इस्तेमाल करें।
Czarek Tomczak
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.