JavaScript चा जन्म आणि मृत्यू
JavaScript ब्राउझरमध्ये अत्यंत मर्यादित अधिकारांसह चालते. असे असूनही, ते सर्व्हर्स, बिल्ड टूल्स आणि अगदी डेटाबेस देखील चालवते. ही कोणतीही पूर्व नियोजित योजना नव्हती. १९९५ च्या एका निर्णयावर आधारित तयार करण्यात आलेल्या पॅचेसची ही एक मालिका होती.
२०१४ मध्ये, गॅरी बर्नहार्ट (Gary Bernhardt) यांनी "The Birth and Death of JavaScript" नावाचे एक भाषण दिले होते. अनेक लोक याकडे एक अयशस्वी भविष्यवाणी म्हणून पाहतात. मी याकडे आर्किटेक्चरल घर्षण (architectural friction) ओळखण्याचे एक निदानात्मक साधन (diagnostic tool) म्हणून पाहतो.
बर्नहार्ट यांनी एका उपरोधिक प्रवासाचे वर्णन केले. JavaScript ची सुरुवात एका 'toy language' म्हणून झाली होती. ती टिकली कारण ब्राउझरमध्ये ती एकमेव भाषा होती. या मक्तेदारीमुळे ती पृथ्वीवरील सर्वाधिक वापरली जाणारी भाषा बनली, जरी ती तांत्रिकदृष्ट्या सर्वोत्तम निवड नव्हती.
मुख्य संघर्ष साधा आहे. ब्राउझरला कोड सुरक्षितपणे आणि वेगाने चालवायचा असतो. या दोन उद्दिष्टांमध्ये अनेकदा संघर्ष होतो.
२०१४ मध्ये, अशी भविष्यवाणी करण्यात आली होती की WebAssembly, JavaScript ची जागा घेईल. तसे झाले नाही. WebAssembly हे स्थिर आहे आणि Figma किंवा Google Earth सारख्या गोष्टींसाठी उपयुक्त आहे. तथापि, त्याने ॲप्लिकेशन लँग्वेज म्हणून JavaScript ची जागा घेतली नाही.
त्याऐवजी, JavaScript मध्ये बदल (mutate) झाले. TypeScript, bundlers आणि Deno किंवा Bun सारखे नवीन runtimes हे सर्व बर्नहार्ट यांनी ओळखलेले अडथळे (frictions) दूर करण्याचे प्रयत्न आहेत.
JavaScript शिकणे टाळण्यासाठी या भाषणाचा वापर करू नका. जोपर्यंत तुम्हाला प्रत्यक्ष परफॉर्मन्सची समस्या येत नाही, तोपर्यंत WebAssembly कडे वळण्याचे समर्थन करण्यासाठी याचा वापर करू नका.
तुमच्या स्टॅकबद्दल (stack) खालील प्रश्न विचारण्यासाठी याचा वापर करा:
• मी हे टूल वापरतोय कारण ते या समस्येसाठी सर्वोत्तम उपाय आहे का? • मी ते वापरतोय कारण या संदर्भात तेच एकमेव काम करणारे साधन आहे का? • माझ्या टूल्सची गुंतागुंत खरोखर एखादी समस्या सोडवते की ती फक्त दुसरीकडे ढकलते? • जर मी आज शून्यापासून सुरुवात केली, तर मी हेच निवडले असते का?
जर तुम्ही सर्व्हरवर TypeScript वापरत असाल, तर तुम्हाला type safety मिळते पण compilation overhead वाढतो. जर तुम्ही Next.js वापरत असाल, तर तुम्हाला फीचर्स मिळतात पण caching ची गुंतागुंत वाढते. हे वास्तविक तडजोडी (trade-offs) आहेत.
सर्वात मोठी चूक म्हणजे समस्या प्रत्यक्षात चुकीच्या वापरामुळे असताना भाषेला दोष देणे. जर तुम्ही असा जड synchronous code लिहिला जो event loop ला ब्लॉक करतो, तर समस्या तुमच्या वापरामध्ये आहे, JavaScript मध्ये नाही.
एखादे जादुई पर्याय शोधणे थांबवा. तुमच्या प्रत्यक्ष अडथळ्यांचे (bottlenecks) मोजमाप करण्यास सुरुवात करा.