संभवतः डार्ट का आज सबसे अच्छा फायदा यह है कि यह C #, Java, C ++ और अधिकांश जावास्क्रिप्ट डेवलपर्स से परिचित है। कई डेवलपर्स को अपनी भाषा (कक्षा-आधारित OO, लेक्सिकल स्कोप, परिचित वाक्यविन्यास) और उनके टूल (कोड पूरा करना, रीफ़ैक्टरिंग, कोड नेविगेशन, डीबगिंग) के बारे में अपेक्षाओं का एक सेट होता है जो डार्ट को पूरा करने और अधिक से अधिक करने का लक्ष्य रखता है।
वैकल्पिक स्थिर प्रकार। जब मैं प्रोटोटाइप बना रहा हूं या केवल छोटी स्क्रिप्ट लिख रहा हूं, तो मैं एक टन स्थिर प्रकार का उपयोग नहीं करता हूं। मुझे अभी उन्हें जरूरत नहीं है, और मैं समारोह से पीछे नहीं हटना चाहता। हालाँकि, उन लिपियों में से कुछ बड़े कार्यक्रमों में विकसित होती हैं। लिपियों के पैमाने के रूप में, मुझे कक्षाएं और स्थिर प्रकार के एनोटेशन चाहिए।
दोषी साबित होने से पहले बेगुनाह। डार्ट उन परिस्थितियों को कम करने के लिए कड़ी मेहनत करता है, जिनके परिणामस्वरूप संकलन-समय त्रुटि होती है। डार्ट में कई स्थितियाँ चेतावनी हैं, जो आपके प्रोग्राम को चलने से नहीं रोकती हैं। क्यूं कर? वेब विकास फैशन को ध्यान में रखते हुए, डेवलपर्स को कोड के एक बिट की कोशिश करने, फिर से लोड करने, और क्या होता है देखने की अनुमति देना अनिवार्य है। डेवलपर को कोड के एक कोने का परीक्षण करने से पहले पूरे कार्यक्रम को सही साबित करने के लिए पहले नहीं होना चाहिए।
लेक्सिकल स्कोप। यह बहुत बढ़िया है, अगर आपको इसकी आदत नहीं है। सीधे शब्दों में, चर की दृश्यता, और यहां तक कि यह , कार्यक्रम संरचना द्वारा परिभाषित किया गया है। यह पारंपरिक वेब प्रोग्रामिंग में गूढ़ लोगों के एक वर्ग को समाप्त करता है। आप क्या सोचते हैं या अपेक्षा करते हैं, इसे बनाए रखने के लिए कार्यों को फिर से बाँधने की आवश्यकता नहीं है।
वास्तविक कक्षाएं भाषा में पके हुए हैं। यह स्पष्ट है कि अधिकांश डेवलपर्स कक्षाओं में काम करना चाहते हैं, क्योंकि अधिकांश वेब विकास ढांचे एक समाधान प्रदान करते हैं। हालांकि, फ्रेमवर्क ए से "क्लास" पारंपरिक वेब विकास में फ्रेमवर्क बी के साथ संगत नहीं है। डार्ट स्वाभाविक रूप से कक्षाओं का उपयोग करता है।
शीर्ष स्तर के कार्य। जावा का एक दर्दनाक हिस्सा यह है कि सब कुछ एक कक्षा में रखा जाना है। यह थोड़ा कृत्रिम है, खासकर जब आप कुछ उपयोगिता कार्यों को परिभाषित करना चाहते हैं। डार्ट में, आप किसी भी वर्ग के बाहर, शीर्ष स्तर पर कार्यों को परिभाषित कर सकते हैं। इससे लाइब्रेरी रचना अधिक स्वाभाविक लगती है।
कक्षाओं में निहित इंटरफेस हैं। स्पष्ट इंटरफेस का उन्मूलन भाषा को सरल बनाता है। आईडीक्यू को हर जगह परिभाषित करने की आवश्यकता नहीं है, अब आपको एक वर्ग बतख की आवश्यकता है। क्योंकि हर वर्ग में एक अंतर्निहित इंटरफ़ेस होता है, आप एक बना सकते हैंMockDuck implements Duck
नामांकित कंस्ट्रक्टर। आप रचनाकारों को नाम दे सकते हैं, जो वास्तव में पठनीयता के साथ मदद करता है। उदाहरण के लिए:var duck = new Duck.fromJson(someJsonString)
कारखाने के निर्माता। फैक्टरी पैटर्न काफी सामान्य है, और इस भाषा में पके हुए देखने के लिए अच्छा है। एक फैक्ट्री कंस्ट्रक्टर एक सिंगलटन, कैश से ऑब्जेक्ट या सब-टाइप का ऑब्जेक्ट वापस कर सकता है।
आइसोलेट्स। थ्रेड्स (एक त्रुटि प्रवण तकनीक) के बीच परस्पर स्थिति साझा करने के दिन गए। डार्ट आइसोलेट एक पृथक मेमोरी हीप है, जो एक अलग प्रक्रिया या थ्रेड में चलने में सक्षम है। अलगाव बंदरगाहों पर संदेश भेजकर संवाद करता है। अलगाव डार्ट वीएम में काम करता है और एचटीएमएल 5 ऐप में वेब श्रमिकों के लिए संकलन कर सकता है।
डार्ट जावास्क्रिप्ट को संकलित करता है। यह गंभीर रूप से महत्वपूर्ण है, क्योंकि जावास्क्रिप्ट वेब की भाषा है। डार्ट ऐप्स को आधुनिक वेब पर चलना चाहिए।
मजबूत टूलींग। डार्ट परियोजना एक संपादक को भी जहाज देती है। आपको कोड पूरा, रीफैक्टरिंग, त्वरित सुधार, कोड नेविगेशन, डीबगिंग और बहुत कुछ मिलेगा। इसके अलावा, IntelliJ में डार्ट प्लगइन है।
पुस्तकालय। आसान नाम स्थान और पुन: प्रयोज्य के लिए आप डार्ट कोड को पुस्तकालयों में व्यवस्थित कर सकते हैं। आपका कोड एक पुस्तकालय आयात कर सकता है, और पुस्तकालय फिर से निर्यात कर सकते हैं।
स्ट्रिंग इंटरपोलेशन। यह सिर्फ एक अच्छी सुविधा है, जिससे एक स्ट्रिंग की रचना करना आसान हो जाता है:var msg = "Hello $friend!";
noSuchMethod Dart एक गतिशील भाषा है, और आप मनमाने तरीके से कॉल कर सकते हैं noSuchMethod()
।
जेनेरिक्स। "यह सेब की एक सूची है" कहने में सक्षम होने के नाते आपके टूल को आपकी मदद करने और संभावित त्रुटियों को जल्दी पकड़ने के लिए बहुत अधिक जानकारी देता है। सौभाग्य से, हालांकि, डार्ट की जेनेरिक अधिक सरल हैं कि आपको शायद क्या करने की आदत है।
ऑपरेटर ओवरलोडिंग। डार्ट वर्गों की तरह ऑपरेटरों के लिए व्यवहार को परिभाषित कर सकते +
या -
। उदाहरण के लिए, आप जैसे कोड लिख सकते हैं new Point(1,1) + new Point(2,2)
।
निजी तौर पर, मेरा मानना है कि कई भाषाओं के लिए वेब पर जगह है। यदि एप्लिकेशन भयानक है, और यह आधुनिक ब्राउज़रों के बहुमत में चलता है, तो मुझे परवाह नहीं है कि यह किस भाषा में लिखा गया है। जब तक आप, डेवलपर, खुश, उत्पादक और वेब पर लॉन्च कर रहे हैं, तब तक क्या मायने रखता है! :)