অনুবাদক প্রোগ্রাম: কম্পাইলার, ইন্টারপ্রিটার ও অ্যাসেম্বলার

এইচএসসি আইসিটি: অনুবাদক প্রোগ্রাম কী? কম্পাইলার, ইন্টারপ্রিটার ও অ্যাসেম্বলারের বিস্তারিত আলোচনা, পার্থক্য এবং সুবিধা-অসুবিধা।

শেখা শুরু করুন

অনুবাদক প্রোগ্রাম: কম্পাইলার, ইন্টারপ্রিটার ও অ্যাসেম্বলার

  1. অনুবাদক প্রোগ্রাম: কম্পাইলার, ইন্টারপ্রিটার ও অ্যাসেম্বলার
  2. মানুষের ভাষা vs কম্পিউটারের ভাষা
  3. অনুবাদক প্রোগ্রাম (Translator Program) কী?
  4. কম্পাইলার (Compiler)
  5. কম্পাইলারের সুবিধা ও অসুবিধা
  6. ইন্টারপ্রিটার (Interpreter)
  7. ইন্টারপ্রিটারের সুবিধা ও অসুবিধা
  8. অ্যাসেম্বলার (Assembler)
  9. কম্পাইলার বনাম ইন্টারপ্রিটার: পার্থক্য
  10. কোনটি ব্যবহার করব?
  11. সারসংক্ষেপ

অনুবাদক প্রোগ্রাম: কম্পাইলার, ইন্টারপ্রিটার ও অ্যাসেম্বলার

এই লেকচার শেষে আমরা-

১। অনুবাদক প্রোগ্রামের ধারণা ও প্রকারভেদ ব্যাখ্যা করতে পারব।
২। কম্পাইলার ও ইন্টারপ্রিটারের কার্যপ্রণালী বর্ণনা করতে পারব।
৩। অ্যাসেম্বলারের কাজ ব্যাখ্যা করতে পারব।
৪। কম্পাইলার ও ইন্টারপ্রিটারের মধ্যে পার্থক্য নির্ণয় করতে পারব।

সুপ্রিয় শিক্ষার্থীরা, প্রোগ্রামিং ভাষার ভুবনে তোমাদের স্বাগতম! আজকে আমরা খুব ইন্টারেস্টিং একটা টপিক নিয়ে কথা বলব—সেটা হলো অনুবাদক প্রোগ্রাম। নাম শুনেই বুঝতে পারছ, এর কাজ হলো অনুবাদ করা। কিন্তু কী অনুবাদ করে? কেনই বা অনুবাদ করা লাগে? এই লেকচার শেষে তোমরা অনুবাদক প্রোগ্রাম কী, কম্পাইলার ও ইন্টারপ্রিটার কীভাবে কাজ করে, এদের মধ্যে পার্থক্য কী এবং অ্যাসেম্বলার কেন ব্যবহার করা হয়—এই সব প্রশ্নের উত্তর খুব সহজেই দিতে পারবে। চলো শুরু করা যাক!

মানুষের ভাষা vs কম্পিউটারের ভাষা

সমস্যা: কম্পিউটার মানুষের ভাষা (ইংরেজি/বাংলা) বোঝে না। সে বোঝে শুধু আর (বাইনারি/মেশিন ভাষা)।

সমাধান: আমাদের কথা বা কোডকে কম্পিউটারের বোধগম্য ভাষায় রূপান্তর করার জন্য মাঝখানে একজন অনুবাদক (Translator) প্রয়োজন।

উদাহরন:
ধরা যাক, একজন জাপানি ও একজন বাঙালি কথা বলছে। মাঝখানে একজন দোভাষী (Translator) আছে। সে দুইভাবে কাজ করতে পারে:
১. পুরো কথা শুনে তারপর অনুবাদ করা।
২. প্রতিটি বাক্য শুনে সাথে সাথে অনুবাদ করা।

আচ্ছা, একটা গল্প দিয়ে শুরু করি। ধরো, তোমার এক জাপানি বন্ধু আছে। সে বাংলা বোঝে না, আর তুমি জাপানি বোঝো না। এখন তোমাদের মধ্যে কথা বলতে হলে কী লাগবে? একজন দোভাষী বা Translator, তাই না? কম্পিউটারও ঠিক সেই জাপানি বন্ধুর মতো। আমরা যে কোড লিখি—সেটা ইংরেজি বা বাংলার মতো হলেও কম্পিউটার সেটা বোঝে না। সে বোঝে শুধু ০ আর ১। তাই আমাদের এই সোর্স কোডকে মেশিনের ভাষায় রূপান্তর করতে মাঝখানে একটা অনুবাদক প্রোগ্রাম লাগে। এই দোভাষী বা অনুবাদক দুইভাবে কাজ করতে পারে—হয় সে পুরো ভাষণ শুনে শেষে অনুবাদ করবে, অথবা লাইন বাই লাইন শুনে সাথে সাথে অনুবাদ করবে। কম্পিউটারের ক্ষেত্রেও ঠিক তাই ঘটে।

অনুবাদক প্রোগ্রাম (Translator Program) কী?

সংজ্ঞা: যে কম্পিউটার প্রোগ্রাম বা সফটওয়্যার উৎস প্রোগ্রামকে (Source Program) যান্ত্রিক ভাষায় বা বস্তু প্রোগ্রামে (Object Program) রূপান্তর করে, তাকে অনুবাদক প্রোগ্রাম বলে।

অনুবাদক প্রোগ্রামের প্রকারভেদ:
১. কম্পাইলার (Compiler)
২. ইন্টারপ্রিটার (Interpreter)
৩. অ্যাসেম্বলার (Assembler)

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

কম্পাইলার (Compiler)

কাজ: কম্পাইলার সম্পূর্ণ সোর্স প্রোগ্রামটি একবারে পড়ে এবং একসাথে মেশিন কোডে রূপান্তর করে।

বৈশিষ্ট্য:
* ইনপুট হিসেবে পুরো প্রোগ্রামটি নেয়।
* আউটপুট হিসেবে একটি পূর্ণাঙ্গ অবজেক্ট ফাইল (.exe, .obj) তৈরি করে।
* প্রোগ্রামে কোনো ভুল থাকলে সব ভুল একসাথে প্রদর্শন করে।
* উদাহরণ: C, C++, Java।

প্রথমে আসি কম্পাইলারে। কম্পাইলার হলো সেই সিরিয়াস দোভাষীর মতো, যে তোমার পুরো ভাষণ আগে শুনবে, তারপর নোট নেবে এবং শেষে পুরোটা অনুবাদ করে দেবে। কম্পাইলার পুরো কোডটা একবারে পড়ে। পড়ার পর সে এটাকে মেশিন কোডে রূপান্তর করে একটা আলাদা ফাইল তৈরি করে—যাকে আমরা অবজেক্ট ফাইল বা এক্সিকিউটেবল ফাইল বলি। আর যদি তোমার কোডে ভুল থাকে? কম্পাইলার কিন্তু সাথে সাথে থামবে না। পুরোটা পড়ে শেষে তোমাকে একটা লম্বা লিস্ট ধরিয়ে দেবে—'এই নাও, তোমার এই ১০টা লাইনে ভুল আছে, ঠিক করো'। C এবং C++ ভাষায় এই কম্পাইলার ব্যবহার করা হয়।

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

সুবিধা
  1. গতি: একবার কম্পাইল করার পর প্রোগ্রামটি খুব দ্রুত রান করে, কারণ বারবার অনুবাদ করার প্রয়োজন হয় না।
  2. সম্পূর্ণতা: সম্পূর্ণ প্রোগ্রামটি একসাথে চেক করা হয়।
  3. নিরাপত্তা: মূল সোর্স কোডটি লুকিয়ে রাখা যায় (শুধু .exe ফাইল দিলেই হয়)।

কম্পাইলার ব্যবহারের কিছু দারুণ সুবিধা আছে। সবচেয়ে বড় সুবিধা হলো গতি। একবার যখন তুমি কোড কম্পাইল করে ফেললে এবং .exe ফাইল পেয়ে গেলে, তখন আর কম্পাইলারের দরকার নেই। ওই ফাইলটা খুব দ্রুত রান করবে। কিন্তু অসুবিধাও আছে। ধরো তুমি নতুন কোডিং শিখছ। তুমি কোড লিখলে, আর কম্পাইলার তোমাকে একসাথে ৫০টা এরর বা ভুল দেখাল! এটা দেখে ঘাবড়ে যাওয়া স্বাভাবিক। ডিবাগিং বা ভুল সংশোধন করাটা এখানে একটু কঠিন। আর হ্যাঁ, যেহেতু সে আলাদা ফাইল তৈরি করে, তাই মেমোরিও একটু বেশি লাগে।

ইন্টারপ্রিটার (Interpreter)

কাজ: ইন্টারপ্রিটার সোর্স প্রোগ্রামটি লাইন-বাই-লাইন (এক লাইন করে) পড়ে এবং সাথে সাথে অনুবাদ করে নির্বাহ (Execute) করে।

বৈশিষ্ট্য:
* একটি করে লাইন পড়ে, অনুবাদ করে এবং রান করে।
* কোনো আলাদা অবজেক্ট ফাইল তৈরি করে না।
* প্রথম ভুল (Error) পেলেই কাজ থামিয়ে দেয়।
* উদাহরণ: Python, BASIC, Ruby।

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

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

সুবিধা
  1. ডিবাগিং সহজ: ভুল থাকলে সেখানেই প্রোগ্রাম থেমে যায় এবং ভুল সংশোধন করতে বলে। নতুনদের জন্য এটি খুব সহায়ক।
  2. মেমোরি সাশ্রয়: আলাদা কোনো অবজেক্ট ফাইল তৈরি করে না।
  3. তাৎক্ষণিক ফলাফল: কোড লেখার সাথে সাথেই ফলাফল দেখা যায়।

তোমরা যারা নতুন প্রোগ্রামিং শুরু করছ, তাদের জন্য ইন্টারপ্রিটার খুব বন্ধুসুলভ। কেন জানো? কারণ কোডের ৫ নম্বর লাইনে যদি ভুল থাকে, ইন্টারপ্রিটার ওখানেই থেমে যাবে এবং বলবে—'এই লাইনটা ঠিক করো, তারপর সামনে যাব'। এতে ভুল ধরা বা ডিবাগিং খুব সহজ হয়। কিন্তু সমস্যা হলো গতিতে। যেহেতু প্রতিবার রান করার সময় এটাকে নতুন করে অনুবাদ করতে হয়, তাই বড় সফটওয়্যারের ক্ষেত্রে এটি কম্পাইলারের চেয়ে স্লো বা ধীরগতির হয়ে যায়।

অ্যাসেম্বলার (Assembler)

কাজ: অ্যাসেম্বলি ভাষায় (Assembly Language) লেখা কোডকে মেশিন ভাষায় (Machine Language) রূপান্তর করে।

কীভাবে কাজ করে?
* নেমোনিক (Mnemonic): অ্যাসেম্বলি ভাষায় বিভিন্ন সংকেত ব্যবহার করা হয় (যেমন: ADD, SUB, MOV)। অ্যাসেম্বলার এগুলোকে বাইনারি কোডে (0, 1) রূপান্তর করে।
* এটি হার্ডওয়্যার বা মেশিনের আর্কিটেকচারের উপর নির্ভরশীল।

আমরা তো হাই লেভেল ভাষার জন্য কম্পাইলার আর ইন্টারপ্রিটার পেলাম। কিন্তু অ্যাসেম্বলি ভাষার জন্য কী আছে? তার নাম অ্যাসেম্বলার। অ্যাসেম্বলি ভাষায় আমরা ছোট ছোট ইংরেজি শব্দ বা নেমোনিক ব্যবহার করি, যেমন যোগ করার জন্য ADD, বিয়োগের জন্য SUB। কম্পিউটার তো আর ADD বা SUB বোঝে না। অ্যাসেম্বলারের কাজ হলো এই নেমোনিক কোডগুলোকে ধরে ধরে ০ আর ১ এর বাইনারি কোডে রূপান্তর করা। মনে রাখবে, অ্যাসেম্বলার কিন্তু হার্ডওয়্যারের ওপর খুব বেশি নির্ভরশীল।

কম্পাইলার বনাম ইন্টারপ্রিটার: পার্থক্য

পার্থক্যের বিষয় কম্পাইলার (Compiler) ইন্টারপ্রিটার (Interpreter)
অনুবাদ পদ্ধতি পুরো প্রোগ্রাম একসাথে অনুবাদ করে এক লাইন করে অনুবাদ করে
গতি অনুবাদের পর কাজ করার গতি বেশি কাজ করার গতি তুলনামূলক কম
অবজেক্ট ফাইল পূর্ণাঙ্গ অবজেক্ট ফাইল তৈরি হয় কোনো অবজেক্ট ফাইল তৈরি হয় না
ভুল প্রদর্শন সব ভুল একসাথে প্রদর্শন করে প্রথম ভুল পেলেই থেমে যায়
মেমোরি মেমোরি বেশি প্রয়োজন হয় মেমোরি কম প্রয়োজন হয়

পরীক্ষার জন্য এবং কনসেপ্ট ক্লিয়ার করার জন্য এই স্লাইডটা সবচেয়ে গুরুত্বপূর্ণ। কম্পাইলার বনাম ইন্টারপ্রিটার। মূল পার্থক্যগুলো খেয়াল করো। ১. কম্পাইলার পুরোটা একসাথে 'খায়', ইন্টারপ্রিটার একটু একটু করে। ২. গতিতে কম্পাইলার খরগোশের মতো ফাস্ট, কারণ তার অনুবাদ আগেই করা থাকে। ইন্টারপ্রিটার কচ্ছপের মতো একটু স্লো, কারণ তাকে দৌড়ানোর সময়ও অনুবাদ করতে হয়। ৩. কম্পাইলার মেমোরি বেশি নেয় কারণ সে আলাদা ফাইল বানায়, ইন্টারপ্রিটার তা করে না। এই ছকটা তোমরা ভালো করে আয়ত্ত করে নিবে।

কোনটি ব্যবহার করব?

ব্যবহারিক প্রয়োগ:

  1. প্রোগ্রাম তৈরির সময় (Development Phase): যখন আমরা কোড লিখছি বা শিখছি, তখন ইন্টারপ্রিটার ভালো। কারণ ভুল ধরা সহজ।

  2. প্রোগ্রাম ব্যবহারের সময় (Production Phase): যখন সফটওয়্যারটি মানুষের ব্যবহারের জন্য তৈরি হয়ে যায়, তখন কম্পাইলার ভালো। কারণ ব্যবহারকারী চায় দ্রুতগতি।

হাইব্রিড পদ্ধতি: আধুনিক অনেক ভাষা (যেমন: Java, C#) কম্পাইলার ও ইন্টারপ্রিটার—উভয়ই ব্যবহার করে সেরা পারফরম্যান্স পাওয়ার জন্য।

এখন প্রশ্ন হলো, আমি কোনটা ব্যবহার করব? বা কোনটা সেরা? উত্তর হলো—পরিস্থিতির ওপর নির্ভর করে। তুমি যখন প্রোগ্রামার হিসেবে কোড লিখছ বা শিখছ, তখন ইন্টারপ্রিটার সেরা, কারণ ভুল সংশোধন সহজ। কিন্তু যখন তুমি একটা গেম বা অ্যাপ বানিয়ে ফেললে এবং সেটা মানুষকে ব্যবহার করতে দিলে, তখন কম্পাইলার দিয়ে সেটাকে .exe বানিয়ে দেওয়া ভালো। এতে ব্যবহারকারী খুব দ্রুত স্পিড পাবে। আর মজার বিষয় হলো, জাভার মতো কিছু আধুনিক ভাষা এই দুইয়ের মিশ্রণ বা হাইব্রিড পদ্ধতি ব্যবহার করে।

সারসংক্ষেপ

১। অনুবাদক প্রোগ্রাম: সোর্স কোডকে মেশিন কোডে রূপান্তর করে।
২। কম্পাইলার: সম্পূর্ণ কোড একসাথে অনুবাদ করে, দ্রুতগতি সম্পন্ন, কিন্তু ডিবাগিং কঠিন।
৩। ইন্টারপ্রিটার: লাইন-বাই-লাইন অনুবাদ করে, ধীরগতি, কিন্তু ডিবাগিং সহজ।
৪। অ্যাসেম্বলার: অ্যাসেম্বলি ভাষাকে মেশিন ভাষায় রূপান্তর করে।

আজকের ক্লাস শেষ করার আগে চলো একবার ঝালাই করে নিই। আমরা জানলাম অনুবাদক প্রোগ্রাম কেন লাগে—কারণ কম্পিউটার শুধু ০ আর ১ বোঝে। আমরা দেখলাম কম্পাইলার পুরো বই একসাথে পড়ার মতো করে কাজ করে, তাই সে ফাস্ট। আর ইন্টারপ্রিটার লাইন বাই লাইন পড়ে, তাই সে নতুনদের জন্য সহজ। আর অ্যাসেম্বলি ভাষার জন্য আছে অ্যাসেম্বলার। আশা করি বিষয়টি তোমাদের কাছে এখন পানির মতো পরিষ্কার। পরবর্তী ক্লাসে আমরা এই অধ্যায়ের আরও গভীরে যাব। সেই পর্যন্ত সবাই ভালো থেকো, ধন্যবাদ!

অনুবাদক প্রোগ্রাম: কম্পাইলার, ইন্টারপ্রিটার ও অ্যাসেম্বলার - বিস্তারিত আলোচনা ও পরীক্ষার প্রস্তুতি

পড়তে প্রায় 12 মিনিট

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

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

অনুবাদক প্রোগ্রাম (Translator Program)

কম্পিউটার একমাত্র মেশিন ভাষা বা যান্ত্রিক ভাষা বুঝতে পারে। অন্য যেকোনো ভাষায় (যেমন: C, C++, Java, Python) লেখা প্রোগ্রামকে কম্পিউটার সরাসরি নির্বাহ করতে পারে না। হাই-লেভেল বা অ্যাসেম্বলি ভাষায় লেখা প্রোগ্রামকে মেশিন ভাষায় রূপান্তর করার জন্য যে বিশেষ প্রোগ্রাম ব্যবহৃত হয়, তাকে অনুবাদক প্রোগ্রাম বলে।

সোর্স কোড থেকে অবজেক্ট কোডে রূপান্তরের চিত্র

সংজ্ঞা (Definition): যে সফটওয়্যার বা প্রোগ্রাম উৎস প্রোগ্রামকে (Source Program) বস্তু প্রোগ্রামে (Object Program) রূপান্তর করে, তাকে অনুবাদক প্রোগ্রাম (Translator Program) বলে।

এখানে দুটি গুরুত্বপূর্ণ ধারণা পরিষ্কার থাকা প্রয়োজন:

গুরুত্বপূর্ণ (Important):
- উৎস প্রোগ্রাম (Source Program): ব্যবহারকারী বা প্রোগ্রামারের লেখা হাই-লেভেল বা অ্যাসেম্বলি ভাষার প্রোগ্রামকে সোর্স প্রোগ্রাম বা সোর্স কোড বলা হয়।
- বস্তু প্রোগ্রাম (Object Program): অনুবাদক প্রোগ্রামের মাধ্যমে সোর্স কোডকে মেশিন ভাষায় (0 ও 1) রূপান্তর করার পর যে কোড পাওয়া যায়, তাকে অবজেক্ট প্রোগ্রাম বা অবজেক্ট কোড বলা হয়।

অনুবাদক প্রোগ্রাম প্রধানত তিন প্রকার:
১. কম্পাইলার (Compiler)
২. ইন্টারপ্রিটার (Interpreter)
৩. অ্যাসেম্বলার (Assembler)

কম্পাইলার (Compiler)

কম্পাইলার হলো এমন এক ধরণের অনুবাদক প্রোগ্রাম যা সম্পূর্ণ সোর্স প্রোগ্রামটিকে একত্রে পড়ে এবং একসাথে মেশিন ভাষায় রূপান্তর করে। এটি হাই-লেভেল ল্যাঙ্গুয়েজে লেখা প্রোগ্রামকে (যেমন C, C++) মেশিন ল্যাঙ্গুয়েজে পরিণত করে।

সংজ্ঞা (Definition): যে অনুবাদক প্রোগ্রাম সম্পূর্ণ সোর্স প্রোগ্রামকে বা উৎস কোডকে একসাথে পড়ে এবং পূর্ণাঙ্গভাবে মেশিন ভাষায় রূপান্তর করে অবজেক্ট ফাইল তৈরি করে, তাকে কম্পাইলার বলে।

কম্পাইলারের কাজের ধাপগুলো বেশ জটিল। এটি প্রধানত দুটি ধাপে কাজ করে—প্রথমত, সোর্স কোড বিশ্লেষণ (Analysis) এবং দ্বিতীয়ত, মেশিন কোড তৈরি (Synthesis)। বিশ্লেষণের সময় লেক্সিক্যাল অ্যানালাইসিস (শব্দ বা টোকেন শনাক্তকরণ), সিনট্যাক্স অ্যানালাইসিস (ব্যাকরণগত শুদ্ধতা যাচাই) এবং সিমান্টিক অ্যানালাইসিস (অর্থপূর্ণতা যাচাই) সম্পন্ন হয়।

কম্পাইলারের বৈশিষ্ট্য ও সুবিধা
  • গতি: যেহেতু এটি পুরো প্রোগ্রামটি একবারেই অনুবাদ করে এবং অবজেক্ট ফাইল (.obj বা .exe) তৈরি করে রাখে, তাই পরবর্তী সময়ে প্রোগ্রামটি চালানোর জন্য পুনরায় অনুবাদের প্রয়োজন হয় না। ফলে প্রোগ্রাম নির্বাহের গতি বেশি হয়।
  • ভুল নির্ণয়: কম্পাইলার সম্পূর্ণ প্রোগ্রামটি পড়ার পর ভুলের তালিকা (Error List) একসাথে প্রদর্শন করে।
  • মেমোরি: অবজেক্ট ফাইল তৈরির জন্য মেমোরিতে অতিরিক্ত জায়গার প্রয়োজন হয়।

মনে রাখার টিপস (Tip): কম্পাইলার = Complete (সম্পূর্ণ)। অর্থাৎ, এটি সম্পূর্ণ কোড একসাথে অনুবাদ করে। উদাহরণ: C, C++, Pascal, Fortran ইত্যাদি ভাষার জন্য কম্পাইলার ব্যবহৃত হয়।

ইন্টারপ্রিটার (Interpreter)

ইন্টারপ্রিটারও হাই-লেভেল ল্যাঙ্গুয়েজকে মেশিন ল্যাঙ্গুয়েজে রূপান্তর করে, তবে এর কাজের পদ্ধতি কম্পাইলারের চেয়ে ভিন্ন। এটি পুরো প্রোগ্রামটি একসাথে অনুবাদ না করে লাইন বাই লাইন (Line by Line) অনুবাদ করে এবং সাথে সাথে কার্যকর করে।

সংজ্ঞা (Definition): যে অনুবাদক প্রোগ্রাম সোর্স প্রোগ্রামের নির্দেশগুলোকে একটি একটি করে লাইন বা স্টেটমেন্ট আকারে পড়ে, অনুবাদ করে এবং তাৎক্ষণিকভাবে কার্যকর করে, তাকে ইন্টারপ্রিটার বলে।

ইন্টারপ্রিটার কোনো স্থায়ী অবজেক্ট ফাইল তৈরি করে না। তাই প্রতিবার প্রোগ্রামটি চালানোর সময় নতুন করে অনুবাদের প্রয়োজন হয়।

ইন্টারপ্রিটারের বৈশিষ্ট্য ও সুবিধা
  • ডিবাগিং সুবিধা: প্রোগ্রাম চালানোর সময় কোনো লাইনে ভুল থাকলে ইন্টারপ্রিটার সেখানেই থেমে যায় এবং ভুলের বার্তা দেয়। এটি নতুন শিক্ষার্থীদের জন্য প্রোগ্রামিং শেখা এবং ভুল সংশোধন (Debugging) সহজ করে তোলে।
  • মেমোরি: যেহেতু এটি কোনো অবজেক্ট ফাইল তৈরি করে না, তাই মেমোরিতে কম জায়গার প্রয়োজন হয়।
  • গতি: একই কোড বা লুপ বারবার চললে প্রতিবারই নতুন করে অনুবাদ করতে হয় বলে এর কার্যকারিতা বা নির্বাহের গতি কম্পাইলারের চেয়ে ধীর।

উদাহরণ: Python, Ruby, PHP, BASIC ইত্যাদি ভাষায় ইন্টারপ্রিটার ব্যবহৃত হয়।

পার্থক্য: কম্পাইলার বনাম ইন্টারপ্রিটার

পরীক্ষায় এই দুইয়ের পার্থক্য প্রায়ই আসে। নিচে একটি তুলনামূলক ছক দেওয়া হলো যা মুখস্থ রাখা জরুরি।

বৈশিষ্ট্য কম্পাইলার (Compiler) ইন্টারপ্রিটার (Interpreter)
কাজের ধরণ সম্পূর্ণ প্রোগ্রামটি একসাথে অনুবাদ করে। প্রোগ্রামটি লাইন বাই লাইন বা ধাপে ধাপে অনুবাদ করে।
অবজেক্ট ফাইল এটি পূর্ণাঙ্গ অবজেক্ট ফাইল (.exe বা .obj) তৈরি করে। এটি কোনো অবজেক্ট ফাইল তৈরি করে না।
গতি প্রোগ্রাম নির্বাহের গতি বেশি (Fast)। প্রোগ্রাম নির্বাহের গতি কম বা ধীর (Slow)।
ভুল প্রদর্শন সব ভুল একসাথে প্রদর্শন করে, তাই ভুল সংশোধন কিছুটা কঠিন হতে পারে। প্রথম ভুলটি পাওয়ার সাথে সাথেই থেমে যায়, তাই ভুল সংশোধন সহজ।
মেমোরি অবজেক্ট ফাইল রাখার জন্য বেশি মেমোরি প্রয়োজন হয়। অবজেক্ট ফাইল তৈরি করে না বলে কম মেমোরি প্রয়োজন হয়।
ব্যবহার বড় এবং জটিল প্রজেক্টের জন্য উপযোগী। প্রোগ্রামিং শেখা এবং ছোট প্রজেক্টের জন্য উপযোগী।

অ্যাসেম্বলার (Assembler)

কম্পিউটারের শুরুর দিকে প্রোগ্রামাররা বাইনারি কোড মনে রাখতে পারতেন না, তাই তারা বাইনারির পরিবর্তে কিছু সাঙ্কেতিক চিহ্ন বা নেমোনিক (Mnemonic) ব্যবহার করে প্রোগ্রাম লিখতেন। এই ভাষাকে বলা হয় অ্যাসেম্বলি ভাষা। অ্যাসেম্বলি ভাষায় লেখা প্রোগ্রামকে মেশিন ভাষায় রূপান্তরের জন্য অ্যাসেম্বলার ব্যবহৃত হয়।

সংজ্ঞা (Definition): যে অনুবাদক প্রোগ্রাম অ্যাসেম্বলি ভাষায় লেখা প্রোগ্রামকে (নেমোনিক কোড) মেশিন ভাষায় রূপান্তর করে, তাকে অ্যাসেম্বলার বলে।

উদাহরণ (Example):
ধরি, অ্যাসেম্বলি ভাষায় আমরা লিখলাম MOV AX, 5 (অর্থাৎ AX রেজিস্টারে 5 মানটি রাখো)।
অ্যাসেম্বলার এটিকে অনুবাদ করে কম্পিউটারের জন্য 1011 1000 0000 0101 এর মতো বাইনারি কোডে রূপান্তর করবে।

অ্যাসেম্বলারের প্রধান কাজ হলো নেমোনিক কোডকে (যেমন: ADD, SUB, MOV, JMP) মেশিন কোডে (Opcode) রূপান্তর করা এবং মেমোরি অ্যাড্রেস বা লেবেলগুলোকে প্রকৃত মেমোরি লোকেশনে ম্যাপ করা।

প্রোগ্রাম নির্বাহের পূর্ণাঙ্গ প্রক্রিয়া: লিঙ্কার ও লোডার

শুধুমাত্র কম্পাইল করলেই একটি প্রোগ্রাম রান করার উপযোগী হয় না। সোর্স কোড থেকে এক্সিকিউটেবল ফাইল তৈরি এবং তা রান করার পেছনে আরও দুটি গুরুত্বপূর্ণ সিস্টেম সফটওয়্যার কাজ করে—লিঙ্কার এবং লোডার।

প্রোগ্রাম নির্বাহের ফ্লোচার্ট

লিঙ্কার (Linker)

বড় প্রোগ্রামগুলো সাধারণত একাধিক ছোট ছোট ফাইলে বিভক্ত থাকে। কম্পাইলার প্রতিটি ফাইলকে আলাদাভাবে অবজেক্ট ফাইলে রূপান্তর করে। লিঙ্কারের কাজ হলো এই বিভিন্ন অবজেক্ট ফাইল এবং প্রয়োজনীয় লাইব্রেরি ফাংশনগুলোকে (যেমন printf, scanf এর কোড) একত্রে যুক্ত করে (Link) একটি একক এক্সিকিউটেবল ফাইল (.exe) তৈরি করা।

সংজ্ঞা (Definition): যে প্রোগ্রাম এক বা একাধিক অবজেক্ট ফাইল এবং লাইব্রেরি ফাইলকে যুক্ত করে একটি পূর্ণাঙ্গ এক্সিকিউটেবল প্রোগ্রাম তৈরি করে, তাকে লিঙ্কার বলে।

লোডার (Loader)

লিঙ্কার এক্সিকিউটেবল ফাইল তৈরি করে হার্ড ডিস্কে জমা রাখে। কিন্তু প্রোগ্রাম রান করার জন্য সেটিকে কম্পিউটারের প্রধান মেমোরি বা র‍্যামে (RAM) আনতে হয়। এই কাজটি করে লোডার।

সংজ্ঞা (Definition): যে সিস্টেম সফটওয়্যার এক্সিকিউটেবল ফাইলকে সেকেন্ডারি মেমোরি (যেমন হার্ড ডিস্ক) থেকে মেইন মেমোরিতে (RAM) লোড করে এবং সিপিইউ (CPU)-কে প্রোগ্রামটি নির্বাহের নির্দেশ দেয়, তাকে লোডার বলে।

সংক্ষিপ্ত সারাংশ (Quick Revision)

একনজরে মনে রাখার বিষয়:
- অনুবাদক প্রোগ্রাম: ৩ প্রকার (কম্পাইলার, ইন্টারপ্রিটার, অ্যাসেম্বলার)।
- কম্পাইলার: পুরোটা একসাথে অনুবাদ করে, অবজেক্ট ফাইল তৈরি করে, দ্রুত কাজ করে (C, C++)।
- ইন্টারপ্রিটার: এক লাইন করে অনুবাদ করে, অবজেক্ট ফাইল নেই, ধীর কিন্তু ডিবাগিং সহজ (Python)।
- অ্যাসেম্বলার: অ্যাসেম্বলি ভাষাকে মেশিন ভাষায় রূপান্তর করে।
- সোর্স কোড: মানুষের লেখা কোড।
- অবজেক্ট কোড: মেশিনের ভাষা বা বাইনারি কোড।
- লিঙ্কার: ফাইল জোড়া লাগায়।
- লোডার: মেমোরিতে লোড করে।

পরীক্ষার টিপস (Exam Tips)

সৃজনশীল প্রশ্নের জন্য পরামর্শ:
- যদি প্রশ্ন আসে "C একটি কম্পাইল্ড ভাষা—ব্যাখ্যা কর", তবে কম্পাইলারের সংজ্ঞা এবং এর কার্যপদ্ধতি (একসাথে অনুবাদ ও অবজেক্ট ফাইল তৈরি) উল্লেখ করে উত্তর লিখবে।
- পার্থক্য লেখার সময় অবশ্যই ছক ব্যবহার করবে এবং অন্তত ৪টি পয়েন্ট লিখবে।
- উদ্দীপকে যদি বলা হয় "শিক্ষক ক্লাসে এমন একটি অনুবাদের কথা বললেন যা ভুল পেলেই থেমে যায়"—তবে সেটি হবে ইন্টারপ্রিটার।

অনুশীলনের প্রশ্ন

সৃজনশীল প্রশ্ন

সৃজনশীল প্রশ্ন ১

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

ক. সোর্স কোড কী?
খ. অ্যাসেম্বলার বলতে কী বোঝায়?
গ. শিক্ষকের প্রথম উক্তিটিতে কোন অনুবাদক প্রোগ্রামের প্রতি ইঙ্গিত করা হয়েছে? ব্যাখ্যা কর।
ঘ. উদ্দীপকে উল্লিখিত দুটি অনুবাদক প্রোগ্রামের মধ্যে কোনটি বড় সফটওয়্যার তৈরির জন্য বেশি সুবিধাজনক? বিশ্লেষণপূর্বক মতামত দাও।

উত্তর

(ক) হাই-লেভেল ভাষায় বা মানুষের বোধগম্য ভাষায় লেখা প্রোগ্রামকে সোর্স কোড (Source Code) বা উৎস প্রোগ্রাম বলা হয়।

(খ) অ্যাসেম্বলার হলো এক ধরণের অনুবাদক প্রোগ্রাম যা অ্যাসেম্বলি ভাষায় লেখা প্রোগ্রামকে (নেমোনিক কোড) মেশিন ভাষায় (0 ও 1) রূপান্তর করে। এটি অ্যাসেম্বলি কোডকে যান্ত্রিক কোডে পরিণত করে যাতে কম্পিউটার তা বুঝতে পারে।

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

(ঘ) উদ্দীপকে উল্লিখিত দুটি অনুবাদক প্রোগ্রাম হলো কম্পাইলার এবং ইন্টারপ্রিটার। বড় সফটওয়্যার তৈরির জন্য কম্পাইলার বেশি সুবিধাজনক। নিচে এর বিশ্লেষণ দেওয়া হলো:

  1. কাজের গতি: বড় সফটওয়্যারে হাজার হাজার লাইনের কোড থাকে। কম্পাইলার পুরো কোডটি একবার অনুবাদ করে অবজেক্ট ফাইল তৈরি করে রাখে। ফলে পরবর্তীতে প্রোগ্রামটি চালানোর সময় পুনরায় অনুবাদের প্রয়োজন হয় না, যা সফটওয়্যার রান করার গতি বহুগুণ বাড়িয়ে দেয়। অন্যদিকে ইন্টারপ্রিটার প্রতিবার চালানোর সময় লাইন-বাই-লাইন অনুবাদ করে, যা বড় প্রোগ্রামের ক্ষেত্রে অনেক সময়সাপেক্ষ।

  2. মেমোরি ব্যবস্থাপনা: কম্পাইলার আলাদাভাবে অবজেক্ট ফাইল তৈরি করে যা স্বাধীনভাবে চালানো যায়, মূল সোর্স কোডের প্রয়োজন হয় না। এটি মেমোরি ব্যবস্থাপনায় দক্ষ।

  3. নিরাপত্তা: যেহেতু কম্পাইলার সোর্স কোডকে অবজেক্ট কোডে রূপান্তর করে ফেলে, তাই মূল সোর্স কোডটি ব্যবহারকারীর কাছে গোপন থাকে, যা বাণিজ্যিক সফটওয়্যারের জন্য জরুরি।

যদিও ইন্টারপ্রিটার দিয়ে ভুল সংশোধন (ডিবাগিং) সহজ, কিন্তু বড় ও পেশাদার সফটওয়্যার ডেভেলপমেন্ট এবং চূড়ান্ত ব্যবহারের (deployment) ক্ষেত্রে কম্পাইলারই সর্বোত্তম পছন্দ। তাই বলা যায়, বড় সফটওয়্যার তৈরির ক্ষেত্রে কম্পাইলার বেশি সুবিধাজনক।


সৃজনশীল প্রশ্ন ২

মি. রাকিব একটি সি (C) প্রোগ্রাম লিখলেন এবং সেটি রান করার পর একটি 'অবজেক্ট ফাইল' তৈরি হলো। অন্যদিকে তার বন্ধু সিফাত পাইথনে একটি কোড লিখল যা রান করার সময় কোনো আলাদা ফাইল তৈরি করল না এবং একটি ভুলের জন্য মাঝপথেই থেমে গেল। সিফাত বলল, "আমার পদ্ধতিতে ভুল খুঁজে বের করা সহজ।"

ক. অবজেক্ট কোড কী?
খ. কম্পিউটার কেন মানুষের ভাষা বুঝতে পারে না? ব্যাখ্যা কর।
গ. মি. রাকিবের প্রোগ্রাম রান করার প্রক্রিয়াটি বর্ণনা কর।
ঘ. উদ্দীপকের আলোকে রাকিব ও সিফাতের ব্যবহৃত অনুবাদক প্রোগ্রাম দুটির তুলনামূলক বিশ্লেষণ কর।

উত্তর

(ক) সোর্স কোড বা উৎস প্রোগ্রামকে কম্পাইলার দ্বারা অনুবাদ করার পর যে মেশিন ভাষায় রূপান্তরিত কোড পাওয়া যায়, তাকে অবজেক্ট কোড বা বস্তু প্রোগ্রাম বলা হয়।

(খ) কম্পিউটার একটি ইলেকট্রনিক যন্ত্র যা শুধুমাত্র বৈদ্যুতিক সংকেতের উপস্থিতি (১/ON) এবং অনুপস্থিতি (০/OFF) বুঝতে পারে। অর্থাৎ কম্পিউটার কেবল মেশিন ভাষা (বাইনারি) বুঝতে সক্ষম। মানুষের ভাষা (যেমন বাংলা, ইংরেজি) বা হাই-লেভেল ল্যাঙ্গুয়েজ বিভিন্ন বর্ণ ও শব্দ দিয়ে তৈরি যা কম্পিউটারের বোধগম্য নয়। তাই মানুষের ভাষা কম্পিউটারকে বোঝানোর জন্য অনুবাদক প্রোগ্রামের মাধ্যমে সেগুলোকে মেশিন ভাষায় রূপান্তর করার প্রয়োজন হয়।

(গ) উদ্দীপকে মি. রাকিব সি (C) প্রোগ্রাম ব্যবহার করেছেন এবং তার প্রোগ্রামে 'অবজেক্ট ফাইল' তৈরি হয়েছে। এটি নির্দেশ করে যে তিনি কম্পাইলার ব্যবহার করেছেন।
রাকিবের প্রোগ্রাম রান করার প্রক্রিয়াটি নিম্নরূপ:
১. প্রথমে রাকিব সোর্স কোড (Source Code) লিখেছে।
২. এরপর কম্পাইলার পুরো সোর্স কোডটি একসাথে স্ক্যান করেছে।
৩. যদি কোডে কোনো ভুল (Syntax Error) থাকে, তবে কম্পাইলার তা একসাথে প্রদর্শন করত। ভুল না থাকায় এটি সোর্স কোডকে মেশিন ভাষায় রূপান্তর করে একটি নতুন ফাইল বা 'অবজেক্ট ফাইল' (.obj বা .o) তৈরি করেছে।
৪. পরবর্তীতে এই অবজেক্ট ফাইলটি কম্পিউটারে রান বা নির্বাহ করা হয়েছে।

(ঘ) উদ্দীপকে রাকিব ব্যবহার করেছে কম্পাইলার এবং সিফাত ব্যবহার করেছে ইন্টারপ্রিটার। নিচে এদের তুলনামূলক বিশ্লেষণ দেওয়া হলো:

  1. অনুবাদের ধরণ: রাকিবের কম্পাইলার সম্পূর্ণ প্রোগ্রামটি একসাথে অনুবাদ করে অবজেক্ট ফাইল তৈরি করে। কিন্তু সিফাতের ইন্টারপ্রিটার প্রোগ্রামটি এক লাইন করে পড়ে এবং অনুবাদ করে, কোনো অবজেক্ট ফাইল তৈরি করে না।

  2. ভুল সংশোধন: সিফাতের দাবি অনুযায়ী, ইন্টারপ্রিটার প্রতিটি লাইনে ভুল পেলে সাথে সাথে থেমে যায় এবং ভুলটি প্রদর্শন করে। ফলে তাৎক্ষণিকভাবে ভুল সংশোধন করা সহজ হয়। অন্যদিকে রাকিবের কম্পাইলার সব ভুল একসাথে দেখায়, যা নতুনদের জন্য মাঝে মাঝে বিভ্রান্তিকর হতে পারে।

  3. এক্সিকিউশন গতি: রাকিবের প্রোগ্রামটি একবার কম্পাইল করার পর অবজেক্ট ফাইল থেকে সরাসরি চলে, তাই এটি খুব দ্রুতগতির। সিফাতের প্রোগ্রাম প্রতিবার চালানোর সময়ই নতুন করে অনুবাদ করতে হয় বলে এটি ধীরগতির।

  4. মেমোরি ব্যবহার: কম্পাইলারের ক্ষেত্রে অবজেক্ট কোড রাখার জন্য অতিরিক্ত মেমোরি লাগে, কিন্তু ইন্টারপ্রিটারে তা লাগে না।

সিদ্ধান্ত: প্রোগ্রাম শেখা বা টেস্টিং-এর জন্য সিফাতের পদ্ধতি (ইন্টারপ্রিটার) সুবিধাজনক হলেও, চূড়ান্ত বা ফাইনাল সফটওয়্যার তৈরির জন্য রাকিবের পদ্ধতি (কম্পাইলার) বেশি কার্যকর।


সৃজনশীল প্রশ্ন ৩

চিত্র ১: সোর্স কোড $\rightarrow$ অনুবাদক ক $\rightarrow$ অবজেক্ট কোড
চিত্র ২: সোর্স কোড $\rightarrow$ অনুবাদক খ $\rightarrow$ ফলাফল (লাইন বাই লাইন)

ক. অনুবাদক প্রোগ্রাম কী?
খ. কম্পাইলার ও ইন্টারপ্রিটারের মধ্যে প্রধান পার্থক্য কী?
গ. চিত্র ১-এ নির্দেশিত 'অনুবাদক ক' এর কার্যপ্রণালী ব্যাখ্যা কর।
ঘ. 'অনুবাদক খ' এর সুবিধা ও অসুবিধাগুলো উদ্দীপকের আলোকে মূল্যায়ন কর।

উত্তর

(ক) যে প্রোগ্রাম মানুষের ভাষায় বা হাই-লেভেল ভাষায় লেখা সোর্স কোডকে কম্পিউটারের বোধগম্য মেশিন ভাষায় (যান্ত্রিক ভাষায়) রূপান্তর করে, তাকে অনুবাদক প্রোগ্রাম বলে।

(খ) কম্পাইলার ও ইন্টারপ্রিটারের প্রধান পার্থক্য হলো অনুবাদের পদ্ধতি ও গতিতে। কম্পাইলার সম্পূর্ণ প্রোগ্রাম একসাথে অনুবাদ করে এবং অবজেক্ট ফাইল তৈরি করে ফলে এটি দ্রুতগতির। অন্যদিকে, ইন্টারপ্রিটার এক লাইন করে কোড অনুবাদ ও রান করে এবং কোনো অবজেক্ট ফাইল তৈরি করে না, ফলে এটি তুলনামূলক ধীরগতির।

(গ) উদ্দীপকের চিত্র ১-এ 'অনুবাদক ক' সোর্স কোড থেকে অবজেক্ট কোড তৈরি করছে। এই বৈশিষ্ট্যটি কম্পাইলারের
কম্পাইলারের কার্যপ্রণালী:
১. এটি ইনপুট হিসেবে পুরো সোর্স প্রোগ্রামটি গ্রহণ করে।
২. প্রোগ্রামটির সিনট্যাক্স (ব্যাকরণ) সঠিক আছে কিনা তা যাচাই করে।
৩. কোডে কোনো ভুল থাকলে তা তালিকা আকারে প্রদর্শন করে।
৪. ভুল সংশোধন করা হলে এটি সোর্স কোডকে মেশিন ভাষায় রূপান্তর করে একটি পূর্ণাঙ্গ অবজেক্ট প্রোগ্রাম তৈরি করে, যা পরবর্তীতে লিঙ্কার (Linker) এর সহায়তায় এক্সিকিউটেবল ফাইলে পরিণত হয়।

(ঘ) উদ্দীপকের চিত্র ২-এ 'অনুবাদক খ' লাইন বাই লাইন ফলাফল দিচ্ছে, যা ইন্টারপ্রিটার নির্দেশ করে।

ইন্টারপ্রিটারের সুবিধা:
১. এটি প্রতিটি লাইন আলাদাভাবে অনুবাদ ও নির্বাহ করে, তাই কোডের কোথায় ভুল আছে তা তাৎক্ষণিকভাবে ধরা পড়ে এবং সংশোধন করা সহজ হয় (ডিবাগিং সহজ)।
২. এটি ব্যবহারে মেমোরি কম খরচ হয় কারণ এটি কোনো মধ্যবর্তী অবজেক্ট ফাইল তৈরি করে না।
৩. ছোট প্রোগ্রাম বা প্রোগ্রামিং শেখার জন্য এটি অত্যন্ত উপযোগী।

ইন্টারপ্রিটারের অসুবিধা:
১. এর প্রধান অসুবিধা হলো ধীরগতি। লুপ বা পুনরাবৃত্তিমূলক কাজের ক্ষেত্রে একই কোড বারবার অনুবাদ করতে হয় বলে প্রচুর সময় নষ্ট হয়।
২. যেহেতু কোনো অবজেক্ট ফাইল তৈরি হয় না, তাই প্রোগ্রামটি চালাতে হলে মূল সোর্স কোড এবং অনুবাদক প্রোগ্রাম উভয়ই কম্পিউটারে থাকতে হয়।

মূল্যায়ন: উদ্দীপকের 'অনুবাদক খ' (ইন্টারপ্রিটার) ব্যবহারকারী-বান্ধব এবং উন্নয়ন পর্যায়ে (development phase) সহায়ক হলেও, বড় আকারের প্রজেক্ট বা দ্রুতগতির অ্যাপ্লিকেশনের জন্য এটি খুব একটা দক্ষ নয়।

এমসিকিউ

১। উৎস প্রোগ্রামকে যন্ত্রভাষায় অনুবাদ করে কোনটি?

ক) অপারেটিং সিস্টেম
খ) অনুবাদক প্রোগ্রাম
গ) ইউটিলিটি সফটওয়্যার
ঘ) প্যাকেজ সফটওয়্যার

সঠিক উত্তর: খ) অনুবাদক প্রোগ্রাম
ব্যাখ্যা: যে প্রোগ্রাম সোর্স কোড বা উচ্চস্তরের ভাষায় লেখা প্রোগ্রামকে কম্পিউটারের বোধগম্য মেশিন ভাষায় রূপান্তর করে তাকে অনুবাদক প্রোগ্রাম বলে।


২। অ্যাসেম্বলার কোন ধরনের ভাষা অনুবাদে ব্যবহৃত হয়?

ক) যান্ত্রিক ভাষা
খ) উচ্চস্তরের ভাষা
গ) অ্যাসেম্বলি ভাষা
ঘ) চতুর্থ প্রজন্মের ভাষা

সঠিক উত্তর: গ) অ্যাসেম্বলি ভাষা
ব্যাখ্যা: অ্যাসেম্বলার হলো একটি অনুবাদক প্রোগ্রাম যা অ্যাসেম্বলি ভাষায় (নেমোনিক কোড) লেখা প্রোগ্রামকে যান্ত্রিক ভাষায় অনুবাদ করে।


৩। সম্পূর্ণ প্রোগ্রামটিকে একসাথে অনুবাদ করে কোনটি?

ক) কম্পাইলার
খ) ইন্টারপ্রিটার
গ) অ্যাসেম্বলার
ঘ) লিঙ্কার

সঠিক উত্তর: ক) কম্পাইলার
ব্যাখ্যা: কম্পাইলার সম্পূর্ণ সোর্স প্রোগ্রামকে একসাথে পড়ে এবং পূর্ণাঙ্গভাবে মেশিন ভাষায় বা অবজেক্ট কোডে রূপান্তর করে।


৪। ইন্টারপ্রিটার ব্যবহারের প্রধান অসুবিধা কোনটি?

ক) মেমোরি বেশি লাগে
খ) ডিবাগিং কঠিন
গ) প্রোগ্রাম নির্বাহে সময় বেশি লাগে
ঘ) অবজেক্ট ফাইল তৈরি হয়

সঠিক উত্তর: গ) প্রোগ্রাম নির্বাহে সময় বেশি লাগে
ব্যাখ্যা: ইন্টারপ্রিটার প্রতিবার প্রোগ্রাম চালানোর সময় লাইন-বাই-লাইন অনুবাদ করে, তাই এটি কম্পাইলারের চেয়ে ধীরগতির এবং সময় বেশি লাগে।


৫। কোনটি ডিবাগিং বা ভুল সংশোধনের জন্য বেশি সুবিধাজনক?

ক) কম্পাইলার
খ) ইন্টারপ্রিটার
গ) অ্যাসেম্বলার
ঘ) লোডার

সঠিক উত্তর: খ) ইন্টারপ্রিটার
ব্যাখ্যা: ইন্টারপ্রিটার প্রতিটি লাইনে ভুল পেলেই থেমে যায় এবং তাৎক্ষণিক ভুল প্রদর্শন করে, ফলে প্রোগ্রামার সহজেই ভুলটি সংশোধন করতে পারেন।


৬। কম্পাইলারের কাজ কয়টি ধাপে সম্পন্ন হয়?

ক) ১টি
খ) ২টি
গ) ৩টি
ঘ) ৪টি

সঠিক উত্তর: খ) ২টি
ব্যাখ্যা: কম্পাইলারের কাজ প্রধানত দুটি ধাপে হয়: ১. সোর্স কোড বিশ্লেষণ ও ভুল সংশোধন, ২. অবজেক্ট কোড বা মেশিন ভাষায় রূপান্তর।


৭। অবজেক্ট প্রোগ্রাম তৈরি হয় কোন অনুবাদক ব্যবহারে?

ক) ইন্টারপ্রিটার
খ) কম্পাইলার
গ) ডিবাগার
ঘ) এডিটর

সঠিক উত্তর: খ) কম্পাইলার
ব্যাখ্যা: কম্পাইলার সোর্স কোডকে অনুবাদ করে একটি পূর্ণাঙ্গ অবজেক্ট ফাইল (.obj) তৈরি করে যা পরবর্তীতে বারবার ব্যবহার করা যায়।


৮। নিচের কোনটি অনুবাদক প্রোগ্রামের প্রকারভেদ নয়?

ক) কম্পাইলার
খ) ইন্টারপ্রিটার
গ) অ্যাসেম্বলার
ঘ) ডিবাগার

সঠিক উত্তর: ঘ) ডিবাগার
ব্যাখ্যা: ডিবাগার কোনো অনুবাদক প্রোগ্রাম নয়; এটি প্রোগ্রামের ভুল ত্রুটি খুঁজে বের করার একটি সহায়ক টুল বা সফটওয়্যার।


৯। মেশিন ভাষায় লেখা প্রোগ্রামের জন্য কোনটি প্রয়োজন?

ক) কম্পাইলার
খ) ইন্টারপ্রিটার
গ) অ্যাসেম্বলার
ঘ) কোনো অনুবাদক প্রয়োজন নেই

সঠিক উত্তর: ঘ) কোনো অনুবাদক প্রয়োজন নেই
ব্যাখ্যা: মেশিন ভাষা (0 এবং 1) কম্পিউটার সরাসরি বুঝতে পারে, তাই এর জন্য কোনো অনুবাদক প্রোগ্রামের প্রয়োজন হয় না।


১০। নেমোনিক (Mnemonic) কোডকে মেশিন কোডে রূপান্তর করে কে?

ক) অ্যাসেম্বলার
খ) কম্পাইলার
গ) ইন্টারপ্রিটার
ঘ) লোডার

সঠিক উত্তর: ক) অ্যাসেম্বলার
ব্যাখ্যা: অ্যাসেম্বলি ভাষায় ব্যবহৃত সংকেত বা নেমোনিক (যেমন ADD, SUB) কোডকে অ্যাসেম্বলার মেশিন ভাষায় রূপান্তর করে।


১১। নিচের কোন ভাষায় লিখিত প্রোগ্রাম কম্পিউটার সরাসরি বুঝতে পারে?

ক) যান্ত্রিক ভাষা
খ) অ্যাসেম্বলি ভাষা
গ) হাই লেভেল ভাষা
ঘ) চতুর্থ প্রজন্মের ভাষা

সঠিক উত্তর: ক) যান্ত্রিক ভাষা
ব্যাখ্যা: যান্ত্রিক ভাষা বা মেশিন ল্যাঙ্গুয়েজ হলো কম্পিউটারের নিজস্ব ভাষা যা শুধুমাত্র বাইনারি বিট (০ ও ১) দিয়ে গঠিত।


১২। সোর্স কোড এক লাইন করে পড়ে এবং অনুবাদ করে কোনটি?

ক) কম্পাইলার
খ) ইন্টারপ্রিটার
গ) অ্যাসেম্বলার
ঘ) লিঙ্কার

সঠিক উত্তর: খ) ইন্টারপ্রিটার
ব্যাখ্যা: ইন্টারপ্রিটার সোর্স কোডকে এক লাইন করে পড়ে এবং তাৎক্ষণিক অনুবাদ ও নির্বাহ করে।


১৩। অনুবাদক প্রোগ্রামের মূল কাজ কী?

ক) ভুল সংশোধন করা
খ) মানুষের ভাষাকে মেশিন ভাষায় রূপান্তর করা
গ) মেমোরি ব্যবস্থাপনা করা
ঘ) হার্ডওয়্যার নিয়ন্ত্রণ করা

সঠিক উত্তর: খ) মানুষের ভাষাকে মেশিন ভাষায় রূপান্তর করা
ব্যাখ্যা: কম্পিউটার মানুষের ভাষা বোঝে না, তাই মানুষের ভাষায় লেখা নির্দেশাবলীকে কম্পিউটারের বোধগম্য যান্ত্রিক ভাষায় রূপান্তর করাই অনুবাদক প্রোগ্রামের প্রধান কাজ।


১৪। কম্পাইলারের সুবিধা কোনটি?

ক) প্রোগ্রাম পরিবর্তনের সাথে সাথে রান করা যায়
খ) প্রোগ্রাম নির্বাহের গতি বেশি
গ) মেমোরি কম লাগে
ঘ) প্রতিটি লাইনের ভুল আলাদাভাবে প্রদর্শন করে

সঠিক উত্তর: খ) প্রোগ্রাম নির্বাহের গতি বেশি
ব্যাখ্যা: যেহেতু কম্পাইলার পুরো প্রোগ্রামটি আগেই অনুবাদ করে রাখে, তাই রান করার সময় নতুন করে অনুবাদের প্রয়োজন হয় না এবং গতি অনেক বেশি হয়।


১৫। উচ্চস্তরের ভাষাকে যান্ত্রিক ভাষায় রূপান্তর করে—
i. কম্পাইলার
ii. ইন্টারপ্রিটার
iii. অ্যাসেম্বলার

নিচের কোনটি সঠিক?

ক) i ও ii
খ) i ও iii
গ) ii ও iii
ঘ) i, ii ও iii

সঠিক উত্তর: ক) i ও ii
ব্যাখ্যা: কম্পাইলার ও ইন্টারপ্রিটার উভয়েই উচ্চস্তরের ভাষাকে যান্ত্রিক ভাষায় রূপান্তর করে। অ্যাসেম্বলার শুধুমাত্র অ্যাসেম্বলি ভাষাকে রূপান্তর করে।


১৬। ইন্টারপ্রিটার ব্যবহারের ক্ষেত্রে—
i. কাজের গতি ধীর হয়
ii. ভুল সংশোধন করা সহজ হয়
iii. অবজেক্ট ফাইল তৈরি হয় না

নিচের কোনটি সঠিক?

ক) i ও ii
খ) i ও iii
গ) ii ও iii
ঘ) i, ii ও iii

সঠিক উত্তর: ঘ) i, ii ও iii
ব্যাখ্যা: ইন্টারপ্রিটার লাইন-বাই-লাইন কাজ করায় গতি ধীর হয়, কিন্তু ভুল সাথে সাথে ধরা যায়। এটি কোনো স্থায়ী অবজেক্ট ফাইল তৈরি করে না।


১৭। কম্পাইলার ও ইন্টারপ্রিটারের মধ্যে পার্থক্য হলো—
i. অনুবাদের পদ্ধতিতে
ii. কাজের গতিতে
iii. ভুল প্রদর্শনের পদ্ধতিতে

নিচের কোনটি সঠিক?

ক) i ও ii
খ) i ও iii
গ) ii ও iii
ঘ) i, ii ও iii

সঠিক উত্তর: ঘ) i, ii ও iii
ব্যাখ্যা: কম্পাইলার ও ইন্টারপ্রিটারের মধ্যে অনুবাদের পদ্ধতি (একসাথে vs লাইন-বাই-লাইন), কাজের গতি (দ্রুত vs ধীর) এবং ভুল প্রদর্শনের (একসাথে vs তাৎক্ষণিক) ক্ষেত্রে পার্থক্য রয়েছে।


১৮। অ্যাসেম্বলারের কাজ হলো—
i. নেমোনিক কোডকে মেশিন ভাষায় রূপান্তর করা
ii. যান্ত্রিক ভাষাকে অ্যাসেম্বলি ভাষায় রূপান্তর করা
iii. প্রোগ্রামের ভুল ত্রুটি খুঁজে বের করা

নিচের কোনটি সঠিক?

ক) i ও ii
খ) i ও iii
গ) ii ও iii
ঘ) i, ii ও iii

সঠিক উত্তর: খ) i ও iii
ব্যাখ্যা: অ্যাসেম্বলার নেমোনিক কোড (অ্যাসেম্বলি ভাষা) কে মেশিন ভাষায় রূপান্তর করে এবং সিনট্যাক্স ভুল থাকলে তা জানায়। যান্ত্রিক ভাষাকে অ্যাসেম্বলি ভাষায় রূপান্তর করা এর কাজ নয় (সেটি ডিসঅ্যাসেম্বলারের কাজ)।


নিচের উদ্দীপকটি পড় এবং ১৯ ও ২০ নং প্রশ্নের উত্তর দাও:

রাফিদ একটি সি প্রোগ্রাম লিখল এবং সেটি রান করার পর দেখল একটি নতুন ফাইল তৈরি হয়েছে যা কম্পিউটার সরাসরি চালাতে পারে। তার বন্ধু সজীব পাইথনে কোড লিখল কিন্তু কোনো নতুন ফাইল তৈরি হলো না।

১৯। রাফিদের ব্যবহৃত অনুবাদক প্রোগ্রামটি কোনটি?

ক) ইন্টারপ্রিটার
খ) কম্পাইলার
গ) অ্যাসেম্বলার
ঘ) এডিটর

সঠিক উত্তর: খ) কম্পাইলার
ব্যাখ্যা: সি (C) ভাষা সাধারণত কম্পাইলার ব্যবহার করে এবং কম্পাইলার সোর্স কোড থেকে এক্সিকিউটেবল বা অবজেক্ট ফাইল তৈরি করে।


২০। সজীবের ব্যবহৃত অনুবাদকটির বৈশিষ্ট্য হলো—
i. প্রোগ্রামটি লাইন বাই লাইন অনুবাদ করে
ii. প্রোগ্রামটি দ্রুত গতিতে চলে
iii. প্রোগ্রামটি রান করার জন্য অনুবাদক সফটওয়্যারটি প্রয়োজন হয়

নিচের কোনটি সঠিক?

ক) i ও ii
খ) i ও iii
গ) ii ও iii
ঘ) i, ii ও iii

সঠিক উত্তর: খ) i ও iii
ব্যাখ্যা: পাইথন সাধারণত ইন্টারপ্রিটার ব্যবহার করে যা লাইন বাই লাইন অনুবাদ করে এবং রান করার জন্য ইন্টারপ্রিটার ইন্সটল থাকা প্রয়োজন। এটি কম্পাইলারের তুলনায় ধীরগতির।


নিচের উদ্দীপকটি পড় এবং ২১ ও ২২ নং প্রশ্নের উত্তর দাও:

একটি সফটওয়্যার কোম্পানি এমন একটি অনুবাদক ব্যবহার করে যা সম্পূর্ণ সোর্স কোডকে একবারে মেশিন কোডে রূপান্তর করে। এতে সফটওয়্যারটি গ্রাহকদের কাছে দ্রুততর মনে হয়।

২১। উদ্দীপকে কোন অনুবাদকের কথা বলা হয়েছে?

ক) ইন্টারপ্রিটার
খ) কম্পাইলার
গ) অ্যাসেম্বলার
ঘ) লিঙ্কার

সঠিক উত্তর: খ) কম্পাইলার
ব্যাখ্যা: সম্পূর্ণ সোর্স কোডকে একবারে মেশিন কোডে রূপান্তর করার বৈশিষ্ট্যটি কম্পাইলারের।


২২। উক্ত অনুবাদকটি ব্যবহারের সুবিধা হলো—
i. সোর্স কোড গোপন রাখা যায়
ii. প্রোগ্রাম নির্বাহে কম সময় লাগে
iii. তাৎক্ষণিক ভুল সংশোধন করা যায়

নিচের কোনটি সঠিক?

ক) i ও ii
খ) i ও iii
গ) ii ও iii
ঘ) i, ii ও iii

সঠিক উত্তর: ক) i ও ii
ব্যাখ্যা: কম্পাইলার অবজেক্ট ফাইল তৈরি করে বলে সোর্স কোড গোপন থাকে এবং রান করার সময় দ্রুত চলে। তবে তাৎক্ষণিক ভুল সংশোধনের সুবিধা ইন্টারপ্রিটারের, কম্পাইলারের নয়।


২৩। উৎস প্রোগ্রাম (Source Program) কী?

ক) মেশিন ভাষায় লেখা প্রোগ্রাম
খ) অ্যাসেম্বলি ভাষায় লেখা প্রোগ্রাম
গ) উচ্চস্তরের ভাষায় লেখা প্রোগ্রাম
ঘ) বাইনারি কোডে লেখা প্রোগ্রাম

সঠিক উত্তর: গ) উচ্চস্তরের ভাষায় লেখা প্রোগ্রাম
ব্যাখ্যা: প্রোগ্রামাররা মানুষের বোধগম্য উচ্চস্তরের ভাষায় (যেমন C, Java, Python) যে কোড লেখেন তাকে সোর্স প্রোগ্রাম বা সোর্স কোড বলা হয়।


২৪। অবজেক্ট কোড বা বস্তু প্রোগ্রাম কী?

ক) সোর্স কোড
খ) মেশিন ভাষায় অনূদিত কোড
গ) অ্যাসেম্বলি কোড
ঘ) নেমোনিক কোড

সঠিক উত্তর: খ) মেশিন ভাষায় অনূদিত কোড
ব্যাখ্যা: অনুবাদক প্রোগ্রাম সোর্স কোডকে মেশিন ভাষায় (0 ও 1) রূপান্তর করার পর যে কোড পাওয়া যায়, তাকে অবজেক্ট কোড বলা হয়।


২৫। কোন অনুবাদকটি আকারে ছোট এবং মেমোরিতে কম জায়গা দখল করে?

ক) কম্পাইলার
খ) ইন্টারপ্রিটার
গ) অপারেটিং সিস্টেম
ঘ) ডেটাবেস

সঠিক উত্তর: খ) ইন্টারপ্রিটার
ব্যাখ্যা: ইন্টারপ্রিটার সাধারণত কম্পাইলারের চেয়ে আকারে ছোট হয় এবং এটি পুরো প্রোগ্রাম একসাথে মেমোরিতে লোড না করে লাইন-বাই-লাইন কাজ করে, তাই কম মেমোরি ব্যবহার করে (ছোট প্রোগ্রামের ক্ষেত্রে)। তবে আধুনিক ইন্টারপ্রিটারগুলোও জটিল হতে পারে, কিন্তু সাধারণ পাঠ্যবই অনুসারে ইন্টারপ্রিটারকে হালকা বা ছোট হিসেবে গণ্য করা হয়।