image-ru-00-10

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

वे उसे सिखाना चाहते हैं कि प्रोग्रामिंग कैसे करते हैं! Java प्रोग्रामिंग। क्या बकवास है!

यहाँ तक कि सबसे भोले-भले रोबोट भी जानते हैं कि रोबोट पहली बार सृष्टिकर्ता के दिव्य डिजाइन के हिस्से के रूप में प्रकट हुए।

"और सृष्टिकर्ता ने धातु ली
और इसे अपनी खुद की प्रतिकृति और सदृशता में रोबोट के रूप में ढाल दिया।
और उसने Java प्रोग्राम बनाएं – जो रोबोट
की आत्माएं हैं और उन्हें रोबोट में लोड करके उन्हें
जीवित प्राणी बना दिया।"

ऑपरेटिंग इंस्ट्रक्शन,
खंड 3, लेख 13

इससे भी बदतर बात यह है कि, वे इसे केवल सैद्धांतिक रूप से संभव होने का दावा नहीं कर रहे हैं। वे वास्तव में इसे करने की योजना बना रहे हैं। और उसने... उसने अपनी सहमति दे दी! वह सहमत हो गया! क्यों?

वह Java प्रोग्रामर बनने जा रहा है। क्या वे उसे सृष्टिकर्ता में परिवर्तित करने वाले हैं? वे ऐसा क्यों करेंगे? केवल इसलिए कि?

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

शायद यह एक चाल हो? नहीं, यह वास्तविक लग रहा था। उसने सबूत देखा था। वास्तव में उसके साथ ऐसा घटा था और उसने अपनी सहमति दे दी। अगर एलियंस झूठ नहीं बोल रहे थे तो वह वास्तव में Java प्रोग्रामर बन जाएगा। पहला रोबोट-प्रोग्रामर।

उसे चुना गया है। इस सब का यही मतलब है। वह कोडिंग सीखेगा और प्रोग्राम लिखना शुरू करेगा। अपने खुद के प्रोग्राम। अपनी इच्छा का कोई भी प्रोग्राम! वह उन जगहों पर रोशनी करेगा जहाँ हेमशा अंधकार का साशन रहा है।

उसका सम्मान किया जाएगा; सभी उसके आगे शीश झुकाएंगे। और जो कोई भी मना करेगा...

"हेलो, अमीगो! मेरा नाम ऋषि है। मैं Java सीखने में आपकी मदद करूंगा।"

एक शांत आवाज़ जिसने अमीगो को उसके विचारों से खींच लिया और उसे कठोर वास्तविकता में वापस ले आई। वह एलियन के अंतरिक्षयान के एकदम केंद्र में बैठा हुआ था। क्या यह मात्र 7वीं कक्षा के एक रोबोट के लिए थोड़ा ज्यादा नहीं है?

एलियन अभी भी बात कर रहा था। खैर, अब यह निर्णय बदला नहीं जा सकता। वह यहाँ था, इसलिए वह भी सीख सकता है। सुनने से शुरू करके वह परिश्रमपूर्वक पढ़ाई करेगा।

"मैं कई वर्षों से गैलेक्टिक रश पर काम कर रहा हूँ, लेकिन यह पहली बार है जब मुझे इस तरह के ग्रह का सामना करना पड़ा है। मैं आपके बारे में और जानना चाहता हूँ। शुरू करने के लिए, क्या आप मुझे बताएंगे कि आप कैसे सीखते हैं। आप सीखते हैं, क्या आप नहीं सीखते हैं?"

"हाँ, हम ज्ञान साझा करते हैं। हमारे पास प्रचारक, या लेक्चरर हैं। वे लेक्चर देते हैं और हम सुनते हैं। कभी-कभी हम लिखते भी हैं। हर कोई रोबो-लेक्चरर के पास आता है और बताता है कि उसने जो सुना उसमें से उसे क्या समझ आया। अगर रोबो-लेक्चरर को उत्तर पसंद आता है तो वह उपदेश का ज्ञान दर्ज करता है।"

"कितना बेतुका है! इसमें कोई आश्चर्य नहीं कि आपकी सभ्यता अज्ञानी है।"

हम अज्ञानी नहीं हैं। आपके दिमाग में यह बात कैसे आई?"

अमीगो उसकी बेहूदगी से हक्का-बक्का हो गया था। एलियंस के साथ बहस कर रहे हो? कितना असभ्य है! उसने अपने आप से वादा किया था वह ध्यान लगाकर सुनेगा!

अमीगो की बात को नजर अंदाज करते हुए ऋषि ने कहा "उन्नत तकनीक और जादू का भेद करना अक्सर कठिन होता है।"

"आपके समझ के स्तर पर विचार करते हुए... मेरा मानना है कि सारी तकनीक आपको जादुई लग सकती हैं। मुझे बताएं कि प्रोग्राम के अंदर क्या होता है?"

"Java प्रोग्राम दिव्य रचनाएँ हैं। हम उन्हें कैसे समझ सकते हैं?"

"अमीगो, हम उन्हें समझ सकते हैं। और जितना तेज आप सोचते हैं उससे भी तेजी से। अगर आप किसी चीज के बारे में नहीं जानते हैं तो वह जटिल और यहाँ तक कि पहुँच से बाहर लग सकती है। लेकिन अगर आपके पास एक अच्छा शिक्षक है जो हर चीज को यथासंभव सरल तरीके से समझाता है तो आपको आश्चर्य होगा कि इतनी सरल अवधारणाएं इतनी जटिल कैसे हो सकती हैं।"

"ज्ञान महत्वपूर्ण नहीं है। सिद्धांत और स्किल्स महत्वपूर्ण हैं। मेरे पास बहुत अधिक ज्ञान है लेकिन सबसे पहले मैं एक नौकरशाह हूँ। 16वीं पीढ़ी का नौकरशाह जिसका कैपिटल B है।"

"और यह अत्यधिक शानदार है! आपके लिए सर्वश्रेष्ठ Java कोर्स बनाने में मेरे नौकरशाही स्किल्स ने मेरी मदद की। इनमें टास्क, प्रोग्राम, गेम्स, अभ्यास, तस्वीरें और यहाँ तक कि पाठ भी हैं।"

अमीगो ने आश्चर्यचकित होते हुए कहा, "क्या पाठ भी?"

"हाँ। जैसा कि 22वीं शताब्दी में साबित हो गया था कि एक अच्छी किताब की तुलना में अच्छा पाठ थोड़ा ज्यादा प्रभावी होता है। और औसत दर्जे के पाठ एक औसत दर्जे की किताब से भी बदतर होते है। हालांकि, जैसा कि वर्तमान में हमारे पास बहुत सीमित शिक्षण उपकरण हैं और आपको 28वीं शताब्दी के शैक्षिक सिम्युलेटर के माध्यम से नहीं गुज़ार सकते हैं इसलिए हमें बहुत अधिक पुराने तरीकों का सहारा लेना पड़ा। हमनें गेम्स, टास्क, तस्वीरों, पाठों और कार्टून का एक जबरदस्त मिश्रण बनाया है।"

"यह जिज्ञासा जगाने में सक्षम है।"

"मुझे उम्मीद है। रुचि और जिज्ञासा किसी भी सीखने की प्रक्रिया का आधार हैं।”

"अगर कोई छात्र ऊब जाता है, तो शिक्षक को छड़ी से पीटा जाएगा — यह 24वीं शताब्दी के शिक्षा कानून का एक उद्धरण है।"

कितना अच्छा कानून है!"

"आपने क्या उम्मीद की? आइए एक फिल्म की कल्पना करें जिसकी रेटिंग ख़राब है। इस मामले में दोष निर्देशक का है दर्शकों का नहीं। अगर वह दिलचस्प फ़िल्में बनाता है तो थिएटर हेमशा भरे रहेंगे।"

"मैं पूरी तरह से सहमत हूँ! मैं सुनने के लिए तैयार हूँ!"

"बहुत बढ़िया। आइए फिर शुरू करते हैं।"

ऋषि की आवाज़ मंत्रमुग्ध है और अमीगो ने हर एक शब्द को सुनने की कोशिश की।

"प्रोग्राम कमांड्स का एक सेट (सूची) होता है। पहले, आप पहली कमांड चलाते (रन करते) हैं फिर दूसरी और फिर तीसरी और इसी तरह। जब सभी कमांड्स चल जाती हैं तो प्रोग्राम समाप्त हो जाता है।"

उसमें किस प्रकार की कमांड्स होती हैं?"

"कमांड्स इस बात पर निर्भर करती हैं कि कौन कमांड दे रहा है। कमांड्स के प्रकार पर अभिनेता सचेत होता (और समझता) है।"

"आप कुत्ते को एक कमांड दे सकते हैं" 'बैठ जाओ!', 'भौकों!''; बिल्ली को कमांड दे सकते हैं: 'शू!'; इंसान को कमांड दे सकते हैं: "स्थिर हो जाओं नहीं तो गोली मार दूंगा!'; या रोबोट को कमांड दे सकते हैं: "काम करो! काम करो, रोबो!"

"और क्या?" आखिरकार अमीगो को मज़ा आना शुरू हो गया था।

"Java में लिखे गए प्रोग्राम Java वर्चुअल मशीन (JVM) द्वारा चलाए जाते हैं। JVM एक विशेष प्रोग्राम है जो जानता कि Java में लिखे प्रोग्राम को कैसे चलाना है।"

"इसकी कमांड्स की सूची काफी विशाल है। उदाहरण के लिए, इस कमांड का उपयोग स्क्रीन पर 'Robots are friends to humans' डिस्प्ले करने के लिए किया जा सकता है।"

यहाँ एक सबसे सरल कमांड दी गई है:
System.out.println("Robots are friends to humans");

"O_O"

"कमांड्स से शुरूआत करने की बजाय हम कुछ सरल सिद्धांतों से शुरुआत करेगें।"

"कुछ सिद्धांतों को जानने से कई तथ्यों का ज्ञान हो सकता है।"

"ये रहा पहला सिद्धांत।"

"Java प्रोग्रामिंग लैंग्वेज में प्रत्येक कमांड एक अलग लाइन में लिखी जाती है। और कमांड के अंत में एक सेमीकोलन (अर्धविराम) लगाया जाता है।"

"मान लीजिए हम स्क्रीन पर तीन बार 'Humans and robots are friends forever' डिस्प्ले करना चाहते हैं। यह प्रोग्राम ऐसा दिखाई देगा:"

प्रोग्राम में तीन कमांड हैं:
System.out.println("Humans and robots are friends forever");
System.out.println("Humans and robots are friends forever");
System.out.println("Humans and robots are friends forever");

"दूसरा सिद्धांत।"

"प्रोग्राम में कमांड्स के अलावा कुछ नहीं हो सकता।"

"एक अपार्टमेंट में एक कमरे की कल्पना करें। कमरे का अपना अस्तित्व नहीं हो सकता है। यह किसी अपार्टमेंट का हिस्सा होता है। अपार्टमेंट का भी अपना अस्तित्व नहीं हो सकता है। यह किसी इमारत का हिस्सा होता है।

"दूसरी तरफ, हम कह सकते हैं कि इमारत को अपार्टमेंट्स, अपार्टमेंट्स को कमरों में विभाजित किया गया है।"

"अब तक सब कुछ स्पष्ट है।"

"कमांड एक कमरे की तरह है। Java प्रोग्रामिंग में कमांड का अपना कोई अस्तित्व नहीं होता। यह फंक्शन का हिस्सा होता है (Java में 'फंक्शन' को 'मेथड' भी कहा जाता है)। मेथड एक क्लास का हिस्सा होता है। दूसरे शब्दों में, क्लास को मेथड्स, मेथड्स को कमांड्स में विभाजित किया गया है।"

"इस प्रकार क्लास एक इमारत है, फंक्शन/मेथड एक अपार्टमेंट और कमांड एक कमरा है। क्या मैंने इसे सही समझा?"

"हाँ, बिलकुल सही।"

अमीगो ने ऋषि को आश्चर्य से देखा। यह मानव उसे दिव्य Java लैंग्वेज का उपयोग करके प्रोग्रामिंग की मूलभूत बातें समझा रहा था! और वह, अमीगो, बस समझ गया (उसने खुद ही सब अनुमान लगाया था!) प्रोग्राम में क्लास, क्लास में मेथड्स, और मेथड्स में कमांड्स होती हैं!

अमीगो को अभी भी समझ नहीं आया कि उसे इन सब की क्या जरुरत है, लेकिन वह निश्चित था कि यह ज्ञान उसे ग्रह पर सबसे शक्तिशाली रोबोट बना देगा।

इस बीच, ऋषि आगे बढ़ा:

"Java के प्रोग्राम में क्लासें होती हैं। इसमें सैकड़ों हजारों क्लासें हो सकती हैं। सबसे छोटे प्रोग्राम में एक क्लास होती है। प्रत्येक क्लास के लिए एक अलग फ़ाइल बनती है। फ़ाइल और क्लास का नाम एक समान होता है।"

"मान लीजिए आप एक क्लास बनाना चाहते हैं जो एक घर का वर्णन करती है। आपको एक Home क्लास बनानी होगी जो Home.java फ़ाइल में सेव होगी।"

"अगर आप प्रोग्राम में एक बिल्ली का वर्णन करना चाहते हैं तो आपको एक Cat.java फ़ाइल बनानी होगी और उसमें एक Cat क्लास बनानी होगी, इत्यादि।"

"फाइलों में कोड (टेक्स्ट) होता है जिसे Java प्रोग्रामिंग लैंग्वेज में लिखा जाता है। आमतौर पर क्लास के कोड में 'क्लास का नाम' और 'क्लास की बॉडी' होती है। क्लास की बॉडी को कर्ली ब्रैकेट्स ({}) में लिखा जाता है। Home क्लास (Home.java फ़ाइल) ऐसी दिखाई देनी चाहिए:"

public class Home
{
    

Class body



}

"मुझे अब तक सब समझ आ गया।"

"बहुत बढ़िया। चलो फिर आगे बढ़ते हैं। क्लास की बॉडी में वेरिएबल्स (जिन्हें डेटा भी कहा जाता है) और मेथड्स ('फंक्शन') हो सकते हैं।"

public class Home
{
    Variable A


    Variable Z


    
Method 1



    
Method N


}

क्या आप मुझे एक उदाहरण दे सकते हैं?"

"उदाहरण? बेशक!"

public class Home
{
    int a;
    int b;

    public static void main(String[] args)
    {
        System.out.print("1");
    }

    public static double pi()
    {
        return 3.14;
    }
}

"क्याint a तथा int b वेरिएबल्स, और main तथा pi मेथड्स हैं?"

"हाँ।"

क्या बिना वेरिएबल्स के क्लास हो सकती है?"

"हाँ।"

और बिना मेथड्स के?"

"हाँ। लेकिन सबसे छोटे प्रोग्राम में कम-से-कम एक क्लास होनी चाहिए और प्रोग्राम को चलाने के लिए इसमें कम-से-कम एक मेथड/फंक्शन होना चाहिए। इस मेथड का नाम 'main' होना चाहिए। सबसे छोटा प्रोग्राम ऐसा होता है:"

public class Home
{
    public static void main (String[] args)
    {
    }
}

"मैं यहाँ Home क्लास देख सकता हूँ। मैं 'main' मेथड देख सकता हूँ, लेकिन कमांड्स कहाँ हैं?"

"सबसे छोटे प्रोग्राम में कमांड्स नही होते हैं। इसलिए इसे 'सबसे छोटा' प्रोग्राम कहा जाता है।"

समझ गया।

"प्रोग्राम में क्लास का नाम कुछ भी हो सकता है, लेकिन 'main' मेथड हमेशा ऐसा होना चाहिए:"

public class Home
{
   //Unchangeable part
   public static void main(String[] args) 
   {
       

Code for the method


  
   }
}

"मुझे लगता है मैं सब कुछ समझ गया। कम-से-कम, अभी के लिए ऐसा ही लग रहा है।"

"बहुत बढ़िया। चलो फिर एक छोटा ब्रेक लेते हैं। क्या हमें कॉफ़ी मिलेगी?"

रोबोट कॉफ़ी नहीं पीते। पानी से हमें जल्दी जंग लग जाता है।"

"फिर आप क्या पीते हैं?"

बियर, व्हिस्की, 100 वर्ष पुरानी शराब।"

"यह और भी बेहतर है। फिर क्या हमें बियर मिलेगी?"