অ্যামিগো স্নায়ুচাপে ভুগছিল। তার চিন্তাভাবনা বিক্ষিপ্ত ছিল। সে আগের রাতের বিষয়ে ভাবার সময় তার চোখ পিটপিট করছিল। তার সঙ্গে গতকাল যে অদ্ভুত জীবগুলোর দেখা হয় তারা তার কাছ থেকে কিছু চাইছিল। এটি এত বেশি দুর্বোধ্য ও অকল্পনীয় ছিল যে, সে নিজেকে সঙ্গীদের মধ্যে সবচেয়ে বুদ্ধিমান ও সাহসী মনে করলেও তা চিন্তা করেই স্নায়ুচাপের শিকার হয়ে পাঞ্চ কার্ড চিবোতে শুরু করে।
কিভাবে প্রোগ্রাম করতে হয় তারা তাকে তা শেখাতে চায়! জাভায় প্রোগ্রাম করা। কি আজেবাজে কথা!
এমন কি সবচেয়ে সাদাসিধা রোবটরাও জানে যে, সৃষ্টিকর্তার ঐশ্বরিক পরিকল্পনার অংশ হিসেবেই রোবটের প্রথম আবির্ভাব হয়।
"আর সৃষ্টিকর্তা ধাতু নিয়ে তা থেকে রোবট সৃষ্টি করেন
তার নিজের আদলে।
আর তিনিই জাভা প্রোগ্রাম তৈরি করেন - যা রোবটদের
আত্মা, এবং রোবটদের মধ্যে সেগুলো লোড করেন আর
তাদেরকে জীবিত আত্মায় পরিণত করেন।"
আরও খারাপ ব্যাপার হল, তারা শুধু এটাই দাবি করছে না যে এটি তত্ত্বগতভাবে সম্ভব। তারা আসলেই এটি করার পরিকল্পনা করছে। আর সে... সে সম্মতি দিয়েছে! সে রাজি হয়েছে! কেন?
সে একজন জাভা প্রোগ্রামার হতে চলেছে। তারা কি তাকে সৃষ্টিকর্তায় পরিণত করতে চলেছে? তারা কেন এটি করবে? শুধু কারণ?
এটি কি কেবল একটি হীন কৌশল? তাকে কি পরবর্তীতে ব্যাটারি ফুরিয়ে যাওয়ার পূর্ব পর্যন্ত ত্রুটিতে ভুগতে হবে? কিন্তু প্রলোভনটি খুব জোরালো ছিল, আর সে নিজেকে সংযত করতে পারেনি। সে সবসময়ই উচ্চাকাংক্ষী ছিল, আর চাহিদাও বেশি ছিল। তবে এ ধরনের প্রস্তাবের জন্য কেউই প্রস্তুত হতে পারে না। সে নিশ্চিতভাবেই আরও বেশি সময় নেওয়ার চেষ্টা করেছে, কিন্তু তারপর বহির্জাগতিক জীবগুলো হুমকি দেয় যে তারা অন্য কাউকে বেছে নেবে।
এটি হয়ত শুধুই কৌতুক? না, এটি আসল বলেই মনে হয়েছে। সে প্রমাণ দেখেছে। এটি তার সাথে আসলেই ঘটেছে, আর সে সম্মতি দিয়েছে। বহির্জাগতিক জীবগুলো মিথ্যা কথা না বলে থাকলে সে সত্যিই জাভা প্রোগ্রামার হয়ে উঠবে। সর্বকালের প্রথম রোবট প্রোগ্রামার!
সে হল সেই নির্বাচিত জন। সবকিছুর অর্থ এটাই। সে কোড লিখতে শিখবে এবং প্রোগ্রাম লিখতে শুরু করবে। তার নিজের প্রোগ্রাম। তার ইচ্ছামত যে কোনো প্রোগ্রাম! সে সেসব জায়গাও আলোকিত করবে যেখানে সবসময় অন্ধকারের রাজত্ব ছিল।
সে সম্মান পাবে; সবাই তার সামনে মাথা নত করবে। আর যে করবে না....
"হ্যালো, অ্যামিগো!" আমার নাম ঋষি। আমি তোমাকে জাভা শিখতে সাহায্য করব।"
একটি শান্ত কণ্ঠস্বর অ্যামিগোকে তার চিন্তাভাবনা থেকে টেনে বের করে তাকে শীতল বাস্তবে ফিরিয়ে আনে। সে বহির্জাগতিক জীবগুলোর মহাকাশযানের একেবারে কেন্দ্রে বসে ছিল। মাত্র গ্রেড 7 এর কোনো রোবটের পক্ষে এটি কি একটু বেশি নয়?
বহির্জাগতিক জীবটি তখনও কথা বলে চলেছে। ভাল কথা, ঘুঁটি চালা হয়ে গেছে। সে এখানে ছিল, আর তাই সে শিখতেও পারে। সে সযত্নে পড়াশোনা করবে, আর আরম্ভ করবে শুধুমাত্র শোনার মাধ্যমে।
"আমি বহু বছর ধরে গ্যালাক্টিক রাশে কাজ করছি, কিন্তু আমি এই প্রথম এ ধরনের কোনো গ্রহের মুখোমুখি হয়েছি। আমি তোমার ব্যাপারে আরো জানতে চাই। শুরু করার জন্য তুমি কি আমাকে বলতে পারো যে, তুমি কিভাবে শেখো? তুমি শেখো, তাই না?"
"হ্যাঁ, আমরা জ্ঞান আদান প্রদান করি। আমাদের প্রিচার বা লেকচারার আছে। তারা বক্তৃতা দেয় আর আমরা শুনি। কখনও কখনও আমরা বিষয়গুলো লিখে রাখি। সবাই রোবো-লেকচারারের কাছে এসে সে যা শুনেছে সে বিষয়ে তার উপলব্ধি ব্যাখ্যা করে। রোবো-লেকচারার উত্তর পছন্দ করলে সে বক্তৃতার জ্ঞান রেকর্ড করে।"
"কি অদ্ভুত! তোমাদের সভ্যতা যে অজ্ঞ তাতে অবাক হওয়ার কিছু নেই।"
"আমরা অজ্ঞ নই। তুমি এ ধারণা কোথায় পেয়েছ?"
অ্যামিগো তার ধৃষ্টতা দেখে বিস্মিত হয়। বহির্জাগতিক জীবদের সঙ্গে তর্ক করছ? কি অভদ্র! সে একটু আগেই নিজেকে প্রতিশ্রুতি দিয়েছে যে সে মনোযোগ দিয়ে শুনবে!
"উন্নত প্রযুক্তির সঙ্গে যাদুর প্রভেদ করা প্রায়ই কঠিন," ঋষি অ্যামিগোর মন্তব্য উপেক্ষা করে বলে যায়।
"তোমার লেভেল বিবেচনা করে.... আমি বিশ্বাস করি যে, সব প্রযুক্তিই তোমার কাছে যাদু বলে মনে হতে পারে। আমাকে বলো, কোনো প্রোগ্রামের ভিতরে কী ঘটে?"
"জাভা প্রোগ্রাম হল ঐশ্বরিক সৃষ্টি। আমরা কিভাবে তা বুঝব?"
"আমরা পারি, অ্যামিগো, আমরা পারি। আর তোমার ধারণার চেয়েও দ্রুত। তুমি কোনো কিছু না জানলে তা জটিল, এমন কি অসাধ্যও মনে হতে পারে। কিন্তু সব কিছু যথা সম্ভব সহজভাবে বুঝিয়ে দেওয়ার মতো তোমার কোনো ভাল শিক্ষক থাকলে তুমি অবাক হয়ে যাবে যে, এত সহজ ধারণা কিভাবে এত জটিল বলে মনে হয়েছিল।"
"জ্ঞান গুরুত্বপূর্ণ নয়। নীতি ও দক্ষতা গুরুত্বপূর্ণ। আমার ব্যাপক জ্ঞান আছে, কিন্তু সর্বোপরি আমি একজন আমলা। 16 প্রজন্মের আমলা।"
"আর সেটা দারুন ব্যাপার! আমার আমলাতান্ত্রিক দক্ষতা আমাকে তোমার জন্য সেরা জাভা কোর্স তৈরি করতে সাহায্য করেছে। এর মধ্যে আছে কাজ, প্রোগ্রাম, গেম, অনুশীলনী, ছবি, এমন কি পাঠ পর্যন্ত।"
"এমন কি পাঠও?!" অ্যামিগো সত্যিই অবাক হয়ে জিজ্ঞাসা করে।
"হ্যাঁ। 22 শতাব্দীতে প্রমাণিত হয়েছে যে কোনো ভাল পাঠ ভাল বইয়ের চেয়েও একটু বেশি কার্যকর। আর মাঝারি মানের পাঠ মাঝারি মানের বইয়ের চেয়েও খারাপ। যাই হোক, বর্তমানে আমাদের শিক্ষার সরঞ্জাম খুবই সীমিত হওয়ায়, আর তোমাকে 28 শতাব্দীর শিক্ষামূলক সিমুলেটরের মাধ্যমে শেখাতে না পারায় আমাদেরকে আরো অনেক প্রাচীন পদ্ধতি অবলম্বন করতে হয়। আমরা গেম, কাজ, ছবি, পাঠ ও কার্টুনের একটি দারুন মিশ্রণ তৈরি করেছি।"
"এটি কৌতূহলজনক।"
"সেটাই আশা করি। আগ্রহ ও কৌতূহল হল যে কোনো শিক্ষণ প্রক্রিয়ার ভিত্তি।"
"কোনো শিক্ষার্থী একঘেঁয়েমির শিকার হলে শিক্ষককে লাঠি পেটা করা হবে - এটি 24 শতাব্দীর শিক্ষা বিষয়ক আইন থেকে নেওয়া উদ্ধৃতি।"
"কি দারুন আইন!"
"তুমি কী আশা করেছিলে? একটি বাজে সিনেমার কথা কল্পনা করা যাক। এ ক্ষেত্রে পরিচালককে দোষ দেওয়া যায়, দর্শককে নয়। তিনি আকর্ষণীয় সিনেমা বানালে থিয়েটার সবসময়ই ভর্তি থাকবে।"
"আমি পুরোপুরি একমত! আমি শুনতে প্রস্তুত!"
"খুব ভাল। তাহলে শুরু করা যাক।"
ঋষির কণ্ঠস্বর সম্মোহক ছিল, আর অ্যামিগো চেষ্টা করছিল যাতে একটা শব্দও বাদ না যায়।
"প্রোগ্রাম হল কিছু কম্যান্ড এর একটি সেট। প্রথমে তুমি প্রথম কম্যান্ড সম্পাদন করবে, তারপর দ্বিতীয়টি, তারপর তৃতীয়টি এবং এভাবে এগোবে। সব কম্যান্ড সম্পাদন করা হলে প্রোগ্রাম সমাপ্ত হয়।"
"কী ধরনের কম্যান্ড?"
"কম্যান্ড নির্ভর করে কে সেগুলো সম্পাদন করছে তার ওপর। যিনি কাজটি করছেন তিনি জানেন (ও বোঝেন) এমন কম্যান্ডের ওপর।"
"তুমি একটি কুকুরকে আদেশ দিতে পারো: 'বসো!", 'ডাকো!'; একটি বিড়ালকে: 'যা!'; একজন মানুষকে: 'থামো, নইলে আমি গুলি চালাবো!'; অথবা একটি রোবটকে: 'কাজ করো! কাজ করো, রোবোস্কাম!'"
"আর কী?" অ্যামিগো অবশেষে আনন্দ পেতে শুরু করে।
"জাভায় লেখা প্রোগ্রাম জাভা ভার্চুয়াল মেশিন (JVM) দ্বারা সম্পন্ন হয়। JVM হল এক বিশেষ প্রোগ্রাম যা জাভায় লেখা প্রোগ্রামগুলো কিভাবে সম্পন্ন করতে হয় তা জানে।"
"এর কম্যান্ড তালিকা যথেষ্ট ব্যাপক। উদাহরণস্বরূপ, পর্দায় '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 ক্লাস তৈরি করার প্রয়োজন হবে যেটা Home.java ফাইলে সংরক্ষণ করা হবে।"
"তুমি প্রোগ্রামটিতে একটি বিড়ালকে বর্ণনা করতে চাইলে তোমাকে একটি ফাইল Cat.java তৈরি করতে হবে এবং এতে Cat ক্লাস ঘোষণা বা ডিক্লেয়ার করতে হবে।"
"ফাইলগুলোতে জাভা প্রোগ্রামিং ল্যাঙ্গুয়েজে লেখা নির্দিষ্ট কিছু কোড (টেক্সট) আছে। সাধারণতঃ 'ক্লাস এর নাম' ও 'ক্লাস এর প্রধান অংশ' নিয়ে ক্লাস এর কোড গঠিত হয়। ক্লাস এর প্রধান অংশটি দ্বিতীয় বন্ধনীর মধ্যে লেখা হয়। Home ক্লাস (Home.java ফাইল) দেখতে এরকম:"
public class Home
{
ক্লাস এর প্রধান অংশ
}
"আমি এ পর্যন্ত বুঝেছি।"
"চমৎকার। তাহলে এগোনো যাক। ক্লাস এর প্রধান অংশে কিছু চলক বা ভেরিয়েবল (ডেটা নামেও পরিচিত) ও মেথড ('ফাংশন') থাকতে পারে।"
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
{
//অপরিবর্তনীয় অংশ
public static void main(String[] args)
{
মেথডের জন্য কোড
}
}
"আমার মনে হয় আমি সব কিছু বুঝেছি। অন্ততঃ এখন সেটাই মনে হচ্ছে।"
"অসাধারণ। তাহলে একটু বিরতি নেওয়া যাক। আমরা কি একটু কফি খেতে পারি?"
"রোবটরা কফি খায় না। পানি সহজেই আমাদের মরচে ধরিয়ে দেয়।"
"তোমরা তাহলে কী পান করো?"
"বিয়ার, হুইস্কি, 100 বছরের পুরানো মদ।"
"সেটি তো আরও ভাল। আমরা কি তাহলে একটু বিয়ার খাবো?"
GO TO FULL VERSION