Friday, July 1, 2011

বোকা কম্পিউটারের চালাকি-১ : শূন্য আর একের খেলা

সংবিধিবদ্ধ সতর্কীকরণঃ এই লেখা কম্পিউটারবোদ্ধাদের জন্য নহে।

আপনি কখনো গাধা পুষেছেন? মনে হয় পোষেননি। সমস্যা নেই। তবে যদি কখনো পোষেন, তাহলে আপনাকে এখনি একটা জরুরি পরামর্শ দিয়ে রাখি। গাধার সামনে কখনো কম্পিউটারকে ‘গাধা’ বলে গালি দিবেন না। কেন? কারণ আপনার পোষা গাধাটি ‘মাইন্ড’ করতে পারে। কম্পিঊটারের তো অত বুদ্ধি নেই যে আপনি তাকে ‘গাধা’ বলবেন, এটা গাধা জাতির জন্য চরম অবমাননাকর বৈকি। ভাবছেন, আমার মতলবটা কী? আমার মতলব খুব সোজা-সাপ্টা। আমি বলতে চাই – কম্পিউটারের বুদ্ধিমত্তা বলে কিছু নাই। আপনার মনে হয় মানতে সমস্যা হচ্ছে। জানেন, আমারও সমস্যা হতো! ভাবতাম কম্পিউটার খুব বুদ্ধিমান একটা যন্ত্র; তাকে যা করতে বলা হয় সবই পারে। যতটুকু মনে পড়ে… এস,এস,সি, পাশের ঠিক পরের কথা। সাইনবোর্ডে যখন দেখলাম – ‘কম্পিউটারে চক্ষু পরীক্ষা করা হয়’ যন্ত্রটার প্রতি শ্রদ্ধা বেড়ে গেল। কম্পিউটার ডাক্তারিও শিখে গেছে। (চুপে চুপে বলে রাখি- আমার যখন চশমার দরকার হলো তখন আমি সেই ডাক্তারের কথা মনে আনিনি, অনেক টাকা লাগবে ভেবে।) শুনেছি কম্পিউটার নাকি রকেটও চালাতে পারে! ভাবতাম- না জানি আরো কত কী পারে!

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

কেবল ০ আর ১ দিয়ে কম্পিউটার তবে এত জটিল সব কাজ করে কীভাবে ভাবছেন? বেটার আসলে দুইটা ভাল গুণ আছে- ১)অনেক দ্রুত কাজ করতে পারে। ২)কাজে ভুল করে না। এই দুই গুণের কারণেই বেটার আজ এত প্রতাপ।

০ আর ১ দিয়ে কিভাবে ইন্সট্রাকশন হয় তা বোধ হয় বুঝা গেলো না। আমাদের কাছে ০১১০১০১১১১০১০০১০০০০১০১১১০১১০০১০১০১০০১১১০০০০০১১ সংখ্যাটি কেবল ০ আর ১ দিয়ে গঠিত একটি সংখ্যা মনে হলেও কম্পিউটারের কাছে এটা একটা ইন্সট্রাকশন। এবারও মনে হয় পরিষ্কার হলো না। দেখি একটু পরিষ্কার করতে পারি কিনা। তার আগে ছোট্ট একটা কথা বলে রাখি – আমরা ১, ২, ৩, ৪, ১০০, ২০০, ১০০০, ২০০০, ১ লাখ, ২ লাখ যত সংখ্যা জানি সব সংখ্যাকেই বাইনারি (বাংলায়- দ্বিমিক) পদ্ধতিতে প্রকাশ করা যায়।

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

ধরুন খুব সাধারণ একটা কম্পিউটার বানাতে যাচ্ছি যেটা ৫ টা কাজ করতে পারে।
    ১) যোগ
    ২) বিয়োগ
    ৩) গুণ
    ৪) ভাগ
    ৫) ফলাফল মনিটরে দেখানো

বাইনারির কথা ভুলে যাই আপাতত। চলুন প্রতিটা কাজকে নাম্বারিং করে ফেলি আগে। ১ নম্বর কাজ মানে যোগ, ২ নম্বর কাজ মানে বিয়োগ, এভাবে ৩, ৪ আর ৫ মানে গুণ, ভাগ আর ফলাফল মনিটরে দেখানো। যোগ-বিয়োগ-গুণ-ভাগ প্রত্যেকটাতেই ২ টা করে সংখ্যা লাগে, তাই না? যেমন ১৫+২০, ১০০-৩৩, ৪৫x২৯, ৬০÷৪। একটা ইন্সট্রাকশন দিতে হলে তাই ৩টা জিনিস লাগবে।

একটি ইন্সট্রাকশনের ৩ টি অংশ

    ১) কত নম্বর কাজ করতে হবে তা বলতে হবে।
    ২) ১ম সংখ্যাটা কত তা বলতে হবে।
    ৩) ২য় সংখ্যাটা কত তা বলতে হবে।

১৫ আর ২০ যোগ করার ইন্সট্রাকশনটা নিচের মতো হতে পারে কিনা দেখুনতো।

১৫+২০ এর ইন্সট্রাকশন (১৫+২০)

এখানে প্রথম ঘরের ১ মানে যোগ করতে হবে, পরের ২ ঘর বিবেচনা করলে বুঝা যাবে ১৫ আর ২০ যোগ করতে হবে।

আরেকটা উদাহরণ দেখি – ১০০ থেকে ৩৩ বিয়োগ করার ইন্সট্রাকশন দেয়ার চেষ্টা করি। প্রথম ঘরে কাজের (বিয়োগ) এর নম্বর ২ দিতে হবে, পরের দুই ঘরে ১০০ আর ৩৩। তাই না?

১০০-৩০ এর ইন্সট্রাকশন  (১০০-৩০)


নিচের ২ টা ইন্সট্রাকশনের অর্থ বুঝা যায় কিনা দেখেন।

৪৫x২৯ এর ইন্সট্রাকশন  (৪৫x২৯)

৬০÷৪ এর ইন্সট্রাকশন  (৬০÷৪)


ফলাফল মনিটরে দেখানোর ইন্সট্রাকশন তাহলে কেমন হবে? ১ম ঘরে না হয় কাজের নম্বর ৫ (ফলাফল মনিটরে দেখানোর কাজের নম্বর) বসালাম, বাকি দুই ঘর কি ফাঁকা থাকবে? ফাঁকাতো রাখা যাবে না, তাহলে ০ বসিয়ে দিলাম এমনিতেই, যেগুলোর কোন অর্থ নাই।

ফলাফল মনিটরে দেখানোর ইন্সট্রাকশন (ফলাফল মনিটরে দেখানো)


ইনস্ট্রাকশনগুলো তাহলে সংখ্যা হিসেবে কেমন দেখাবে? (উপরের ছবিগুলোর সাথে মিলিয়ে নিন)

১৫+২০ : ১১৫২০
১০০-৩৩ : ২১০০৩৩
৪৫x২৯ : ৩৪৫২৯
৬০÷৪ : ৪৬০৪
ফলাফল দেখানো : ৫০০


ঝামেলা হয়ে গেলো যে! ১৫+২০ এর সংখ্যাগত ইন্সট্রাকশন ১১৫২০ এর প্রথম ১ দেখে না হয় বুঝলাম এটা যোগ, কিন্তু পরে সংখ্যা দুটি কি কি? ১৫ আর ২০? নাকি ১ আর ৫২০? নাকি ১৫২ আর ০? কিভাবে বুঝা যেতে পারে? আরেকটা নিয়ম দরকার। ধরে নিলাম কোন সংখ্যায় ৪ ডিজিটের বেশি থাকবে না। সংখ্যাগুলোর আগে শূন্য (০) বসিয়ে ৪ অংকের সংখ্যা বানাতে হবে। তাহলে ১৫ আর ২০ এর যোগের ইন্সট্রাকশন হবে নিচের মতো-

প্রতিটা সংখ্যা ৪ অংকের

ছবি আঁকা কষ্টকর বলে পরের ছবিগুলো আর দিচ্ছি না। আশা করছি বুঝতে পারছেন। এভাবে প্রতিটি সংখ্যাকে ৪ অংকের ধরলে ইন্সট্রাকশনগুলো দাঁড়ায়  -

১৫+২০ : ০০০১০০১৫০০২০
১০০-৩৩ : ০০০২০১০০০০৩৩
৪৫x২৯ : ০০০৩০০৪৫০০২৯
৬০÷৪ : ০০০৪০০৬০০০০৪
ফলাফল দেখানো : ০০০৫০০০০০০০০

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

এখন তাহলে চলুন আমাদের কম্পিউটারকে আজকের তারিখের (৩০শে জুন, ২০১১) দিন আর মাসের যোগফল বের করে তা মনিটরে দেখানোর ইন্সট্রাকশন দিয়ে দেই…

১ম ইন্সট্রাকশন: ০০০১০০০৬০০৩০ (০৬ আর ৩০ যোগ করা হচ্ছে)
২য় ইন্সট্রাকশন: ০০০৫০০০০০০০০ (ফলাফল মনিটরে দেখানো হচ্ছে)
একসাথে লিখলে হবে – ০০০১০০০৬০০৩০০০০৫০০০০০০০০

এখন কেবল এগুলোকে ইন্সট্রাকশনগুলোকে বাইনারিতে প্রকাশ করলেই কেল্লা ফতে। তবে বাইনারিতে ৪ অংকের মাধ্যমে সর্বোচ্চ ১৫ পর্যন্ত লেখা যায়। তাই বড় সংখ্যার যোগ-বিয়োগ করতে হলে বেশি অংকের সংখ্যা বানাতে হবে। ৮ অঙ্কের বাইনারি সংখ্যা দিয়ে ২৫৫ পর্যন্ত লিখা যায়। যেহেতু আমাদের উদাহরণে সর্বোচ্চ সংখ্যা ১০০ তাই ৮ অংকের বাইনারি সংখ্যা হলেই হবে। স্বাভাবিক ডেসিমেল সংখ্যাকে কিভাবে বাইনারিতে রূপান্তর করা যায় তা না হয় অন্য কোন দিন অন্য কোন সময়ে বলবো। বাইনারিতে প্রতিটি ইন্সট্রাকশন তাহলে হবে ২৪ অংকের (৩ সংখ্যার প্রতিটি ৮ অংকের)। নিচে কেবল ০ আর ১ এর সমন্বয়ে বাইনারিতে তারিখের দিন আর মাসের ইন্সট্রাকশনগুলো কেমন হবে দেখে নেই -

১ম ইন্সট্রাকশন: ০০০০০০০১০০০০০১১০০০০১১১১০
২য় ইন্সট্রাকশন: ০০০০০১০১০০০০০০০০০০০০০০০০

একসাথে করবো?
০০০০০০০১০০০০০১১০০০০১১১১০০০০০০১০১০০০০০০০০০০০০০০০০।
বাপরে বাপ! ২ টা ইন্সট্রাকশনই এত্ত বড়!

এভাবে একটার পর একটা ইন্সট্রাকশন লিখে দিলে কম্পিউটার কাজ করতে পারে। জেনে হয়তো অবাক হবেন – শুরুর দিকে মানুষজন এইভাবেই ০ আর ১ লিখে কম্পিউটারকে কাজ করাতো। এখন অবশ্য তা করে না। কিভাবে করে? অন্য কোন দিন না হয় সেদিকে যাওয়া যাবে।

No comments: