... मैं प्रोग्रामिंग कौशल कैसे विकसित कर सकता हूं जिसे केवल एक के बजाय सभी भाषाओं के लिए लागू किया जा सकता है?
इस प्रश्न की कुंजी भाषा को पार करना है और यह सोचना है कि जिस भाषा में आप कोडिंग कर रहे हैं वह नहीं है।
WAT?
अनुभवी पॉलीग्लॉट प्रोग्रामर भाषा के अपने स्वयं के मानसिक मॉडल के सार सिंटैक्स ट्री (एएसटी) में सोचते हैं। कोई यह नहीं सोचता है कि "मुझे यहां एक लूप की आवश्यकता है", बल्कि "मुझे कुछ पर लूप करने की आवश्यकता है" और उस भाषा के लिए उपयुक्त, या जबकि, या पुनरावृत्ति या पुनरावृत्ति करने के लिए इसका अनुवाद करता है।
यह एक बोली जाने वाली भाषा सीखने में एक जैसा दिखता है। कई भाषाएं बोलने वाले लोग धाराप्रवाह अर्थ समझते हैं , और यह किसी दिए गए भाषा में निकलता है।
आईट्रेकिंग वीडियो कोड कॉम्प्रिहेंशन विथ आई ट्रैकिंग एंड आई-ट्रैकिंग कोड एक्सपेरिमेंट (नोविस) की जोड़ी में इस एएसटी के कुछ सुराग देखे जा सकते हैं जहां एक भिखारी और अनुभवी प्रोग्रामर की आंख के मूवमेंट देखे जाते हैं। एक अनुभवी प्रोग्रामर अपने मानसिक मॉडल में कोड को 'कंपाइल' कर सकता है और इसे अपने सिर में 'रन' कर सकता है, जबकि शुरुआत करने वाले को कीवर्ड द्वारा कोड कीवर्ड पर पुनरावृति करना होता है।
इस प्रकार, सभी भाषाओं पर लागू करने के लिए प्रोग्रामिंग कौशल विकसित करने के प्रश्न की कुंजी कई भाषाओं को सीखना है ताकि कोई एक भाषा के मानसिक मॉडल होने से खुद को दूर कर सके और अपने दम पर एक समस्या के लिए एएसटी उत्पन्न करने की क्षमता विकसित कर सके। एक प्रमुख भाषा जो तब दी गई भाषा में अनुवादित की जाती है।
एक बार जब सिर में एएसटी का उपयोग करने की यह क्षमता होती है, तो इसी तरह के विचार के भीतर एक और भाषा सीखना ( बीफुन्ज जाना जावा से एक कूद है, लेकिन फोर्थ से उतना नहीं है ) बहुत आसान हो जाता है - यह 'बस' है एएसटी को एक नई भाषा में अनुवाद करना जो 3 जी, 4 वें और 5 वें (आदि ...) समय के लिए बहुत आसान है।
एक क्लासिक लेख है, रियल प्रोग्रामर पास्कल का उपयोग नहीं करते हैं । इस का हिस्सा पढ़ता है:
... निर्धारित रियल प्रोग्रामर किसी भी भाषा में फोरट्रान प्रोग्राम लिख सकता है
ऐसे भी बिट्स हैं जिनके लिए आप केवल मानसिक एएसटी का उपयोग नहीं कर सकते हैं - आपको भाषा में भी सोचने की आवश्यकता है। इसे पूरा करने में थोड़ा समय लगता है (मैं अभी भी पायथन में पर्ल कोड लिखने का आरोप लगा रहा हूं और मेरे पहले लिस्प कोड की समीक्षा की गई थी, "यह एक बहुत अच्छा सी प्रोग्राम है।")।
इसके लिए, मुझे ACM द्वारा प्रकाशित एक लेख, किसी भी भाषा में फोरट्रान को लिखने के लिए कैसे नहीं लिखना चाहिए । लेख का तीसरा पैराग्राफ (जो प्रमुख उद्धरण नहीं है) सीधे हाथ पर प्रश्न को संबोधित करता है:
अच्छी कोडिंग की विशेषताएं हैं जो सभी सामान्य-प्रयोजन प्रोग्रामिंग भाषाओं को पार करती हैं। यदि आप अपने आप को इस पर लागू करते हैं, तो आप लगभग किसी भी कोड में अच्छी डिजाइन और पारदर्शी शैली लागू कर सकते हैं। सिर्फ इसलिए कि एक प्रोग्रामिंग भाषा आपको खराब कोड लिखने की अनुमति देती है इसका मतलब यह नहीं है कि आपको यह करना होगा। और एक प्रोग्रामिंग भाषा जिसे अच्छी शैली और डिजाइन को बढ़ावा देने के लिए इंजीनियर किया गया है, फिर भी अगर कोडर पर्याप्त रूप से रचनात्मक है तो भयानक कोड लिखने के लिए उपयोग किया जा सकता है। आप इसमें एक इंच पानी के साथ बाथटब में डूब सकते हैं, और आप आसानी से पूरी तरह से बिना पढ़े लिखे और बिना नंबर के भाषा में गोज़ या लाइन नंबर, अपवाद हैंडलिंग और जेनेरिक प्रकार और कचरा संग्रह के साथ लिख सकते हैं। चाहे आप फोरट्रान या जावा, सी ++ या स्मॉलटाक लिख रहे हों, आप (और) को बुरे कोड के बजाय अच्छा कोड लिखना चुन सकते हैं।
एएसटी के पास होना ही पर्याप्त नहीं है - एएसटी का होना आवश्यक है कि कोई अन्य भाषाओं में अनुवाद कर सके। अपने सिर में एक फोरट्रान एएसटी होना और जावा में फोरट्रान कोड लिखना अच्छी बात नहीं है। भाषा और उसके मुहावरों के साथ एक व्यक्ति को भी पर्याप्त रूप से परिचित होना चाहिए जो भाषा में सोचने में सक्षम हो (इसके बावजूद कि मैंने बहुत ऊपर कहा था)।
मैंने जावा कोड किसी ऐसे व्यक्ति द्वारा लिखा है जिसने C कोड लिखना बंद नहीं किया है। एक मुख्य विधि के साथ एक वस्तु थी। इस ऑब्जेक्ट में स्थैतिक विधियों का एक समूह था main
, और निजी आंतरिक वर्ग जिनके सार्वजनिक क्षेत्र थे (और इस तरह स्ट्रट्स की तरह दिखते थे)। यह सी कोड जावा में लिखा गया था। वह सब किया गया था जो एक भाषा के वाक्य विन्यास का दूसरे में अनुवाद कर रहा था ।
इस बिंदु को पार करने के लिए, किसी को कई भाषाओं में कोड लिखना जारी रखना होगा, कोड को डिज़ाइन करते समय उन भाषाओं में नहीं सोचना चाहिए, बल्कि भाषा के मुहावरों के साथ काम करने के लिए डिज़ाइन को कोड में अनुवाद करते समय उन पर सोचें।
वहां पहुंचने का एकमात्र तरीका है - प्रोग्रामिंग कौशल विकसित करने में सक्षम होना जो सभी भाषाओं पर लागू हो सकता है - भाषाओं को सीखना जारी रखना है और एक भाषा से जुड़ी होने के बजाय उस मानसिक प्रोग्रामिंग भाषा को लचीला रखना है।
( प्रस्तुत किए गए विचार से भारी उधार लेने के लिए कैओसपांडियन के लिए मेरी माफी ।)