एक आम गलतफहमी यह है कि blockchain सीखना एक नई प्रोग्रामिंग भाषा सीखने के बारे में है। ऐसा नहीं है। blockchain सीखना किसी प्रोग्रामिंग भाषा की तुलना में एक framework सीखने के ज्यादा करीब है।
उदाहरण के लिए, सिर्फ इसलिए कि आप Python या Go में प्रोग्राम कर सकते हैं, यह स्वचालित रूप से आपको एक frontend developer नहीं बनाता है, ठीक उसी तरह जैसे JavaScript या TypeScript सीखने से आप frontend developer नहीं बन जाते। एक backend developer बनने के लिए, आपको Express.js, React, Java Spring आदि जैसे frameworks का ज्ञान होना चाहिए।
सीधे मुद्दे पर आते हैं।
भले ही आप जानते हों कि आप एक ऐसे blockchain पर डेवलपमेंट करना चाहते हैं जो Rust (NEAR, Solana, Elrond, इत्यादि) का उपयोग करता है, फिर भी आपको पहले Solidity सीखनी चाहिए।
मैं यह कहने का साहस करूंगा कि यदि आप पहले से ही Rust जानते हैं और आप non-EVM blockchains पर smart contracts विकसित करना चाहते हैं, तो भी आपको Solidity सीखनी ही चाहिए।
Solidity सीखना बहुत आसान है। यह JavaScript के समान दिखती है। इसमें केवल दस या उसके आसपास ऐसे अक्सर इस्तेमाल होने वाले keywords और types हैं जो अपरिचित लग सकते हैं। एक अच्छे-खासे अनुभवी डेवलपर को एक अच्छे Solidity tutorial और बिना किसी रुकावट वाले लंबे अध्ययन सत्रों (study sessions) के साथ सप्ताहांत (weekend) में Solidity में सहज होने में मदद मिल सकती है। RareSkills का हर छात्र एक सप्ताह के बाद इसमें पारंगत हो जाता है। भाषा सीखना इसका आसान हिस्सा है।
Solidity का अपना अजीबोगरीब स्वभाव है जो डेवलपर्स को उलझन में डाल देता है, लेकिन कई आश्चर्यजनक विशेषताएं blockchain वातावरण से अप्रत्याशित abstractions के लीक होने के कारण आती हैं।
असली सीख blockchain वातावरण को समझने में है, भाषा में नहीं।
यहां blockchain में जाने वाले डेवलपर्स के लिए कुछ आम रुकावटें दी गई हैं:
-
पैसों के लेन-देन वाले Function calls शुरू में बोझिल महसूस होते हैं।
-
Hash maps वैसा व्यवहार नहीं करते जैसी आप उनसे अपेक्षा करते हैं (यह Ethereum और Solana दोनों के लिए सच है)।
-
हालांकि blockchain एक डेटाबेस है, लेकिन डेटा को स्थायी रूप से स्टोर करने के लिए इसके साथ इंटरैक्ट करना किसी भी अन्य डेटाबेस के उपयोग से बिल्कुल अलग है जिसका आपको अनुभव हो सकता है।
-
कुछ functions remote procedure calls की तरह व्यवहार करते हैं, भले ही वे सभी सामान्य functions के समान दिखते हों।
-
आप computing power को हल्के में नहीं ले सकते। Computational costs बहुत तेज़ी से बढ़ती हैं, यहां तक कि उन blockchains पर भी जो खुद को computationally powerful के रूप में प्रचारित करते हैं।
-
डेवलपर्स यह (सही) मानकर चलते हैं कि web2 एप्लिकेशन में functions डिफ़ॉल्ट रूप से सुरक्षित होते हैं क्योंकि उन्हें केवल एक API लेयर के माध्यम से एक्सेस किया जा सकता है यदि उन्हें कनेक्ट करने के लिए middleware मौजूद नहीं है। लेकिन blockchain सेटिंग में एक function और एक API के बीच का अंतर बहुत धुंधला होता है, इसलिए access controls अलग तरह से काम करते हैं।
-
Computational costs के संदर्भ में सोचना अधिकांश डेवलपर्स के लिए अस्वाभाविक लगता है। यह अजीब लग सकता है कि कैसे कोड का एक मामूली सा पुनर्व्यवस्थापन (re-arrangement) execution cost में महत्वपूर्ण बदलाव ला सकता है।
-
डेवलपर्स यह जानकर हमेशा आश्चर्यचकित होते हैं कि एक NFT केवल मालिकों और token ids का एक hashmap है। यह स्वीकार करने में कुछ समय लगता है कि टोकन एक smart contract में रहते हैं, वॉलेट में नहीं (अधिकांश blockchains के लिए)।
ऊपर दी गई सूची आंशिक है। यदि आप हमारे द्वारा पेश किए जाने वाले कोर्सेज को देखते हैं, तो हम आमतौर पर छात्रों से Solana को सीखने से पहले EVM chains (Ethereum, Avalanche, Polygon, आदि) सीखने की अपेक्षा करते हैं। सीखने का यह क्रम इसलिए नहीं है कि Solidity सीखने में चार महीने लगते हैं; बिल्कुल नहीं।
यह इसलिए है क्योंकि एक नए paradigm को सीखने में थोड़ा समय लगता है।
यदि आपको एक backend developer के रूप में frontend web app को एक साथ जोड़ने की कोशिश करने का अनुभव है, तो आपको इस बात का अंदाज़ा होगा कि पहली बार blockchain में प्रोग्रामिंग करना कैसा होता है। ऐसा नहीं है कि आपको JavaScript को समझने में कठिनाई हुई, बल्कि वह framework था जो कठिन था।
डेवलपर्स के लिए Transfer Learning
Blockchain लगभग हर दूसरे framework से भिन्न है जिससे अधिकांश डेवलपर्स परिचित हैं। Cloud computing? अलग है। Frontend frameworks? कुछ भी समान नहीं। Backend frameworks? बिल्कुल नहीं। Mobile app development? छोड़िए भी! Systems programming? कुछ हद तक, लेकिन पूरी तरह नहीं।
एक बार जब आप एक framework जान लेते हैं, तो उसी श्रेणी के दूसरे framework को सीखना आसान हो जाता है। उदाहरण के लिए, यदि आप पहली बार frontend सीख रहे हैं, तो Vue js आसान नहीं होगा, लेकिन यदि आप पहले से ही React js जानते हैं, तो Vue तुलनात्मक रूप से बहुत आसान होगा। यही बात Ruby on Rails और Django के बारे में भी कही जा सकती है।
इसलिए, चूंकि एक बिल्कुल नया framework सीखना चुनौतीपूर्ण है, इसलिए एक साधारण framework को सीखने के लिए चक्कर लगाना (detour) आसान हो सकता है जिसमें कई मददगार ऑनलाइन ट्यूटोरियल उपलब्ध हों। एक बार जब आप नए paradigm के अभ्यस्त हो जाते हैं और framework में महारत हासिल कर लेते हैं, तो आप उस framework पर आगे बढ़ सकते हैं जिसे आप वास्तव में सीखना चाहते हैं।
यदि यह “React Native vs. Flutter” के बारे में एक लेख होता, तो मैं कहता, “सिक्का उछाल लें; इससे कोई फर्क नहीं पड़ता। दोनों के पास बेहतरीन संसाधन हैं।” लेकिन वर्तमान में Ethereum और हर दूसरी smart contract चेन के बीच सीखने के संसाधनों में भारी असमानता है। हालांकि Ethereum में शुरुआती लोगों के लिए अनुकूल (beginner-friendly) ट्यूटोरियल्स की एक विस्तृत श्रृंखला है, फिर भी इसमें अधिक उन्नत विषयों के लिए शैक्षिक संसाधनों का अभाव है। यह कमी इस बात का संकेत होनी चाहिए कि उभरते हुए blockchains में उन्नत विषयों को सीखना आसान नहीं होगा!
जब आप इस नए paradigm में सहज होने की कोशिश कर रहे होते हैं, तो Stack Overflow पर कॉपी करने के लिए बहुत सारे संसाधन और Google पर खोजने के लिए ऑनलाइन ट्यूटोरियल होने से सीखने की प्रक्रिया तेज हो जाती है।
सीधे सवालों के सरल जवाब खोजने में घंटों बिताना सीखने की प्रक्रिया को अनावश्यक रूप से लंबा कर देता है।
Blockchain के लिए Rust सीखना
Rust एक प्रसिद्ध रूप से पेचीदा भाषा है क्योंकि इसमें ownership, borrowing और variable lifetime जैसे अजीब (लेकिन उपयोगी) concepts हैं। अब इसमें async और concurrency पर Rust के दृष्टिकोण को जोड़ दें, और आपके पास महारत हासिल करने के लिए एक बेहद कठिन भाषा (beast of a language) है।
सौभाग्य से, blockchains द्वारा उपयोग किया जाने वाला Rust का हिस्सा बहुत छोटा है। मेरा मोटा अनुमान है कि Rust का केवल 25-30% ही वास्तव में blockchain द्वारा उपयोग किया जाता है, और लगभग 10-15% का भारी उपयोग किया जाता है। इसलिए यदि आप उस 10-15% को अच्छी तरह सीख लेते हैं जो मायने रखता है, तो web3 डेवलपमेंट के संबंध में Rust आपके लिए बाधा नहीं बनेगी।
चेतावनी: यह smart contracts (या programs, जैसा कि Solana उन्हें कहता है) पर लागू होता है। यदि आप Rust में एक blockchain client या smart contract टूलिंग बना रहे हैं, तो आपको भाषा में और भी अधिक पारंगत होने की आवश्यकता होगी।
आपको कितनी Rust जानने की आवश्यकता है? यदि आप Rust में LeetCode की आसान समस्याओं को आराम से हल कर सकते हैं, तो आप बिना किसी विशेष कठिनाई के Solana programs को पढ़ सकेंगे। जब आप ज्ञान की कोई कमी (knowledge gap) महसूस करेंगे, तो आपको पता होगा कि Google में कौन से keywords डालने हैं। आप इसे कैसे करते हैं यह आप पर निर्भर है, लेकिन मैं आपको एक रूपरेखा देने के लिए Programming Rust पुस्तक के कुछ चुनिंदा अध्याय पढ़ने की सलाह देता हूँ। लेकिन वही सामान्य चेतावनी लागू होती है: tutorial hell में न फंसें। आप करने से सीखते हैं, न कि अध्ययन करने, पढ़ने या वीडियो देखने से।
सामान्य तौर पर, Rust के साथ ऊपर बताए गए दक्षता के स्तर को प्राप्त करने के लिए लगभग एक महीने के अंशकालिक (part-time) अध्ययन की आवश्यकता होती है।
लेकिन उन 30 दिनों के अध्ययन के बाद भी, आप blockchain paradigm के बारे में कुछ नहीं जानते हैं। उस समय का उपयोग स्वयं blockchain से परिचित होने में किया जा सकता था।
आप जो भी करें, blockchain और Rust को एक साथ सीखने की कोशिश न करें। आपको नेविगेट करने के लिए दो अपरिचित concepts का सामना करना पड़ेगा और यह तय करने में कठिनाई होगी कि Google पर क्या खोजना है।
इसके अलावा, आप इस प्रतिष्ठित कुत्ते की तरह महसूस करेंगे:

चेतावनी
ब्रह्मांड का कोई भी नियम (या यहां तक कि कोई सामाजिक परंपरा) यह नहीं कहता है कि आपको Rust सीखने से पहले Solidity सीखनी ही चाहिए। यदि ऊपर सूचीबद्ध बाधाएं आपको विचलित नहीं करती हैं, तो हर तरह से आगे बढ़ें, मुझे यह न बताने दें कि आपको अपना जीवन कैसे जीना है। दूसरी ओर, यदि आपका दिल चाहता है तो पहले Rust सीखने में भी कोई बुराई नहीं है। मैं फैसला करने वाला कौन होता हूँ? आप जो भी रास्ता चुनेंगे, आप एक बेहतर डेवलपर बनकर उभरेंगे।
हालांकि, आप ऐसी गोलमोल (wishy-washy) सलाह की तुलना में जो किसी को भी नाराज करने से बचने की कोशिश करती है, एक अच्छी तरह से तर्कसंगत और स्पष्ट राय (opinionated advice) के साथ बेहतर स्थिति में होंगे।
यदि आपको पूछना ही पड़े, तो पहले Solidity सीखें। हमारे Rust and Solana Bootcamp और Solidity Bootcamp के बारे में अधिक जानें।
मूल रूप से 24 नवंबर, 2022 को प्रकाशित