পঞ্চম অধ্যায় পাঠ-২: অনুবাদক প্রোগ্রাম (অ্যাসেম্বলার, কম্পাইলার, ইন্টারপ্রেটার)।
এই পাঠ শেষে যা যা শিখতে পারবে-
- ১। অনুবাদক প্রোগ্রাম বর্ণনা করতে পারবে।
- ২। অ্যাসেম্বলার কী এবং এর কাজ বর্ণনা করতে পারবে।
- ৩। কম্পাইলার এর কাজ, সুবিধা ও অসুবিধা ব্যাখ্যা করতে পারবে।
- ৪। ইন্টারপ্রেটার এর কাজ, সুবিধা ও অসুবিধা ব্যাখ্যা করতে পারবে।
- ৫। কম্পাইলার এবং ইন্টারপ্রেটার এর মধ্যে পার্থক্য করতে পারবে।
অনুবাদক প্রোগ্রামঃ যে প্রোগ্রাম উৎস(Source) প্রোগ্রামকে বস্তু(Object) প্রোগ্রামে রূপান্তর করে তাকে অনুবাদক প্রোগ্রাম বলে। মেশিন ভাষায় লেখা প্রোগ্রামকে বলা হয় বস্তু প্রোগ্রাম (Object Program) এবং অন্য যেকোনো ভাষায় লেখা প্রোগ্রামকে বলা হয় উৎস প্রোগ্রাম (Source program)।
অনুবাদক প্রোগ্রাম উৎস প্রোগ্রামকে ইনপুট হিসেবে নেয় এবং বস্তু প্রোগ্রামকে আউটপুট হিসেবে দেয়। প্রোগ্রাম অনুবাদের সময় উৎস প্রোগ্রামে যদি কোন ভুল থাকে, তবে তা সংশোধন করার জন্য ব্যবহারকারীকে Error Message দেয়।
অনুবাদক প্রোগ্রামের প্রকারভেদ-
- ১। অ্যাসেম্বলার(Assembler)
- ২। কম্পাইলার(Compiler)
- ৩। ইন্টারপ্রেটার(Interpreter)
অ্যাসেম্বলারঃ অ্যাসেম্বলার হলো এক ধরনের অনুবাদক প্রোগ্রাম যা অ্যাসেম্বলি ভাষায় লেখা প্রোগ্রামকে মেশিন ভাষায় রূপান্তর করে। এটি অ্যাসেম্বলি ভাষায় লেখা প্রোগ্রাম বা নেমোনিক কোডকে যান্ত্রিক ভাষায় রূপান্তর করে। এক্ষেত্রে প্রোগ্রামে কোনো ভুল থাকলে Error Message দেয়।
প্রধান কাজ সমূহ:
- ১। নেমোনিক কোডকে মেশিন ভাষায় অনুবাদ করা।
- ২। সাংকেতিক ঠিকানাকে মেশিন ভাষার ঠিকানায় রূপান্তর করা।
- ৩। সব নির্দেশ ও ডেটা প্রধান মেমোরিতে রাখা।
- ৪। প্রোগ্রামে কোনো ভুল থাকলে Error Message দেওয়া।
- ৫। প্রোগ্রামের সকল ভুল সংশোধনের পর প্রোগ্রাম কনট্রোলকে জানানো ইত্যাদি।
কম্পাইলারঃ কম্পাইলার হলো এক ধরনের অনুবাদক প্রোগ্রাম যা উচ্চস্তরের ভাষায় লেখা প্রোগ্রামকে মেশিন বা যান্ত্রিক ভাষায় রূপান্তর করে। অর্থাৎ উৎস প্রোগ্রামকে বস্তু প্রোগ্রামে রূপান্তর করে। কম্পাইলার দুই ধাপে অনুবাদকের কাজ সম্পন্ন করে –
প্রথম ধাপে কম্পাইলার উৎস প্রোগ্রামটি পড়ে এবং বস্তু প্রোগ্রামে রূপান্তর করে। এই ধাপে, সোর্স প্রোগ্রামে যদি কোন ভুল থাকে, তবে তা সংশোধন করার জন্য কম্পাইলার ব্যবহারকারীকে Error Message দেয়। এই Error Message কে কম্পাইলড টাইম ডায়াগনোস্টিক Error Message বলে। একবার প্রোগ্রাম কম্পাইল হয়ে গেলে পরবর্তীতে আর কম্পাইল করার প্রয়োজন হয় না। দ্বিতীয় ধাপে উপাত্ত বা ডেটার ভিত্তিতে ফলাফল প্রদর্শনের জন্য বস্তু প্রোগ্রামকে নির্বাহ করানো হয়।
কম্পাইলারের কাজঃ
- ১। উৎস প্রোগ্রামের স্টেটমেন্ট সমূহকে বস্তু প্রোগ্রামে বা মেশিন ভাষায় রূপান্তর।
- ২। সংশ্লিষ্ট সাব-রুটিন এর সাথে সংযোগের ব্যবস্থা প্রদান।
- ৩। প্রধান মেমোরির পরিসর চিহ্নিতকরণ।
- ৪। প্রোগ্রাম ভুল থাকলে অনুবাদের সময় ভুলের তালিকা প্রণয়ন।
কম্পাইলারের সুবিধাঃ
- ১। কম্পাইলার সম্পূর্ণ প্রোগ্রামটিকে একসাথে অনুবাদ করে। ফলে প্রোগ্রাম নির্বাহ দ্রুত হয়।
- ২। কম্পাইলারের মাধ্যমে রূপান্তরিত প্রোগ্রাম সম্পূর্ণরূপে মেশিন ভাষায় রূপান্তরিত হয়।
- ৩। একবার প্রোগ্রাম কম্পাইল করা হলে পরবর্তিতে আর কম্পাইলের প্রয়োজন হয় না।
কম্পাইলারের অসুবিধাঃ
- ১। কম্পাইলার প্রোগ্রামের সবগুলো ভুল একসাথে প্রদর্শন করে ফলে প্রোগ্রাম সংশোধনে বেশি সময় লাগে।
- ২। প্রোগ্রাম ডিবাগিং ও টেস্টিং এর কাজ ধীরগতি সম্পন্ন।
- ৩। কম্পাইলার বড় ধরনের প্রোগ্রাম হওয়ায় ইহা সংরক্ষণে মেমোরিতে বেশি জায়গা প্রয়োজন।
ইন্টারপ্রেটারঃ ইন্টারপ্রেটারও কম্পাইলারের মতো এক ধরনের অনুবাদক প্রোগ্রাম যা উচ্চস্তরের ভাষায় লেখা প্রোগ্রামকে লাইন বা লাইন মেশিন বা যান্ত্রিক ভাষায় রূপান্তর করে। এক্ষেত্রে কম্পাইলারের সাথে পার্থক্য হল, কম্পাইলার সম্পূর্ণ সোর্স প্রোগ্রামকে একসাথে অবজেক্ট প্রোগ্রামে রূপান্তর করে এবং সর্বশেষ ফলাফল প্রদান করে কিন্তু ইন্টারপ্রেটার সোর্স প্রোগ্রামটিকে লাইন-বাই-লাইন অবজেক্ট প্রোগ্রামে রূপান্তর করে এবং তাৎক্ষণিক ফলাফল প্রদর্শন করে।
ইন্টারপ্রেটারের কাজঃ
- ১। উৎস প্রোগ্রামের স্টেটমেন্ট সমূহকে বস্তু প্রোগ্রামে বা মেশিন ভাষায় রূপান্তর।
- ২। সংশ্লিষ্ট সাব-রুটিন এর সাথে সংযোগের ব্যবস্থা প্রদান।
- ৩। প্রধান মেমোরির পরিসর চিহ্নিতকরণ।
- ৪। প্রোগ্রাম ভুল থাকলে অনুবাদের সময় ভুলের তালিকা প্রণয়ন।
ইন্টারপ্রেটারের সুবিধাঃ
- ১। ইন্টারপ্রেটার এর সবচেয়ে বড় সুবিধা হল এটি ইউজার ফ্রেন্ডলি।
- ২। এটি ব্যবহারে প্রোগ্রামের ভুল সংশোধন করা এবং পরিবর্তন করা সহজ হয়।
- ২। ইন্টারপ্রেটার প্রোগ্রাম আকারে ছোট হয় বলে মেমোরিতে কম জায়গা দখল করে।
- ৩। এটি সাধারণত ছোট কম্পিউটারে ব্যবহার করা হয়।
ইন্টারপ্রেটারের অসুবিধাঃ
- ১। ইন্টারপ্রেটার যেহেতু প্রোগ্রাম লাইন-বাই-লাইন অনুবাদ করে, তাই অনুবাদ করতে কম্পাইলারের তুলনায় বেশি সময় প্রয়োজন।
- ২। ইন্টারপ্রেটার এর মাধ্যমে রূপান্তরিত প্রোগ্রাম সম্পূর্ণরূপে মেশিন প্রোগ্রামে রূপান্তরিত হয় না।
- ৩। প্রত্যেকবার প্রোগ্রাম নির্বাহের সময় অনুবাদ করার প্রয়োজন হয়।
কম্পাইলার এবং ইন্টারপ্রেটারের মধ্যে পার্থক্যঃ
কম্পাইলার | ইন্টারপ্রেটার |
কম্পাইলার একটি অনুবাদক প্রোগ্রাম যা উচ্চস্তরের প্রোগ্রামিং ভাষায় লেখা একটি সম্পূর্ণ প্রোগ্রামকে একসাথে অনুবাদ করে। | ইন্টারপ্রেটারও এক ধরণের অনুবাদক প্রোগ্রাম যা উচ্চস্তরের প্রোগ্রামিং ভাষায় লেখা একটি প্রোগ্রামকে লাইন বাই লাইন অনুবাদ করে। |
ফলে প্রোগ্রাম নির্বাহের জন্য কম সময় প্রয়োজন। | ফলে প্রোগ্রাম নির্বাহের জন্য বেশি সময় প্রয়োজন। |
কম্পাইলার দ্বারা একটি প্রোগ্রাম একবার অনুবাদ করা হলে প্রতিবার কাজের পূর্বে পুনরায় অনুবাদ করার প্রয়োজন হয় না। | ইন্টারপ্রেটার দ্বারা একটি প্রোগ্রাম অনুবাদ করা হলে প্রত্যেকবার প্রোগ্রাম নির্বাহের সময় অনুবাদ করার প্রয়োজন হয়। |
কম্পাইলার দ্বারা একটি প্রোগ্রাম অনুবাদ করলে পূর্ণাঙ্গ যান্ত্রিক প্রোগ্রামে রূপান্তরিত হয়। | ইন্টারপ্রেটার দ্বারা একটি প্রোগ্রাম অনুবাদ করলে পূর্ণাঙ্গ যান্ত্রিক প্রোগ্রামে রূপান্তরিত হয় না। |
ডিবাগিং এবং টেস্টিং এর ক্ষেত্রে ধীর গতি সম্পন্ন। | ডিবাগিং ও টেস্টিং এর ক্ষেত্রে দ্রুত গতি সম্পন্ন। |
পাঠ মূল্যায়ন-
জ্ঞানমূলক প্রশ্নসমূহঃ
- ক। অনুবাদক প্রোগ্রাম কী?
- ক। অ্যাসেম্বলার কী?
- ক। কম্পাইলার কী?
- ক। ইন্টারপ্রেটার কী?
- ক। উৎস বা সোর্স প্রোগ্রাম কী?
- ক। বস্তু বা অবজেক্ট প্রোগ্রাম কী?
অনুধাবনমূলক প্রশ্নসমূহঃ
- খ। ‘প্রত্যেকবার প্রোগ্রাম নির্বাহের সময় অনুবাদ করা প্রয়োজন’- ব্যাখ্যা কর।
- খ। ‘অনুবাদক প্রোগ্রাম হিসেবে কম্পাইলার বেশি উপযোগী’- ব্যাখ্যা কর।
- খ। কম্পাইলারের তুলনায় ইন্টারপ্রেটার কোন ক্ষেত্রে ভালো- ব্যাখ্যা কর।
- খ। উৎস প্রোগ্রামকে অনুবাদ করার প্রয়োজন হয় কেন?
সৃজনশীল প্রশ্নসমূহঃ
উদ্দীপকটি পড় এবং নিচের প্রশ্নগুলোর উত্তর দাওঃ
আরাফাত এবং নিলা দুইজন প্রোগ্রামার। আরাফাত বিভিন্ন নিমোনিকের সাহায্যে প্রোগ্রাম লিখে। অপরপক্ষে নিলার লেখা প্রোগ্রাম দেখতে মানুষের ভাষার কাছাকাছি। তাদের দুইজনের লেখা প্রোগ্রাম একই সমস্যা সমাধান করতে পারে।
ঘ) উদ্দীপকে উল্লিখিত নিলার লেখা প্রোগ্রামকে বস্তু প্রোগ্রামে রূপান্তরের জন্য কোন অনুবাদক প্রোগ্রামটি সুবিধাজনক? বিশ্লেষণ কর।