एक प्रकार के लेखन के रूप में कोडिंग
व्योमिंग में एक जगह है जहां स्नेक नदी उत्तर की ओर झुकती है, चौड़ी होती है और धीमी हो जाती है। मूस पानी के लिली को ब्राउज़ करता है, पेलिकन मछली पकड़ते हैं, ऊदबिलाव खेलते हैं। फिर नदी अपने आप वापस मुड़ जाती है और पहाड़ों की ओर अपनी पश्चिम की यात्रा फिर से शुरू कर देती है।
अगर आप मेरे अब तक के करियर को देखेंगे तो आपको वही लूपिंग रास्ता दिखाई देगा। मैं एक सॉफ्टवेयर डेवलपर से मानविकी शिक्षक बन गया हूं, जो एक सॉफ्टवेयर डेवलपर में बदल गया। इंजीनियरिंग और मानविकी के बीच एक प्रसिद्ध दूरी है, लेकिन मैंने इसे इतना तय किया है कि मुझे पता है कि यह लोगों की सोच से कम है। रास्ते में, मैंने देखा है कि गद्य वितरण के लेखकों की कुछ सलाह सॉफ्टवेयर के लेखकों के लिए भी मूल्यवान हो सकती हैं—लगभग जैसे कि लेखन कोड लेखन का एक रूप है।¹
एक बार, मुझे एक छोटा सा फ़ंक्शन बनाने की ज़रूरत थी जो किसी आइटम को सरणी में जोड़ता है, लेकिन आइटम को पहले से ही हटा देता है। इस कदर:
toggle([], 1) // should return [1]
toggle([1], 1) // should return []
import _ from "lodash";
const toggle = (arr, item) => _.xor(arr, [item]);
जल्द ही, हालाँकि, मुझे सलाह के कुछ शब्द याद आ गए: "अपनी रचनाओं को पढ़ें, और जब भी आपको कोई ऐसा गद्यांश मिले जो आपको विशेष रूप से अच्छा लगे, तो उसे काट दें।" यह अठारहवीं शताब्दी के निबंधकार सैमुअल जॉनसन की एक टिप है। मैंने महसूस किया कि चतुराई का झुनझुना एक संकेत था कि मुझे अपने कार्य को सरल बनाना चाहिए। मैंने इसे इसमें बदल दिया:
const toggle = (arr, item) =>
arr.includes(item) ?
arr.filter((x) => item !== x) :
[...arr, item];
मेरी राय में: नहीं।⁴ कुछ मामलों में अधिक जटिल होने के बावजूद, औसत कोडर के लिए नया फ़ंक्शन अभी भी स्पष्ट होने की संभावना थी, और इसलिए इसे बनाए रखना आसान था। कोड की एक पंक्ति वाक्य रचनात्मक रूप से सरल लेकिन अस्पष्ट हो सकती है, या स्पष्ट अभी तक वाक्य रचनात्मक रूप से जटिल हो सकती है। गद्य की एक पंक्ति की तरह। वाक्य के बारे में सोचें, "आप उस किताब को क्या लाए हैं जिसे मैं नहीं चाहता कि उसे पढ़ा जाए?" ⁵ इसमें एक जटिल वाक्य रचना है, लेकिन यह वाक्यात्मक रूप से सरल वाक्य की तुलना में बहुत अधिक समझदार है, " मायरमेकोबियस बच गया। हालांकि अब लैकोनिक नहीं है, मेरा नया कार्य पढ़ने में आसान था।
यदि वह जावास्क्रिप्ट को जानता होता, तो लैकोनिक गद्य के राजा स्वयं के संक्षिप्त संस्करण पर भड़क जाते toggle
। "हेमिंग्वे" - सवाल में राजा - "आपको शब्दकोश तक नहीं ले जाता है," एफ स्कॉट फिट्जगेराल्ड ने एक बार प्रशंसात्मक रूप से कहा था xor
। इसके बिना, फ़ंक्शन अधिक फैला हुआ, स्पष्ट और इस कारण से अधिक आत्म-व्याख्यात्मक है।⁷
लैकोनिक शब्द प्राचीन काल के स्पार्टन्स से आया है, जो लैकोनिया नामक क्षेत्र में रहते थे और शब्दों को बर्बाद नहीं करते थे। एक बार एक शत्रु ने उन्हें लिखा था, "यदि मैंने लैकोनिया पर आक्रमण किया, तो मैं तुम्हें भूमि से खदेड़ दूंगा।" उन्होंने वापस लिखा: "अगर।"⁸
लेखन के बारे में एक सिद्धांत जिसकी मैं प्रशंसा करता हूं वह किसी उपन्यासकार या पत्रकार से नहीं बल्कि एक संग्रहालय डिजाइनर से आया है। एडविन श्लॉसबर्ग के अनुसार अच्छा लेखन, "एक ऐसा संदर्भ बनाएं जिसमें अन्य लोग सोच सकें।" यह उन्हें ऐसा करने के लिए जगह देता है - एक संग्रहालय प्रदर्शनी की तरह। इसी तरह, अच्छा कोड पाठकों के लिए जगह बनाता है। यह उन्हें तर्क करने में मदद करता है।
यह आमतौर पर समझ में आता है, फिर, कोड के लेखक के लिए पैटर्न का पालन करने के लिए औसत पाठक पहले से ही अच्छी तरह से समझता है। हालांकि अधिकांश जावास्क्रिप्ट डेवलपर्स ऊपर उपयोग किए गए टर्नरी (प्रश्न चिह्न और कोलन) से परिचित हैं, लेकिन कई घर पर और भी अधिक आरामदायक हैं, जैसे कि यह एक:
const toggle = (arr, item) => {
if (arr.includes(item)) {
return arr.filter((x) => item !== x);
} else {
return [...arr, item];
}
}
लेखकों को अपने पाठकों के प्रति सहानुभूति रखनी चाहिए, और आपको उन लोगों के लिए भी सहानुभूति रखनी चाहिए जो आपके कोड को बनाए रखेंगे, डिबग करेंगे या अनुकूलित करेंगे। चूँकि आप लेखक हैं, हालाँकि, अपने पाठकों की जगह लेने में परेशानी होना सामान्य है। सर्वश्रेष्ठ लेखकों से उधार ली गई दो तकनीकों का प्रयास करें।
सबसे पहले, हेलेन तलवार सुझाव देती है कि आप "लिखते समय विशिष्ट लोगों को अपने कंधे पर देखकर कल्पना करें।" आखिरकार, "सबसे आकर्षक लेखक लगभग हमेशा वे होते हैं जो वास्तविक लोगों - विशेषज्ञों और गैर-विशेषज्ञों, सहकर्मियों और अजनबियों - पर सबसे अधिक ध्यान देते हैं - जिनके कानों में उनके अपने शब्द गूंजेंगे।"
एक दूसरी तकनीक: एक या दो दिन के लिए अपना कोड अलग रखें, यदि आप कर सकते हैं, तो उस पर वापस लौटें। नील गैमन ने एक बार एक महत्वाकांक्षी लेखक से कहा, "लघु कहानी समाप्त करें, इसे प्रिंट करें, फिर इसे एक दराज में रखें और अन्य चीजें लिखें।" "जब आप तैयार हों, इसे उठाएं और इसे पढ़ें, जैसे कि आपने इसे पहले कभी नहीं पढ़ा है। यदि ऐसी चीजें हैं जिनसे आप एक पाठक के रूप में संतुष्ट नहीं हैं, तो अंदर जाएं और उन्हें एक लेखक के रूप में ठीक करें: यह संशोधन है।
ताकि जब हम एक अंतराल के बाद इसमें लौटें तो इसमें नवीनता और दूसरे की करतूत होने की हवा हो; क्योंकि इस प्रकार हम स्वयं को अपने लेखन के संबंध में उस पूरे स्नेह से रोक सकते हैं जो हम एक नवजात शिशु पर लुटाते हैं। ¹³
यह बहुत आश्चर्य की बात नहीं है कि एक अलग तरह के प्रतीकों के लिए लेखकीय मार्गदर्शन को अनुकूलित किया जा सकता है। ज्ञान के क्षेत्र अक्सर एक दूसरे में घुसपैठ करते हैं, या जैसा कि उपन्यासकार चार्ल्स जॉनसन खूबसूरती से कहते हैं:
कलात्मक और बौद्धिक अभिव्यक्ति का एक रूप दूसरों का पोषण और पोषण करता है। जो कुछ भी हम रचनात्मकता और कल्पना कहते हैं - वे दो महान रहस्य - कुछ रचनाकारों के लिए हो सकते हैं जो अपने जीवन में "वैश्विक" के रूप में अनुभव करते हैं, अभिव्यक्ति के एक रूप में स्थानीयकृत नहीं बल्कि एक शैली से दूसरी शैली में फैलते या फैलते हैं, एक कलात्मक या दूसरे के लिए बौद्धिक अनुशासन, सभी मानविकी (विज्ञान के साथ) के लिए संबंधित हैं, परस्पर जुड़े हुए हैं। ¹⁴
यहां सुझाए गए दृष्टिकोणों के साथ अपने स्वयं के कोडिंग में प्रयोग करने के लिए आपकी दिनचर्या में बदलाव की आवश्यकता हो सकती है। एक चक्कर, ताकि आप, नदी की तरह, धीमा हो सकें और अधिक चिंतनशील, अधिक उदार बन सकें। तो नदी से एक पन्ना लो। यह एक रेखीय पथ का अनुसरण नहीं करता है।
सुनिश्चित करने के लिए कोडिंग-लेखन सादृश्य की अपनी सीमाएँ हैं। उदाहरण के लिए, विरोधाभास सभी हैं लेकिन स्रोत कोड में गैरकानूनी हैं, और यह कला में है, विशेष रूप से कविता में, कि उन्हें न्याय मिलता है। फर्नांडो पेसोआ की एक कविता है जिसे मैं जोर से पढ़ना पसंद करता हूं, भले ही मैं पुर्तगाली नहीं जानता। यह शुरू होता है:
ओ पोएटा इ यू फिंगिडोर
फिंग ताओ
कंप्लीटमेंट क्यू चेगा ए फिंगर कुए ए डोर
ए डोर कुए देवरस सेंते।
कवि वह है जो दिखावा करता है।
वह पूरी तरह से असली नकली है
वह भयानक दर्द
और कष्टों को भी नकली करता है जो वह महसूस करता है।¹⁵
पेसोआ हमें सच्चे और झूठे के पारंपरिक विचारों को पल भर के लिए अलग करने के लिए आमंत्रित कर रहा है। वह एक विरोधाभासी रूप से एक विरोधाभास बता रहे हैं: कवि अपनी कविताओं के पीछे खुद को छुपाते हैं, और ऐसा करने में वे उनके माध्यम से दिखाई देते हैं। बूलियन तर्क को पीछे छोड़ते हुए, पेसोआ ने अपने स्वयं के तर्क का आविष्कार किया। "एक कवि वह है जो दिखावा करता है": इसका क्या अर्थ है, यदि नहीं, "मैं जो कुछ भी कह रहा हूं वह सब कुछ बना रहा हूं - यह सब झूठ है, इन शब्दों सहित"? यह एक आत्म-अस्वीकार करने वाला बयान है, एक तार्किक झूठ है। लेकिन अगर आप शब्दों के माध्यम से उनकी व्युत्पत्ति संबंधी जड़ों को देखें, तो "ओ पोएटा ए उम फ़िनिडोर" का अर्थ है "एक निर्माता एक निर्माता है।" एक तार्किक सत्य। नकली दर्द की तरह वह उल्लेख करता है, कवि का दावा सतह पर झूठा है, नीचे सच है। कोड और कविता अक्सर अतार्किक दुनिया से मुकाबला करने के लिए पूरक रणनीतियों की पेशकश करते हैं: एक व्यक्ति विरोधाभासों से शरण प्रदान करता है,
फुटनोट
[1]: कोडिंग-लेखन सादृश्य पहले बनाया गया है, हालांकि अलग तरीके से, ब्रायन कर्निघन और पीजे प्लॉगर , डोनाल्ड नुथ , रिचर्ड गेब्रियल , जेम्स डिवालिन , जेफ एटवुड , और रेबेका सटन कोएसर , दूसरों के बीच। स्टीव मैककोनेल सादृश्य की आलोचना करते हैं।
[2]: यहां lodash
लाइब्रेरी के xor
काम करने का एक उदाहरण दिया गया है। बोगल में आप अक्षरों के ग्रिड में शब्द ढूंढते हैं। यदि आपको कोई ऐसा शब्द मिलता है जो किसी और को नहीं मिला, तो आप इसके लिए अंक अर्जित करते हैं। मान लीजिए आप जावास्क्रिप्ट में खेल का एक संस्करण बना रहे हैं। आपके पास यह डेटा है:
const wordsFoundByPlayerOne = ["apple", "peel"];
const wordsFoundByPlayerTwo = ["apple", "leap"];
const wordsFoundByPlayerThree = ["apple", "able"];
_.xor(
wordsFoundByPlayerOne,
wordsFoundByPlayerTwo,
wordsFoundByPlayerThree
); // Output: ["peel", "leap", "able"]
[4]: हम इसकी मदद से एक अत्यधिक पठनीय विकल्प भी बना सकते हैं Set
:
const toggle = (arr, item) => {
const set = new Set(arr);
if (set.has(item)) set.delete(item);
else set.add(item);
return Array.from(set);
}
[6]: 2019 के एक लेख में कोच गैरी गिलसन को लिखकर उद्धृत किया गया है ।
[7]: इसके विपरीत, ब्लॉगर जेफ एटवुड ने " स्पार्टन प्रोग्रामिंग " को बढ़ावा दिया है।
[8]: प्लूटार्क, बातूनीपन पर ।
[9]: 2021 की एक पुस्तक में भौतिक विज्ञानी कॉन्स्टेंटिन लिखरेव द्वारा उद्धृत ।
[10]: अपनी 2012 की वार्ता "सिम्प्लिसिटी मैटर्स" में, रिच हिक्की का तर्क है कि प्रोग्रामर को कठिनाई से नहीं डरना चाहिए , आंशिक रूप से क्योंकि यह हमारे काम को दिलचस्प बनाता है। लेकिन हमारा काम सबसे दिलचस्प होगा अगर यह बोरिंग और टैक्सिंग के बीच गोल्डीलॉक्स क्षेत्र में आता है - जैसा कि स्कूली पाठों के मामले में होता है ।
[11]: हेलेन तलवार, स्टाइलिश अकादमिक लेखन (2012), पी। 44. अपनी स्पष्टता में सुधार करने के लिए, कई लेखक अपने काम को जोर से पढ़ते हैं, खुद को सुनते हैं। दार्शनिक जोनाथन बेनेट लिखते हैं : "गिल्बर्ट रायल ने एक बार मुझसे कहा था, 'जो कानों को अच्छी तरह से नहीं पढ़ा जाता है वह आंखों को अच्छी तरह से नहीं पढ़ा जाता है', और इससे मेरा जीवन बदल गया। किसी भी अन्य चीज़ से अधिक, उस अंतर्दृष्टि ने मुझे दिखाया कि कैसे कचरे के गड्ढे से सभ्य गद्य के मैदान पर चढ़ना शुरू करना है। कर्निघन और प्लॉगर प्रोग्रामिंग के बारे में एक समान अंतर्दृष्टि प्रदान करते हैं: "कोड का कोई टुकड़ा स्पष्ट है या नहीं, यह तय करने का एक उपयोगी तरीका 'टेलीफोन परीक्षण' है। अगर कोई आपके कोड को टेलीफ़ोन पर ज़ोर से पढ़कर समझ सकता है, तो यह काफ़ी स्पष्ट है। यदि नहीं, तो इसे फिर से लिखने की जरूरत है” ( एलिमेंट्स ऑफ प्रोग्रामिंग स्टाइल , पृष्ठ 21)।
[12]: नील गैमन, " लेखकों को सलाह "।
[13]: क्विंटिलियन, वक्तृत्व संस्थान ।
[14]: चार्ल्स जॉनसन, द वे ऑफ़ द राइटर (2016), पी। 23.
[15]: पेसोआ, "ऑटोप्सिओग्राफ़ी"। रयान विल्सन में अनुवादित, प्रोटियस बाउंड: चयनित अनुवाद 2008–2020 (2021)।
कई उपयोगी सुझावों के लिए शशांक खंडेलवाल और आशीष लारोइया को धन्यवाद ।