2011-02-14 23 views
5

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

यदि आप सी # के साथ विंडोज़ पर विकास कर रहे हैं, तो आप डॉट-नेट का उपयोग कर रहे हैं। लिनक्स और मैकोज़ पर, आप मोनो का उपयोग कर रहे हैं।

अन्य लोगों ने पोस्ट किया है कि मोनो बहुत अच्छा है, अब एक विज्ञान प्रोजेक्ट नहीं है, और अधिकांश मूल माइक्रोसॉफ्ट कार्यक्षमता मौजूद है। लेकिन वास्तव में मेरे पास उन प्रश्नों पर नहीं मिल रहा है जो मेरे पास हैं। मैं सोच रहा हूं:

  1. जावा के खिलाफ लिनक्स/मैकोज़ दर पर मोनो का प्रदर्शन कैसा प्रदर्शन करता है? यदि मैं एक ही ऑब्जेक्ट कोड के साथ सभी तीन प्लेटफ़ॉर्म पर तेज़ी से दौड़ना चाहता हूं, तो मेरी सबसे अच्छी पसंद क्या है?
  2. मेकफ़ाइल के साथ मोनो का उपयोग करना आसान और संभव/उचित है और emacs के साथ मेरा विकास करना उचित है?
  3. क्या मैकोज़ और लिनक्स में कोड फैक्टरिंग के लिए समर्थन है, या क्या मैं सिर्फ बुलेट को काटने और विंडोज़ में अपने सभी विकास करने से बेहतर हूं?
  4. मोनो सबवर्सन और बाकी ओपन सोर्स डेवलपमेंट स्टैक के साथ कितना अच्छा काम करता है? Autoconf के बारे में कैसे? या यह चीजों को करने का एक बिल्कुल अलग तरीका है?

धन्यवाद

+0

आप कहते हैं कि आप एक मंच पर संकलन करने और कहीं भी चलाने में सक्षम होना चाहिए। मेरा सवाल है कि आप ऐसा क्यों सोचते हैं। यदि आप जेनेरिक बाइटकोड को संकलित कर रहे हैं तो आप 64-बिट प्रोसेसिंग और X86 बहिष्करण का पूरी तरह से लाभ कैसे उठा सकते हैं। दूसरी ओर अनुपालन सी/सी ++ और सीमेंक जैसे सभ्य निर्माण प्रणाली वाले पुस्तकालयों को देशी सिलिकॉन अनुकूलन से लाभ के लिए संकलित किया जा सकता है। सिक्का के दूसरी तरफ यदि आप सही पोर्टेबिलिटी और सर्वोत्तम प्रदर्शन के लिए चिंता के बिना उपयोग में आसानी चाहते हैं तो आपको पाइथन द्वारा बेहतर सेवा दी जाएगी। बस केह रहा हू। – SpliFF

+0

आपको किस तरह की तेज़ आवश्यकता है? एक डेस्कटॉप ऐप के लिए तेज़/बहुउद्देशीय 3 डी गेम के लिए तेज़? अगर मैं तेज़ और क्रॉस-प्लेटफॉर्म चाहता था तो मैं सी/सी ++ – Woody

+0

@ एसप्लीएफएफ चुनूंगा - एक सभ्य इंटरमीडिएट भाषा से खिलाया गया एक अच्छा समय-समय पर संकलक सभी आवश्यक 64-बिट प्रोसेसिंग और एक्स 86 एक्सटेंशन का लाभ उठाने में सक्षम होना चाहिए। मैं कई आर्किटेक्चर पर ग्राहकों को कई स्थानों पर खिलाता हूं, हालांकि, और प्रत्येक के लिए संकलन करना परेशान करना है। यह वितरण को भी कठिन बनाता है।मुझे पायथन पसंद है, लेकिन यह उन कार्यों के लिए बहुत धीमा है जो मैं कर रहा हूं (2 जीबी -4 जीबी तत्वों के साथ सहसंबंध)। – vy32

उत्तर

10

मैं के बारे में तीन साल के लिए लिनक्स पर मोनो उपयोग किया गया है और हाल ही में ओएस एक्स पर यह प्रयोग कर रहे हैं लिनक्स सामान में से कुछ बहुत व्यापक था, लेकिन ओएस एक्स सामान बस कुछ सरल कर दिया गया है अब तक एएसपी.नेट एमवीसी 2 ऐप्स।

1) मोनो का प्रदर्शन कभी मेरे लिए कोई मुद्दा नहीं रहा है। यह कहना नहीं है कि प्रदर्शन महत्वपूर्ण नहीं रहा है, यह सिर्फ इतना है कि मोनो का प्रदर्शन कभी भी एक मुद्दा नहीं रहा है। मैंने जो कुछ किया है वह वेब आधारित है इसलिए I/O और डेटाबेस मेमोरी उपयोग ने मुझे मोनो से पहले मारा है।

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

मुझे यकीन है कि मोनो कभी-कभी तेज़ी से और जावा कभी-कभी होता है लेकिन मैं कहूंगा कि जावा समग्र रूप से तेज़ है।

2) आप निश्चित रूप से मेकफ़ाइल के साथ मोनो विकास कर सकते हैं। निश्चित रूप से मोनो टीम स्वयं करता है। इसके अलावा आप निश्चित रूप से Emacs का उपयोग कर सकते हैं और C# mode for it है।

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

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

4) मोनो स्वयं पाठ्यक्रम के संस्करण नियंत्रण की परवाह नहीं करता है। आपकी स्रोत फाइलें केवल टेक्स्ट हैं और आप उन्हें प्रबंधित करने के लिए कुछ भी उपयोग कर सकते हैं।

उस ने कहा, मोनो डेवलप में शानदार सबवर्जन समर्थन आईडीई में बनाया गया है। मैंने इसे बड़े पैमाने पर इस्तेमाल किया है और विंडोज़ पर भी मोनो डेवेल को बंद करने में मुझे परेशानी है। मोनो डेवेल (2.6 बीटा) का नवीनतम संस्करण गिट समर्थन भी शामिल है।

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

संक्षेप में, मोनो सामान्य रूप से ओपन सोर्स टूलिंग के साथ वास्तव में अच्छी तरह से काम करता है। यह हमेशा मेरे लिए वास्तव में अच्छा खेला है।

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

मुझे पता है कि मोनो डेवेल सी/सी ++ परियोजनाओं (गैर-मोनो) के लिए ऑटोकॉन्फ़/ऑटोरन फाइलें बनाएगा लेकिन मैंने इसके साथ बहुत कुछ नहीं किया है।

पिछली टिप्पणी के अनुसार, मोनो जेआईटी स्पष्ट रूप से लक्षित प्लेटफॉर्म पर ट्यून किया गया है। यही वह जगह है जहां मंच विशिष्ट प्रदर्शन ट्यूनिंग होता है।

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

जावा के बारे में पूछे जाने के बाद से एक और बात। मुझे कुछ बार पता चला है कि जावा दुनिया में पुस्तकालय थे कि मुझे .NET दुनिया में समकक्ष नहीं मिल सका। इन मामलों में, मैंने अपने मोनो ऐप्स में इसे एकीकृत करने के लिए IKVM.NET का उपयोग करके अद्भुत भाग्य प्राप्त किया है। IKVM.NET भी .NET पर काम करता है लेकिन मोनो और IKVM.NET बहुत आरामदायक हैं और यहां तक ​​कि कुछ कोड साझा करते हैं।

तो वहां आप कम से कम एक वास्तविक जवाब देते हैं।

+0

यह वास्तव में एक महान टिप्पणी है। बहुत बहुत धन्यवाद; मैं सिर्फ यह देख रहा था जानकारी है। – vy32

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