रयान डाहल के साथ साक्षात्कार। एक भाग

यह साक्षात्कार ओलेग पॉडशिन और रयान डाहल द्वारा 8 जुलाई 2010 को कोलोन में रयान के पढ़ने के तुरंत बाद आयोजित किया गया था। ओलेग एक जावास्क्रिप्ट उत्साही है जो आईटी परामर्श के विशेषज्ञ, इओन्सक्वेयर लिमिटेड चलाता है।

ओपी: पहला सवाल वास्तव में एक परिचयात्मक है। आपको Node.JS कैसे मिला? क्या आपके पास कोई पिछला जावास्क्रिप्ट अनुभव है? आपने जावास्क्रिप्ट का उपयोग कब शुरू किया? और इवेंट-संचालित सॉफ़्टवेयर के साथ भी?

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

O.P।: क्या आपने जावास्क्रिप्ट का उपयोग करके ग्राहक पक्ष के लिए कुछ किया है?

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

O.P।: क्या Ebb मुख्य रूप से C में लिखा जाता है? तो आपने पहले इसे रूबी में लिखा, फिर सी में इसे फिर से लिखा, और अब आपने इसे जावास्क्रिप्ट में फिर से लिखना शुरू किया?

आरडी: सही है। तो यह मूल रूप से रूबी था, फिर सी। कुछ समय के लिए मैं वेब सर्वर बनाने के लिए एक छोटी सी लाइब्रेरी होने के विचार के साथ खेल रहा था - लेकिन सी में ऐसा कुछ करना मुश्किल है। ठीक एक दिन मेरे ऊपर एक प्रकरण आया: "जावास्क्रिप्ट ठीक वही भाषा है जो इस एप्लिकेशन के लिए उपयुक्त है।" V8 जारी होने के तुरंत बाद ऐसा हुआ।

ओपी: आपने कहा कि दो भाषाएँ हैं जो हमेशा हमारे आसपास रहेंगी: सी और जावास्क्रिप्ट। तो क्या आप जावास्क्रिप्ट को एक सामान्य प्रयोजन प्रोग्रामिंग भाषा के रूप में सोचते हैं?

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

O.P।: आप जावास्क्रिप्ट का भविष्य कैसे देखते हैं? क्या आपको लगता है कि जावास्क्रिप्ट न केवल सर्वर पर, बल्कि डेस्कटॉप कंप्यूटर पर भी आम हो रहा है?

आरडी: जावास्क्रिप्ट पहले से ही ग्राफिकल इंटरफेस का निर्माण करके एक जबरदस्त काम कर रहा है। मुझे लगता है कि एक परिचित ब्राउज़र जैसे एपीआई के साथ, जावास्क्रिप्ट भी डेस्कटॉप अनुप्रयोगों के लिए एक अच्छी भाषा हो सकती है।

O.P .: जावास्क्रिप्ट खराब संरचित है, इसलिए लोग जावास्क्रिप्ट कोड को कॉपी और पेस्ट करते हैं ...

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

ओपी: हां, क्या आप ECMAScript 4 और ECMAScript 5 के संबंध में चर्चा देख रहे हैं?

RD: मैं क्रॉकफोर्ड की राय से सहमत हूं कि भाषा सरल होनी चाहिए। जावास्क्रिप्ट के बारे में सबसे अच्छी चीजों में से एक इसकी सादगी है। वह इन या अन्य चीजों को करने के बारे में कई अवधारणाओं को परिभाषित नहीं करता है, विशेष रूप से, इनपुट / आउटपुट के विषय में। हालांकि ECMAScript 4 विनिर्देश किसी भी I / O API को परिभाषित नहीं करता है, लेकिन यह बहुत अधिक परिभाषित करता है। उसने कई महत्वपूर्ण बदलावों की पहचान की। हालाँकि, मैं कुछ और विशेषताओं के लिए ECMAScript 5 लेना चाहूंगा।

ओ.पी.: वास्तव में आपका क्या मतलब है?

RD: इसे क्या कहा जाता है? विनाशकारी गलतफहमी? यदि आपके पास दाईं ओर एक सरणी और बाईं ओर चर की सूची है, और उन्हें इस तरह से परिभाषित किया जा सकता है। यही अच्छा होगा।

ओ.पी.: यह राइनो में शामिल है, लेकिन वी 8 में नहीं।

O.P।: तो, चलो नोड पर चलते हैं। प्रोजेक्ट के संबंध में आपके द्वारा किए गए सबसे कठिन निर्णय क्या वास्तुदोष थे?

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

ओपी: हैलो वर्ल्ड! एप्लीकेशन में एक और इंडेंट था।

आरडी: सही है।

.P।: लेकिन यह हास्यास्पद है क्योंकि लोग कहते हैं कि जावास्क्रिप्ट द्वारा दिए गए लाभों में से एक यह है कि आप इसे ब्राउज़र की तरह हर जगह उपयोग कर सकते हैं। आप सर्वर पर उसी डेटा सत्यापन तर्क का उपयोग कर सकते हैं जैसा कि ब्राउज़र में है, लेकिन कॉमनजस मॉड्यूल विनिर्देशन ब्राउज़र में काम नहीं करता है, इसलिए मॉड्यूल के अतुल्यकालिक लोडिंग के साथ पुस्तकालय बनाने के प्रयास हैं।

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

Source: https://habr.com/ru/post/In127216/


All Articles