JavaScript का जन्म और मृत्यु
JavaScript ब्राउज़र में कम विशेषाधिकारों (low privileges) के साथ चलता है। फिर भी यह सर्वर, बिल्ड टूल्स और पाइपलाइनों को चलाता है। यह कोई योजना नहीं थी। यह 1995 के एक निर्णय पर किए गए पैच की एक श्रृंखला थी।
यह क्यों हुआ, इसे समझना आज आपके स्टैक (stack) को डिजाइन करने के तरीके को बदल देता है।
गैरी बर्नहार्ट का 2014 का भाषण पुरानी यादों (nostalgia) के बारे में नहीं है। यह आर्किटेक्चरल घर्षण (architectural friction) का एक निदान है। उन्होंने एक विडंबनापूर्ण मोड़ (ironic arc) पर ध्यान दिया: JavaScript एक खिलौना भाषा थी जो इसलिए जीवित रही क्योंकि ब्राउज़र पर इसका एकाधिकार (monopoly) था। उस एकाधिकार ने इसे दुनिया की सबसे अधिक उपयोग की जाने वाली भाषा बना दिया।
तनाव सरल है। ब्राउज़र को कोड को सुरक्षित और तेज़ तरीके से चलाना चाहिए। ये दोनों लक्ष्य आपस में टकराते हैं।
2014 में, यह अनुमान लगाया गया था कि WebAssembly, JavaScript की जगह ले लेगा। ऐसा पूरी तरह से नहीं हुआ। WebAssembly Figma या Google Earth जैसी चीज़ों के लिए स्थिर और उपयोगी है। लेकिन इसने एक एप्लिकेशन भाषा के रूप में JavaScript की जगह नहीं ली।
इसके बजाय, JavaScript का उत्परिवर्तन (mutate) हुआ। TypeScript, bundlers, और Bun जैसे नए runtimes बर्नहार्ट द्वारा पहचाने गए घर्षणों को ठीक करने के लिए मौजूद हैं।
इस भाषण का उपयोग JavaScript सीखने से बचने के लिए न करें। इसका उपयोग बिना किसी प्रदर्शन समस्या (performance problem) के WebAssembly पर जाने को सही ठहराने के लिए न करें।
इसे अपने स्टैक के लिए एक चेकलिस्ट के रूप में उपयोग करें:
- क्या मैं इसका उपयोग इसलिए कर रहा हूँ क्योंकि यह सबसे अच्छा टूल है?
- या इसलिए क्योंकि यहाँ केवल यही काम करता है?
- क्या टूल्स का ओवरहेड (overhead) घर्षण को हल करता है या केवल उसे स्थानांतरित कर देता है?
- यदि मैं आज शून्य से शुरुआत करता, तो क्या मैं इसे चुनता?
- क्या प्रदर्शन की सीमा (performance ceiling) मेरे उपयोग के मामले (use case) के लिए स्वीकार्य है?
TypeScript कंपाइल टाइम (compile time) पर टाइप्स (types) में मदद करता है। यह आपके टाइप्स और नेटवर्क के माध्यम से आने वाले डेटा के बीच के अंतर को ठीक नहीं करता है। आपको अभी भी रनटाइम वैलिडेशन (runtime validation) की आवश्यकता है।
सबसे महत्वपूर्ण सबक यह है: जानें कि आपकी तकनीक अपनी योग्यता के आधार पर मौजूद है या एकाधिकार के कारण।
2014 के पूर्वानुमान के आधार पर अपना रनटाइम न बदलें। इसे तब बदलें जब आपके पास बॉटलनेक (bottleneck) दिखाने वाला मापा गया डेटा हो।
स्रोत: https://dev.to/jtorchia/the-birth-and-death-of-javascript-2014-what-still-holds-and-what-doesnt-2hae