VB 6 से VB.NET में शीर्ष पांच परिवर्तन

click fraud protection

01

08 के

VB 6 और VB.NET के बीच शीर्ष पांच परिवर्तन

शीर्ष पांच परिवर्तन

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

लेकिन जादू होने के लिए, माइक्रोसॉफ्ट ने कुछ प्रमुख वास्तुकला समझौता किया। विशेष रूप से, चूंकि VB1 ने प्रपत्र और नियंत्रण बनाए, उन्होंने प्रोग्रामर को उस कोड तक पहुंचने की अनुमति नहीं दी जो उसने किया था। आपने या तो VB को सब कुछ बनाने दिया, या आपने C ++ का उपयोग किया।

6 के माध्यम से VB 2 ने इसी वास्तुकला को बनाए रखा। Microsoft ने कुछ बहुत ही चतुर अपडेट किए, जिन्होंने प्रोग्रामर्स को बहुत अधिक नियंत्रण दिया, लेकिन अंतिम विश्लेषण प्रोग्रामरों में अभी भी VB कोड के साथ अपने कोड को एकीकृत नहीं किया जा सका। यह एक ब्लैक बॉक्स था - और अच्छे ओओपी तरीके से भी नहीं। यह कहने का एक और तरीका यह था कि प्रोग्रामर के पास आंतरिक VB "ऑब्जेक्ट्स" तक पहुंच नहीं थी और यह कहने का दूसरा तरीका यह था कि VB6 अभी भी पूरी तरह से "ऑब्जेक्ट ओरिएंटेड" नहीं था।

instagram viewer

02

08 के

VB 6 - प्रौद्योगिकी वक्र के पीछे गिरना

इस बीच, जावा, पायथन और कई अन्य प्रोग्रामिंग लैंग्वेज जो कि WERE ऑब्जेक्ट ओरिएंटेड थीं, दिखाई देने लगीं। विजुअल बेसिक पास हो रहा था - बड़ा समय! यह एक ऐसी स्थिति है जिसे Microsoft बर्दाश्त नहीं करता... और उन्होंने एक बार और सभी के लिए समस्या को हल करने का संकल्प लिया। इसका समाधान .NET है।

लेकिन उन चीजों को करने के लिए जो .NET को करने की ज़रूरत थी, Microsoft ने फैसला किया कि उन्हें "संगतता को तोड़ना" था। यही है, विजुअल बेसिक प्रोग्राम VB1 से VB6 तक "बहुत मामूली अपवादों" के साथ "ऊपर की ओर संगत" थे। VB के उस पहले संस्करण में लिखे गए एक कार्यक्रम को अभी भी अगले संस्करण में संकलित और चलाया जाएगा। लेकिन VB.NET के साथ, Microsoft ने पाया कि वे भाषा को पूरी तरह से OOP नहीं बना सकते हैं और उर्ध्वगामी रूप से बनाए रख सकते हैं।

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

आगे की देरी के बिना, यहां VB6 से VB.NET के शीर्ष पांच बदलावों की मेरी बहुत ही व्यक्तिगत सूची रिवर्स ऑर्डर में है।

Wellllll... बस एक और देरी। चूँकि हम VB6 से बदल रहे हैं, जहाँ एक डिम को myArray घोषित किया गया है (5) है 6 तत्वों, हम उन्हें छह है। यह केवल फिटिंग है ...

(ड्रम रोल बजाएं ...)

03

08 के

पुरस्कार (5) - सी-सिंटैक्स परिवर्तन

"पुरस्कार (5)", हमारे 6 वाँ स्थान पुरस्कार सी समूह की पसंद पर जाता है: सी की तरह सिंटेक्स परिवर्तन!

अब आप THREE WHOLE KEYSTROKES को बचाने के लिए a = 1 के बजाय + + 1 कोड कर सकते हैं!

दुनिया के प्रोग्रामर, आनन्द! VB को C स्तर तक उठाया गया है, और VB सीखने की कोशिश करने वाली एक पूरी नई पीढ़ी को C ++ के छात्रों के सामने आने वाले बड़े पैमाने पर भ्रम की स्थिति से थोड़ा करीब मिलेगा।

लेकिन रुकें! अभी और है!

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

बूलियन के रूप में डिम आर
आर = फंक्शन 1 () और फंक्शन 2 ()

VB6 में, दोनों कार्यों का मूल्यांकन किया जाता है कि उन्हें इसकी आवश्यकता है या नहीं। VB.NET के साथ, यदि फ़ंक्शन 1 () गलत है, तो फ़ंक्शन "R" को अनदेखा किया जा सकता है क्योंकि "R" सही नहीं हो सकता है। लेकिन, क्या होगा यदि फंक्शन 2 () में ग्लोबल वैरिएबल को बदल दिया जाए - बस संयोग से (C ++ प्रोग्रामर कहेंगे, "द्वारा" खराब प्रोग्रामिंग "।) मेरा कोड गलत उत्तर का उत्पादन क्यों करता है जब इसका अनुवाद किया जाता है VB.NET? यह हो सकता है!

के लिये प्रयत्नआईएनजी कठिन, VB.NET होगा पकड़ थोड़ा भाग्य और आखिरकार "असाधारण" त्रुटि हैंडलिंग के लिए मान्यता प्राप्त करें।

VB6 का अंतिम होल्डआउट GoTo था: "ऑन एरर गेटो"। यहां तक ​​कि मुझे यह स्वीकार करना होगा कि सी ++ शैली "ट्राइ-कैच-एज़ेड" आखिरकार संरचित अपवाद हैंडलिंग एक बड़ा सुधार है, न कि केवल आधा विशाल सुधार।

क्या, आप कहते हैं, "त्रुटि GoTo पर" अभी भी VB.NET में है? Wellll... हम कोशिश करते हैं कि इस बारे में ज्यादा बात न करें।

04

08 के

5 वां स्थान - विविध कमान परिवर्तन

5 वाँ स्थान चयन एक समूह पुरस्कार है: विविध कमान परिवर्तन! उन्हें इस पुरस्कार को साझा करना होगा और वहां उन्हें गजनी देना होगा। Microsoft दस वर्षों से बचत कर रहा है और वे वास्तव में ढीले हैं।

VB.NET अब VarPtr, ObjPtr और StrPtr फ़ंक्शंस का समर्थन करता है जो चर के मेमोरी एड्रेस को पुनः प्राप्त करते हैं। और यह VB6 LSet का समर्थन नहीं करता है जिसका उपयोग एक उपयोगकर्ता परिभाषित प्रकार को दूसरे में बदलने के लिए किया गया था। (VB6 LSet के साथ भ्रमित नहीं होना चाहिए जो कुछ पूरी तरह से अलग करता है - नीचे देखें।)

हमने लेड, इज़ मिसिंग, डेफबूल, डेफबाइट, डिफ्लेंग, डिफंक, डिफ्लेब, डेफडेक, डेफडेट, डेफट्रे, डिफॉर्स्ट, डिफॉर्ब, डिफावर, और (मेरे व्यक्तिगत पसंदीदा!) को भी शौकीन कहा।

सर्कल GDI + DrawEllipse में रूपांतरित हो गया है। वही लाइन ऑफ़ ड्रॉलाइन के लिए जाता है। गणना में अब हमारे पास Atn के बजाय Atan है, साइन Sgn के लिए जाता है, और Sqrt Sqr के बजाय बड़े गेम के लिए सूट करता है।

यदि आप Microsoft संगतता का संदर्भ देते हैं, तो भी स्ट्रिंग प्रसंस्करण में, वे अभी भी उपलब्ध हैं नाम स्थान, हमारे पास VB6 के LSet के लिए PadRight है (फिर, VB6 के LSet से बिल्कुल अलग, बिल्कुल) और PadLeft RSet के लिए। (वहाँ तीन कीस्ट्रोक्स जाता है जिसे हमने "+ =" के साथ सहेजा है!)

और हां, क्योंकि अब हम OOP हैं, अगर प्रॉपर्टी सेट, प्रॉपर्टी लेट और प्रॉपर्टी गेट वीबीनेट में नहीं मिले हैं, तो आप फाइट न करें!

अंत में, डीबग। प्रिंट या तो डीबग हो जाता है। लिखें या डीबग करें। पंक्ति लिखो। केवल नर्ड वैसे भी सब कुछ प्रिंट करते हैं।

यह VB.NET में सभी नए आदेशों को भी नहीं छूता है, लेकिन हमें कहीं न कहीं इस बकवास को रोकने के लिए मिला है।

05

08 के

4 वां स्थान - प्रक्रिया कॉल में परिवर्तन

में 4 वाँ स्थान, हमारे पास है प्रक्रिया कॉल में परिवर्तन!

यह "अच्छाई, पवित्रता और पूर्ण गुण" पुरस्कार है और "कोई और अधिक मैला कोड" गुट द्वारा बहुत सारे कठिन प्रचार का प्रतिनिधित्व करता है।

VB6 में, यदि कोई प्रक्रिया पैरामीटर चर एक आंतरिक प्रकार है, तो यह ByRef है, जब तक कि आपने इसे कोडित नहीं किया है ByVal स्पष्ट रूप से, लेकिन अगर यह ByRef या ByVal को कोडित नहीं किया गया है और यह एक आंतरिक चर नहीं है तो ByVal... समझ गया?

VB.NET में, यह ByVal है जब तक कि यह ByRef कोडित न हो।

ByVal VB.NET डिफ़ॉल्ट रूप से, प्रक्रियाओं में पैरामीटर चर में परिवर्तन को अनजाने में कॉलिंग कोड में वापस प्रचारित होने से भी रोकता है - अच्छा OOP प्रोग्रामिंग का एक महत्वपूर्ण हिस्सा।

Microsoft प्रक्रिया कॉल में कोष्ठकों की आवश्यकताओं में परिवर्तन के साथ VB.NET "ओवरलोड" भी करता है।

VB6 में, फ़ंक्शन कॉल करते समय तर्कों के चारों ओर कोष्ठकों की आवश्यकता होती है, लेकिन कॉल स्टेटमेंट का उपयोग नहीं करते समय सबरूटीन कॉल करते समय नहीं, लेकिन कॉल स्टेटमेंट का उपयोग करने पर उन्हें आवश्यक होता है।

VB.NET में, गैर-रिक्त तर्क सूची में कोष्ठक हमेशा आवश्यक होते हैं।

06

08 के

3 स्थान - 1 आधारित के बजाय एर्र्स 0 आधारित हैं

कांस्य पुरस्कार - तीसरा स्थान, जाता है Arrays 1 आधारित के बजाय 0 आधारित हैं!

यह केवल एक सिंटैक्स परिवर्तन है, लेकिन इस परिवर्तन को "पदक पोडियम" का दर्जा मिलता है क्योंकि इसे वोट दिया जाता है, "आपके प्रोग्राम लॉजिक को खराब करने की संभावना"। याद रखें, तीसरा स्थान है हमारी सूची में "पुरस्कार (2)"। यदि आपके VB6 प्रोग्राम (और कितने नहीं) में काउंटर और सरणियाँ हैं, तो यह आपको कम करेगा।

दस साल से, लोग पूछ रहे हैं, "जब उन्होंने इस तरह से किया था तो Microsoft धूम्रपान क्या था?" और दस साल के लिए, प्रोग्रामर है सार्वभौमिक रूप से इस तथ्य को नजरअंदाज कर दिया कि वहाँ एक myArray (0) तत्व था जो सिर्फ स्थान लेता था और इसके लिए उपयोग नहीं किया जाता था कुछ भी... उन प्रोग्रामरों को छोड़कर जो डीआईडी ​​का उपयोग करते हैं और उनके कार्यक्रम दिखते हैं, मेरा मतलब है, बस "अजीब"।

I = 1 से 5 के लिए
मायरे (I - 1) = जो भी हो
आगे

मेरा मतलब, वास्तव में! ...

07

08 के

दूसरा स्थान - द वेरिएंट डेटाटाइप

का रजत पदक दूसरा स्थान एक पुराने दोस्त को सम्मानित करने के लिए जाता है जिसे VB6 के पारित होने के साथ प्रोग्रामिंग की बिट बाल्टी में गिरा दिया गया था! मैं इसके अलावा किसी और की बात नहीं करता, द वेरिएंट डेटाटाइप.

संभवतः Visual Basic "notNet" की कोई अन्य एकल विशेषता "तेज़, सस्ते और ढीले" के दर्शन का बेहतर प्रतिनिधित्व नहीं करती है। यह छवि VB.NET की शुरूआत तक VB को सही बनाती है। मैं Microsoft द्वारा विज़ुअल बेसिक 3.0 का परिचय याद करने के लिए पर्याप्त पुराना हूँ: "अरे वाह! यहाँ देखो! नए, बेहतर वेरिएंट डेटा प्रकार के साथ, आपको चर या नोटिन घोषित करने की आवश्यकता नहीं है। आप बस 'उन्हें ऊपर और कोड' के बारे में सोच सकते हैं। "

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

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

और एक नया "ऑब्जेक्ट" डेटाटाइप है जो हो सकता है कुछ भी. क्या मैंने किसी को कहते सुना, "वेरिएंट का बेटा"?

08

08 के

पहला स्थान - VB.NET अंत में पूरी तरह से ऑब्जेक्ट ओरिएंटेड है

आखिरकार! द गोल्ड मेडल, पहला स्थानउच्चतम पुरस्कार जो मैं दे सकता हूं, वह है ...

टीए दाह!

VB.NET अंत में पूरी तरह से ऑब्जेक्ट ओरिएंटेड है!

अब जब आप समुद्र तट पर जाते हैं, तो C ++ प्रोग्रामर आपके चेहरे पर रेत नहीं मारेंगे और आपकी गर्लफ्रेंड / बॉयफ्रेंड - एक को चुरा लेंगे। और आप कर सकते है फिर भी कोड को पूरा करने के लिए सामान्य लेज़र ट्रायल बैलेंस को कोड करते हुए वे यह पता लगाने की कोशिश कर रहे हैं कि कौन सी हेडर फाइलें शामिल हैं।

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

क्या मैंने सुना है कि कोई कहता है कि C ++ में कई उत्तराधिकार हैं और .NET अभी भी नहीं है?

विधर्मी को जलाओ!

instagram story viewer