क्या डार्ट में वेब प्रोग्रामर के लिए कोई उपयोगी सुविधा है?


33

http://www.dartlang.org/

मैंने बहुत संक्षेप में साइट की जाँच की है, और उत्सुक हो गया हूँ। क्या डार्ट का उपयोग करने के कोई फायदे हैं? क्या यह केवल जावास्क्रिप्ट के लिए एक प्रतिस्थापन है?

यह सरल जावा जैसा दिखता है। काम पर बहुत सी # लिखने से, भाषा मुझे बहुत पसंद आती है जो मैं उपयोग करता हूं, इसलिए वाक्य रचना सीखना सीखने के लिए एक हवा की तरह लगता है। भाषा के साथ किसी की कोई राय या अनुभव है?

(कॉफीस्क्रिप्ट की तुलना में (= मैं रूबी सिंटैक्स नहीं कर रहा हूं) सिंटैक्स मुझे अधिक परिचित लगता है)।


18
डौग क्रॉकफोर्ड की टिप्पणी मनोरंजक है: "तो, मैंने लंबे समय से सोचा है ... अगर मैं कागज की एक साफ शीट ले सकता हूं और एक नई भाषा लिख ​​सकता हूं जो जावास्क्रिप्ट की सभी अच्छाई को बरकरार रखता है ... तो मैं ऊपर नहीं आया होता। डार्ट जैसी किसी भी चीज़ के साथ। ”
MebAlone

2
@MebAlone हो-हो-हो, कितना आनंददायक। क्या एक वैग है कि क्रॉकफोर्ड है। बुद्धि पर पछतावा।
फंकीब्रिज

11
@MebAlone डार्ट भाषा के डिजाइनर एक नई भाषा के साथ आने की कोशिश नहीं कर रहे थे जो जावास्क्रिप्ट की सभी अच्छाई को बरकरार रखती है। वे ब्राउज़र के लिए एक क्लास-आधारित, ऑब्जेक्ट-ओरिएंटेड भाषा भाषा के साथ आने की कोशिश कर रहे थे।
MarkJ

1
क्या Is there any advantages of using Dart?मतलब है? क्या और कैसे मापा पर लाभ ? जावास्क्रिप्ट के लिए संकलित भाषाओं की एक श्रृंखला है। उनमें से ज्यादातर डार्ट की तुलना में कुछ बेहतर करते हैं। कुछ डार्ट से बेहतर काम करते हैं। और उदाहरण के लिए, यदि आप C # करते हैं, तो ScriptSharp आपके लिए दिलचस्प हो सकता है। जबकि जावास्क्रिप्ट को संकलित करने वाली सभी भाषाओं में से यह मेरी पहली पसंद होने से दूर होगा, आपके लिए यह एक बहुत ही आसान संक्रमण पेश करेगा, संभवतः यह भी मौजूद कोड को दर्द रहित रूप से पोर्ट करने की अनुमति देता है।
back2dos

1
@MebAlone डगलस संघर्ष में एक सा है। शिकायत करने वाले डेवलपर्स नए विचारों को स्वीकार नहीं करते हैं, लेकिन कहते हैं कि डार्ट 2012 में खराब है जब यह केवल 2 दिन पहले जारी किया गया है। उन्होंने घोषणा की है कि यह 2 साल पहले आएगा। जैसा कि डार्ट ने कुछ बातों को संबोधित किया है कि डगलस जेएस से नाखुश है ("ढीले लटके" प्रोटोटाइप के साथ कोई निर्माण कार्य नहीं करता है)। अपनी पसंद की चीज़ों को रखते समय (जैसे बंद)। कई प्रस्तुतियों में मैंने उन्हें प्रोटोटाइप की प्रशंसा करते हुए देखा, फिर निर्माण कार्यों के वाक्य विन्यास की आलोचना की (वह सही है)। फिर "एक हल" करता है जो एक मॉड्यूल पैटर्न दिखाता है जो प्रोटोटाइप के अस्तित्व को पूरी तरह से अनदेखा करता है।
HMR

जवाबों:


65

आपके प्रश्न के लिए धन्यवाद! पूर्ण अस्वीकरण, मैं डार्ट टीम पर काम करता हूं।

संभवतः डार्ट का आज सबसे अच्छा फायदा यह है कि यह C #, Java, C ++ और अधिकांश जावास्क्रिप्ट डेवलपर्स से परिचित है। कई डेवलपर्स को अपनी भाषा (कक्षा-आधारित OO, लेक्सिकल स्कोप, परिचित वाक्यविन्यास) और उनके टूल (कोड पूरा करना, रीफ़ैक्टरिंग, कोड नेविगेशन, डीबगिंग) के बारे में अपेक्षाओं का एक सेट होता है जो डार्ट को पूरा करने और अधिक से अधिक करने का लक्ष्य रखता है।

यहाँ कुछ चीजें हैं जो मुझे भाषा के बारे में पसंद हैं:

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

  2. दोषी साबित होने से पहले बेगुनाह। डार्ट उन परिस्थितियों को कम करने के लिए कड़ी मेहनत करता है, जिनके परिणामस्वरूप संकलन-समय त्रुटि होती है। डार्ट में कई स्थितियाँ चेतावनी हैं, जो आपके प्रोग्राम को चलने से नहीं रोकती हैं। क्यूं कर? वेब विकास फैशन को ध्यान में रखते हुए, डेवलपर्स को कोड के एक बिट की कोशिश करने, फिर से लोड करने, और क्या होता है देखने की अनुमति देना अनिवार्य है। डेवलपर को कोड के एक कोने का परीक्षण करने से पहले पूरे कार्यक्रम को सही साबित करने के लिए पहले नहीं होना चाहिए।

  3. लेक्सिकल स्कोप। यह बहुत बढ़िया है, अगर आपको इसकी आदत नहीं है। सीधे शब्दों में, चर की दृश्यता, और यहां तक ​​कि यह , कार्यक्रम संरचना द्वारा परिभाषित किया गया है। यह पारंपरिक वेब प्रोग्रामिंग में गूढ़ लोगों के एक वर्ग को समाप्त करता है। आप क्या सोचते हैं या अपेक्षा करते हैं, इसे बनाए रखने के लिए कार्यों को फिर से बाँधने की आवश्यकता नहीं है।

  4. वास्तविक कक्षाएं भाषा में पके हुए हैं। यह स्पष्ट है कि अधिकांश डेवलपर्स कक्षाओं में काम करना चाहते हैं, क्योंकि अधिकांश वेब विकास ढांचे एक समाधान प्रदान करते हैं। हालांकि, फ्रेमवर्क ए से "क्लास" पारंपरिक वेब विकास में फ्रेमवर्क बी के साथ संगत नहीं है। डार्ट स्वाभाविक रूप से कक्षाओं का उपयोग करता है।

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

  6. कक्षाओं में निहित इंटरफेस हैं। स्पष्ट इंटरफेस का उन्मूलन भाषा को सरल बनाता है। आईडीक्यू को हर जगह परिभाषित करने की आवश्यकता नहीं है, अब आपको एक वर्ग बतख की आवश्यकता है। क्योंकि हर वर्ग में एक अंतर्निहित इंटरफ़ेस होता है, आप एक बना सकते हैंMockDuck implements Duck

  7. नामांकित कंस्ट्रक्टर। आप रचनाकारों को नाम दे सकते हैं, जो वास्तव में पठनीयता के साथ मदद करता है। उदाहरण के लिए:var duck = new Duck.fromJson(someJsonString)

  8. कारखाने के निर्माता। फैक्टरी पैटर्न काफी सामान्य है, और इस भाषा में पके हुए देखने के लिए अच्छा है। एक फैक्ट्री कंस्ट्रक्टर एक सिंगलटन, कैश से ऑब्जेक्ट या सब-टाइप का ऑब्जेक्ट वापस कर सकता है।

  9. आइसोलेट्स। थ्रेड्स (एक त्रुटि प्रवण तकनीक) के बीच परस्पर स्थिति साझा करने के दिन गए। डार्ट आइसोलेट एक पृथक मेमोरी हीप है, जो एक अलग प्रक्रिया या थ्रेड में चलने में सक्षम है। अलगाव बंदरगाहों पर संदेश भेजकर संवाद करता है। अलगाव डार्ट वीएम में काम करता है और एचटीएमएल 5 ऐप में वेब श्रमिकों के लिए संकलन कर सकता है।

  10. डार्ट जावास्क्रिप्ट को संकलित करता है। यह गंभीर रूप से महत्वपूर्ण है, क्योंकि जावास्क्रिप्ट वेब की भाषा है। डार्ट ऐप्स को आधुनिक वेब पर चलना चाहिए।

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

  12. पुस्तकालय। आसान नाम स्थान और पुन: प्रयोज्य के लिए आप डार्ट कोड को पुस्तकालयों में व्यवस्थित कर सकते हैं। आपका कोड एक पुस्तकालय आयात कर सकता है, और पुस्तकालय फिर से निर्यात कर सकते हैं।

  13. स्ट्रिंग इंटरपोलेशन। यह सिर्फ एक अच्छी सुविधा है, जिससे एक स्ट्रिंग की रचना करना आसान हो जाता है:var msg = "Hello $friend!";

  14. noSuchMethod Dart एक गतिशील भाषा है, और आप मनमाने तरीके से कॉल कर सकते हैं noSuchMethod()

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

  16. ऑपरेटर ओवरलोडिंग। डार्ट वर्गों की तरह ऑपरेटरों के लिए व्यवहार को परिभाषित कर सकते +या -। उदाहरण के लिए, आप जैसे कोड लिख सकते हैं new Point(1,1) + new Point(2,2)

यह सब कहने के बाद, वहाँ कई और अधिक जावास्क्रिप्ट पुस्तकालय हैं।

निजी तौर पर, मेरा मानना ​​है कि कई भाषाओं के लिए वेब पर जगह है। यदि एप्लिकेशन भयानक है, और यह आधुनिक ब्राउज़रों के बहुमत में चलता है, तो मुझे परवाह नहीं है कि यह किस भाषा में लिखा गया है। जब तक आप, डेवलपर, खुश, उत्पादक और वेब पर लॉन्च कर रहे हैं, तब तक क्या मायने रखता है! :)


कई आधुनिक प्रोग्रामिंग लैंग्वेज (रूबी, स्काला, पायथन) में कुछ प्रकार के कई विरासत तंत्र शामिल हैं, और यह JDK8 में आ रहा है। क्या यह डार्ट के लिए योजनाबद्ध है?
MeAAlone

4
बिंदु # 1 पर +1 - डायनामिक टाइपिंग छोटी स्क्रिप्ट (यानी "फॉर्म वेलिडेशन" -वेल) के लिए काफी पर्याप्त है। इससे परे कुछ भी और मुझे अपरिहार्य टाइपिंग के सेफ्टी-नेट का पता लगाना अपरिहार्य है।
फंकीब्रिज

2
@MebAlone मुझे उम्मीद है कि हम निकट भविष्य में मिक्स डार्ट में आएंगे।
सेठ लड्ड

आश्चर्यचकित स्नैप-शॉटिंग का उल्लेख नहीं किया गया था - डार्ट की सबसे अच्छी विशेषताओं में से एक आईएमओ।
मिथक

@mythz मैंने स्नैपशॉट का उल्लेख नहीं किया क्योंकि वे अभी तक सभी तरह से लागू नहीं हुए हैं। लेकिन हाँ, वे शांत हैं!
सेठ लड्डू

11

काम पर बहुत सी # लिखना, भाषा मुझे बहुत पसंद है जो मुझे आदत है

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

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

तो सुविधा एक चीज है, दूसरी संरचना। जावास्क्रिप्ट सिर्फ बड़े पैमाने पर नहीं होता है क्योंकि बड़े पैमाने पर ऐप्स की संरचना के लिए कोई मानक तरीका नहीं है। हालाँकि वर्तमान में इस तरह के 3 पार्टी कार्य वास्तव में लोकप्रिय हो रहे हैं। (बैकबोन.जैस की तरह)

डार्ट कुछ हल करने के लिए है। यह आपको जावा की Stuctural सुविधा देने के लिए है और इसके अलावा इसमें ये सभी अजीब जेएस विशेषताएं नहीं हैं। (उनमें से ज्यादातर कमजोर टाइपिंग से संबंधित हैं।)

तो इसका उत्तर है हां: कक्षाएं, विरासत, ...: "पारंपरिक ओओपी"। (अधिकांश realworld JS webapps मुख्य संरचना के रूप में jQuery के कॉलबैक आधारित दृष्टिकोण का उपयोग करते हैं।) और इसमें स्थैतिक टाइपिंग का एक ढीला रूप है, हालांकि यह महत्वपूर्ण विक्रय बिंदु नहीं है।

BTW: आप यह "आंतरिक" Google मेलिंग दिनांक 2010 पढ़ना चाहते हैं: जावास्क्रिप्ट का भविष्य

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


5
हर कोई जावास्क्रिप्ट "एक अजीब भाषा" नहीं मानता है। समस्या का सामना करने का एक प्राकृतिक तरीका अक्सर होता है। सभी को अक्सर तकनीकों (कार्यात्मक प्रोग्रामिंग, ऑपरेटर ओवरलोडिंग, मिश्रण, सामान्य प्रोग्रामिंग) की आवश्यकता होती है जो जावा द्वारा समर्थित नहीं हैं। विरासत, रचना आदि, जावास्क्रिप्ट प्रोटोटाइप के साथ अजीब नहीं है। यह जावा और C # से अलग है, लेकिन रूबी, LUA और पर्ल के समान है।
केविन क्लाइन

1
मम्म ... पहली बार मैं प्रोटोटाइप के बारे में कुछ भी अच्छा सुनता हूं। लेकिन आप रूबी के समान जेएस प्रोटोटाइप को किस तरीके से देखते हैं?
फिलिप

1
आपको (जावा दुनिया में) अधिक बार बाहर निकलने की आवश्यकता है। रूबी मेटाप्रोग्रामिंग ( ruby-doc.org/docs/ProgrammingRuby/html/ext_ruby.html ) पर देखें और आप देखेंगे कि रूबी सदस्य नाम संकल्प के समान है (लेकिन IMO जावास्क्रिप्ट सदस्य नाम संकल्प से अधिक जटिल है)
केविन क्लाइन

jQuery किसी भी तरह से आकार या रूप में DOM API (जो इसे अनिवार्य रूप से लपेटता है) या कोर JS खुद करता है या डार्ट होता है की तुलना में किसी भी कॉलबैक दृष्टिकोण को बढ़ावा देता है। प्रोटोटाइप विरासत तंत्र है जो हमें उन चीजों को करने की अनुमति देता है जो कक्षाएं नहीं कर सकती हैं। कक्षाओं की तुलना फ़ंक्शंस कंस्ट्रक्टर्स से करें, जो आंतरिक उदाहरण var को ठीक करता है, प्रोटोटाइप नहीं। ऐसा नहीं है कि आपकी औसत प्रतिभा स्तर बीन / गेट्टर-सेटर स्पैमिंग जावा या सी # देव को इस बात का थोड़ा सा अंदाजा है कि कौन सा एनकैप्सुलेशन अच्छा है या औसत Google देव को इस बात का थोड़ा भी अंदाजा है कि जावास्क्रिप्ट कैसे लिखा जाता है।
एरिक रेपेने

@ErikReppen: यदि आप विशेष रूप से DOM मैनिपुलेशन के लिए jQuery का उपयोग करते हैं, तो आप कोड लिख सकते हैं, जिसे शायद ही किसी कॉलबैक की जरूरत है, अगर आप इसे अन्य फ्रेमवर्क जैसे backbone.js के साथ जोड़ते हैं। JQuery के साथ बाइंडिंग ईवेंट बहुत अधिक (अनाम) कॉलबैक को बढ़ावा देता है। backbone.js में IMHO एक अधिक संरचित दृष्टिकोण है।
फिलिप

5

मेरे लिए, यह मुझे गुंजाइश और कक्षाओं के साथ जावास्क्रिप्ट से बेहतर अपने कोड की संरचना करने का मौका देता है।

यह जावा और जावास्क्रिप्ट के समान है और डार्ट संपादक के साथ, मेरे पास शून्य अनुकूलन के करीब था। मैंने सीधे कोडिंग शुरू कर दी।

var ws = new [Moz]WebSocketविभिन्न ब्राउज़रों को पूरा करने के लिए कष्टप्रद है। डार्ट लोकप्रिय ब्राउज़रों के साथ संगत जावास्क्रिप्ट कोड के लिए संकलित करता है।

मेरी चुनौती मुख्य रूप से जावास्क्रिप्ट कोड के साथ है। मैं किसी तरह इसके आस-पास के रास्ते तलाशता हूं लेकिन यह डार्ट का हिस्सा है तो बेहतर होगा।


सहमत, @Aola, डार्ट को बेहतर जावास्क्रिप्ट इंटरॉप की आवश्यकता है। यह रडार पर बहुत अधिक है, मैं आगे देख रहा हूं कि टीम क्या करती है।
सेठ लड्ड

0

जावा / सी # दृष्टिकोण निश्चित रूप से वेब 2.0 की शुरुआत के बाद से जेएस को दस्तक देने में पक्षपाती है क्योंकि क्लाइंट-साइड भाषाओं और सर्वर-साइड भाषाओं के बीच एक कृत्रिम (या बहुत वास्तविक और आवश्यक) भेदभाव है। मुझे लगता है कि यह सर्वर-साइड भाषा है, जो वेब ऐप्स की मुख्य समस्या डोमेन के 'नियंत्रण' में रह सकती है और व्यावसायिक कोड (सर्वर-साइड) से कम गंभीर कोड (यूआई कोड) का सीमांकन करना है। इसके अलावा जावा मुझे लगता है कि एक सर्वर-साइड कर्नेल रहना पसंद करता है क्योंकि यह फ्लैश और HTML के कारण बड़े पैमाने पर ऐपलेट्स के साथ जीयूआई युद्ध हार गया है। अब आपके पास RedTamarin है NodeJS-esque AS3 परियोजना जो एकीकृत फ्रंट और बैकेंड प्रतिमानों के बहुलवादी भविष्य के लिए आशंका है। ।

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