VB.Net बनाम C # बहस [बंद]


18

मैं कार्यस्थलों में रहा हूं, जहां एक परियोजना की शुरुआत में, "क्या हमें VB.Net या C # का उपयोग करना चाहिए" सवाल उठाया गया है।

दी, यह संभव है कि यह निर्णय लेने के लिए कम से कम आम है कि यह अब से .Net के शुरुआती दिनों में है, विशेष रूप से भाषा अभिसरण की ओर रुझान दिया है, लेकिन यह अभी भी एक गर्म बहस हो सकती है।

तो, VB.Net और C # के बीच, आपको कौन सी भाषा पसंद है और क्यों?


2
कार्यों में एक स्पैनर फेंकने के लिए, कुछ उत्पाद हैं (उदाहरण के लिए VS2010 में WF डिज़ाइनर) जो केवल VB.Net सिंटैक्स का समर्थन करते हैं ...
Damovisa

यहाँ के आसपास, C # प्रोग्रामर्स को अधिक भुगतान किया जाता है, फिर VB.NET प्रोग्रामर।
सीनएक्स

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

मुझे अक्सर आश्चर्य होता है कि अगर प्रवृत्ति सी # की ओर जारी रहेगी तो VB.NET वाले लोग अधिक दुर्लभ अनुभव करेंगे और उच्च प्रीमियम का आदेश दे पाएंगे।
जॉनफेक्स

जवाबों:


29

मैं VB.NET पर C # पसंद करता हूं क्योंकि

  • प्रोग्रामर / नौकरी खोजना आसान है:

वैकल्पिक शब्द

  • सहायता प्राप्त करना आसान है:

वैकल्पिक शब्द

(स्टैकओवरफ़्लो से)


3
+1 SO तेजी से Google को प्रोग्रामिंग सहायता के मेरे पसंदीदा स्रोत के रूप में बदल रहा है।
बेनामी टाइप

12
सवाल यह है कि 10x अधिक C # टैग का मतलब है कि विषय को बेहतर तरीके से कवर किया गया है, अधिक उपयोग या इसमें अधिक समस्याएं हैं? नौकरी की उपलब्धता पर +1।
जेएफओ

12
मैं किसी भी नियोक्ता से सावधान रहूंगा जो C # करने के लिए VB.NET प्रोग्रामर को नहीं रखेगा।
मैट ओलेनिक

@ अज्ञात: SO ने दिन 2 (एक साल पहले) से Google को बदल दिया। घर पर फ़ायरफ़ॉक्स में मेरे 3 मुख्य खोज साइटों के रूप में SO, MSDN और प्रोग्रामर हैं।
इब्रा

@ सार, योग्य, इतना सच है।
अनाम टाइप

27

मुझे VB.NET से नफरत है। जिन दिनों का मैं अभी भी उपयोग कर रहा हूं वे वे दिन हैं जिनके लिए मुझे खेद है। उस ने कहा, मेरे स्वाद मेरी स्थिति और अनुभव का एक हिस्सा हैं, और जरूरी नहीं कि आप जो कर रहे हैं उसकी कोई प्रासंगिकता हो ...

मुझे लगता है कि यह महत्वपूर्ण है, जब C # और VB.NET जैसी लगातार विकसित हो रही भाषाओं की तुलना, अपने इतिहास पर वापस देखने के लिए और देखें कि वे अपनी वर्तमान स्थिति में कैसे पहुंचे:

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

QuickBasic ने बड़े और अधिक संरचित कार्यक्रमों की अनुमति देने के लिए सिंटैक्स को अपडेट किया और तेजी से निष्पादन के लिए संकलन को जोड़ा।

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

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

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

  • पुराने प्रोग्रामर के लिए जो पिछले 30+ वर्षों से इसके साथ अटके हुए हैं, यह एक बुरा विकल्प नहीं है, बशर्ते वे खुद को इसके लिए सीमित न करें।
  • नए प्रोग्रामर के लिए, अंग्रेजी में VB कार्यक्रमों के तेजी से अस्पष्ट समानता शायद ही पीछे संगतता और सामाजिक कलंक के लिए विचित्र नोड्स के लायक है।
  • नई परियोजनाओं के लिए , VB.NET एक अजीब विकल्प है जब तक कि परियोजना उन कुछ कार्यों में से एक के साथ भारी रूप से शामिल नहीं होती है, जिसके लिए भाषा को अनुकूलित किया जाता है: खराब-टाइप किए गए COM घटकों (कार्यालय ...) के साथ एकीकरण (हालांकि C # 4.0 इस लाभ को काफी कम कर देता है ), या XML पीढ़ी को इनलाइन करें।

4
C # 4 के साथ मुझे कोई लाभ नहीं दिखता है VB.Net अभी भी COM एकीकरण के संबंध में है। मुझे लगता है कि इनलाइन XML पीढ़ी एक उपयोगी सुविधा हो सकती है; मैं XML का उपयोग न करने का प्रयास करता हूं (और पिछले 5 वर्षों से सफल रहा हूं!), लेकिन अगर मेरे पास एक .net परियोजना है जो बहुत सारे XML उत्पन्न करने की आवश्यकता है तो मैं शायद XML पीढ़ी के लिए केवल VB परियोजना बनाऊंगा।
विन्यासकर्ता

3
मुझे आपका जवाब पढ़ने में मज़ा आ रहा था लेकिन यह अचानक बंद हो गया। आप मूल का इतिहास प्रदान करते हैं जो दिलचस्प है और मैं सही मानता हूं। मैं यह जानने की उम्मीद कर रहा था कि आप VB.NET को पसंद क्यों करते हैं और / या आपको C # क्यों पसंद है। "नई परियोजनाओं के लिए, VB.NET एक अजीब विकल्प है" क्यों?
टिम मर्फी

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

20

मैं दोनों से परिचित हूं, लेकिन मैंने VB4, VB5 और VB6 में अपने शुरुआती प्रोग्रामिंग का बहुत काम किया है। अब जब .NET में दोनों भाषाएं कुछ पुनरावृत्तियों से गुजरी हैं और अपनी क्षमताओं में काफी परिवर्तित हुई हैं, तो मुझे लगता है कि बहस बिल्कुल मूर्खतापूर्ण है, "क्या आपका पसंदीदा रंग है"।

व्यक्तिगत रूप से, मैं दोनों को अलग-अलग कारणों से पसंद करता हूं।

VB.NET
बहुत से लोग इस बारे में बात करते हैं कि C # सिंटैक्स कैसे अधिक सहज है, लेकिन यह बहुत व्यक्तिपरक है और जो आपने जानना शुरू कर दिया है, उस पर बहुत अधिक आधारित है। मेरा तर्क है कि यदि आप पूरी तरह से वस्तुनिष्ठ थे तो VB.NET सिंटैक्स शायद अधिक सहज है यदि आप किसी अन्य भाषा में पूर्व ज्ञान ग्रहण नहीं करते हैं। उदाहरण के लिए, C # और VB.NET में एक ही प्रोग्राम दिया गया है, जो आपको लगता है कि किसी ऐसे व्यक्ति के लिए अधिक निर्णायक होगा जिसे प्रोग्रामिंग का कोई ज्ञान नहीं है। मुझे बहुत स्पष्ट लगता है।

दूसरी बात जो इस वाक्य रचना के बारे में अच्छी है, वह यह है कि ब्रैकेटिंग मॉडल की तुलना में समापन संरचनाओं (END IF, END WHILE, NEXT X) के बारे में बहुत अधिक स्पष्ट है। यह कोड को थोड़ा अधिक पठनीय बनाता है और अक्सर संकलक को अधिक सटीक होने की अनुमति देता है कि क्या लाइन संख्या वास्तव में संकलन त्रुटियों का कारण बन रही है। यदि आप कभी भी एक संकलक त्रुटि के कारण लापता ब्रैकेट / अर्ध-बृहदान्त्र शिकार पर चले गए हैं, तो समस्या से 50 लाइनें दूर आप जानते हैं कि मेरा क्या मतलब है।

इसके अलावा, VB.NET जीत कॉलम में मेरी राय में == / = की तुलना / असाइनमेंट ऑपरेटरों के रूप में नहीं है। प्रत्येक के लिए एक अलग ऑपरेटर होने के दुर्लभ लाभ कभी-कभी सभी (कभी-कभी) मुश्किलों को ऑफसेट करने के लिए नहीं जा रहे हैं जो कि यह बनाने में मदद करता है।

अंत में, मुझे प्रोग्रामिंग भाषाओं में केस सेंसिटिविटी से नफरत है। वीबी के बारे में शिकायतों में से एक यह है कि इसमें बहुत सामान है, लेकिन सी # ने सी की केस संवेदनशीलता के अल्बाट्रॉस को आगे बढ़ाया। मैं ऐसी स्थिति में कभी नहीं रहा जहाँ मैं केवल मामले से अलग होने के लिए एक ही दायरे में दो पहचानकर्ता चाहता था। यह सिर्फ व्यस्त काम के लिए बनाता है और मुझे धीमा कर देता है। VB.NET को इस संबंध में C # पर कुछ अंक मिलते हैं।

C #
प्रोग्रामर्स को संक्षिप्त रहना पसंद है, यही वजह है कि मुझे लगता है कि वे आमतौर पर इस वाक्य रचना का पक्ष लेते हैं। यह सिर्फ एक निश्चित सौंदर्य अपील है। हालाँकि, पूरी तरह से व्यावहारिक दृष्टिकोण से मुझे यह पसंद है क्योंकि यह जावा, जावास्क्रिप्ट और सी ++ जैसी भाषाओं के समान है।

चूंकि मैं बहुत सारे वेब विकास करता हूं, जिसके लिए सर्वर और क्लाइंट साइड प्रोग्रामिंग दोनों की आवश्यकता होती है, इसलिए मुझे C # और जावास्क्रिप्ट के बीच मानसिक रूप से स्विच करना आसान लगता है क्योंकि मुझे अक्सर ऐसा करने की आवश्यकता होती है।

मुझे यह तथ्य भी पसंद है कि, अधिकांश भाग के लिए, कि अगर मुझे कभी भी जावा या सी ++ प्रोग्रामिंग करने के लिए संक्रमण करना पड़ा, तो यदि मैं ज्यादातर समय सी # का उपयोग कर रहा था, तो मुझे थोड़ी सी शुरुआत होगी।


3
वेब विकास टिप्पणी के लिए +1। मैं प्रोजेक्ट के आधार पर VB.NET और C # दोनों का उपयोग करता हूं, और VB.NET और JS की तुलना में C # और जावास्क्रिप्ट के बीच आगे और पीछे जाना बहुत आसान है।
पेपरजम

2
'मैं कभी भी ऐसी स्थिति में नहीं था जहाँ मैं एक ही दायरे में दो पहचानकर्ताओं को केवल मामले से अलग करना चाहता था।' शुद्ध व्यक्तिपरक है। यह वास्तव में एक कारण है कि मैं C # को क्यों पसंद करता हूं। जब सही ढंग से और परिणामी रूप से लागू किया जाता है, तो यह दुनिया के लिए समझ में आता है कि उदाहरण के लिए नाम nameऔर सार्वजनिक संपत्ति के साथ निर्माता में एक पैरामीटर हो सकता है Nameऔर फिर इसके माध्यम से असाइन करें Name = name;। जब तक आप एक कोडिंग मानक रखते हैं, अन्यथा मैं सहमत हूं, तो यह भ्रम पैदा कर सकता है।
एदियाकापी

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

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

यह केवल मैला कोड है क्योंकि संकलक इसकी व्याख्या नहीं कर सकता है। यदि सभी संकलक केस असंवेदनशील थे तो यह एक चाटना नहीं होगा। हमारा काम किसी पत्रिका में प्रिंट के लिए कोड लिखना नहीं है, यह कोड लिखना है जो नौकरी करता है। "मैला" मामला उस एक बिट को रोकता नहीं है।
जॉनफैक्स

19

मैं सी-स्टाइल भाषाओं के ब्रैकेट सिंटैक्स को बेसिक-शैली की भाषाओं के "वर्बोज़" सिंटैक्स के रूप में पसंद करता हूं।

प्रोग्रामिंग में मेरा परिचय टर्बो पास्कल के साथ था। (एक बच्चे के रूप में, मैंने कमोडोर 64 पर जो BASIC प्रोग्रामिंग की थी, वह वास्तव में मायने नहीं रखता है।) जावा सीखने के बाद मैंने कभी पीछे मुड़कर नहीं देखा और सी-स्टाइल सिंटैक्स पसंद किया।


4
बेसिक शैली की भाषाओं का "क्रिया" वाक्यविन्यास। " - हाँ, मैंने वीबी को फिर कभी नहीं देखा जब मैंने देखाif something then code endif
TheLQ

1
हे, मुझे आश्चर्य था कि किसी ने इसे डाउनवोट किया। (मुझे उम्मीद है कि यह Emacs बनाम विम सवाल होगा।)
जॉर्ज मैरियन

3
@ LQ: और यह भी AndAlso!
गेरी

मुझे अपने टर्बो पास्कल दिनों की याद आती है। यह काफ़ी मज़ेदार था।
मेटलमाइस्टर

1
मुझे ब्रैकेट सिंटैक्स पढ़ने में आसान लगता है। कई संदर्भ विशिष्ट शब्दों के बजाय एक ब्लॉक के लिए एक सामान्य प्रतीक।
माइकल के

12

वे कार्यात्मक रूप से समान हैं, एक ऐसा कुछ भी नहीं है जिसे आप दूसरे में नहीं कर सकते हैं और भविष्य के लिए Microsoft ने प्रतिज्ञा की है कि भाषा की टीमें दोनों को समान रूप से विकसित करेंगी इसलिए यह समानता है जो बदलने की संभावना नहीं है।

अब अंतर विशुद्ध रूप से सांस्कृतिक और व्यक्तिगत हैं। यह लेख C # और VB.net का उपयोग करके प्रोग्रामर की संस्कृतियों के बीच अंतर पर दिलचस्प रीडिंग है

[नोट: हालांकि मैं खुद एक सी # देव हूं, लेकिन इससे जुड़े लेख का निष्कर्ष मेरे निजी विचार को दर्शाता नहीं है, यह बहस में एक दिलचस्प वैकल्पिक तरीका है]


8
यह पूरी तरह से सच नहीं है: उदाहरण के लिए, VB.NET में पुनरावृत्त नहीं हैं, जो एक महान C # सुविधा है।
थॉमस लेवेस्क

2
C # में VB.NET के XML शाब्दिक नहीं हैं: blogs.msdn.com/b/wriju/archive/2008/02/07/… (हालांकि मैं वास्तु कारणों से इस सुविधा का प्रशंसक नहीं हूं, यह अच्छा है)
स्टीवन स्ट्रिगा

@Thomas @WeekendWarrior: अच्छे उदाहरण हैं, लेकिन सिर्फ इंगित करने के लिए, मैंने कहा "कार्यात्मक रूप से वही", जो कि हैं। वे दोनों आईएल के लिए संकलन करते हैं, इसलिए कार्यक्षमता का एक ही सेट प्राप्त करने योग्य है। ये उदाहरण कार्यक्षमता के लिए सिर्फ भाषा शॉर्टकट हैं जिन्हें अन्य तरीकों से हासिल किया जा सकता है।
साइमन पी स्टीवंस

8

मैं C और C ++ से .NET आया था (जावा, Ada और पास्कल के एक बिट के साथ) इसलिए C # मेरे लिए स्वाभाविक प्रगति थी।

यदि कोई नौकरी आवश्यक VB.NET के साथ आई तो मैं निश्चित रूप से इसे ठुकरा नहीं दूंगा।


6

मैंने VB.NET के साथ बहुत काम किया है, लेकिन मैं कोड में क्या हो रहा है इसका सार पाने के लिए पर्याप्त C # समझता हूं। मेरी वर्तमान प्राथमिकता VB.NET है क्योंकि मैं इससे (स्पष्ट रूप से) सबसे ज्यादा परिचित हूं, लेकिन मेरे पास वास्तव में शब्द सिंटैक्स और सी-स्टाइल सिंटैक्स के बीच कोई प्राथमिकता नहीं है, दोनों मेरे लिए बहुत पठनीय और समझने योग्य हैं।

मेरे सहकर्मी की अधिकांश प्रोग्रामिंग पृष्ठभूमि COBOL और VB6 है, इसलिए VB.NET एक टीम के रूप में हमारे लिए अधिक आरामदायक .NET भाषा विकल्प था। हमारे लिए एक ठोस कारण नहीं था कि उन्होंने C # को एक आवश्यकता के रूप में सीखा क्योंकि वे कार्यात्मक रूप से समान हैं।

उस ने कहा, सी # सीखना सबसे निश्चित रूप से मेरी चीजों की सूची पर है।


2
मैं उसी मुसीबत में हूँ। :) और मैं VB.NET पसंद करता हूं उसी तरह से मैं कोक नहीं पेप्सी पसंद करता हूं। लेकिन, अगर हम एक नई परियोजना शुरू करते हैं, तो C # सबसे अच्छा विकल्प है क्योंकि हम और अधिक प्रोग्रामर ढूंढते हैं जो C # को जानते हैं और पसंद करते हैं। मैं समझ गया कि वीबी के लिए एमएस की रणनीति वीबी समुदाय को .NET प्लैटफॉर्म पर लाने के लिए थी।
पगोटी

5

मुझे C # पसंद है।

मैंने VB.NET प्रोग्रामर के रूप में शुरुआत की, लेकिन समय बीतने के साथ यह स्पष्ट हो गया कि काफी सारी नई सुविधाएँ पहले C # और फिर बाद में VB.NET (जैसे स्वचालित संपत्ति) में आ रही हैं। और C # के आसपास का समुदाय VB.NETs की तुलना में अधिक जीवंत है।

इसके अतिरिक्त, यदि आप जावा या समान भाषा सीखने का इरादा रखते हैं, तो C # बेहतर प्रारंभिक बिंदु है - सभी सी-व्युत्पन्न भाषाओं में सिंटैक्स लगभग समान है। हालांकि यह मेरे लिए टिपिंग पॉइंट नहीं होगा क्योंकि सिंटैक्स एक ऐसी चीज़ है जिसे आप किसी भी तरह जल्दी सीख सकते हैं।


3
"सी # फर्स्ट में आने वाले फीचर्स" हालांकि यह हमेशा वैसे नहीं होता है। देखें stackoverflow.com/questions/181188/… (बस कार्यों में एक और स्पैनर फेंकने के लिए)
स्वयं पर ध्यान दें - एक नाम के बारे में सोचें

यह वह जगह है जहां मैं हूं। मैं अभी भी VB का शौकीन हूं, क्योंकि यह मेरी शुरुआत है, लेकिन मेरे विचार में C # में लैंब एक्सप्रेशन जैसी चीजों का बेहतर सिंटैक्स है। दूसरी ओर, VB में XML लिटरल्स हैं, जो C # केवल सपना देख सकते हैं। मुझे लगता है कि यह भारी XML कार्य के लिए एक अलग VB परियोजना को तोड़ने के लायक है।
23

1
प्रत्येक पीढ़ी के टूल के साथ, "सुविधाएँ" तर्क थोड़ा बदलाव करते हैं। केवल एक चीज जिसके बारे में मैं सोच सकता हूं कि C # में vs2010 है, जिसमें vb.net की कमी के कारण पुनरावृत्त हैं; इसके विपरीत, vb.net नाम इंडेक्सर्स, अपवाद फ़िल्टर, XML शाब्दिक, एक "Is" ऑपरेटर है जो 1000x से बेहतर है Object.ReferenceEquals, ईवेंट हैंडलिंग जो कि लगभग सही किया गया है, और एक चिकनी IDE अनुभव है। VB.net इसे संभव बनाता है, भले ही थोड़ा अजीब हो, फील्ड इनिशियलाइज़र्स को कंस्ट्रक्टर मापदंडों का उपयोग करना या चर IDisposableका उपयोग किए बिना सुरक्षित रूप से ऑब्जेक्ट बनाना ThreadStatic; C # नहीं करता है।
सुपरकैट

5

यहाँ पोस्ट किए गए अन्य उत्तरों के अलावा, मैं VB पर C # को चुनूंगा क्योंकि C # प्रोग्रामर को अधिक भुगतान मिलता है। C # = अधिक $ $ :) के साथ अधिक अनुभव

मुझे पता है कि दोनों भाषाएं लगभग समान हैं और दोनों के बीच स्विच करना वास्तव में आसान है, लेकिन मुझे लगता है कि जब प्रबंधन घुंघराले ब्रेस और अर्ध-कॉलन का एक गुच्छा देखता है तो वे इस तथ्य को स्वीकार करते हैं कि हम कुछ कर रहे हैं जो वे नहीं कर सकते हैं, जहां वीबी के साथ। नेट वे इसे देख सकते हैं और जा सकते हैं "ओह जो कि मुझे यह समझने में मुश्किल नहीं होना चाहिए"।


1
मुझे लगता है कि उद्योग / क्षेत्र के आधार पर अक्सर मान्य बिंदु को अनदेखा किया जाता है।
अनाम टाइप

4

C # क्योंकि मैं न्यूनतम प्रयास के साथ इसे और जावा के बीच स्विच कर सकता हूं

VB.NET पूरी तरह से अलग सिंटैक्स है। सी #, जावा और अन्य भाषाओं के समान होने से मुझे नई चीजों के लिए जल्दी से अनुकूल होने के लिए बेहतर स्थिति मिलती है। चूँकि C # और VB.NET का आउटपुट वस्तुतः विनिमेय है, इसलिए C # के साथ जाना समझ में आता है। साथ ही, यदि आपकी कंपनी का कोड C # में है, तो आप जावा डेवलपर को प्रशिक्षित करने में सक्षम होने की अधिक संभावना रखते हैं कि Java डेवलपर BB की तुलना में C # कोड कैसे करें। केवल सूक्ष्म फायदे हैं, लेकिन सूक्ष्म अभी भी एक फायदा है।


3

मेरी व्यक्तिगत प्राथमिकताओं को एक तरफ रखकर। जैसा कि कोई है जो (और भर्ती होने की कोशिश कर रहा था) हाल ही में, जब कार्यालय में हमारी यह बहस हुई थी कि आम सहमति थी कि हमें VB से C # में जाना चाहिए।

क्यों? चूँकि C # बाज़ार में (वैसे भी हमारे आस-पास) अधिक प्रचलित था, जिससे हम और अधिक आसानी से भर्ती हो सकते हैं, और अधिक आसानी से भर्ती हो सकते हैं।

ऐसा लगता है कि यह पूर्ण चक्र चला गया है; लोग C # सीखते हैं क्योंकि भर्ती करने वाले इसे चाहते हैं, क्योंकि वहाँ अधिक उम्मीदवार हैं।


3

कुछ अधिक उम्र के देवता होने के नाते (59 "कुछ हद तक" पुराने हैं), मैंने पहले एक कमोडोर VIC-20 पर बेसिक सीखा, खुद को टर्बो पास्कल (v1!) सिखाया, कॉलेज में कॉबोल सीखने के लिए चला गया, और आईबीएम में 14 साल बिताए! मेनफ्रेम, विचलन और मध्यम अवधि के VB5 और VB6 पर कदम रखने से पहले, मॉड्यूलेशन -2 में एक मध्यम आकार के ऐप (PICK BASIC का एक प्रकार) में मध्यम आकार के ऐप्स और कुछ उपयोगिताओं के साथ मेनफ़्रेम लिखे गए हैं। और फिर .NET आया।

मेरी मूल पृष्ठभूमि के कारण, मुझे लगा कि मुझे VB.NET से शुरू करना चाहिए, केवल यह पता लगाने के लिए कि मैं चीजों को "पुराना" करने की कोशिश कर रहा हूं और यह मुझे पागल कर रहा है (ठीक है, अधिक पागल)। होने के नाते मैंने सी में कुछ काम किया था, मैंने सोचा कि मैं सी # को एक चक्कर दूंगा कि यह कैसे हुआ। और OMG, जो एक साफ सुरंग से साफ दिन के उजाले में उभरने जैसा था! पूरी तरह से अप्रत्याशित। और मैं सी को "केवल लिखने वाली" भाषा होने के बारे में अनादर करता था - "यह समझने में इतनी मुश्किल कि एक सी प्रोग्रामर यह पता नहीं लगा सकता था कि उसके खुद के कोड ने उसे लिखे जाने के 6 महीने बाद क्या किया", एक अवलोकन द्वारा बनाया गया उस समय का अर्ध-प्रसिद्ध उपन्यासकार जो मुझे प्यारा लगता था।

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


1
दिलचस्प जवाब, मुझे लगता है कि यह कम से कम आंशिक रूप से इस विचार को खारिज करता है कि "पुरानी भीड़" सी # पर VB.NET से चिपके रहते हैं
अनाम टाइप

3

मैं 2001 से विजुअल बेसिक। नेट में विकसित करता हूं और मुझे यह पसंद है और मुझे इससे नफरत है !!!

इन बिंदुओं की प्रस्तुति का क्रम सिर्फ उस आदेश पर आधारित है जिसमें वह मेरे दिमाग में आया था ...

दृश्य स्टूडियो के साथ vb.net में, प्रत्येक विधि, संपत्ति के बीच एक दृश्य रेखा विराम है। कई लोगों के लिए, यह c # पर vb.net को पसंद करने का एक अच्छा कारण नहीं है, लेकिन मुझे समझ में नहीं आता है कि Microsoft पर c # टीम ने इसे क्यों लागू नहीं किया है। ऐड-इन है कि इस लाइन को c # में ड्रा करें लेकिन फिर से Microsoft को ac # टीम और विजुअल बेसिक टीम है कि एक दूसरे से बात न करें।

Vb.net में, जब आप एक विजेता बनाते हैं, तो आपके पास संपादक के शीर्ष पर दृश्य स्टूडियो में दो कॉम्बोक्स होते हैं और सही कॉम्बोक्स पर एक घटना का चयन करते समय आप स्वचालित रूप से घटना उत्पन्न कर सकते हैं। जब आप प्रत्येक दिन दर्जनों कार्यक्रम संलग्न करते हैं, तो यह सुविधा के लिए बहुत बोझिल हो सकता है। सी # के साथ, आपके पास संपत्ति ग्रिड के शीर्ष पर एक छोटा बटन है जो घटना उत्पन्न कर सकता है लेकिन यह vb.net की तरह तेज़ नहीं है। अधिक, यदि आप c # में नियंत्रण की घटना संलग्न करते हैं और फ़ॉर्म पर नियंत्रण हटाते हैं, तो ईवेंट को संभालने के लिए ऑटो-जनरेट किए गए कोड पर बनाए गए प्रतिनिधि को मैन्युअल रूप से हटाना होगा। फिर से धन्यवाद Microsoft।

Vb.net में, जब आप एक ऐसी विधि को संशोधित करने का प्रयास करते हैं जिसमें बिना प्रश्न को संशोधित किए ही एक linq क्वेरी होती है, तो कोई समस्या नहीं है, लेकिन c # में, सभी विधि कोड लॉक है। यदि आपके पास बहुत सारे लिन्क क्वेश्चन या लैम्ब्डा एक्सप्रेशन हैं, तो एडिट एंड कंटेंट फीचर तेजी से एक अच्छी पुरानी बात होगी। ठीक है, थोड़ा अतिशयोक्ति ... लेकिन :)

Vb.net में, जब आप मेथड नेम बनाते हैं और एंटर करते हैं, तो 'एंड सब' अपने आप बन जाएगा। सी # में, यह अपने आप करो। ठीक है, अगर आपके पास रिचार्पर या डेवेक्सप्रेस स्थापित है, तो यह बेहतर होगा लेकिन इन सभी छोटी लेकिन महान विशेषताओं को c # में लागू क्यों नहीं किया गया।

Vb.net में, जब आपको अपने कोड में त्रुटियां होती हैं, तो त्रुटियों को स्वचालित रूप से प्रदर्शित किया जाता है और जब आप इसे सही करते हैं, तो वास्तविक समय में इन त्रुटियों को स्टैक से हटा दिया जाता है। सी # में, आपको अपनी परियोजना को यह महसूस करने के लिए बनाना होगा कि आपने सफलतापूर्वक त्रुटियों को ठीक किया है या नहीं। क्यों सी # टीम ने vb.net की तरह वास्तविक समय त्रुटि में सत्यापित करने का विकल्प नहीं रखा है। बड़े समाधान के साथ, त्रुटि का कोई वास्तविक समय सत्यापन प्रदर्शन का एक बहुत अच्छा अनुकूलन नहीं हो सकता है, लेकिन जब मैं इसे सही करता हूं, तो मुझे त्रुटि के एक ढेर को देखना अच्छा लगता है।

जैसे अन्य व्यक्ति ने उल्लेख किया है, मुझे लगता है कि vb.net स्थिति को पढ़ना और अधिक आसान है यदि..इसके लिए, यदि मामला है, तो चयन करें ... अंत का चयन करें लेकिन devexpress पेंटिंग ब्रैकेट के साथ, जो मैंने कहा था उसे भूल जाएं।

Vb.net के साथ, दृश्य स्टूडियो में कई कीड़े हैं। दृश्य स्टूडियो 2010 में एक का उल्लेख करने के लिए, इंटैलिजेंस सही गणना को फ़िल्टर नहीं करता है यदि आपके पास "सभी" के बजाय मोड "सामान्य" सक्रिय है।

Vb.net के साथ, आपको एक डमी लड़के के रूप में माना जाता है क्योंकि सांख्यिकीय रूप से, अधिक खराब प्रोग्रामर c # के बजाय vb.net का उपयोग करते हैं क्योंकि c # बेहतर प्रोग्रामिंग अभ्यास को सीखने और बढ़ावा देने के लिए कठिन है।

जैसा कि अन्य ने कहा, सी # प्रोग्रामर के पास अधिक पैसे के साथ अच्छी नौकरी करने का बेहतर मौका है।

ग्राहक के सिर में, vb.net = आदमी जो कोड के स्पेगेटी के एक बोल्ट के साथ अपने तहखाने में कार्यक्रम करता है। c # = वाह, आप बहुत बुद्धिमान हैं। तथ्य यह है कि यह इसलिए नहीं है क्योंकि आप c # में प्रोग्राम करते हैं, बल्कि आप एक अच्छा प्रोग्राम बनाते हैं, लेकिन स्टेटिक रूप से, हाँ।

इन सभी बिंदुओं के साथ, मैंने अपने सभी vb कोड को c # में बदलना चुना। मैं ऑब्जेक्ट ओरिएंटेड, डिजाइन पैटर्न, मानकों के साथ स्वच्छ कोड और सख्त वाक्यविन्यास के सभी सर्वोत्तम अभ्यासों के साथ कार्यक्रम करता हूं और मैं 50 साल तक इस तरह का कार्यक्रम कर सकता हूं, लेकिन समुदाय की नजर से, मैं एक अच्छा प्रोग्रामर नहीं हूं। मैं अपने कोड को c # में परिवर्तित करूँगा जिसमें कोई अन्य सर्वोत्तम प्रथा नहीं होगी और मैं एक अन्य व्यक्ति बनूंगा; एक महान लड़का जिसे आपको सम्मान देना चाहिए .....: ... क्या मजाक है ... !!! लेकिन यह वास्तविकता है।


2

यहाँ इसे देखने का एक तरीका है: SO और कोडप्लेक्स के बीच, कौन सी भाषा अधिक लोकप्रिय है? C # या VB.Net?

कभी-कभी, झुंड का पालन करना एक अच्छी बात है क्योंकि यह झुंड है जो आपको ज़रूरत पड़ने पर आपकी मदद करने में सक्षम होने जा रहा है। डिफ़ॉल्ट रूप से, C # Vb.Net से अधिक तेज़ होगा। मेरा मानना ​​है कि ऑप्‍शन स्‍ट्रिक्‍ट के उपयोग से यह बराबर हो सकता है। पिछली बार जब मैंने IL की तुलना दोनों के बीच की थी, VB.Net की सुरक्षा ने IL को लगभग 15% अधिक जोड़ दिया। यह अतिरिक्त ओवरहेड में तब्दील हो जाता है। और ... दी गई भाषाएं जो मूल रूप से एक ही काम करती हैं, मैं तेजी से एक ले लूंगा। मेरी सुविधा को सामान्य रूप से मेरे उपयोगकर्ता के अनुभव को ओवरराइड नहीं करना चाहिए।


2

मुझे यह कहना पसंद है कि मूल कारण अभी भी लोकप्रिय है कि यह माइक्रोसॉफ्ट का पहला उत्पाद था, और वे पिछले 35 वर्षों से इसे हमारे गले से नीचे उतार रहे हैं। बहुत पहले मर जाना चाहिए था।

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

VB.Net में एक बड़ा नुकसान यह है कि वे VB6 कोड के रूपांतरण को कम करने के लिए .NET 1.x में बहुत सारे VB6- युग बकवास तरीके से वापस लाए। वह सामान अभी भी वहाँ है, और VB6 कोडर्स अधिक तटस्थ .NET क्लासेस / विधियों / जो कुछ भी उपयोग करने के बजाय उन ... "एक्सटेंशन" का उपयोग करके नए कोड को कोड कर रहे हैं। मुझे नहीं पता कि मैंने अपने बॉस से कितनी बार पूछा कि उसने अभी भी उस बकवास का इस्तेमाल क्यों किया। "लेकिन ... यह काम करता है ..." सही है। अरे, मुझे कुतिया बनना पसंद है।

वेब पर मदद की तलाश करते हुए, मैंने पाया कि अधिकांश समाधान सी # में थे - एमएसडीएन मंचों, विभिन्न ब्लॉगों आदि की जांच करें ... पुस्तकों में सी # पर ध्यान केंद्रित करने की प्रवृत्ति है, और अगर कोई वीबी संस्करण है, तो आमतौर पर महीनों के बाद आता है (उदा। प्रो LINQ .... एप्रेस से।)

कई भाषाएँ C वंश को साझा करती हैं, जो C, C ++, C #, Java, PHP और कुछ अन्य लोगों के बीच स्विच करना आसान बनाती हैं। PHP यहाँ थोड़ा खिंचाव है, लेकिन इसमें बहुत सी तरह के निर्माण हैं। वीबी? खैर, यह बहुत ही अपनी छोटी सी बात है और वह है।

मेरे संगठन के एक प्रोजेक्ट लीडर ने हाल ही में मुझे बताया कि VB - FINALLY के बजाय C # का उपयोग करके अधिक से अधिक नए प्रोजेक्ट विकसित किए जा रहे हैं। जब .NET को हमारे संगठन में पेश किया गया था, तो वे अधिक-या-कम-आधिकारिक तौर पर VB.Net के साथ चले गए क्योंकि सभी VB6 कोडिंग पहले से ही चल रही थीं। जो शक्तियां बाद में मेरे पास भर्ती हुईं, वह उनकी सर्वश्रेष्ठ चाल नहीं थी।

जैसा कि ऊपर किसी और ने बताया है, मैं कोई VB.Net परियोजना के लिए नहीं कहूंगा, लेकिन मैं अभी भी उम्मीद कर रहा हूं कि यह मेरे काम के स्थान पर नए विकास से धीरे-धीरे समाप्त हो जाएगा।


1

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

समय के साथ-साथ दो भाषाएँ विकसित हुईं, एकमात्र महत्वपूर्ण अंतर my छद्म नाम स्थान है।

मैं हर .net प्रोग्रामर को सलाह दूंगा कि यह जानने के लिए C # से परिचित न हो, क्योंकि समुदाय काफी बड़ा है और C- जैसे वाक्यविन्यास अधिकांश प्रयुक्त भाषाओं के लिए सामान्य है।


VB.NET क्यों मौजूद है, इसके लिए एक और महत्वपूर्ण विचार यह है कि यह ASP "क्लासिक" / VBScript या VB6 में आने वाली परियोजनाओं के लिए एक आसान अपग्रेड पथ के लिए बनाया गया है। बड़े मौजूदा अनुप्रयोगों को पोर्ट करने के लिए यह बहुत कम काम था।
जॉनफैक्स

1

VB भाषा को newbies के लिए पढ़ना आसान है, वे इसमें अपना पहला, दूसरा और तीसरा आवेदन लिखते हैं और हम सभी जानते हैं कि हमारे पहले एप्लिकेशन क्या कोडित हैं - जैसे कि।

C ++, Java और आदि से प्रोग्रामर C # ले जाया गया है, जबकि VB.NET डेवलपर्स VBA, VB और BASIC बैकग्राउंड, आवश्यक गैर-पारंपरिक प्रोग्रामर से आते हैं।


1

VB.NET नमूनों की तुलना में अधिक C # कोड नमूने ऑनलाइन प्रतीत होते हैं। अपने सभी को एक दूसरे में बदलना मुश्किल नहीं है, लेकिन अगर आपको नहीं करना है तो परेशान क्यों होना चाहिए।


1

मुझे C # पर VB .Net पसंद है,

  • (97) ...
  • (98) क्योंकि मैंने VB सीखा था इससे पहले कि मैं C # के बारे में भी जानता था।
  • (९९) क्योंकि मैंने पहले ही वीबी .नेट पर १०,००० पेज का टोम खरीदा है।
  • (100) क्योंकि वीबी में ब्रेसिज़ नहीं होते हैं।
  • (101) क्योंकि हर कोई VB से नफरत करता है।

0

सी#। यह सिर्फ इसलिए है क्योंकि मैंने सी और जावा किया है, इसलिए मुझे लगता है कि सी # मेरे लिए अधिक पठनीय है। C # मेरे लिए है, जैसा कि VB.NET पूर्व VB प्रोग्रामर के लिए है।

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