मैं सुविधाओं के संदर्भ में सोचना चाहता हूं:
वाक्य - विन्यास:
सी-आधारित या क्या-क्या है। जावा में C- आधारित सिंटैक्स है। मैं अत्यधिक सलाह देता हूं कि अपने सिर को वाक्य रचना से बाहर निकालने के लिए अजगर या रूबी जैसी किसी चीज़ की कोशिश करें और किसी दिए गए भाषा के मूल सिद्धांतों के संदर्भ में अधिक सोचें। मेरी राय है कि सी-आधारित की तुलना में किसी भी सिंटैक्स को बल्कियर प्राप्त करने की आवश्यकता नहीं है और व्हाइट-स्पेस के आसपास कोई समस्या निर्माण ब्लॉक नहीं है।
संकलित बनाम व्याख्या की गई w। बिल्ड-प्रोसेस बनाम इंटरप्रिटेड / कंसोल:
मेरे पास संकलित समय बनाम रन-टाइम पर्यावरण चिंताओं के साथ बहुत कम परिचित है लेकिन मुझे लगता है कि वहाँ चिंताओं का एक पूरा बैग है जिसके बारे में मैं शायद ही कभी सोचता हूं।
इसी तरह बहुत सी व्याख्या की गई भाषाएं हैं जिनमें अभी भी जावा जैसी वर्चुअल मशीन के अंदर चलने के लिए कुछ संकलन-ईश प्रक्रिया है। आपको अभी भी चीजों में बदलाव देखने के लिए पुनर्निर्माण करना होगा।
और फिर वहाँ जावास्क्रिप्ट और पायथन है जिसे आप मक्खी पर निष्पादित कर सकते हैं, एक जीवित वातावरण में कंसोल में कमांड द्वारा कमांड। तीनों कोड लिखने के बहुत अलग तरीकों को जन्म दे सकते हैं।
गतिशील बनाम सख्त टाइपिंग:
मैं दोनों को डिज़ाइन ट्रेडऑफ़ के रूप में देखता हूं। जब आप बहुत निचले स्तर पर होते हैं और प्रदर्शन महत्वपूर्ण होता है, तो स्थिर टाइपिंग बहुत मायने रखती है। मैंने कभी भी किसी और की तुलना में "सुरक्षित" होने की इस धारणा को नहीं समझा है, लेकिन मैं एक बहुत ही प्लास्टिक / गतिशील भाषा में आया हूं, जहां आप सीखते हैं कि टाइपिंग सिस्टम कैसे काम करता है और मूल रूप से क्या उम्मीद करता है। जेएस में टाइप शीनिगान मेरे लिए एक चिंता का विषय है। कुछ मायनों में लचीलापन चीजों को और अधिक मजबूत बना सकता है, हालांकि यदि आप भाषा के कुछ पॉट-होल के बारे में नहीं जानते हैं, तो अधिक जूनियर स्तर के देवता के लिए एक स्पर्श अधिक आर्कषक होना चाहिए।
ब्लॉक-स्तरीय स्कोप बनाम फ़ंक्शन स्कोप बनाम ?:
ब्लॉक-लेवल सबसे आम है (अधिकांश c- आधारित वाक्यविन्यास भाषाओं में {} के बीच कुछ भी)। जावास्क्रिप्ट स्कोप को फंक्शन्स के आसपास बनाया गया है (जिसका उपयोग ऑब्जेक्ट्स को इतनी प्रभावशाली वस्तुओं के निर्माण के लिए भी किया जाता है)। आंतरिक दायरे से बाहरी-दायरे तक आपकी पहुँच किस प्रकार की है, इसमें भी बहुत भिन्नता है। मैं अन्य स्कूपिंग योजनाओं से परिचित नहीं हूं, लेकिन मुझे यकीन है कि वे मौजूद हैं।
शास्त्रीय OOP बनाम प्रोटोटाइप OOP बनाम लगभग-OOP (C में संरचनाएं?) बनाम गैर-OOP:
यहां तक कि वर्ग-आधारित OOP में भी भिन्नता के लिए बहुत कुछ है। चाहे आप कई वंशानुक्रम (ew, अच्छी तरह से अधिक, ew) कर सकते हैं, इंटरफेस को परिभाषित कर सकते हैं, आदि ...
जावास्क्रिप्ट में हमारे पास एक प्रकार का स्टैण्डर्ड हाईब्रिड प्रोटोटाइप ओओपी है जहाँ वस्तुएं काफी अधिक सरल, अत्यधिक परिवर्तनशील होती हैं, लेकिन हमारे पास अभी भी आंतरिक चिंताओं से इंटरफ़ेस को अलग करने की क्षमता है, जो आईएमओ, इनकैप्सुलेशन का महत्वपूर्ण पहलू है।
ओओपी के बारे में बात यह है कि वास्तव में बहुत अधिक सामान है जिसे आप खींच सकते हैं जो अनिवार्य रूप से तकनीकी रूप से ओओपी के बिना ओओपी-उन्मुख है। पाठ्यक्रम के शुद्धतावादी हैं, लेकिन दिन के अंत में, डिज़ाइन पैटर्न कुछ सार को प्राप्त करने के बारे में हैं जो कुछ स्थितियों में अच्छी तरह से काम करते हैं। OOP- आधारित भाषा से विचारों को ग्रहण करने के लिए बहुत जल्दी मत बनो, इसका कोई उपयोग नहीं है जो अधिक प्रक्रियात्मक रूप से उन्मुख है। और मैं जावास्क्रिप्ट के बारे में बात नहीं कर रहा हूँ। यह एक प्रोटोटाइप आधारित OOP प्रतिमान के अपने नासमझ संस्करण द्वारा सीमित नहीं है।
प्रथम श्रेणी के कार्य:
किसी भाषा में इनका न होना मेरे लिए एक कठिन बात है। आप ऐसे कार्यों को पास कर सकते हैं जैसे वे अन्य संदर्भों में उपयोग के लिए डेटा थे। यह ईवेंट हैंडलिंग योजनाओं को विशेष रूप से कार्यान्वित करना बहुत आसान बनाता है, लेकिन जिस तरह से आप इसे पसंद करते हैं, यह काम करने के लिए भाषा को अनुकूलित करना बहुत आसान बनाता है। यह कुछ भी है, मुझे संदेह है कि जिस चीज ने जावास्क्रिप्ट को सफल बनाया है, वह दो सप्ताह में डिज़ाइन होने और जावा-अनुमानित सिंटैक्स प्राप्त करने के बावजूद मार्केटिंग स्कीम के रूप में इस पर थप्पड़ मारती है।
बंद:
मुझे यकीन नहीं है कि जावा के लिए बहस कहाँ है, लेकिन मुझे पता है कि जावा के बहुत सारे देवता इस सुविधा के लिए एक या दो साल पहले क्लैमिंग कर रहे थे। एक गैर-क्लोजर भाषा में, जब कोई फ़ंक्शन बंद हो जाता है, तो कुछ भी जो किसी भी तरह से उस फ़ंक्शन के अंदर से सामान को संदर्भित करने में सक्षम होता है, वह इसे एक्सेस नहीं कर पाएगा क्योंकि यह कचरा एकत्र किया गया था। एक क्लोजर में, निष्पादन संदर्भ ऐसा होता है कि यदि आप उस बंद फ़ंक्शन के अंदर सामान को किसी अन्य क्षेत्र से संदर्भित कर सकते हैं जैसे किसी लौटे ऑब्जेक्ट या फ़ंक्शन में तो आप मूल रूप से उन वेर को प्राप्त करते हैं जैसे वे फ़ंक्शन बंद होने पर थे। यह कचरा संग्रह के द्वार में अपने पैर को जकड़ने जैसा है, हालांकि मुझे संदेह है कि यह संदर्भित संस्करण के स्थानीय संस्करणों में बनाए गए उन संस्करणों की प्रतियों की तरह लागू है।
कठोर / सख्त / सुरक्षित बनाम आप सभी को वह रस्सी देना जो आप चाहते हैं:
जेएस देव और जावा देव एक-दूसरे को बिल्कुल भी नहीं समझते हैं और मुझे लगता है कि इस विशेष डिजाइन स्पेक्ट्रम के निकट-विपरीत पक्षों पर पड़ने वाली दो भाषाओं के साथ बहुत कुछ करना है। मैं नहीं चाहता कि आप मुझे या मेरी टीम के अन्य देवों से मेरी रक्षा करें। मैं बहुत कम कोड में बहुत कुछ करना चाहता हूं और स्थिति के आधार पर बहुत अलग (लेकिन किसी डोमेन के लिए संगत) तरीकों से यह सब करना चाहता हूं। दोनों के लिए पूरी तरह से व्यापार कर रहे हैं और बहुत सारी भाषाएं बीच में अधिक गिरती हैं।