সহজ ভাষায় বললে, কম্পাইলার এবং ইন্টারপ্রেটার উভয়ই এমন এক ধরণের Translator প্রোগ্রাম যা আমাদের লেখা High Level ল্যাঙ্গুয়েজ কে Low Level ল্যাঙ্গুয়েজ অথবা Binary কোড এ রূপান্তর করে যাহা কম্পিউটার দারা বোধগম্য।কিন্তু কম্পাইলার এবং ইন্টারপ্রেটার দুটি ভিন্ন ভাবে কাজ করে। তাই তাদেরকে আলাদা নাম দেয়া হয়েছে।

কম্পাইলার
একটি কম্পাইলার একটি হাই লেভেল ল্যাঙ্গয়েজ কে লো লেভেল ল্যাঙ্গুয়েজে যেমন Assemble Language, Object Code অথবা Binary Code (0 and 1) এ একবারে translate করে. তারপরে টার্গেট প্রোগ্রাম টা  runnable হয়। সুতারং প্রোগ্রাম রান করার আগেই প্রোগ্রাম কে compile করে রাখা হয়। যেমন C, C++, C#, Java, etc. কম্পাইলার এর আবার অনেক রকম ধরণ রয়েছে।

 

053018 0616 CompilervsI1 e1642141249413 কম্পাইলার বনাম ইন্টারপ্রেটার

ইন্টারপ্রিটার
একটি ইন্টারপ্রেটার হাই লেভেল ল্যাঙ্গুয়েজ কে line by line translate করে যা শুধু টার্গেট প্রোগ্রাম রান করার সময় সম্পন্ন হয়। যেমন PHP, Python, JavaScript(basically), Perl, Ruby, etc. ইন্টারপ্রেটার এর ও অনেক ধরণ রয়েছে।

053018 0616 CompilervsI1 1 e1642141310310 কম্পাইলার বনাম ইন্টারপ্রেটার

 

কম্পাইলার এবং ইন্টারপ্রেটারের মধ্যে পার্থক্য 

যেহেতু ইন্টারপ্রেটার এবং কম্পাইলার ভিন্ন ভাবে কাজ করে, তাদের মধ্যে অনেক পার্থক্য রয়েছে। চলেন প্রধান পার্থক্ষগুলা দেখে নেই।

Compiler  Interpreter 
কম্পাইলার সম্পূর্ণ সোর্স কোড নিয়ে সেটা পুরোটা analyze করে ফাইনাল মেশিন কোড তৈরী করে. ইন্টারপ্রেটার reads লাইন by লাইন, analyze and এক্সেকিউট লাইন by লাইন।
কম্পাইল্ড কোড দ্রুত রান হয়। ইন্টারপ্রেটেড কোড একটু স্লোওলী রান হয়।
কম্পাইলার compile হবার সময় errors দেখায়। কোড এ errors  থাকলে compile হয়না। ইন্টারপ্রেটার কোড রান হওয়ার সময় errors দেখায়, যেহেতু ইন্টারপ্রেটার কোড রান হওয়ার সময় ট্রান্সলেট করে।
কম্পাইলার প্রথমে ইন্টারমিডিয়েট machine/object  code তৈরী করে। ইন্টারপ্রেটার কখনোই ইন্টারমিডিয়েট machine code বানায়না।
বেশি মেমোরি এর দরকার হয় যেহেতু ইন্টারমিডিয়েট অবজেক্ট কোড তৈরী করে। কম মেমোরি এর দরকার হয়।
একবার compile হবার পর আর কম্পাইলার এর দরকার নেই। বারবার ইন্টারপ্রেটার এর দরকার হয়, রান করার জন্য।