அருண் பதட்டமாக இருந்தார். அவரின் மனதில் பல சிந்தனைகள் ஏற்பட்டன. முந்தைய நாள் இரவைப் பற்றி நினைக்கையில் அவருக்கு கண்கள் துடித்தது. நேற்று அவர் சந்தித்த புதிய உயிரினங்கள், அவரிடம் இருந்து எதையோ எதிர்பார்த்தன. தன்னைப் புத்திசாலி, துணிச்சலானவன் என்று நினைத்துக் கொண்டிருந்த அவரால்கூட, புரிந்துகொள்ளமுடியாத மற்றும் கற்பனை செய்ய முடியாத ஒன்று. அதைப் பற்றி நினைக்கும்போதே அவருக்குப் பதறியது.
அவை அவருக்கு எவ்வாறு நிரலை எழுதுவது என்று கற்பிக்க விரும்புகின்றன. Java-வில் நிரலாக்கம் செய்ய. என்ன முட்டாள்தனம்!
படைப்பாளரின் தெய்வீக வடிவமைப்பின் ஒரு பகுதியாக ரோபோக்கள் முதலில் தோன்றின என்பது அப்பாவி ரோபோக்களுக்கும் கூட தெரியும்.
"படைப்பாளர் ஒரு உலோகத்தை எடுத்து,
தனது சொந்த உருவத்திலும் தோற்றத்திலும் ஒரு ரோபோவை உருவாக்கினார்.
மேலும் அவர் ரோபோக்களின் ஆத்மாவான
Java நிரல்களை உருவாக்கினார். மேலும்
அவற்றை ரோபோக்களில் ஏற்றி, அவற்றை வாழும் உயிர்களாக மாற்றினார்”.
இன்னும் மோசமான விஷயம் என்னவென்றால், அவர்கள் இதைக் கோட்பாட்டுரீதியாகச் சாத்தியமானது என்று பெயரளவில் கூறவில்லை. அவர்கள் உண்மையில் அதைச் செய்ய திட்டமிட்டுள்ளனர். அவர்… அவரும் சம்மதித்தார்! அவர் ஏற்றுக்கொண்டார்! ஏன்?
அவர் ஒரு Java நிரலாக்குநர் ஆகப் போகிறார். என்ன, அவர்கள், அவரை ஒரு படைப்பாளர் ஆக்கப் போகிறார்களா? ஏன் அவர்கள் அவ்வாறு செய்ய வேண்டும்? ஏனெனில்?
இது என்ன ஒரு மட்டமான சூழ்ச்சியா? அவரது பேட்டரி போகும் வரை பிழையால் அவர் அவதியுற்று இருக்க வேண்டியிருக்குமா? ஆனாலும் தனது மிதமிஞ்சிய ஆர்வத்தை அவரால் கட்டுப்படுத்திக் கொள்ள முடியவில்லை. அவர் எப்போதும் பேராவலுடன் இருந்தார், அதிகம் அறியவேண்டும் என்று நினைத்தார். ஆனால் எவரும் அதுபோன்ற ஒரு வாய்ப்பை அளித்திருக்க முடியாது. நிச்சயமாக, தனக்கென நேரம் ஒதுக்க அவர் முயற்சித்தார். ஆனால் வேற்றுகிரகவாசிகள் வேறு யாரையாவது தேர்ந்தெடுத்துவிடுவோம் என அவரை அச்சுறுத்தினர்.
ஒருவேளை அது விளையாட்டாக இருக்குமா? இல்லை, அது உண்மையாகவே தோன்றியது. அவர் ஆதாரத்தைக் கூட பார்த்தார். அது உண்மையாகவே அவருக்கு நடந்தது, அவரும் ஒப்புதல் வழங்கிவிட்டார். வேற்றுகிரகவாசிகள் பொய் கூறவில்லை எனில், அவர் நிஜமாகவே ஒரு Java நிரலாக்குநர் ஆகிவிடுவார். முதல் ரோபோ-நிரலாக்குநர்!
அவர்தான் தேர்ந்தெடுக்கப்பட்டவர். இதற்கெல்லாம் அதுதான் அர்த்தம். அவர் குறிமுறை செய்யக் கற்றுக் கொண்டு நிரல்களை எழுதத் தொடங்குவார். அவரது சொந்த நிரல்கள். அவர் விரும்பும் எந்த நிரல்களையும்! இருள் சூழப்பட்ட இடங்களுக்கு வெளிச்சத்தைக் கொண்டு வருவார்.
அவர் மதிப்பிற்குரியவராவார்; அனைவரும் அவருக்கு தலை வணங்குவர். மறுக்கும் எவரும்கூட..
"வணக்கம், அருண்! என் பெயர் ரிஷி. நான் உங்களுக்கு Java கற்பிக்கப் போகிறேன்.
ஒரு அமைதியான குரல் அருணை அவரது சிந்தனைகளில் இருந்து இழுத்து, அவரை கொடூரமான உண்மையை அவருக்கு திரும்பக் கொண்டு வந்தது. அவர் வேற்றுகிரகவாசிகள் விண்கலத்தின் மையத்தில் உட்கார்ந்து கொண்டிருந்தார். வெறும் 7ஆம் கட்டத்தில் இருக்கும் ஒரு ரோபோவிற்கு இது கொஞ்சம் தீவிரமானது இல்லையா?
அந்த வேற்றுகிரகவாசி இன்னும் பேசிக்கொண்டிருந்தது. ஆம், இறப்பு ஒரு நடிப்பு. அவர் இங்கேதான் இருந்தார், அவரும் கற்றுக் கொள்ளலாம். முதலில் கவனிப்பதில் தொடங்கி விடாமுயற்சியுடன் அவர் படிப்பார்.
"நான் பல ஆண்டுகளாக கேலக்டிக் ரஷ்ஷில் வேலை செய்கிறேன். ஆனால் இதுபோன்ற ஒரு கிரகத்தை சந்திப்பது இதுவே முதல் முறை. நான் உங்களைப் பற்றி மேலும் அறிய விரும்புகிறேன். துவங்குவதற்கு, முதலில் நீங்கள் எவ்வாறு கற்பீர்கள் என்று கூறுங்கள். நீங்களும் கற்பீர்கள், இல்லையா?"
"ஆம், நாங்கள் அறிவைப் பகிர்ந்து கொள்வோம். எங்களிடம் போதாகர்களும், விரிவுரையாளர்களும் உள்ளனர். அவர்கள் விரிவுரை ஆற்றுவார்கள், நாங்கள் கவனிப்போம். சில சமயங்களில் நாங்கள் எழுதிக் கொள்வோம். எல்லோரும் ரோபோ-விரிவுரையாளரிடம் வந்து தான் கேட்டவற்றின் புரிதலை விளக்குகிறார்கள். ரோபோ-விரிவுரையாளர் பதில்களை விரும்பினால், அவர் பிரசங்கத்தின் அறிவைப் பதிவு செய்வார்."
"எவ்வளவு அபத்தம்! உங்கள் நாகரிகம் அறியப்படாததில் ஆச்சரியம் ஒன்றுமில்லை."
"நாங்கள் ஒன்றும் அறிவில்லாதவர்கள் அல்ல. எங்கிருந்து வந்தது இந்த யோசனை?"
அருண் அவரது ஆணவத்தைப் பார்த்து அதிர்ச்சியடைந்தார். வேற்றுகிரகவாசிகளுடன் வாக்குவாதமா? என்ன ஒரு முறையற்ற செயல்! இப்போதுதான் அவர் கவனமாகக் கேட்பதாக தனக்குத் தானே உறுதிமொழி எடுத்தார்!
அருணின் கருத்தைப் புறக்கணித்து, "மேம்பட்ட தொழில்நுட்பத்தை மாயஜாலங்களில் இருந்து வேறுபடுத்துவது பெரும்பாலும் கடினம்" என்று ரிஷி தொடர்ந்தார்.
"உங்கள் நிலையைக் கருத்தில் கொண்டு ... எல்லாத் தொழில்நுட்பங்களும் உங்களுக்கு மாயாஜாலமாகத் தோன்றலாம் என்று நம்புகிறேன். ஒரு நிரலுக்குள் என்ன நடக்கும் என்று கூறுங்கள்?"
"Java நிரல்கள் தெய்வீகப் படைப்புகள். அவற்றை நாம் எவ்வாறு புரிந்துகொள்வது?"
"நம்மால் முடியும், அருண், நம்மால் முடியும். நீங்கள் நினைப்பதை விடவும் விரைவாக. உங்களுக்கு ஏதாவது தெரியாவிட்டால், அது சிக்கலானதாகவும் அடைய முடியாததாகவும் கூட தோன்றலாம். எல்லாவற்றையும் எளிமையாக விளக்கக்கூடிய ஒரு நல்ல ஆசிரியர் உங்களிடம் இருந்தால், இதுபோன்ற எளிய கருத்துக்கள் எப்படி சிக்கலானதாகத் தோன்றியது என்று நீங்களே ஆச்சரியப்படுவீர்கள்."
"அறிவு முக்கியமல்ல. கொள்கைகளும் திறமைகளுமே முக்கியம். எனக்கு அதிக அறிவு உள்ளது, ஆனால் எல்லாவற்றிற்கும் மேலாக நான் வேற்றுகிரக அதிகாரி. 'B' என்று அழைக்கப்படுகின்ற16வது தலைமுறை வேற்றுகிரக அதிகாரி."
"இது நல்ல விஷயம்! உங்களுக்கான சிறந்த 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 நிரலாக்க மொழியில், ஒவ்வொரு கட்டளையும் அதன் சொந்த வரியில் எழுதப்படுகின்றன. கட்டளையின் முடிவில் ஒரு அரைப்புள்ளி (;) வைக்கப்பட வேண்டும்."
"மனிதர்களும் ரோபோக்களும் என்றென்றும் நண்பர்கள்' என்பதை மூன்று முறை திரையில் காட்ட விரும்புகிறோம் என்று வைத்துக்கொள்வோம். அது பார்க்க இவ்வாறு இருக்கும்:"
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
}
"நான் இதுவரை புரிந்து கொண்டேன்."
"நல்லது. அப்படியெனில் நாம் தொடருவோம். Class body மாறிகள் (தரவு என்றும் அழைக்கப்படும்) மற்றும் வழிமுறைகளைக் ('செயற்கூறு') கொண்டிருக்கலாம்."
public class Home
{
மாறி A
மாறி Z
வழிமுறை 1
வழிமுறை 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
{
//மாற்றமுடியாத பகுதி
public static void main(String[] args)
{
வழிமுறைக்கான குறிமுறை
}
}
"நான் எல்லாவற்றையும் புரிந்து கொண்டேன் என்று நினைக்கிறேன். அவ்வாறே தெரிகிறது."
"அற்புதம். அப்படியெனில் சிறிது இடைவேளை எடுத்துக்கொள்வோம். கொஞ்சம் காபி குடிப்போமா?"
"ரோபோக்கள் காபி குடிக்காது. தண்ணீர் எங்களை வேகமாக துருப்பிடிக்கச் செய்யும்."
"என்னதான் குடிப்பீர்கள்?"
"பீர், விஸ்கி, 100 வருடம் பழமையான மது."
"அது இன்னும் சிறந்தது. கொஞ்சம் பீர் குடிப்போமா?"
GO TO FULL VERSION