যে প্রোগ্রামের মাধ্যমে উৎস (সোর্স) প্রোগ্রামকে বস্তু (অবজেক্ট) প্রোগ্রামে পরিণত করা হয়, তাকে অনুবাদক প্রোগ্রাম বলা হয়। হাই-লেভেল ল্যাঙ্গুয়েজে লিখিত প্রোগ্রামকে মেশিন ল্যাঙ্গুয়েজে রূপান্তরের জন্য অনুবাদক প্রোগ্রাম ব্যবহৃত হয়। তিন ধরনের অনুবাদক প্রোগ্রাম রয়েছে –
- কম্পাইলার (Compiler)
- ইন্টারপ্রেটার (Interpreter)
- অ্যাসেম্বলার (Assembler)
১. কম্পাইলার (Compiler):
যে অনুবাদক প্রোগ্রাম হাই-লেভেল ল্যাঙ্গুয়েজে লেখা সম্পূর্ণ প্রোগ্রামটিকে একসাথে পড়ে এবং একসাথে অনুবাদ করে, তাকে কম্পাইলার বলা হয়। কম্পাইলার চালনার জন্য বেশি মেমোরির প্রয়োজন হয়। কম্পাইলার যেহেতু পুরো প্রোগ্রামটি একবারে কম্পাইল করে, তাই প্রোগ্রামে কোনো ভুল থাকলে একসাথে তা জানিয়ে দেয়। সে কারণে ভুলগুলো শুদ্ধ করা একটু জটিল। ভিন্ন ভিন্ন ল্যাঙ্গুয়েজের জন্য ভিন্ন ভিন্ন কম্পাইলার থাকে। আবার একই ল্যাঙ্গুয়েজের জন্য বিভিন্ন সফটওয়্যার কোম্পানির ভিন্ন ভিন্ন কম্পাইলার থাকতে পারে। যেমন- সি ল্যাঙ্গুয়েজের জন্য Turbo C/C++, Codeblocks, Dev C, Borland C++ ইত্যাদি কম্পাইলার রয়েছে।
কম্পাইলারের কাজ/সুবিধা: উৎস প্রোগ্রামকে বস্তু প্রোগ্রামে অনুবাদ করা। প্রোগ্রামে কোন ভুল থাকলে তা জানানো।
কম্পাইলারের অসুবিধা: ধাপে ধাপে ভুল শনাক্ত ও সংশোধন করা যায় না। বেশি মেমোরি দরকার।
২. ইন্টারপ্রেটার (Interpreter):
যে অনুবাদক প্রোগ্রাম হাই-লেভেল ভাষার উৎস প্রোগ্রামকে এক লাইন এক লাইন করে মেশিন ভাষার অবজেক্ট প্রোগ্রামে অনুবাদ করে, তাকে ইন্টারপ্রেটার বলে। ইন্টারপ্রেটার প্রোগ্রাম নির্বাহ (রান) করার সময় প্রোগ্রামের ভুল দেখা ও সংশোধন করার সুযোগ দেয়। একটি একটি লাইন করে অনুবাদ করে বিধায় এতে তুলনামূলকভাবে সময় বেশি লাগে। ইন্টারপ্রেটার ল্যাঙ্গুয়েজ দ্বারা ব্যবহৃত হয়। যেমন- জাভা, পাইথন।
ইন্টারপ্রেটারের সুবিধা: ইন্টারপ্রেটার অধিক ব্যবহারবান্ধব (User Friendly) । প্রোগ্রামের ভুল সংশোধন করা বা প্রোগ্রাম পরিবর্তন করা সহজ। মেমোরি কম খরচ হয়।
ইন্টারপ্রেটারের অসুবিধা: প্রোগ্রাম কার্যকরী করতে কম্পাইলের তুলনায় ৫ থেকে ২৫ গুণ বেশি সময় লাগে। যতবার প্রোগ্রাম কার্যকরী করতে হয়, ততবারই প্রোগ্রামের নির্দেশগুলো একটির পর একটি অনুবাদ করতে হয়।
৩. অ্যাসেম্বলার (Assembler):
অ্যাসেম্বলি ভাষায় লিখিত প্রোগ্রামকে মেশিন ল্যাঙ্গুয়েজে অনুবাদ করার জন্য ব্যবহৃত অনুবাদককে অ্যাসেম্বলার বলা হয়। এটি সব ডেটা ও নির্দেশ প্রধান মেমোরিতে রাখে এবং প্রোগ্রামের কোথাও ভুল থাকলে এরর মেসেজ দিয়ে জানিয়ে দেয়। উদাহরণ: GAS, GNU assemblers.