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

আমরা বেশিরভাগ হাই-লেভেল ভাষায় একটি কম্পিউটার প্রোগ্রাম লিখি যা মানুষ বোঝে।হাই-লেভেল ভাষাগুলি হ'ল যা মানব ভাষার শব্দ এবং বাক্যাংশ ধারণ করে উদাহরণস্বরূপ ইংরেজি।হাই-লেভেল প্রোগ্রামিং ভাষা একটি কম্পিউটার প্রোগ্রামে সোর্স কোড নামেও পরিচিত।যাইহোক কম্পিউটার মেশিন এই হাই-লেভেল প্রোগ্রামিং ভাষা বুঝতে পারে না।এটি শুধুমাত্র তার মেশিন কোড বুঝতে পারে যেমন 0 এবং 1।

{tocify} $title={Table of Contents}

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

কম্পিউটারের মাধ্যমে হাই-লেভেল ভাষায় লিখিত একটি প্রোগ্রাম পরিচালনা করতে আমাদের এটিকে মেশিন ভাষায় রূপান্তর করতে হবে।এটি করার জন্য হয় একটি কম্পাইলার বা একটি ইন্টারপ্রেটার অথবা উভয়ই একটি সোর্স কোড প্রোগ্রামিং ভাষাকে মেশিন কোডে রূপান্তর করতে ব্যবহৃত হয়।কম্পাইলার এবং ইন্টারপ্রেটার হল এমন সফ্টওয়্যার প্রোগ্রাম যা একটি হাই-লেভেল  ভাষাকে একটি মেশিন ল্যাঙ্গুয়েজ (0 এবং 1 এর বাইনারি ফর্ম) তে রূপান্তর করে যা একটি কম্পিউটার বুঝতে পারে এবং প্রোগ্রামের নির্দেশ অনুসারে কাজ কমপ্লিট করতে পারে।কিন্তু কম্পাইলার এবং ইন্টারপ্রেটারের কাজের প্রক্রিয়ার ধাপ তারতম্য রয়েছে।একটি কম্পাইলার এবং একটি ইন্টারপ্রেটার মধ্যে পার্থক্য করার আগে আসুন তাদের উভয় সম্পর্কে একটি সংক্ষিপ্ত ভূমিকা দেখি।

কম্পাইলার

একটি কম্পাইলার একটি সফ্টওয়্যার প্রোগ্রাম যা একটি হাই-লেভেল কোডকে মেশিন কোডে রূপান্তর করতে এবং প্রোগ্রামিং ভাষার সিনট্যাক্স নিয়ম অনুসরণ করেতে ব্যাবহার হয়।এটি একটি প্রোগ্রামে কোনো ত্রুটি ঠিক করতে পারে না কম্পাইলার সুধু মাত্র এরর মেসেজ তৈরি করতে পারে এবং আপনার প্রোগ্রামে কোথাও ভুল থাকলে সংশোধন করতে সাহায্য করে। যদি আপনার লিখিত প্রোগ্রাম সঠিক হয় কোন ত্রুটি নেই তাহলে কম্পাইলার আপনার পুরো সোর্স কোডটিকে মেশিন কোডে রূপান্তর করবে।একটি কম্পাইলার সম্পূর্ণ সোর্স কোডকে একবারে মেশিন কোডে রূপান্তর করে। এবং অবশেষে আপনার প্রোগ্রাম কার্যকর করে তোলে।সোর্স কোডের সম্পূর্ণ কম্পাইলেশন স্টেপস দুটি ধাপে পরিচালিত হয় এনালাইসিস এবং সিনথেসিস।

এনালাইসিস

এই কম্পাইলার ফেজটিকে ফ্রন্ট এন্ড ফেজও বলা হয় যেখানে একটি সোর্স কোডকে ব্যাকরণ, সিনট্যাক্স এবং কোডের শব্দার্থ পরীক্ষা করার জন্য মৌলিক অংশে ভাগ করা হয় এর পরে ইন্টারমিডিয়েট কোড তৈরি হয়।

সিনথেসিস

সিনথেসিস ফেজটি ব্যাক এন্ড ফেজ নামেও পরিচিত যেখানে ইন্টারমিডিয়েট কোড (যা অ্যানালাইসিস ফেজে তৈরি হয়েছিল) এটিকে অপ্টিমাইজ করা হয় এবং টার্গেট মেশিন কোডে রূপান্তর করা হয়।

  • কম্পাইল আপনার প্রোগ্রামের স্টেটমেন্টস বিশ্লেষণ করবে এবং সঠিকতা পরীক্ষা করবে। একটি প্রোগ্রামে ত্রুটি বা ভুল পাওয়া গেয়ে এটি একটি এররর ম্যাসেজ শো করবে।  
  • যদি প্রোগ্রামটিতে কোন ত্রুটি না থাকে তাহলে কম্পাইলার সোর্স কোড প্রোগ্রামটিকে মেশিন কোডে রূপান্তর করব।অবশেষে এটি প্রোগ্রাম রান  করে এবং আউটপুট তৈরি করে।
  • কম্পাইলার সমস্ত কোড ফাইলকে একটি সিঙ্গেল প্রোগ্রামে লিঙ্ক করে যা exe ফাইল নামে পরিচিত।
  • একটি কম্পাইলার সম্পূর্ণ হাই-লেভেল প্রোগ্রামিং কোডকে একসাথে মেশিন কোডে অনুবাদ করে।
  • সোর্স কোড মেশিন কোডে রূপান্তরিত হলে কোড কার্যকর করার সময় ছোট হয়ে যায়।
  • আপনি যদি কোনো কারণে আপনার প্রোগ্রাম পরিবর্তন করতে চান এরর বা লজিকাল পরিবর্তনের মাধ্যমে তাহলে আপনি শুধুমাত্র আপনার সোর্স কোডে ফিরে গিয়ে এটি করতে পারেন।
  • এটি আপনার সোর্স কোড প্রোগ্রাম থেকে রূপান্তরিত মেশিন কোড ডিস্কে সংরক্ষণ করে।
  • একটি কম্পাইলার সোর্স কোড এনালাইসিস করতে বিশাল সময় নেয়। যাইহোক প্রোগ্রামিং কোড একটি ইন্টারপ্রেটার থেকে কম্পাইলার কম্প্রেশন হিসাবে দ্রুত চলে।
  • কম্পাইলার প্রোগ্রামের একটি আউটপুট তৈরি করে (একটি exe ফাইলের আকারে) যা সোর্স কোড প্রোগ্রাম থেকে আলাদাভাবে চলতে পারে।
  • সম্পূর্ণ প্রোগ্রাম কম্পাইল করার পরেই প্রোগ্রাম এক্সিকিউশন হয়।
  • একটি কম্পাইল্ড প্রোগ্রাম একটি ইন্টারমিডিয়েট অবজেক্ট কোডে তৈরি হয় এবং এটির আরও লিঙ্কিং প্রয়োজন। তাই আরও মেমরির প্রয়োজন আছে।
  • কম্পাইল্ড প্রোগ্রামটি নির্দিষ্ট লক্ষ্য মেশিনে আবদ্ধ। এটি চালানোর জন্য মেশিনে একই কম্পাইলার প্রয়োজন কম্পাইলেশন মডেলের উপর ভিত্তি করে C এবং C++ হল সবচেয়ে জনপ্রিয় প্রোগ্রামিং ভাষা।
  • কম্পাইলার প্রোগ্রাম কমপ্লিট করার সময় কোন ভুল থাকলে এরর এবং ওয়ার্নিং বার্তা দেখায়। তাই প্রোগ্রামের ভুল ঠিক না করে প্রোগ্রাম চালানো সম্ভব নয়। একটি কম্পাইলারের সাথে কাজ করার সময় প্রোগ্রামটির ডিবাগিং করা তুলনামূলকভাবে জটিল।

ইন্টারপ্রেটার

একটি ইন্টারপ্রেটার একটি সফ্টওয়্যার প্রোগ্রাম যা একটি কোডকে একটি মেশিন ভাষায় অনুবাদ করে।যাইহোক একটি ইন্টারপ্রেটার হাই লেভেল প্রোগ্রামিং ল্যাঙ্গুয়েজকে মেশিন ল্যাঙ্গুয়েজ লাইন-বাই-লাইনে রুপান্তর করে।

  • ফাইলের কোনো লিঙ্কিং ঘটবে না বা আলাদাভাবে কোনো মেশিন কোড তৈরি হবে না।
  • সোর্স কোড প্রোগ্রামিং স্টেটমেন্টগুলি তাদের এক্সেকিউটেড সময় লাইন-বাই-লাইন কার্যকর করা হয়। যদি কোনো নির্দিষ্ট স্টেটমেন্ট ইন্টারপ্রেটারে একটি ত্রুটি পাওয়া যায় তাহলে ত্রুটিটি  ঠিক না হওয়া পর্যন্ত এটি কার্যকর করা বন্ধ করে দেয়।
  • ইন্টারপ্রেটার এক সময়ে প্রোগ্রামিং কোডের একটি লাইন কে মেশিন কোডে অনুবাদ করে।
  • যেহেতু সোর্স কোড লাইন-বাই-লাইন অনুবাদ করে তার জন্য ভুল খুঁজতে এবং কোড সংশোধন সহজ হয়ে যায়।
  • ইন্টারপ্রেটেড প্রোগ্রামগুলি শুধুমাত্র সেই কম্পিউটারগুলিতে চলতে পারে যার একই ইন্টারপ্রেটার রয়েছে
  • ইন্টারপ্রেটার একটি কম্পাইলারের তুলনায় সোর্স কোড এনালাইসিস করতে কম সময় নেয়। যাইহোক সামগ্রিকভাবে ইন্টারপ্রেটেড করা প্রোগ্রামিং কোড কম্পাইলারের কম্প্রেশন হিসাবে স্লো কাজ করে।
  • ইন্টারপ্রেটার একটি আউটপুট প্রোগ্রাম হিসাবে একটি পৃথক মেশিন কোড তৈরি করে না। তাই এটি কার্যকর করার সময় প্রতিবার সোর্স কোড চেক করে।
  • প্রোগ্রাম এক্সিকিউশন প্রক্রিয়াটি ইন্টারপ্রিটেশন ধাপের একটি অংশ তাই এটি একই সাথে লাইন-বাই-লাইন করা হয়।
  • একটি ইন্টারপ্রেটেড প্রোগ্রাম একটি ইন্টারমিডিয়েট কোড তৈরি করে না। তাই অতিরিক্ত মেমোরির প্রয়োজন নেই।
  • ওয়েব এনভিরনমেন্টস এমনকি ছোট কোড চালানোর জন্য কম্পাইলিং অপেক্ষাকৃত বেশি সময় নেয় যা একাধিকবার নাও চলতে পারে। যেহেতু ওয়েব এনভিরনমেন্টস লোড টাইম অপরিহার্য তাই ইন্টারপ্রেটার ওয়েব ইনভারমেন্ট এর জন্য ভাল বিকল্প হতে পারে যেমন জাভাস্ক্রিপ্ট, পাইথন, রুবি ইন্টারপ্রেটার মডেলের উপর ভিত্তি করে প্রোগ্রাম রান করানো হয়।
  • ইন্টারপ্রেটার প্রোগ্রামটি লাইন-বাই-লাইন পড়ে সেই নির্দিষ্ট লাইনে উপস্থিত থাকলে এটি ভুল দেখায়।প্রোগ্রামের পরবর্তী লাইনটি ব্যাখ্যা করার জন্য আপনাকে প্রথমে ত্রুটিটি সংশোধন করতে হবে। ইন্টারপ্রেটার সাথে কাজ করার সময় ডিবাগিং তুলনামূলকভাবে সহজ।

কম্পাইলারের সুবিধা এবং অসুবিধা

একটি সোর্স কোড মেশিন কোডে অনুবাদ করার জন্য একটি কম্পাইলার ব্যবহার করার সময় প্রোগ্রাম কোডগুলি বিভিন্ন অবজেক্ট কোডে অনুবাদ করা হয়।তাই কোড এক্সিকিউশনের সময় উল্লেখযোগ্যভাবে কম। একটি কম্পাইলার ব্যবহার করার অসুবিধা হল যে আপনি শুধুমাত্র আপনার সোর্স কোডে ফিরে গিয়ে প্রোগ্রামে পরিবর্তন করতে পারেন।

ইন্টারপ্রেটার সুবিধা এবং অসুবিধা

ইন্টারপ্রেটার সোর্স কোডের সাথে কাজ করা সহজ করে তোলে। তাই এটি অত্যন্ত পছন্দের বিশেষ করে নতুনদের জন্য। ইন্টারপ্রেটেড প্রোগ্রামগুলি শুধুমাত্র সেই কম্পিউটারগুলিতে চলতে পারে যার একই ইন্টারপ্রেটার রয়েছে।

নবীনতর পূর্বতন