कॉफ़ीस्क्रिप्ट के पेशेवरों और विपक्ष क्या हैं? [बन्द है]


48

बेशक एक बड़ा समर्थक बहुत सारे मामलों में छोटे कोड की वजह से सिंटैक्टिक शुगर की मात्रा है। Http://jashkenas.github.com/cfish-script/ पर प्रभावशाली उदाहरण हैं। दूसरी ओर मुझे संदेह है कि ये उदाहरण जटिल वास्तविक दुनिया अनुप्रयोगों के कोड का प्रतिनिधित्व करते हैं। उदाहरण के लिए मेरे कोड में मैं कभी भी नंगे ऑब्जेक्ट्स के लिए फ़ंक्शंस नहीं जोड़ता, बल्कि उनके प्रोटोटाइप के लिए। इसके अलावा प्रोटोटाइप सुविधा उपयोगकर्ता से छिपी हुई है, मुहावरेदार जावास्क्रिप्ट के बजाय शास्त्रीय ओओपी का सुझाव दे रही है।

सरणी समझ उदाहरण मेरे कोड में शायद इस तरह दिखेगा:

cubes = $.map(list, math.cube); // which is 8 characters less using jQuery...

7
यह सरणी समझ नहीं है। वह JQuery.map () है।
बजे रीन हेनरिक

1
यकीन है, इसलिए मैं "सरणी समझ" का नहीं बल्कि "सरणी समझ उदाहरण [वेबसाइट पर]" का उल्लेख कर रहा हूं।
फिलिप

काफी उचित। मेरा कहना यह था कि फोल्ड (नक्शा) कुछ मायनों में लिस्ट कॉम्प्रिहेंशन (जो आमतौर पर अधिक शक्तिशाली होता है) की गिरावट का मामला है।
हेन हेनरिक्स

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

रेल ने कॉफी स्क्रिप्ट को एक डिफ़ॉल्ट रत्न बना दिया। इसने "चर्चा" को उकसाया " github.com/rails/rails/commit/…
generalhenry

जवाबों:


53

मैं कॉफ़ीस्क्रिप्ट पर एक आगामी पुस्तक का लेखक हूं:
http://pragprog.com/tmarks/tbcfish/coffilescript

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

  1. अच्छे जावास्क्रिप्ट पैटर्न के उपयोग को प्रोत्साहित करता है
  2. जावास्क्रिप्ट विरोधी पैटर्न को हतोत्साहित करता है
  3. और भी अच्छा जावास्क्रिप्ट कोड कम और अधिक पठनीय बनाता है

नंबर 3 को पहले दो (मेरी किताब में भी) की तुलना में बहुत अधिक ध्यान मिलता है, लेकिन जितना अधिक मैं इसके बारे में सोचता हूं, उतना ही मुझे एहसास होता है कि मैंने सिर्फ सुंदर वाक्य रचना के लिए कूद नहीं बनाया; मैंने छलांग लगाई क्योंकि भाषा ने मुझे बेहतर, कम त्रुटि वाले जावास्क्रिप्ट की ओर आकर्षित किया। कुछ त्वरित उदाहरण देने के लिए:

  • चूँकि वैरिएबल ऑटो-स्कोपेड होते हैं, आप गलती से ग्लोबल्स को ओवरटेक करके ओवरराइट नहीं कर सकते var, एक ही नाम के साथ एक वैरिएबल को छायांकित करें (नामित तर्कों को छोड़कर), या विभिन्न फ़ाइलों में वैरिएबल होते हैं जो इंटरैक्ट करते हैं (देखें https://stackoverflow.com/bestions) / 5211638 / पैटर्न-फॉर-कॉफ़ीस्क्रिप्ट-मॉड्यूल / 5212449 )।
  • क्योंकि ->लिखने के लिए बहुत आसान की एक बिल्ली है function(){}, कॉलबैक का उपयोग करना आसान है। सिमेंटिक इंडेंटेशन स्पष्ट करता है जब कॉलबैक नेस्टेड होते हैं। और उचित होने =>पर संरक्षित करना आसान बनाता है this
  • क्योंकि unless xअंग्रेजी बोलने वालों के लिए पार्स करने में आसान है if (!x), और इससे if x?आसान है if (x != null), सिर्फ दो उदाहरण देने के लिए, आप लॉजिक सिंटैक्स पर कम मस्तिष्क चक्र और तर्क पर ही अधिक खर्च कर सकते हैं।

एक महान पुस्तकालय जैसे अंडरस्कोर.जेएस इन समस्याओं में से कुछ का ध्यान रख सकता है, लेकिन सभी नहीं।

अब विपक्ष के लिए:

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

जाहिर है मुझे लगता है कि पेशेवरों ने मेरे लिए व्यक्तिगत रूप से विपक्ष को पछाड़ दिया है, लेकिन यह हर व्यक्ति, टीम या परियोजना के लिए नहीं होगा। (यहां तक ​​कि जेरेमी एशकेनस बहुत सारे जावास्क्रिप्ट लिखते हैं।) कॉफीस्क्रिप्ट को जावास्क्रिप्ट के ठीक पूरक के रूप में देखा जाता है, प्रतिस्थापन नहीं।


2
मैं =>कौन हूँ, दुनिया में कैसे मैं प्रलेखन में याद किया? यह कमाल है । (अन्य बिंदु भी अच्छे थे - विपक्ष की एक ईमानदार सूची के साथ बहुत अच्छा निष्पक्ष उत्तर। :)
मिशेल टायली

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

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

इंडेंटेशन लॉजिक में से कुछ अपेक्षा के अनुरूप व्यवहार नहीं करते हैं, आपको अंतर्निहित जेएस को देखना होगा कि वह अपने किए गए कार्यों को पूरी तरह से अजीब तरीके से देख सकता है .. यह नियमों के tbh का हिस्सा हो सकता है, लेकिन यह हमेशा स्पष्ट नहीं होता है जैसे अन्य इंडेंट सीनेस्ट भाषाओं Py, और मैंने पाया है कि इसे रोकने के लिए जितना हो सकता है उससे अधिक सूक्ष्म कीड़े उत्पन्न कर सकते हैं। मैं अभी भी CoffeeScript का उपयोग करता हूं
sa93

1
अंक 1 और 2 को विस्तार की आवश्यकता है। मुझे लगता है कि एंड्रयू का जवाब मिश्रित बैग के रूप में # 3 का एक अच्छा उदाहरण प्रदान करता है। मैं गोलियों से असहमत हूं: भूलकर भी वैर मूर्खतापूर्ण है और आपके पास पहले से टकराने के लिए बहुत सारे वैश्विक संस्करण नहीं होने चाहिए, 'फंक्शन' कठिन नहीं है - पूर्व-निर्धारित नाम विधियों से भी कम, 'अगर! (X!) ) 'छोटा और मीठा है और' जब तक 'इसे और अधिक क्रियाशील नहीं बनाता (अपनी खुद की पिछली गोली और बिंदु # 3 देखें) और मानव भाषा-समानता वास्तव में एक डिजाइन लक्ष्य नहीं है जो ऐतिहासिक रूप से प्रोग्रामिंग भाषाओं में बहुत सफलता के साथ मिला है। हमें मानव और मशीन के संपर्क में रहने की जरूरत है।
एरिक रेपेन

30

हमारे पास कुछ बड़े जावास्क्रिप्ट कोडबेस हैं और लगभग एक महीने पहले हम कॉफीस्क्रिप्ट को एक कोशिश देने के लिए इच्छुक थे। हमारे डेवलपर्स में से एक ने जेएस से सीएस में हमारे एक मॉड्यूल को http://js2cfish.org/ का उपयोग करके शुरू किया । यह उपकरण अधिक उपयोगी था और जावास्क्रिप्ट की 1000-कुछ लाइनों को पोर्ट करने में लगभग दो या तीन घंटे लगते थे। उस बिंदु पर हमारे द्वारा देखे गए कुछ अवलोकन:

  1. परिणामस्वरूप कॉफीस्क्रिप्ट कोड काफी पठनीय था।

  2. हमने इसे वापस जावास्क्रिप्ट में संकलित किया और इसे नेविगेट करना और डीबग करना बहुत आसान था। जब हम उस मॉड्यूल को पोर्ट कर रहे थे, तो हमारी टीम के एक अन्य डेवलपर ने इसमें एक बग पाया। इन दो डेवलपर्स ने उस पुराने बग को हमारे पुराने जावास्क्रिप्ट कोड में और सीएस कंपाइलर से निकले नए जावास्क्रिप्ट कोड में तय किया। उन्होंने स्वतंत्र रूप से काम किया और यह उन्हें उसी समय (15-20 मिनट) के बारे में ले गया।

  3. इस तथ्य के कारण कि यह एक बंदरगाह था जिसके परिणामस्वरूप कोड कॉफी-विशिष्ट सुविधाओं का उपयोग नहीं कर रहे थे जो उचित या वांछनीय थे। अगर हम खरोंच से कॉफीस्क्रिप्ट में लिखेंगे तो कोड अधिक मुहावरेदार होगा। उसके कारण बाद में हमने फैसला किया कि हम मौजूदा कोड को पोर्ट नहीं करेंगे।

  4. छोटे कार्य की सामान्य पठनीयता और छोटी वस्तु में कुछ वृद्धि हुई। हालाँकि, अधिक समय तक विधियाँ ऐसी नहीं थीं। सबसे बड़ी ब्लोट बचत से आया ->और स्पष्ट है return, लेकिन इसके अलावा हमारे कोड को बहुत छोटा या सरल नहीं मिला। वाक्य रचना के कुछ टुकड़े काफी भ्रामक लग रहे थे, विशेष रूप से वस्तु शाब्दिक। CS सदस्य परिभाषाओं के आसपास घुंघराले ब्रेसिज़ को छोड़ देता है और "सब कुछ-एक-ए-एक्सप्रेशन" के साथ संयुक्त होता है और निहित होता returnहै जिसने कोड के कुछ बिट्स को पढ़ने के लिए बहुत कठिन बना दिया है।

    यहाँ जावास्क्रिप्ट है:

    var rabbitGenerator = {
        makeRabbit: function(rabbitName, growCarrots) {
            if (growCarrots) {
                carrots.growMore(10);
            } else {
                carrots.ensureSupply();
            }
            return {
                name: rabbitName, 
                height: 0,
                actions: {
                    jump: function (height) {
                        this.height += height;
                    },
                    eatCarrot: function () {
                        // etc
                    }
                }
            };
        },
        // more members
    }
    

    और यहाँ इसी कॉफीस्क्रिप्ट कोड की तरह दिखेगा:

    rabbitGenerator = 
      makeRabbit: (rabbitName, growCarrots) ->
        if growCarrots
          carrots.growMore 10
        else
          carrots.ensureSupply()
        name: rabbitName // (*)
        height: 0
        actions: 
          jump: (height) ->
            @height += height
    
          eatCarrot: ->
    

    जैसा कि अब यह पता लगाना बहुत मुश्किल है कि रिटर्न स्टेटमेंट (*)लाइन में शुरू होता है । हमारी परियोजना में हम वस्तु शाब्दियों पर बहुत भरोसा करते हैं: हम उन्हें फ़ंक्शन मापदंडों के रूप में पास करते हैं और उन्हें अन्य कार्यों से वापस करते हैं। कई मामलों में ये ऑब्जेक्ट काफी जटिल होते हैं: विभिन्न प्रकार के सदस्यों और घोंसले के शिकार के कई स्तरों के साथ। हमारे मामले में समग्र भावना यह थी कि कॉफीस्क्रिप्ट कोड वास्तव में सादे जावास्क्रिप्ट कोड की तुलना में पढ़ने के लिए कठिन था।

  5. हालाँकि, कॉफ़ीगैबिंग डीबगिंग करना आसान हो गया, क्योंकि हमने उम्मीद की थी कि एडिटिंग एक्सपीरियंस काफी कम हो गया है। हमें इस भाषा के लिए एक अच्छा संपादक / IDE नहीं मिला। हमने अपनी परियोजना के लिए क्लाइंट-साइड कोड के लिए संपादक / आईडीई पर मानकीकृत नहीं किया है और वास्तव में हम सभी विभिन्न उपकरणों का उपयोग करते हैं। वास्तव में एक टीम में हर कोई इस बात से सहमत होता है कि जब वे कॉफ़ीस्क्रिप्ट पर स्विच करते हैं तो उन्हें अपने टूल से एक खराब समर्थन मिलता है। आईडीई और संपादक प्लगइन्स बहुत प्रारंभिक आकार में हैं और कुछ मामलों में वे हमें एक उचित वाक्यविन्यास हाइलाइटिंग या इंडेंटेशन समर्थन भी नहीं दे सकते हैं। कोड स्निपेट या रिफैक्टरिंग के बारे में नहीं। हम WebStorm, Eclipse, NetBeans, VisualStudio, Notepad ++ और SublimeText2 का उपयोग करते हैं।

  6. उपकरणों की बात करते हुए मुझे यह उल्लेख करना चाहिए कि कॉफ़ीस्क्रिप्ट संकलक स्वयं एक नोड जेएस पैकेज के रूप में आता है। हम प्राथमिक हैं एक जावा / .NET शॉप ताकि हर कोई विंडोज बॉक्स पर विकसित हो रहा है। हाल ही में जब तक विंडोज का समर्थन नोड में लगभग न के बराबर था। हम विंडोज़ पर चलने वाले कॉफ़ीस्क्रिप्ट कंपाइलर नहीं बना सकते हैं, इसलिए जब तक हमने <script type="text/coffeescript">टैग और ब्राउज़र-आधारित फ्लाई-कंपाइलर के साथ छड़ी करने का फैसला किया है ।

    कंपाइलर काफी तेज है और स्टार्टअप का समय ज्यादा नहीं बढ़ाता है। नकारात्मक पक्ष यह है कि परिणामस्वरूप जावास्क्रिप्ट evalएड हो जाता है और ब्राउज़रों के डेवलपर टूल (विशेषकर IE में) में ब्रेकपॉइंट लगाने के लिए यह थोड़ा मुश्किल है। यदि हमारे पास डीबगिंग के साथ कठिन समय है तो हम उसी माइग्रेशन टूल के साथ कॉफ़ीस्क्रिप्ट कोड प्री-कंपाइल करते हैं, जिसे मैंने ऊपर सूचीबद्ध किया था, लेकिन यह अभी भी बहुत सुविधाजनक नहीं है।

  7. कॉफ़ी के अन्य वादे जैसे कि स्वचालित varएरोशन या thisफैट एरो ऑपरेटर के साथ अर्ध-पारदर्शी प्रबंधन ( =>) निकला, जितना हम उम्मीद करते हैं उतना लाभ नहीं देते। हम अपनी निर्माण प्रक्रिया के हिस्से के रूप में पहले से ही JSLint का उपयोग करते हैं और हम ES3 x ES5-Strictभाषा के सबसेट में कोड लिखते हैं। वैसे भी, तथ्य यह है कि कॉफी एक ही तरह का "क्लीन" कोड बनाती है, यह एक अच्छी बात है । मैं हर सर्वर-साइड फ्रेमवर्क को मान्य HTML5 और CSS3 मार्कअप का उत्पादन करना चाहता हूं!

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

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

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


10

पेशेवरों

देखने ट्रेवर बर्नहैम का जवाब

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

विपक्ष

CoffeeScript सिंटैक्टिक चीनी और गुलाबी चश्मे से ज्यादा कुछ नहीं है।

आसान सामान के लिए - कॉफीस्क्रिप्ट बेमानी है, क्योंकि आसान सामान करना किसी भी भाषा में आसान है। और jQuery शायद कॉफीस्क्रिप्ट से भी सरल है।

कठिन सामान के लिए - आपको अपने माध्यम को समझना चाहिए । और आपका माध्यम HTML, DOM और CSS है, जावास्क्रिप्ट केवल उन्हें इंटरकनेक्ट करने का एक उपकरण है, फिर भी - सभी API विशेष रूप से जावास्क्रिप्ट के लिए लिखे जाते हैं। अन्य भाषा का उपयोग करना, जो तब "वास्तविक" एक के लिए संकलित किया जाएगा - काफी जोखिम भरा है, यह जावा (GWT), डार्ट या कॉफीस्क्रिप्ट हो।

भाषा के नियमों के विरोधी पैटर्न या प्रतिबंध संबंधी अज्ञानता को एक-दो अच्छी पुस्तकों को पढ़कर तय किया जा सकता है। और im काफी यकीन है कि Coffeescript के अपने विरोधी पैटर्न हैं।

Coffeescript के लिए IDE समर्थन JS से भी बदतर है।


यह भी देखें -1 , -2 , -3 से ryanflorence.com/2011/case-against-coffeescript
Pacerier

जावास्क्रिप्ट बड़े पैमाने पर, अत्यधिक गतिशील वेब ऐप्स में "उन्हें इंटरकनेक्ट करने के उपकरण" से बहुत अधिक है। रिएक्ट या एंगुलर, यहां तक ​​कि jQuery जैसे पुस्तकालयों में जेएस की मात्रा एक मामला है।
एंडी

6

मेरे दिमाग में सबसे बड़ा समर्थक है:

सीधी कॉफ़्सस्क्रिप्ट उस जावास्क्रिप्ट में संकलित करती है जिसे आपको लिखा जाना चाहिए था, लेकिन नहीं, क्योंकि यह सीधा नहीं था।

जावास्क्रिप्ट के कुछ गंदे कोने हैं जो केवल सतर्कता से बचाए जाते हैं - उदाहरण मेरे सिर के ऊपर से:

  • प्रोटोटाइप को सही ढंग से सेट करना
  • == के बजाय === का उपयोग करना
  • अशक्त के लिए जाँच
  • var के साथ सभी चरों को घोषित करना
  • एक स्व-निष्पादित अनाम फ़ंक्शन में सब कुछ लपेटकर।

यदि आप कॉफ़ीस्क्रिप्ट लिखते हैं, तो वे सभी आपके लिए स्वचालित रूप से नियंत्रित हो जाते हैं

यह आईएमओ, ज्यादातर नाबालिग हैं:

  • डिबगिंग एक दर्द है
  • कम कॉफ़ीस्क्रिप्ट प्रोग्रामर हैं
  • आपको जावास्क्रिप्ट से लेकर कॉफ़ीस्क्रिप्ट तक प्रलेखन का अनुवाद करना होगा।

3

पेशेवरों

  1. कॉफीस्क्रिप्ट ने मुझे जावास्क्रिप्ट के बारे में और जानने में मदद की है
  2. पढ़ने के लिए काफी आसान है, यहां तक ​​कि जटिल नेस्टेड कॉलबैक के लिए भी
  3. भाषा के मुद्दों को ट्रैक करने के लिए जावास्क्रिप्ट के कुछ मुश्किल के आसपास सुरक्षा प्रदान करता है

एंड्रयू I का उपरोक्त कार्य उदाहरण ज्ञानवर्धक था। मेरा मानना ​​है कि उनके मौजूदा वस्तु शाब्दिक रिटर्न की पठनीयता को केवल मैन्युअल रूप से रिटर्न की पहचान करने से बढ़ाया जाएगा

वापसी

// वस्तु शाब्दिक यहाँ

IDE टूल को बढ़ाया गया है, TextMate और Cloud9 कॉफ़ीस्क्रिप्ट का समर्थन करते हैं। बेशक विंडोज़ का समर्थन पिछड़ गया है (हालांकि यह सामान्य रूप से वेब विकास के लिए सही नहीं है?)

विपक्ष

ब्राउज़र की व्याख्या की गई CoffeeScript डीबग करना चुनौतीपूर्ण हो सकता है।

यह डेवलपर्स से कुछ समझ और विचार की आवश्यकता के लिए जावास्क्रिप्ट के ऊपर एक अतिरिक्त परत है।


0

पेशेवरों

  1. वे वास्तव में सामान्य रूप से सामान्य मामलों को अनुकूलित करते हैं, वास्तव में, कॉफीस्क्रिप्ट एक है, यदि सबसे संक्षिप्त भाषा नहीं है जो "आमतौर पर" http://redmonk.com/dberkholz/2013/03/25/programming-languages-ranked का उपयोग किया जाता है दर-अभिव्यक्ति /
  2. जावास्क्रिप्ट के बुरे हिस्सों को छुपाता है (ऑटो-कोऑर्शन ==, अंतर्निहित ग्लोबल्स, अधिक पारंपरिक क्लास सिस्टम सामान्य चीजों को आसान बनाता है)
  3. पायथन / रूबी प्रोग्रामर के लिए सीखना बहुत आसान है
  4. मल्टी-लाइन अनाम फ़ंक्शंस + व्हाट्सएप सिंटैक्स

विपक्ष

  1. var हटाने का मतलब है कि आप किसी ऑब्जेक्ट का उपयोग किए बिना किसी आंतरिक दायरे में एक बाहरी-स्कोप वैरिएबल को नहीं बदल सकते, या `var fall_back_back_js; = 5 टाइप करें डिबग करना आसान
  2. जब तक आप जावास्क्रिप्ट को डिबग नहीं करना चाहते, तब तक आप प्रत्येक टूल को इसके बारे में बता सकते हैं :(; btw: आप क्रोम से स्रोत मैप्स के लिए समर्थन जोड़कर कॉफीस्क्रिप्ट को डीबग कर सकते हैं; CoffeeScript
  3. कोई वैकल्पिक स्थिर टाइपिंग (अगले एक्मास्क्रिप्ट मानक के लिए इंतजार करना)
  4. अभी भी एक मॉड्यूल प्रणाली के लिए तीसरे पक्ष के पुस्तकालयों की आवश्यकता है
  5. सिंटैक्स ट्रैप से सावधान रहना: निहित रिटर्न, एबगो का अर्थ ए (बी (जी (ओ))) , एफपी, बी: 2, सी: 8 का अर्थ है एफ (पी, {बी: 2, सी: 8}) एफ के बजाय (p, {b: 2}, {c: 8})
  6. टूटी हुई जावास्क्रिप्ट संख्या / प्रकार प्रणाली को नहीं बदलता है
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.