Tuesday, February 17, 2009

যন্ত্র গণকের যন্তর মন্তর - ২

করিম সাহেবের জাম্বুরা কেনা

করিম সাহেব বাজারে গিয়েছেন জাম্বুরা কিনতে। দোকানী এক গাদা জাম্বুরা সাজিয়ে বসে আছে, সবগুলো দেখতে একই আকারের লাগছে। কিন্তু জাম্বুরা কিনে কিনে চুল পাকানো করিম সাহেব ভালো করেই জানেন, জাম্বুরা যত ভারী হবে, ততো তার স্বাদ ভালো, মজা বেশি।

প্রশ্ন হলো, করিম সাহেব কী করে একগাদা জাম্বুরা থেকে সবচেয়ে ভারীটি বের করবেন।


পাঠ ২

কম্পিউটার প্রোগ্রামিং এ এরকম সমস্যা প্রায়ই আসে, একটা তালিকা থেকে সবচেয়ে বেশি বা কম বা এরকম কিছু একটাকে খুঁজে বের করতে হবে। ধরা যাক, ১০০টা সংখ্যা দেয়া আছে, তার থেকে সবচেয়ে বড় সংখ্যাটা বের করতে হবে।

বিশাল সমস্যা! বেকুব কম্পিউটারকে পুরাটা একবারে দিলে লেজে-গোবরে করে ফেলবে। আসুন, প্রথমে সমস্যাটাকে ছোট করে ফেলি।


১টা যদি সংখ্যা হয়, তাহলে তো আর ঝামেলা নাই। যেটা আছে, সেটাই সবচেয়ে বড়। কাজ শেষ।

২টা যদি সংখ্যা হয়, তাহলে তাদের তুলনা করলেই পাবো কোনটা বড়। সংখ্যা দুইটা ডানহাত ও বামহাত – এই দুই জায়গায় নিয়ে বুঝতে পারি কোনটা বড়। করিম সাহেবের সমস্যায় যদি ফেরত যাই, তাহলে করিম সাহেব দুইটা জাম্বুরা দুই হাতে নিয়ে বুঝতে পারবেন সহজেই কোনটা ভারি।


এখন যদি দুই এর বেশি হয়, ধরা যাক ৩টা, তাহলে? সেটাও সহজ, প্রথমে করিম সাহেব প্রথম দুইটা জাম্বুরা দুই হাতে নিলেন, ধরা যাক ডান হাতেরটা ভারি। তখন বাম হাতেরটা ফেলে ৩য় জাম্বুরাটা বাম হাতে নিলেন, দেখতে চেষ্টা করলেন কোনটা ভারি। ডান হাতে আছে প্রথম দুইটার মধ্যের ভারিটা, আর বাম হাতে অন্যটা, এর মধ্যে যেইটা ভারি হবে, সেটাই ৩টা জাম্বুরার সবচেয়ে ভারিটা।

এই কাজটাকে একটু সাংকেতিক ভাবে এভাবে লেখা যায়, ধরাযাক সংখ্যাগুলো আছে x, y, z এই তিনটা নামে,

যদি X ও Y এর মধ্যে x বড় হয়, তাহলে x ও z এর মধ্যে যেটা বড়, সেটাই বৃহত্তম,

অন্যথায় যদি

X ও Y এর মধ্যে Y বড় হয়, তাহলে y ও z এর মধ্যে যেটা বড়, সেটাই বৃহত্তম।

এই কথাটাই যেকোনো প্রোগ্রামিং ভাষায় লেখা যায়, যেমন ধরুন C ভাষায় লেখা যায় –


if (x>y) { // যদি
if (x>z) largest = x

else largest = z;

} else {

if (y>z) largest = y;

else largest = z;

}

দুর্বোধ্য লাগছে? আসলেই ... এই জিনিষটাকে আরো সংক্ষেপে খুব সহজেই লিখতে পারি এইভাবে -


if x>y largest = x else largest =y;

if z>largest then largest = z;


মানে তিনটা সংখ্যার প্রথম দুইটার মধ্যে বড় যেটা, সেটার সাথে পরেরটার তুলনা করে যেটাকে বড় পাবো, সেটাই সবচেয়ে বড়।

আচ্ছা, ৩টা সংখ্যার মধ্যে না হয় এই দুই লাইনে বের করা গেলো বড় সংখ্যাটি। কিন্তু যদি ৩টার যায়গায় ৩০০ বা ১কোটি সংখ্যা থাকে? করিম সাহেবের কথাই ধরা যাক, ঝুড়িতে যদি ৫০টি জাম্বুরা থাকে, তাহলে কী করবেন তিনি?

মূলনীতিটা কিন্তু একই থাকছে, কাজেই এভাবে আগানো যেতে পারে,

শুরুতে কোনটা ভারী, তা করিম সাহেব জানেননা, তাই তিনি আন্দাজে একটা বেছে নিয়ে ধরলেন সেইটাই সবচেয়ে ভারী। ঐ জাম্বুরাটাকে নিয়ে রাখলেন ডানহাতে।

এবার ঝুড়ি থেকে একটা একটা জাম্বুরা বাম হাতে নেন, আর দেখেন ডান হাতেরটার চেয়ে এই নতুনটা ভারী কি না।

যদি ভারী হয়, তাহলে কথাই নেই, ডান হাতেরটাকে অন্য কোথাও রেখে দিয়ে ডান হাতে পাচার করে দেন বা হাত থেকে নতুন ভারী জাম্বুরাটি।

এভাবে একটা একটা করে ঝুড়ির সবগুলো দেখা হয়ে গেলে সব শেষে করিম সাহেবের ডান হাতে যা থাকছে, সেটাই ঝুড়ির সবচেয়ে ভারী জাম্বুরা।


এবার বেকুব কম্পিউটারকে এরকম ব্যাপার কীভাবে সাংকেতিক উপায়ে বোঝানো যায়, তার একটা রূপরেখা দেখা যাক। ধরাযাক, ১০০টি জাম্বুরা আছে, যাদের নম্বর দেয়া হলো ০ থেকে ৯৯ পর্যন্ত (কম্পিউটার বিজ্ঞানীরা আবার ০ থেকে গোণা শুরু করে)। আর জাম্বুরা গুলোর ওজন ধরা যাক আছে weight[0] থেকে weight[99] এভাবে।

আমাদের কাজ হবে বেকুব কম্পিউটারকে বোঝানো, ১০০টি জিনিষের মধ্যে সবচেয়ে ভারী কোনটা, সেটার ক্রমিক নম্বরটি আমাদের জানানোর কৌশল।

শুরুতে, ধরে নেই প্রথমটি সবচেয়ে ভারী।

heaviest = 0 ; (প্রথমটির ক্রমিক নং হলো ০ )

আর সবচেয়ে ভারী জাম্বুরাটির ওজন আমরা মনে রাখবো max_weight নামে, প্রথমে যেহেতু ধরেছি শুরুর জাম্বুরার ওজন বেশি, তাই সেটার ওজনকেই এখানে মনে রাখি।

max_weight = weight[0];

এবার এক এক করে বাকি গুলোকে পরীক্ষা করি, দেখি এই max_weight এর বেশি পাই কি না

(আমরা একটা একটা করে না লিখে বেকুব কম্পিউটার যেইটা ভালো পারে, সেই পুনরাবৃত্তি তথা লুপের মাধ্যমে করা যায়। সংখ্যা যেহেতু ১০০টি, কাজেই আমাদের অত বার মাপামাপির কাজ করলেই চলবে। এই জন্য কম্পিউটারকে নির্দেশ দেয়া যাক, ১০০ বার সে একটা করে ওজন তুলুক, তার পর দেখুক এইটা আগের চেয়ে ভারী কি না)


for (i = 1; i<100;> এখন কোনটা নিয়ে কাজ করা হচ্ছে, তা i এর মধ্যে রাখবো, আর প্রতি বার লুপের ভিতরের কাজ শেষ হলে ১ করে বাড়াবো। প্রথমটা (০তম) তো দেখেই ফেলেছি, তাই এখন দ্বিতীয়টা, মানে ক্রমিক নং ১থেকে ৯৯ পর্যন্ত বাকি ৯৯টা নিয়ে দেখলেই চলবে)
if (weight[i]>max_weight){ // আগের ওজনদার-তম জাম্বুরার চাইতে এই নতুনটা ভারী কি?
heaviest = i;
max_weight=weight[i]

}
(তাহলে এই নতুনটাই সবচেয়ে ভারী)
(ঐটার ওজনটা মনে রেখে দিলাম)

ব্যস, এই কাজটুকু শেষ ওজন পর্যন্ত করে গেলেই সব শেষে heaviest এর মধ্যে পাবো সবচে ভারী জাম্বুরাটির ক্রমিক নম্বর, আর তার ওজন পাবো max_weight এর মধ্যে।

---

সুতরাং, আজকের পাঠে আমরা দেখতে পেলাম, ভারী হালকা বের করার কাজটা আমরা সুকৌশলে বেকুব কম্পিউটারের ঘাড়ে গছিয়ে দিতে পারি, যাতে করে আমরা নাকে তেল দিয়ে আরামে ঘুমোতে পারি, আর করিম সাহেবও জাম্বুরা কেনায় বিশাল দাওটি মারতে পারেন।

Saturday, February 14, 2009

যন্ত্র গণকের যন্তর মন্তর - ১

ভূমিকা
(সরাসরি চলে যান প্রথম পাঠে)




আমার ছেলেবেলায় বিটিভিতে “বিন্দু থেকে সিন্ধু” নামের একটা অনুষ্ঠান দেখাতো। আশির দশকের কথা ... কম্পিউটার তখন দেশে আছে হাতে গোণা কয়েকটা মাত্র। টিভিতে সেই জাদুর বাক্স দেখে অবাক বিষ্ময়ে তাকিয়ে রইতাম, ভাবতাম কী জাদু জানে এই যন্ত্রটা, কীভাবে করে দেয় সব কাজ।

ঘটনাচক্রে আমার বিদ্যা লাভ করা হয় এই গণক প্রকৌশলেই। প্রোগ্রামিং শেখার শুরুটা আমার কাগজে কলমে, মানে কম্পিউটার কেনার আগেই প্রোগ্রামিং শেখা শুরু করি, মাস খানেক পরে সারা জীবনের বৃত্তির টাকাগুলো ভেঙে কম্পিউটার কেনা হয়। সে এক যুগ আগের কথা।

এই এক যুগ ধরে কম্পিউটার প্রোগ্রামিং শেখার বই এক গাদা দেখলাম। সেই হার্বার্ট শিল্ড থেকে শুরু করে ডেইটেল অ্যান্ড ডেইটেল সহ অনেক লেখকের লেখা সি বা জাভা শেখার বই পড়েছি, পড়িয়েছি। কিন্তু সবগুলো বইয়েরই একটা সাধারন বৈশিষ্ট্য, তা হলো, বইগুলোতে “প্রোগ্রামিং” শেখানো হয়না, যা শেখানো হয় তা হলো সংশ্লিষ্ট ভাষাটির বৈশিষ্ট্য, এবং তা দিয়ে কীভাবে প্রোগ্রাম লেখা যায়।

কম্পিউটার প্রোগ্রামিং এর যে মূল ধারণা, তা সব ভাষার জন্যই প্রায় সমান। কিন্তু দুঃখের বিষয়, বইগুলোতে সেরকম করে মূল ধারণাগুলোর বদলে প্রায়োগিক দিকগুলোই প্রাধান্য পায়।
প্রোগ্রামিং শেখানোটা এক সময় আমার পেশা ছিলো। ছাত্রাবস্থায় ব্যাচে করে সি, জাভা, এসব শেখাতাম। আমার বিদেশে ভর্তির আবেদনের পেছনে যে লাখ টাকার মতো খরচ হয়েছিলো, তার পুরোটাই সেই প্রোগ্রামিং পড়ানোর আয় থেকে যোগান দেয়া। প্রায় দেড়শোর মতো ছাত্রকে একেবারে প্রাথমিক অবস্থার প্রোগ্রামিং শেখাতে গিয়ে আমার মনে হয়েছে, নির্দিষ্ট কোনো ভাষা শেখানোর আগে প্রোগ্রামিং এর মূল ধারণাগুলো, আর কম্পিউটার কীভাবে কাজ করে, তাই যদি শুরুতে শিখিয়ে দেয়া হয়, তাহলে সেই ছাত্রের পক্ষে পরে যে কোনো ভাষাই শেখাটা অনেক অনেক সহজ হয়ে যায়।

বুয়েটে শিক্ষকতার স্বল্প সময়ে প্রোগ্রামিং শেখাবার কোর্স আমি পাইনি, আর পেলেও লাভ হতোনা, কারণ গৎবাঁধা সিলেবাস আমূল পালটে ফেলাটা রীতিমত “অপরাধ” সেখানে। তাই অনেক দিন থেকেই আমার ইচ্ছা, একটা বই লিখবো, যাতে এই ব্যাপারে খুব সহজ করে কথাগুলো বলা যাবে। এই ধারাবাহিক লেখাগুলো এই সিরিজেরই অংশ।

এই লেখাগুলো প্রোগ্রামিং যারা জানেন, তাদের জন্য মামুলি ব্যাপার। এটা মূলত একেবারে কম্পু-কানা নবীস শিক্ষার্থীদের জন্য। তাই ভাষাগত জটিলতা দেখতে পেলেই জানিয়ে দেবেন, আমি ভাষাগুলো আরো সহজ করার চেষ্টা করবো। মিস্তিরি মানুষ হিসাবে ভাষায় দক্ষতা আমার নগন্য, কাজেই দুর্বোধ্য ভাষার ব্যবহার দেখলে সেটাও ধরিয়ে দেবেন।


পাঠ ১

কম্পিউটারের বুদ্ধি কতটুকু? গল্প উপন্যাসে যাই পড়ে থাকুননা কেনো শুরুতেই একটা গোপন কথা ফাঁস করে দেই -- কম্পিউটার একটা চরম নির্বোধ যন্ত্র মাত্র। কম্পিউটার প্রোগ্রামিং শেখার আগেই তাই এই বিষয়টা মেনে নিতে হবে ... টিভি ফ্রিজ বা ওয়াশিং মেশিন, অথবা বাসার ফ্যানটির মতো যেমন বিদ্যুৎ দিয়ে চলে, ঠিক তেমনি কম্পিউটারও বিদ্যুতে চলা একটি যন্ত্র।


তাহলে, কম্পিউটার এতো সব সমস্যার সমাধান কীকরে করে? এর মূলে রয়েছে অ্যালগরিদম, বা গণনা পদ্ধতি। সহজ ভাষায় বলতে গেলে কম্পিউটার সমস্যা সমাধান করতে পারে, তার একমাত্র কারণ হলো, আমরাই সমস্যাগুলোকে ছোট ছোট ভাগে ভেঙে দেই, আর কীভাবে সমাধান করতে হবে, তাও কম্পিউটারকে বাতলে দেই। এই “বাতলে দেয়া বুদ্ধি”টুকু বাদে কম্পিউটার কেবলই সিলিকন-জার্মেনিয়ামের কিছু যন্ত্রাংশের সমাহার।


কম্পিউটার তাহলে কেনো এতো সফল? তার কারণ একটাই, আমাদের বাতলে দেয়া পদ্ধতিতে ছোট ছোট কাজগুলো প্রচন্ড দ্রুতগতিতে কম্পিউটার করতে পারে। হিসাব নিকাশ করার জন্য কম্পিউটারের যে সার্কিট বা বর্তনী রয়েছে, তাতে প্রতি সেকেন্ডে লাখ লাখ থেকে কোটি কোটি ওরকম হিসাব করা যায়। তাই আমাদের বাতলে দেয়া পদ্ধতিতে ছোট ছোট সেই ধাপগুলো কম্পিউটার চোখের নিমেষে করে ফেলে।


কম্পিউটার প্রোগ্রামিং এর মূল কথা হলো সমস্যা সমাধানকে ছোট ছোট ধাপে ভেঙে ফেলা। একেবারে বড় সমস্যা সমাধান হয়তো কঠিন, কিন্তু সমস্যাটাকে সমাধানযোগ্য ছোট ছোট ধাপে ভাগ করে ফেলতে পারলেই কম্পিউটারের মতো নির্বোধ যন্ত্র দিয়ে সেটা সমাধান করা যাবে।

আজ আমরা একটা গাণিতিক সমস্যা দিয়ে এই ব্যাপারটা বোঝার চেষ্টা করবো। ধরা যাক, আপনাকে বলা হলো ১ থেকে ৫ পর্যন্ত সংখ্যাগুলোর যোগফল বের করতে হবে, অর্থাৎ ১+২+৩+৪+৫=? । কাজটা খুবই সহজ, ক্লাস ২ এর বাচ্চাদের দিলে আধা মিনিটেই জবাব দিয়ে দেবে, প্রশ্ন হলো কম্পিউটারকে কীভাবে বোঝাবো সেটা। তার আগে আপনি নিজে ভেবে দেখুন, আপনাকে কাজটা করতে দিলে কীভাবে সেটা করবেন।

খুব আস্তে আস্তে ভাবুন। আপনি নিশ্চয়ই এক বারে ৫টা সংখ্যা যোগ করে বসেননি, তাই না? কাজটা যদি কাগজে কলমে দেয়া হয়, তাহলে আমরা সংখ্যাগুলোকে একটার নিচে আরেকটা লিখে ফেলি। তার পর উপর থেকে শুরু করি, একটা করে সংখ্যা নেই, এপর্যন্ত যা যোগফল ছিলো, তার সাথে সংখ্যাটা যোগ করি, তার পর একই কাজ পরের সংখ্যাটা দিয়ে করি। মুখে মুখে এভাবে চিন্তা করি, "এক আর দুইয়ে তিন, তিন আর তিনে ছয়, ছয় আর চারে দশ, দশ আর পাঁচে পনের", অর্থাৎ আমাদের চিন্তাটা ধাপে ধাপে আগাচ্ছে, প্রতি ধাপে একটা করে সংখ্যা আমরা আগের যোগফলে যোগ করে দিচ্ছি।

হাতে হাতে করার জন্য, ধরা যাক আমরা টেবিলের উপরে ১ থেকে ৫ পর্যন্ত সংখ্যাগুলো রেখেছি, আর ডান হাতে সাময়িক যোগফলগুলো রাখবো। যোগ করার বুদ্ধিটা করলাম এমন, বাঁ হাত দিয়ে টেবিল থেকে একটা সংখ্যা তুলবো, আর সেটাকে ডান হাতে যা ছিলো তার সাথে যোগ করে ডান হাতেই ধরে রাখবো।

যেমন, ১ হতে ৫ পর্যন্ত যোগ করতে হলে, প্রথমে ডান হাতে কিছুই নাই, মানে ০। প্রথম সংখ্যাটি ১। সেটাকে শূন্যের সাথে যোগ করে পেলাম ১।

পরের সংখ্যাটি ২, সেটাকে আমাদের এপর্যন্ত যোগফল ১ এর সাথে সেটাকে যোগ দিলে হয় যোগফল ৩।

পরের সংখ্যাটা ৩, সেটাকে আমাদের এপর্যন্ত যোগফল ৩ এর সাথে যোগ করে পেলাম নতুন ফল ৬।

পরের সংখ্যাটা ৪, সেটাকে আমাদের এপর্যন্ত যোগফল ৬ এর সাথে যোগ করে পেলাম নতুন ফল ১০।

পরের সংখ্যাটা ৫, সেটাকে আমাদের এপর্যন্ত যোগফল ১০ এর সাথে যোগ করে পেলাম নতুন ফল ১৫।

ব্যস, আমাদের যোগফল বের করার কাজটা শেষ, ১ থেকে ৫ এর যোগ ফল দাঁড়ালো ১৫।


উপরের হিসাবের ধাপগুলো দেখলে একটা জিনিষ হয়তো খেয়াল হবে, আমরা একই রকম কাজ (মানে বাঁ হাত দিয়ে টেবিল থেকে সংখ্যা তোলা, আর ডান হাতের সংখ্যাটার সাথে যোগ করার কাজটা) বার বার করছি, কেবল টেবিল থেকে তোলা সংখ্যাটা পালটে যাচ্ছে। আর আমরা এই পুনরাবৃত্তি করছি একটা সীমা পর্যন্ত, মানে ১ থেকে ৫ পর্যন্ত যোগ ফল বের করার ব্যাপার থাকলে টেবিল থেকে ৫ তোলার পরেই থেমে যাচ্ছি। টেবিলের উপরে আরো অনেক সংখ্যা থাকতে পারে, কিন্তু আমরা খেয়াল করে ৫ পর্যন্ত তুলেই থামছি।

এখন দেখা যাক, এই কাজটা বেকুব যন্ত্রগণককে কীভাবে বোঝানো যায় –

ডান হাতে শুরুতে কিছু নাই |

#(প্রথম ধাপ)# ডানহাতে = ০

একেবারে শুরুতে বাম হাতও খালি

#(দ্বিতীয় ধাপ)# বামহাত = ০

আমরা যেটা করবো, তা হলো বাম হাতে একটা একটা সংখ্যা তুলবো, শর্ত ৫ পর্যন্ত তুলার পরে থামবো। প্রতিবারে বাম হাতে আগে যা তুলেছিলাম, তার পরের সংখ্যাটি উঠাবো।

#(তৃতীয় ধাপ)# বামহাত (নতুন মান) = বাম হাতের আগের মান + ১

এইবার ডানহাতে যা ছিলো, তার সাথে বাম হাতেরটা যোগ করে ডান হাতেই রাখবো |

#(চতুর্থ ধাপ)# ডান হাত (নতুন মান) = ডান হাতের পুরানো মান + বাম হাতে যা তুলেছি।

এখন কাজ কি শেষ হয়েছে? মানে বাম হাতে ৫ তুলে ফেলেছি কি? যদি ফেলে থাকি, তাহলে কাজ শেষ, নইলে আবার উপরের ধাপে ফিরে যেতে হবে।

#(পঞ্চম ধাপ)# বাম হাতে যদি ৫ এর চেয়ে ছোট সংখ্যা থাকে, তাহলে কাজ শেষ হয়নি, সুতরাং তৃতীয় ধাপে ফেরত যাই। নইলে কাজ শেষ, পরের ধাপে যাই।

#(ষষ্ঠ ধাপ)# ডান হাতে যা আছে, সেটাই যোগফল, চটপট বলে ফেলি সেটা স্যারকে।

তাহলে ৫ পর্যন্ত যোগ করাটা বোঝা গেলো। ১০০ পর্যন্ত কীভাবে যোগ হবে? একই পদ্ধতি, তাই না? কেবল শর্তের লাইনটিতে ৫ তুলে ফেলেছি কি না তার বদলে আমরা দেখবো ১০০ তুলেছি কি না। সেই একটা সংখ্যা পালটে দিলেই উপরের পদ্ধতিতে ১০০ পর্যন্তও যোগ করা যাবে।

কম্পিউটারের সুবিধা হলো, এই বাম হাত ডান হাতের ব্যাপারটা আর শর্তগুলো একবার বুঝিয়ে দিলে কাজটা সে ৫ পর্যন্ত না, ৫ কোটি পর্যন্তও করতে দিলে অনায়াসে করতে থাকবে। বাচ্চাদের মতো বিস্কুট চকলেটের লোভ দেখিয়ে অংক করতে বসানো লাগবে না।


এই বুদ্ধিটা একটা সি ল্যাঙ্গুয়েজের প্রোগ্রাম আকারে লিখলে কেমন দাঁড়াবে দেখা যাক,

rightHand = 0 (ডান হাত শুরুতে খালি)

leftHand = 0 (শুরুতে বাম হাতও খালি)

do {
leftHand = leftHand + 1 (বাম হাতে আগের সংখ্যাটা যা ছিলো, তার পরেরটা নিলাম। প্রথম বারে কিছুই ছিলোনা, তার সাথে ১ যোগ করে পেলাম বাম হাতে ১)

rightHand = leftHand + rightHand (ডানহাতে আগে যা ছিলো, তার সাথে বামহাতেরটা যোগ করি, তারপর যোগফলটা ডান হাতেই জমা রাখি।)

} while (leftHand <5)>

do–while দিয়ে লেখা অংশটি একটি লুপ বা চক্রকোড। সেটি চলবে ততক্ষণ, যখন while এর পরের শর্তটি সত্য থাকবে। যতক্ষণ ঐ শর্তটি সত্য থাকবে, প্রোগ্রামটি লুপের শেষ মাথায় পৌছে আবার প্রথম অংশে লাফ দিয়ে যাবে।

বাম হাতে ১ থেকে ৫ পর্যন্ত সংখ্যা তুলে ফেলার পর শেষ বারে শর্তটি ভঙ্গ হবে, (কারণ বাম হাতে ৫), তখন এই লুপ আর চলবে না, লুপ শেষ হয়ে পরের অংশের কাজ শুরু হবে।

ব্যস, এটাই হলো কম্পিউটারে সংখ্যা যোগের একটা প্রোগ্রাম।

------

(ব্যাখ্যা ছাড়া সি কোডটি হবে নিচের মতো)

rightHand = 0;
leftHand = 0;

do {
leftHand = leftHand + 1;
rightHand = rightHand + leftHand;
} while (leftHand<5);>



Sunday, February 1, 2009

কনশিতার দিনরাত্রি



০১

কম্পিউটার নিরাপত্তার উপরে সবচেয়ে বড় কনফারেন্সের একটি হলো এসিএম সিসিএস - প্রতিবছর মার্কিন যুক্তরাষ্ট্রের রাজধানী ওয়াশিংটন ডিসির উপকণ্ঠের আলেক্সান্দ্রিয়াতে এটি অনুষ্ঠিত হয়। এই কনফারেন্সের উপলক্ষেই ২০০৬ এর শরতে ওখানে আমাদের যাওয়া। কনফারেন্স শেষে একটা দিন হাতে রেখেছিলাম, আমি আর আমার স্ত্রী জারিয়া ওয়াশিংটন শহরটা ঘুরে দেখার জন্য।

পুরো শহরের সুরম্য সব অট্টালিকা আর মনুমেন্ট দেখে দেখে শরতের সেই রোদেলা বিকেলে চলে আসি মার্কিন রাষ্ট্রপতির সরকারী বাসস্থান হোয়াইট হাউজের পাশে। দুনিয়ার একমাত্র পরাশক্তি যুক্তরাষ্ট্রের রাষ্ট্রপতি ভবনের চারপাশে অবশ্য দৃশ্যমান নিরাপত্তার বাড়াবাড়ি নেই। বাংলাদেশে যেমন রাষ্ট্রপতির বাসভবনের ধারে কাছে কাক পক্ষীকেও ঘেঁষতে দেয়না পুলিশের ব্যুহ, তেমনটা দেখা যাচ্ছেনা। চারিদিকে পর্যটকদের ভিড়, হোয়াইট হাউজের একেবারে দেয়াল ঘেঁষে এমনকি দেয়ালের ফাঁক দিয়ে ক্যামেরা গলিয়ে চটাপট ছবি তুলছে সবাই।

জারিয়া আর আমি হোয়াইট হাউজের চারিদিকে ঘুরে ঘুরে দেখতে থাকি, ভাবি এই নিতান্তই সাধারন চেহারার ভবনে দুনিয়া পালটে দেয়া ভালো মন্দ কতো সব ঘটনার সূচনা হয়, কতো কিছুর সিদ্ধান্ত নেয়া হয়। হোয়াইট হাউজের বিশাল পরিধি ঘুরে আসতে আসতে এসে যাই পেছনের দিকে, পেছনেই রয়েছে এক চিলতে জমিতে করা ছোট্ট একটা পার্ক। অন্য সব ট্যুরিস্টের সাথে আমরাও ছবি তুলতে থাকি, শক্তিমান রাষ্ট্রযন্ত্রের প্রাণকেন্দ্রের স্মৃতি ধরে রাখতে।

এমনি সময় আমার চোখ পড়ে পেছনের সেই পার্কটির দিকে। হোয়াইট হাউজের সীমানা প্রাচীর, তার পাশে একফালি রাস্তার ঠিক পরেই, ফুট পচিশেক দূরত্বে লাফায়েত স্কয়ার নামের পার্কের সীমানা। সেই সীমানার শুরুতেই এক বেঞ্চ আর তার পাশে রঙ্গীলা এক ছাউনি তৈরী করে বসে থাকতে দেখি প্রৌঢ়া এক রমণীকে। যুক্তরাষ্ট্রের বহু শহরে ঘোরার অভিজ্ঞতা থাকায় গৃহহীন মানুষের দেখা পেয়েছি বিস্তর, কিন্তু বিস্মিত হই খোদ হোয়াইট হাউজের পাশেই গৃহহীন ভিক্ষুকের বসতি দেখে। “দেশের সবার কাছে গল্প করা যাবে”, তা ভেবে পটাপট ছবি তুলে নেই ক্লান্ত চোখে চেয়ে থাকা এই রমণীর। তার পর ভুলে যাই তাঁর কথা ... সুরম্য ভবন আর সমাধির চাকচিক্যে হারিয়ে যায় সেই রমণীর কাতর দৃষ্টির স্মৃতি।

০২

আরবানাতে ফিরে যাই, কাজে কর্মে ব্যস্ত হয়ে মনে থাকেনা ছবিটির কথা। মাসখানেক পরে এক অলস দুপুরে ল্যাপটপের পর্দায় ছবিটা আবার ভেসে আসে, অকস্মাৎ কৌতুহল জেগে উঠে মনে। গুগলে খুঁজতে থাকি, কে এই রমণী, কীভাবে রাষ্ট্রপতি ভবনের পাশেই রয়েছে তাঁর বসতি। পরিচয়টা যখন জানতে পারি, অবাক বিস্ময়ে স্তব্ধ হয়ে থাকি কিছুক্ষণ।

ক্লান্ত নয়নের এই প্রৌঢ়া রমণীর নাম কনসেপশন পিচ্চিওত্তো। বন্ধুদের কাছে কনশিতা বা কনি নামে পরিচিত কনসেপশনের জন্ম স্পেনে, ১৯৪৫ সালে। পরাক্রমশালী মার্কিন রাষ্ট্রপতির যেখানে বাস, সেই হোয়াইট হাউজের পেছনের লাফায়েত স্কয়ার পার্কে বসে কনশিতা নীরব প্রতিবাদ জানিয়ে আসছেন, পথকে নিজের ঘর বানিয়ে দিনরাত ২৪ ঘন্টা শক্ত কাঠের বেঞ্চে বসে শান্তির সপক্ষে, আণবিক বোমার বিরুদ্ধে তাঁর এই অবস্থান ধর্মঘট অব্যাহত রাখছেন।

সেই ১৯৮১ সাল থেকে, ২৭ বছর ধরে সারাক্ষণ!

০৩

কনশিতা যুক্তরাষ্ট্রে আসেন স্পেন দূতাবাসের কর্মী হিসাবে। বিয়ে হয় এক ইতালীয় ব্যবসায়ীর সাথে, ওলগা নামে একটি মেয়ের জন্মও হয়। কিন্তু এক সময় ভেঙে যায় কনশিতার সংসার, মেয়েকে হারান, চলে যায় চাকুরিটিও। মানসিক সমস্যা দেখা দেয় তাঁর, স্বামীর উপরে সন্দেহ রূপ নেয় অনেকটা অবসেশনে, আস্তে আস্তে মনে হতে থাকে সবাই তাঁর বিপক্ষে কাজ করছে, পুলিশ ও সন্দেহজনক সাদা পোশাকের মানুষেরা অনুসরণ করছে তাঁকে প্রতিনিয়ত। এভাবে আমেরিকা থেকে স্পেনে কিছু দিন কাটিয়ে কনশিতা ফিরে আসেন ফের আমেরিকাতে। এক সময় উপস্থিত হন হোয়াইট হাউজের দ্বারপ্রান্তে। নিজের ব্যক্তিগত প্রতিবাদ পালটে গেছে তখন দুনিয়ার সব দুঃখ, সব অনাচারের বিরূদ্ধে প্রতিবাদে, পরাশক্তির বিরূদ্ধে বিক্ষোভে। সদ্য পরিচিত টমাস নামের আরেক প্রতিবাদীর সাথে মিলে কনশিতা শুরু করে দেন আণবিক বোমার বিরুদ্ধে তাঁর প্রগাঢ় প্রতিবাদ।

সেটা ছিলো প্রেসিডেন্ট রেগানের শাসনামলের শুরু – সেই ১৯৮১ সাল।

রেগান চলে যান, আসেন বড় বুশ, তার পরে ক্লিনটন, এখন ছোট বুশ। রাজা আসে, রাজা যায়, কিন্তু কনশিতার প্রতিবাদ অব্যাহত থাকে। হোয়াইট হাউজের নাকের গোড়াতে এরকম উপস্থিতি সহ্য হয়নি পুলিশের ... তাঁর বিরুদ্ধে লেলিয়ে দেয়া হয় পার্করক্ষী পুলিশ, ভেঙে দেয়া হয় কনশিতার ঝুপড়িটি। শুরুর দিকে হোয়াইট হাউজের সীমানা প্রাচীর ঘেঁষে প্রেসিডেন্টের বাড়ির মাত্র কয়েক ফুট দূরেই তৈরী হয়েছিলো ঝুপড়িটি, কিন্তু পুলিশ সেখানে থাকতে দেয়নি। আদালতের আশ্রয় নেন কনশিতা, ১৯৮৩ সালে আদালত রায় দেয়, হোয়াইট হাউজের দেয়ালের পাশের ফুটপাতে থাকা যাবে না। কনশিতা, আর তার সঙ্গী টমাস আশ্রয় নেন ফুট ত্রিশেক দূরে, রাস্তার অপর পারের পার্কে।

সেই পার্কের বেঞ্চ আর ঝুপড়িতে থাকতে তাদের অনেক কষ্ট করতে হয়েছে, ওখান থেকে সরলেই পুলিশ সব ভেঙে দেয় বার বার। তাই সেই সময় থেকে আজ অবধি কনশিতা শীত গ্রীষ্ম সব সময়েই ২৪ ঘণ্টা ওখানে বসে থাকেন। শুয়ে ঘুমাবার উপায়ও নেই ... ভবঘুরে বিরোধী আইনের অধীনে পার্কে কারো মাটিতে শুয়ে ঘুমানো মানা। তাই পুলিশের ঝামেলা এড়াতে বেঞ্চে বসে ঘুমানো অভ্যাস হয়ে গেছে কনশিতার। ওয়াশিংটনের বিভিন্ন রেস্তোঁরা থেকে পুরানো বাসি খাবার পাঠিয়ে দেয়া হয় প্রতিদিন, তাই খেয়ে বা অর্ধাহারে কেটে যায় কনশিতার দিনরাত্রি।

ঝুপড়ির চারিপাশে ছবি আর ছবি ... আণবিক বোমার আঘাতে ক্ষতবিক্ষত হিরোশিমার কিশোরীর ছবি, দুনিয়ার সর্বত্র আণবিক বোমার সন্ত্রাসের বিরোধী প্রতিবাদী সব ছবি। এরই মাঝে ক্লান্ত চোখে বসে থাকেন কনশিতা।

২৭ বছরের প্রতিবাদ, এখনো শেষ হয়নি, প্রশান্ত পৃথিবীর স্বপ্ন দেখার এ প্রতিবাদ, আজো অমলিন।

পাদটীকা

[*] কনশিতার কাহিনী নিয়ে ওয়েবসাইট