গল্পটির শেষে বলা ছিল, ভাষা শিক্ষাটাও মোটামোটিভাবে ঐ সাইকেল চালানো শেখার মতই। তাত্বিক জ্ঞানের আশায় বসে না থেকে বরং যা জানা আছে তা দিয়ে কথা বলা শুরু করলেই অনেক দ্রুত ভাষা শেখা যায়। কিন্তু কম্পিউটারের প্রোগ্রামিং ভাষার ক্ষেত্রেও কি এ কথাটা সত্য? হুম, অবশ্যই সত্য। কিন্তু অতটা সত্য নয় যতটা সত্য মানুষের সাথে কথা বলার ভাষা শিক্ষার জন্য হয়ে থাকে। এর কারনও আছে। কারনটা হল, যখন আপনি একজন মানুশের সাথে নতুন ভাষায় কথা বলতে গিয়ে ভুল করে বসবেন তখন ঐ মানুষটি হয়ত আপনাকে ঐ ভুলের পরিবর্তে সঠিকটা জানতে সাহায্য করবে। কিন্তু কম্পিউটারের মত জড় পদার্থের সে ক্ষমতা নেই। তাই কম্পিউটারের সাথে কথা বলার ভাষা অর্থাৎ প্রোগ্রামিং ভাষা শেখার আগে এর গঠনগত কিছু দিক আপনাকে জেনে নিতেই হবে। ঐ গঠনগত দিক এবং নিয়মগুলো শেখার পরও প্রোগ্রাম রান করার সময় আপনি যেসব ভুল করে বসবেন তার বেশিরভাগই অবশ্য কম্পিউটার আপনাকে সংশোধন করে দেবে। তাই কম্পিউটারের সাথে কথা বলার ক্ষেত্রেও প্রাকটিসের কোন বিকল্প নেই কিন্তু তার আগে সামান্য কিছু বিষয় আমাদের শিখে নিতে হবে।
হাই লেভেল ল্যাঙ্গুয়েজ
এ ধরনের প্রোগ্রামিং ভাষাগুলো অনেকটা আমাদের কথা বলার ভাষার মতই হয়ে থাকে। তাই যেকোন প্রোগ্রামার খুব সহজে অনেক জটিল প্রোগ্রামও এ ভাষায় লিখে ফেলতে পারে। আগের পোস্টে সি প্রোগ্রামিং এর পরিচিতি ও ইতিহাস লিখতে গিয়ে আমরা বলেছিলাম সি ভাষাটি এত বেশি জনপ্রিয় হয়ে ওঠার অন্যতম কারন হল, মোটামোটিভাবে পরিস্কার ইংরেজী ভাষায় এর প্রোগ্রাম লেখা যায়। তাই স্পষ্টতই বোঝা যায় যে সি একটি হাই লেভেল প্রোগ্রামিং ল্যাঙ্গুয়েজ। বর্তমানে যেসব প্রোগ্রামিং ল্যাঙ্গুয়েজ কম্পিউটার বিজ্ঞানের জগতে সাড়া ফেলেছে তার প্রায় সবগুলোই হাই লেভেল ল্যাঙ্গুয়েজ।
লো লেভেল ল্যাঙ্গুয়েজ
এ ভাষায় লিখিত প্রোগ্রামগুলো আমাদের সচরাচর ব্যবহৃত ভাষায় লেখা হয় না। কিন্তু তাহলে কিভাবে লেখা হয়? আগের পোস্টে আমরা মেশিন ল্যাঙ্গুয়েজের সঙ্গা দিয়েছিলাম। ঐ মেশিন ল্যাঙ্গুয়েজেই মূলত এক ধরনের লো লেভেল ল্যাঙ্গুয়েজ। এ ভাষায় লিখিত প্রোগ্রামের সবচেয়ে বড় সুবিধা হল, এ প্রোরামগুলো খুবই দ্রুত রান করানো যায়। এর কারন হল, এ ভাষাগুলো কম্পিউটার সরাসরি বুঝতে পারে। কম্পাইলার কিংবা ইন্টারপেটার নামক দোভাষীর প্রয়োজন হয় না।
Assembly language
কম্পিউটার সবচেয়ে বেশি পছন্দ করে মেশিন ল্যাঙ্গুয়েজ। কিন্তু আগেই বলা হয়েছে যে মেশিন ল্যাঙ্গুয়েজে একটা প্রোগ্রাম লিখতে একজন দক্ষ প্রোগ্রামারেরও অনেক সময় লেগে যায়। তাই কম্পিউটার গবেষকরা হাই লেভেল ল্যাঙ্গুয়েজের দিকেই বেশি মননিবেশ করে। কিন্তু হাই লেভেল ল্যাঙ্গুয়েজে লিখিত প্রোগ্রামগুলো কম্পিউটার সরাসরি বুঝতে পারে না। এগুলোকে কম্পাইলার এবং ইন্টারপ্রেটার নামক দোভাষীদের সাহায্যে অনুবাদ করে নিতে হয়। এর ফলে হাই লেভেল ভাষায় লিখিত প্রোগ্রামগুলো রান করতে অনেক অপেক্ষাকৃত বেশি সময়ের প্রয়োজন হয়। এ ঝামেলা এড়াতে Assembly language নামক আরেক ধরনের ভাষা ব্যবহার করা হয় যা পুরোপুরি মেশিন ল্যাঙ্গুয়েজের মত না হলেও মোটামোটিভাবে তার কাছাকাছি। তাই এ ভাষাকে অনুবাদ করতে অত বেগ পেতে হয় না।
কম্পাইলার এবং ইন্টারপ্রেটার
আমরা আগেই বলেছি যে কম্পিউটার আসলে 0 আর 1 ছাড়া কিছুই বোঝে না। অর্থাৎ কম্পিউটারের বোধগম্য ভাষা একমাত্র মেশিন ল্যাঙ্গুয়েজ। তাই, আমাদের মত প্রোগ্রামাররা হাই লেভেল ল্যাঙ্গুয়েজে যেসব প্রোগ্রাম লিখি তা কম্পিউটারের ভাষা তথা মেশিন ল্যাঙ্গুয়েজে অনুবাদ করে দেয়ার জন্য অবশ্যই দোভাষীর প্রয়োজন হয়। আর এ অনুবাদের মহান দায়িত্বটাই পালন করেন জনাব কম্পাইলার এবং জনাব ইন্টারপ্রেটার।
এখানে আরও প্রশ্ন থেকে যায়। দুইজন অনুবাদক দিয়ে আমরা কি করব? অনুবাদক তো একজনই যথেষ্ট। কিন্তু আসলে তেমনটি নয়। দুইজন অনুবাদকের কাজের সামান্য ভিন্নতা আছে বলেই তো আমরা দুইজনকে চাকুরিতে বহার রেখেছি।
আসলে, কম্পাইলার সম্পুর্ন প্রোগ্রামটাই একবারে অনুবাদ করে দেয়। এর ফলে অনুবাদ প্রক্রিয়া খুব দ্রুত হয় কিন্তু প্রোগ্রামের মাঝে কোন ভুল থাকলে তা খুজে বের করা সহজ হয় না।
অন্যদিকে ইন্টারপ্রেটার একটি প্রোগ্রামকে লাইন বাই লাইন অনুবাদ করে। এতে অনুবাদ প্রক্রিয়া অপেক্ষাকৃত ধীরগতিতে হলেও প্রোগ্রামের ভুল সংশোধন করা সহজ হয়। আসলে, প্রোগ্রামিং এর সময় কম্পাইলার এবং ইন্টারপ্রেটার এবসাথেই ব্যবহার করা হয়।
এখানে একটি জেনে রাখার বিষয় হল, আমাদের লিখিত প্রোগ্রামকে সোর্স কোড বলা হয়।


0 মন্তব্যসমূহ