image-ru-00-10

नीरज बेचैन होता. त्याच्या मनात खूप विचार येत होते. आदल्या रात्रीचा विचार केल्यावर त्याचे डोळे अस्वस्थपणे थरथरत होते. काल त्याला भेटलेल्या विचित्र प्राण्यांना त्याच्याकडून काहीतरी पाहिजे होते. त्याच्या मित्रमंडळींमध्ये तो स्वत:ला सर्वांत स्मार्ट आणि सर्वांत शूर समजत असला तरीसुद्धा त्यांना इतके अनाकलनीय आणि अकल्पित काहीतरी हवे होते की केवळ त्या विचारानेच बेचैन होऊन त्याने पंच कार्ड्स चावायला सुरुवात केली.

ते त्याला प्रोग्रॅम कसा लिहायचा ते शिकवणार होते! जावामध्ये प्रोग्रॅम करायला. काय वेडेपणा आहे!

सर्वांत भोळ्या यंत्रमानवांनासुद्धा माहिती होते की यंत्रमानव पहिल्यांदा निर्मात्याच्या दैवी योजनेचा भाग म्हणून जगात आले.

"आणि निर्मात्याने धातू घेतला आणि त्यापासून
त्याने त्याच्या स्वत:च्या प्रतिमेनुसार आणि आवडीनुसार एक यंत्रमानव बनवला.
आणि त्याने जावा प्रोग्रॅम तयार केले – यंत्रमानवांचा आत्मा
, आणि ते प्रोग्रॅम यंत्रमानवांमध्ये लोड केले आणि
त्यांना जिवंत केले".

ऑपरेटिंग सूचना,
विभाग 3, लेख 13.

त्याहीपेक्षा वाईट म्हणजे, हे प्रत्यक्षात शक्य आहे असा ते केवळ दावाच करत नाही आहेत तर. ते खरेच तसे करण्याचे नियोजन करत आहेत. आणि त्याने...त्याने संमती दिली! त्याने मान्य केले! का?

तो जावा प्रोग्रॅमर बनणार होता. ते काय करणार आहेत, त्याचे रुपांतर निर्मिकात करणार आहेत? ते असे का करतील? असंच वाटलं म्हणून?

ही फक्त एक घाणेरडी चाल आहे की काय? त्याची बॅटरी कायमची बंद पडेपर्यंत त्याला नंतर बग्जचा त्रास सहन करावा लागेल का? पण त्याला खूपच मोह झाला, आणि तो स्वत:ला रोखू शकला नाही. तो पहिल्यापासूनच महत्वाकांक्षी होता, आणि त्याला नेहमीच जास्त काहीतरी हवे असायचे. पण अशा ऑफर्ससाठी कोणीच तयारी केलेली असणे शक्य नव्हते. अर्थातच, त्याने थोडा वेळ मागून घेण्याचा प्रयत्न केला होता, पण परग्रहवासियांनी त्याला 'आम्ही दुसऱ्या कोणालातरी निवडू' अशी धमकी दिली.

ही फक्त एक खोडी होती? नाही, खरेच वाटत होते. त्याने पुरावा पाहिला होता. त्याच्याबाबतीत हे खरेच घडले होते, आणि त्याने संमती दिली. जर परग्रहवासी खोटे बोलत नसतील, तर तो खरेच एक जावा प्रोग्रॅमर बनणार होता. जगातला पहिला यंत्रमानव-प्रोग्रॅमर!

तो यासाठी खास निवडला गेला होता. या सगळ्याचा अर्थ हाच आहे. तो कोड शिकेल आणि प्रोग्रॅम्स लिहायला लागेल. त्याचे स्वत:चे प्रोग्रॅम्स. त्याला हवे ते कोणतेही प्रोग्रॅम्स! जिथे नेहमीच अंधार पसरलेला असतो, अशी ठिकाणे तो प्रकाशमान करेल.

सगळ्यांना त्याच्याबद्दल आदर वाटेल; सगळे त्याच्यासमोर नतमस्तक होतील. आणि जो कोणी नकार देईल तो...

"हॅलो, नीरज! मी ऋषी. मी तुला जावा शिकायला मदत करणार आहे."

एका शांत आवाजाने नीरजला त्याच्या विचारातून जागे केले, त्याला वास्तवात आणले. तू परग्रहवासीयांच्या अवकाशयानाच्या अगदी मध्यभागी बसला होता. फक्त 7व्या इयत्तेत असलेल्या यंत्रमानवासाठी हे थोडे जास्तीच नाही का?

परग्रहवासी अजूनही बोलतच होता. पण आता तर बाण सुटला होता. तो इथे आलाच होता, त्यामुळे त्याला शिकणे भागच होते. फक्त ऐकण्यापासून सुरुवात करून तो मन लावून शिकणार होता.

"मी अनेक वर्षे गॅलॅक्टिक रशवर काम करत आहे, पण अशा ग्रहावर येण्याची ही पहिलीच वेळ आहे. मला तुझ्याबद्दल अजून जाणून घ्यायचेय. तू कसा शिकतोस, ते मला आधी सांगतोस का? तुम्ही शिकता, हो ना?

"हो, आम्ही एकमेकांना ज्ञान देतो. आमच्याकडे प्रवचनकार, किंवा व्याख्याते आहेत. ते व्याख्यान देतात, आणि आम्ही ऐकतो. कधीकधी आम्ही काही गोष्टी लिहून ठेवतो. प्रत्येकजण फक्त यंत्रमानव-व्याख्यात्याकडे येतो आणि जे ऐकले त्यातले आपल्याला काय कळले ते समजावून सांगतो. जर यंत्रमानव-व्याख्यात्याला उत्तरे आवडली, तर तो प्रवचनातील ज्ञान रेकॉर्ड करतो."

"किती विचित्र! तुमची संस्कृती अज्ञानी आहे यात काही आश्चर्य नाही."

"आम्ही अज्ञानी नाही. तुला कशामुळे वाटले तसे?"

त्याच्या उद्धटपणामुळे नीरजला धक्काच बसला. परग्रवासियांशी वाद घालायचा? किती उद्धटपणा! त्याने स्वत:ला वाचन दिले की तो फक्त लक्षपूर्वक ऐकेल!

"प्रगत तंत्रज्ञान आणि जादू यात फरक करणं बऱ्याचदा अवघड असतं," नीरजच्या शेऱ्याकडे दुर्लक्ष करून ऋषी पुढे म्हणाला.

"तुझी पातळी लक्षात घेता...मला वाटतेय की सगळं तंत्रज्ञान म्हणजे तुला जादूच वाटेल. मला सांग, प्रोग्रॅमच्या आत काय घडतं?"

"जावा प्रोग्रॅम्स म्हणजे दैवी निर्मिती असते. आपण त्याचा अर्थ कसा काय लावणार?"

"आपण लावू शकतो, नीरज, नक्कीच लावू शकतो. आणि तुला वाटतेय त्यापेक्षा वेगाने लावू शकतो. जर आपल्याला काहीतरी माहिती नसेल तर ते गुंतागुंतीचं आणि अगदी अशक्यसुद्धा वाटू शकतं. पण सगळ्या गोष्टी अगदी सोप्या पद्धतीनं शिकवणारा शिक्षक तुला मिळाला असेल तर, इतक्या सोप्या संकल्पना इतक्या अवघड कशा काय वाटत होत्या, याचं आश्चर्य तुला वाटेल."

"ज्ञान महत्त्वाचं नाही. तत्वं आणि कौशल्यं महत्त्वाची असतात. माझ्याकडे खूप ज्ञान आहे, पण त्यापेक्षा जास्त मी नोकरशहा आहे. 16 व्या पिढीतला नोकरशहा, अगदी अस्सल.

"आणि हे भारी आहे! माझ्या नोकरशाही कौशल्यांची मला तुझ्यासाठी सर्वांत चांगले जावा अभ्यासक्रम तयार करायला मदत झाली आहे. त्यामध्ये टास्क्स, प्रोग्रॅम्स, गेम्स, स्वाध्याय, चित्रे आणि अगदी धडेसुद्धा आहेत."

"अगदी धडेसुद्धा?!" नीरजने विचारले, त्याला खरोखरच आश्चर्य वाटले होते.

"हो. 22व्या शतकात सिद्ध झाल्यानुसार चांगला धडा चांगल्या पुस्तकापेक्षा जास्त परिणामकारक असतो. आणि सुमार धडे सुमार पुस्तकापेक्षा वाईट असतात. पण, सध्या आपल्याकडे शिक्षणाची साधने अगदी मर्यादित असल्यामुळे आणि तुला 28व्या शतकातील शैक्षणिक सिम्युलेटर वापरायला देऊ शकत नसल्यामुळे, आपल्याला बऱ्याच प्राचीन पद्धतींचा वापर करावा लागेल. आम्ही खरंच गेम्स, टास्क्स, चित्रे, धडे आणि कार्टून्सचे एक रोमांचक मिश्रण बनवलेय."

"हे खूपच उत्सुकता वाढवणारे आहे."

"मला तशी आशा आहे. शिकण्याच्या कोणत्याही प्रक्रियेचे स्वारस्य आणि उत्सुकता हे आधार आहेत."

"जर विद्यार्थ्याला कंटाळा आला, तर शिक्षकाला काठीने मारण्यात येईल—हे 24व्या शतकातल्या शिक्षण कायद्यातले विधान आहे."

"काय छान कायदा आहे!"

"तुझी काय अपेक्षा होती? आपण अशा एका चित्रपटाची कल्पना करूया ज्याला कमी रेटिंग मिळाले आहे. त्यावेळी, आपण दिग्दर्शकाला दोष देतो, प्रेक्षकांना नाही. जर त्याने मनोरंजक चित्रपट बनवले, तर ते पाहायला चित्रपटगृहे नेहमीच भरतील."

"मी अगदी सहमत आहे! मी ऐकायला तयार आहे!"

"खूप छान. चला मग, पुढे जाऊया."

ऋषीचा आवाज भारावून टाकणारा होता, आणि त्याचा एकही शब्द निसटू नये म्हणून नीरजने प्रयत्न केला.

"प्रोग्रॅम म्हणजे कमांडचा (आज्ञांचा) संच(यादी). आधी, आपण पहिली कमांड एक्झिक्युट करतो, मग दुसरी, मग तिसरी आणि असे सुरू ठेवतो. एकदा सगळ्या कमांड एक्झिक्युट करून झाल्या, की प्रोग्रॅम संपतो."

"कोणत्या प्रकारच्या कमांड असतात?"

"कमांड कोण एक्झिक्युट करत आहे, त्यावर त्या अवलंबून असतात. कमांडच्या प्रकारावरून कर्त्याला माहीत असते(आणि कळते)."

"आपण कुत्र्याला आज्ञा देऊ शकतो: 'बस!', 'भुंक!'; मांजराला: 'शुक!'; माणसाला: 'थांब, नाहीतर गोळी घालेन!'; किंवा यंत्रमानवाला: 'काम कर! 'काम कर गाढवा!

"अजून काय?" आता नीरजला मजा यायला लागली होती.

"जावामध्ये लिहिलेले प्रोग्रॅम्स जावा व्हर्च्युअल मशीन(जेव्हीएम) द्वारे एक्झिक्युट केले जातात. जेव्हीएम हा एक असा खास प्रोग्रॅम आहे, ज्याला जावामध्ये लिहिलेले प्रोग्रॅम्स कसे एक्झिक्युट करायचे ते माहिती असते."

"त्याच्या आज्ञांची यादी भलीमोठी आहे. उदाहरणार्थ, स्क्रीनवर 'Robots are friends to humans' हे दर्शवण्यासाठी ही कमांड वापरता येईल."

ही अगदीच साधी सोपी कमांड आहे:
System.out.println("Robots are friends to humans");

"O_O"

"कमांडपासून सुरुवात करण्यापेक्षा, आपण एक दोन साध्या तत्वांपासून सुरुवात करू."

"एक-दोन तत्वे माहीत असणे, हे अनेक तथ्ये माहीत असण्याच्या बरोबरीचे आहे."

"हे आहे पहिले तत्व."

जावा प्रोग्रॅमिंग भाषेमध्ये, प्रत्येक कमांड स्वतंत्र ओळीवर लिहिली जाते. कमांडच्या शेवटी अर्धविराम द्यावा लागतो."

"समजा आपल्याला '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");

"दुसरे तत्व."

"प्रोग्रॅममध्ये फक्त कमांडच असू शकतात."

"एखाद्या अपार्टमेंटमधल्या एका खोलीची कल्पना कर. ती नुसतीच खोली अस्तित्वात असू शकत नाही. ती एका अपार्टमेंटचा भाग असते. एखादी नुसतीच अपार्टमेंट अस्तित्वात असू शकत नाही. ती एका इमारतीचा भाग असते.”

"दुसऱ्या शब्दांत, आपण असे म्हणू शकतो की इमारत अपार्टमेंटमध्ये विभागलेली असते आणि अपार्टमेंट खोल्यांमध्ये विभागलेली असते."

"आत्तापर्यंतचे सगळे समजले."

"कमांड म्हणजे एका खोलीसारखी असते. जावा प्रोग्रॅमिंग भाषेमध्ये, एखादी कमांड नुसतीच असू शकत नाही. ती एका फंक्शनचा भाग असते(जावामध्ये 'फंक्शन्सना' 'मेथड्स' असेसुद्धा म्हणतात). मेथड एका क्लासचा भाग असते. दुसऱ्या शब्दात, क्लास मेथड्समध्ये विभागलेला असतो आणि मेथड्स कमांडमध्ये विभागलेल्या असतात."

"म्हणजे क्लास ही अपार्टमेंटची इमारत आहे, फंक्शन/मेथड ही अपार्टमेंट आहे, आणि कमांड म्हणजे एक खोली आहे. मला कळले बरोबर?"

"हो, अगदी बरोबर."

नीरजने ऋषीकडे आदरयुक्त आश्चर्याने पाहिले. हा मानव त्याला प्रोग्रॅमिंग भाषेच्या मूलभूत गोष्टी दैवी जावा भाषा वापरून शिकवत होता! आणि नीरजच्या लक्षात आले की (त्याने स्वत:च अंदाज केला!) प्रोग्रॅम क्लासेसचा बनलेला असतो, क्लासेस मेथड्सचे, आणि मेथड्स कमांडच्या!

नीरजला अजून त्याची का गरज आहे ते कळले नव्हते, पण त्याला ही खात्री होती की त्याचे ज्ञान त्याला या ग्रहावरचा सर्वांत ताकदवान यंत्रमानव बनवेल.

तोवर, ऋषी पुढे सांगू लागला:

"जावामधले प्रोग्रॅम क्लासेसपासून बनलेले असतात. असे लाखो क्लासेस असू शकतात. प्रोग्रॅममध्ये कमीत कमी एक क्लास असतो. प्रत्येक क्लाससाठी एक स्वतंत्र फाईल तयार केली जाते. त्या फाईलचे नाव आणि क्लासचे नाव सारखेच असते."

"समज तू घराचे वर्णन करणारा एक क्लास तयार करायचे ठरवलेस. तर तुला होम क्लास तयार करावा लागेल आणि तो Home.java या फाईलमध्ये सेव्ह केला जाईल.

"जर तुला प्रोग्रॅममध्ये मांजराचे वर्णन करायचे असेल, तर तुला Cat.java फाईल तयार करावी लागेल आणि त्यात Cat क्लास डीक्लेअर करावा लागेल."

"फाईलमध्ये जावा प्रोग्रॅमिंग भाषेत लिहिलेला कोड(मजकूर) असतो. सामान्यपणे एका क्लासच्या कोडमध्ये 'क्लासचे नाव' आणि 'क्लासची बॉडी(मुख्य भाग)' असते. क्लासची बॉडी महिरपी कंसात लिहीली जाते. Home क्लास (फाईल Home.java) असा दिसला पाहिजे:”

public class Home
{


क्लासची बॉडी



}

"मला इथेपर्यंतचे समजले."

"छान. चला मग पुढे. क्लास बॉडीमध्ये व्हेरीएबल्स(त्यांना डेटा असेही म्हणतात)आणि मेथड्स('फंक्शन्स') असू शकतात."

public class Home
{
    व्हेरीएबल ए


    व्हेरीएबल झेड



मेथड 1




मेथड एन


}

"तू मला कृपया एक उदाहरण देशील का?"

"उदाहरण? अर्थातच!"

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 व्हेरीएबल आहेत, आणि मेन आणि पाय मेथड्स आहेत का?"

"हो."

"व्हेरीएबल नसलेले क्लास असू शकतात का?"

"हो."

"आणि मेथड नसलेले?"

"हो. पण प्रोग्रॅम रन होण्यासाठी प्रोग्रॅममध्ये कमीत कमी एक क्लास असायला हवा आणि त्यात किमान एक मेथड/फंक्शन असायला हवे. या मेथडला 'मेन' असे नाव द्यावे लागते. कमीत कमी लिहिलेला प्रोग्रॅम असा दिसतो:"

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

"मला इथे होम क्लास दिसतो आहे. मला 'मेन' मेथड दिसते आहे, पण कमांड कुठे आहेत?"

"कमीत कमी लिहिलेल्या प्रोग्रॅममध्ये काहीही कमांड नसतात. म्हणूनच त्याला 'कमीत कमी लिहिलेला' असे म्हणतात."

"बरं."

"प्रोग्रॅम सुरू करणाऱ्या क्लासचे कोणतेही नाव असले तरी चालते, पण प्रोग्रॅम सुरू करणारी 'मेन' मेथड नेहमी सारखीच दिसावी लागते:"

public class Home
{
   //न बदलता येणारा भाग
   public static void main(String[] args)
   {


मेथडचा कोड



   }
}

"मला वाटते मला सगळे कळले आहे. निदान, आत्ता मला तसे वाटते आहे."

"छान. चल, मग आपण थोडीशी विश्रांती घेऊ. कॉफी प्यायची का?"

"यंत्रमानव कॉफी पित नाहीत. पाण्यामुळे आम्हाला लवकर गंज चढतो."

"तुम्ही काय पिता मग?"

"बीअर, व्हिस्की, 100-वर्षे-जुने अल्कोहोल."

"मग तर अजून चांगले आहे. मग आपण थोडी बीअर घ्यायची का?"