অনুবাদক প্রোগ্রাম নিয়ে জানার আগে আমাদের জানতে হবে যখন আমরা কোনো প্রোগ্রামিং ভাষা লিখে কম্পিউটারে ইনপুট হিসেবে দেই তখন সবার প্রথমে কম্পিউটার সেটাকে বুঝতে পারে না। কারন আমরা আমাদের সাধারণ ভাষাতেই সেই প্রোগ্রামকে লিখি। কিন্তু কম্পিউটারের ভেতরে “কিছু একটা” আমাদের লেখা সেই প্রোগ্রামকে বাইনারি কোডে বা কম্পিউটারের ভাষাতে কনভার্ট করে। এই “কিছু একটা”কে অনুবাদক প্রোগ্রাম বা Translator Program বলে।
আমরা কম্পিউটারে যেসব প্রোগ্রাম লিখে ইনপুট দেই এগুলোকে Source Code বলে। যখন translator program আমাদের দেয়া source code গুলোকে কম্পিউটারের বোঝার ভাষায় কনভার্ট করে তখন সেই ভাষাকে Machine language বলে। এর আরেক নাম হচ্ছে object code.
এক কথায় বলা যায়,
যেসব program সোর্স কোডকে অবজেক্ট কোডে কনভার্ট করে তাদেরকে অনুবাদক প্রোগ্রাম বলে।
অনুবাদক প্রোগ্রাম এর প্রকারভেদ
তিন ধরনের translator program কে দেখা যায়-
- Assembler
- Compiler
- Interpreter
এবার আমরা তিন ধরনের অনুবাদক প্রোগ্রাম নিয়ে বিস্তারিত জানবো।
Assembler অনুবাদক প্রোগ্রাম
যেসব translator program এসেম্বলি ভাষায় লেখা প্রোগ্রামিং ভাষাকে মেশিন ভাষায় কনভার্ট করে তাকে Assembler বলে।
Assembly language হচ্ছে এক ধরনের programming language যেটি লেখা হয় বিভিন্ন বর্ণ, অক্ষর, সংখ্যা এবং চিহ্ন দিয়ে। অর্থাৎ এই ভাষাটি মানুষের বোঝার মত একটা ভাষা। নিচের ছবিতে দেখো, একটা ছোট assembly language কে মেশিন ভাষায় কনভার্ট করলে তার চেহারা কেমন হবে সেটা দেখানো হয়েছে। তবে এখানে আমাদের জানার দরকার নেই যে এই assembly language দিয়ে আসলে কি বোঝানো হচ্ছে। কারন আমাদের assembly language আলাদাভাবে শিখতে হবে।
Assembler এর সুবিধা
- Assembly language এর মধ্যে যেসব নেমোনিক থাকে সেগুলোকে মেশিন ভাষায় কনভার্ট করে এটি।
- Assembly language লেখার সময় প্রোগ্রামার যদি কোনো জায়গায় ভুল করে তবে assembler সেই ভুলটা ধরতে পারে এবং error message দেখায়।
- Debugging (এডিট করা) এবং Testing (কোডে ভুল আছে কিনা সেটা পরিক্ষা করা) খুব দ্রুত করতে পারে assembler.
- Assembler কম্পিউটারের মেমরিতে কম পরিমান storage নিয়ে থাকতে পারে।
Assembler এর অসুবিধা
- Assembler দিয়ে প্রোগ্রামকে চালনা করার জন্য সময় বেশি লাগে। অন্য একটা translator program Compiler এর চেয়ে কম গতিতে কাজ করে এটি।
Assembler ব্যবহার করা হয় এমন কিছু programming language হচ্ছে- C, C++, Pascal, COBOL, ADA, Visual Basic ইত্যাদি।
Compiler
যেসব translator program, source code কে object কোডে পরিনত তাকে compiler বলে। তবে এটি সমস্থ source code কে একবারে মেশিন ভাষায় কনভার্ট করে ফেলে।
একটা Compiler দুটো ধাপে কাজ করে-
১ম ধাপ: Compiler আমাদের কাছ থেকে source code কে নিবে এবং সেটাকে Object code বা মেশিন কোড হিসেবে কনভার্ট করবে। আর Source code এর মধ্যে কোনো error থাকলে সেটাও ধরে ফেলবে Compiler.
২য় ধাপ: Object code সবশেষে Output বা Execution code হিসেবে আমাদের সামনে চলে আসে। অর্থাৎ আমরা যাকে source code হিসেবে কম্পিউটারে দেই তার output ফর্মটাই হচ্ছে Execution code.
অর্থাৎ, একটা Compiler পুরো source code কে একবারে translate করবে এবং execution file বানাবে।
Interpreter অনুবাদক প্রোগ্রাম
Interpreter হচ্ছে আরেক ধরনের translator program যেটি source code কে machine code এ পরিনত করে। তবে Interpreter পুরো source code কে translate না করে এক লাইন এক লাইন করে translate করে এবং সেই এক লাইন দিয়ে execution file তৈরি করে।
অর্থাৎ এটি compiler এর চেয়ে একটু আলাদাভাবে কাজ করে। Compiler দুই ধাপে কাজ করলেও interpreter মাত্র এক ধাপে কাজ করে। এটি একইসাথে source code এবং input কে নিয়ে নেয় এবং সেই অনুযায়ী output বা execution file তৈরি করে এটি।
Interpreter করা যেসব প্রোগ্রামিং ভাষাকে সেগুলো হচ্ছে- Basic, PHP, Python, Perl, Ruby, JavaScript ইত্যাদি।
এবার আমরা Compiler এবং Interpreter এর মধ্যকার কিছু পার্থক্য দেখি-
Compiler | Interpreter |
সম্পূর্ণ প্রোগ্রামকে একসাথে অনুবাদ করে। |
সম্পূর্ণ প্রোগ্রামকে এক লাইন এক লাইন করে অনুবাদ করে। |
প্রোগ্রামের ভুল একসাথে প্রদর্শন করে। | এক লাইন এক লাইন করে ভুল প্রদর্শন করে। |
দ্রুত কাজ করে। | ধীরে ধীরে কাজ করে। |
প্রোগ্রাম একবার Compile করার পর আর Compile করার দরকার নাই। | প্রতিটা কাজের আগে প্রোগ্রাম অনুবাদ করা লাগে। |
বড় ধরনের কম্পিউটারে বেশি ব্যবহার করা হয়। | মাইক্রো কম্পিউটারে বেশি ব্যবহার করা হয়। |
এবার আমরা Language Processing System দেখবো, যেখানে দেখানো হয়েছে একটা প্রোগ্রামিং ভাষা কম্পিউটারে source code হিসেবে ঢোকার পর কোন কোন step পার করে Binary code এ পরিনত হয়:
ক্রাশ স্কুলের নোট গুলো পেতে চাইলে জয়েন করুন আমাদের ফেসবুক গ্রুপে-
www.facebook.com/groups/mycrushschool
অতিথি লেখক হিসেবে আমাদেরকে আপনার লেখা পাঠাতে চাইলে মেইল করুন-
write@thecrushschool.com