HSC ICT Chaper 5 Part 1

HSC ICT Chapter 5 Part 1 Main Point: প্রোগ্রাম কি?,প্রথম প্রোগ্রামার (First programmer) কে?, প্রোগ্রামিং ভাষা (Programming Language) কি?, অনুবাদক প্রােগ্রাম (Translator Program) কি?, অ্যাসেম্বলার (Assembler) কি?, কম্পাইলার (Compiler) কি?, ইন্টারপ্রেটার (Interpreter) কি?, প্রােগ্রাম সংগঠন (Program Organization) কি?, প্রােগ্রাম টেস্টিং ( Program Testing) কি?, প্রােগ্রাম ডিবাগিং (Program Debugging) কি?


প্রোগ্রাম কি?

প্রােগ্রাম হলাে একগুচ্ছ নির্দেশের সমষ্টি, যা কম্পিউটারকে নির্দিষ্ট কাজ সম্পাদন করতে সহায়তা করে। একটি ডিজিটাল যন্ত্রের কার্যকারিতা নির্ভর করে একটি আদর্শ প্রােগ্রামের উপর। (Microsoft Office, Oracle, Windows) ইত্যাদি হলাে বিভিন্ন প্রােগ্রামের উদাহরণ তাছাড়াও প্রত্যেক সফটওয়্যার এক একটি প্রােগ্রাম।

আদর্শ প্রােগ্রামের বৈশিষ্ট্য/গুণাবলি নিম্নরূপ:

  • সমস্যাটি সঠিকভাবে চিহ্নিত করতে হবে।
  • প্রােগ্রামের শুরুতে প্রােগ্রারে উদ্দেশ্য, ধ্রুবক, চলক, ইত্যাদি সহজ ও সঠিকভাবে সন্নিবেশ করতে হবে।
  • প্রােগ্রাম যথাসম্ভব সংক্ষিপ্ত হবে।
  • অতিরিক্ত loop থাকবে না।
  • নির্দেশনাবলি ধারাবাহিকভাবে সাজাতে হবে।
  • ফ্লোচার্ট ও অ্যালগরিদম স্পষ্টভাবে উপস্থাপিত হবে।
  • নির্ভুল কোডিং ও বাগবিহীন হবে। ভবিষ্যতে সংশােধন ও পরিবর্ধনের ব্যবস্থা থাকতে হবে।
  • প্রােগ্রামের ডকুমেন্টেশনের ব্যবস্থা থাকতে হবে, ইত্যাদি।

উপরােক্ত বৈশিষ্ট্য ধারণকৃত প্রােগ্রামকেই আদর্শ প্রােগ্রাম হিসাবে বিবেচিত হবে।


প্রথম প্রোগ্রামার (First programmer) কে?

প্রথম প্রোগ্রামার (First programmer): বিখ্যাত ইংরেজ কবি লর্ড বাইরনের কন্যা লেডি অ্যাডা অগাস্টা লাভলেস (Lady Ada Augusta Lovelace) কে পৃথিবীর ১ম প্রোগামার বলা হয়। তার নামে তৈরিকৃত প্রােগ্রামিং ভাষার নাম অ্যাডা প্রোগ্রামিং (Ada programming) ।

প্রোগ্রামিং ভাষা (Programming Language) কি?

প্রোগ্রামিং ভাষা (Programming Language): মানষ় ও প্রাণীকুলের যেমন ভাব প্রকাশের জন্য ভাষা আছে ঠিক তেমনি ডিজিটাল ডিভাইসেরও কতিপয় ভাষা আছে আর এইডিজিটাল ডিভাইসের ভাষাকেই প্রােগ্রামিং ভাষা বলে যা তৈরি করা হয় একগুচ্ছ সংকেত ও কৃতিপয় নিয়মাবলির সঠিক ব্যবহারের মাধ্যমে। সহজে-ডিজিটাল ডিভাইস দ্বারা সমস্যা সমাধানে ব্যবহৃত প্রােগ্রাম রচনার জন্য যে সকল ভাষা ব্যবহার করা হয় সেগুলোকে প্রোগ্রামিং ভাষা (Programming language) বলে। যেমন:- C/C++, C#, Visual Basic, Java, Oracle, Python, Prolog, SQL ইত্যাদি।


প্রােগ্রামিং ভাষার প্রজন্ম (Generation of Programming Language) কি?

প্রোগ্রামিং ভাষার প্রজন্ম(Generation of Programming Language):- কম্পিউটারে ব্যবহৃত ভাষার বৈশিষ্ট্যের উপর ভিত্তি করে programming language কে পাঁচটি স্তরে ভাগ করা হয়। যথা-

  1. প্রথম প্রজন্মের ভাষা (1GL-1945): মেশিন ভাষা (Machine Language)।
  2. দ্বিতীয় প্রজন্মের ভাষা (2GL-1950): অ্যাসেম্বলি ভাষা (Assembly Language)।
  3. তৃতীয় প্রজন্মের ভাষা (3GL-1960): উচ্চতর ভাষা (High Level Language)।
  4. চতুর্থ প্রজন্মের ভাষা (4GL-1970) : অতি উচ্চতর ভাষা (Very High Level Language)।
  5. পঞ্চম প্রজন্মের ভাষা (5GL-1980): স্বাভাবিক ভাষা (Natural Language)।

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

মেশিন ভাষায় লেখা প্রােগ্রামকে বলা হয় বস্তু প্রােগ্রাম (object program) বা যান্ত্রিক ভাষা। আর অন্য যেকোন ভাষায় লেখা প্রােগ্রামকে বলা হয় উৎস প্রােগ্রাম (source program)। যে প্রােগ্রামের সাহায্যে উৎস (source) প্রােগ্রামকে বস্তু (object) প্রােগ্রামে পরিণত করা হয় তাকে অনুবাদক প্রােগ্রাম বলে।কম্পিউটার যান্ত্রিক ভাষা ছাড়া অন্য কোন ভাষা বুঝতে না। আবার মানুষের পক্ষে যান্ত্রিক ভাষায় প্রােগ্রাম রচনা করা অত্যন্ত কষ্টসাধ্য। তাই হাই লেভেল ভাষায় অথবা অ্যাসেম্বলি ভাষায় প্রােগ্রাম রচনা করে পরে অনুবাদক প্রােগ্রাম দ্বারা যান্ত্রিক ভাষায় রূপান্তর করা হয়। অনুবাদক প্রােগ্রাম বা সফটওয়্যার তিন প্রকার। যথা-

অনুবাদক প্রােগ্রাম (Translator Program)
  1. অ্যাসেম্বলার (Assembler)
  2. কম্পাইলার (Compiler) ও
  3. ইন্টারপ্রেটার (Interpreter)।

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

অ্যাসেম্বলার (Assembler): অ্যাসেম্বলি ভাষায় লিখিত প্রােগ্রামকে যান্ত্রিক ভাষায় অনুবাদ করার জন্য অ্যাসেম্বলার ব্যবহার করা হয়। এটি অ্যাসেম্বলি ভাষায় লিখিত প্রােগ্রামকে যান্ত্রিক ভাষায় রূপান্তর করে। অর্থাৎ নেমােনিক কোডকে মেশিন ভাষায় অনুবাদ করে। প্রােগ্রামে কোন ভুল থাকলে error message দেয়।

অ্যাসেম্বলারের প্রধান কাজসমূহ:

  1. নেমােনিক মেশিন ভাষায় অনুবাদ করা।
  2. সাংকেতিক কোডকে মেশিনের ভাষায় রূপান্তর করা।
  3. প্রােগ্রামে কোন ভুল থাকলে error message দেওয়া।
  4. সকল নির্দেশ ও ঠিকানা প্রধান মেমরিতে রাখা, ইত্যাদি।
অ্যাসেম্বলার (Assembler)

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

কম্পাইলার (Compiler): কম্পাইলার হলাে এক ধরনের অনুবাদক যা হাই লেভেল ভাষায় রচিত প্রােগ্রামকে মেশিনের ভাষায় রূপান্তর করে। অর্থাৎ সাের্স প্রােগ্রামকে অবজেক্ট প্রােগ্রামে রূপান্তর করে। কম্পাইলার দুই ধাপে অনুবাদকের কাজ সম্পন্ন করে। প্রথম ধাপে কম্পাইলার উৎস প্রােগ্রামের প্রত্যেক লাইন পড়ে এবং অবজেক্ট প্রােগ্রামে রূপান্তর করে। এই ধাপে কম্পাইলার সাের্স প্রােগ্রামে যদি ভুল থাকে তবে তা সংশােধন করার জন্য ব্যবহারকারীকে error message দেয়। এই error message কে কম্পাইলড টাইম ডায়াগনােস্টিক error message বলে । একবার প্রােগ্রাম কম্পাইল হয়ে গেলে পরবর্তীতে আর কম্পাইল করার প্রয়ােজন হয় না। দ্বিতীয় ধাপে উপাত্ত বা ডেটার ভিত্তিতে অবজেক্ট প্রােগ্রামকে নির্বাহ করানাে হয় ফলাফল প্রদর্শনের জন্য। অনুবাদক প্রক্রিয়া চিত্রের মাধ্যমে দেখানো হলো:

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

কম্পাইলারের কাজসমূহ-

  • উৎস বা প্রােগ্রামের স্টেটমেন্টসমূহকে মেশিনের ভাষায় রূপান্তর।
  • সংশ্লিষ্ট সাব-রুটিন এর সাথে সংযােগের ব্যবস্থা প্রদান।
  • প্রধান স্মৃতির পরিসর চিহ্নিতকরণ।
  • প্রােগ্রামে ভুল থাকলে অনুবাদের সময় ভুলের তালিকা প্রণয়ন, ইত্যাদি।

কম্পাইলারের সুবিধা/অসুবিধাসমূহ-

  1. কম্পাইলার সম্পূর্ণ প্রােগ্রামটিকে একসাথে অনুবাদ করে ফলে প্রােগ্রাম নির্বাহের গতি দ্রুত হয়। প্রােগ্রাম নির্বাহে কম সময় লাগে।
  2. কম্পাইলারের মাধ্যমে রূপান্তরিত প্রােগ্রাম সম্পূর্ণরূপে মেশিন প্রােগ্রামে রূপান্তরিত হয়।
  3. একবার প্রােগ্রাম কম্পাইল করা হলে পরবর্তিতে আর কম্পাইলের প্রয়ােজন হয় না।
  4. প্রােগ্রামে কোন ভুল থাকলে তা মনিটরে একসাথে প্রদর্শন করে, ইত্যাদি।

ইন্টারপ্রেটার (Interpreter) কি?

ইন্টারপ্রেটার (Interpreter): ইন্টারপ্রেটারও কম্পাইলারের মত হাই লেভেল ভাষাকে মেশিনের ভাষায় রূপান্তর করে। তবে কম্পাইলার যেমন প্রথমে সাের্স প্রােগ্রামকে অবজেক্ট প্রােগ্রামে রূপান্তর করে এবং সর্বশেষ ফলাফল প্রদান করে কিন্তু ইন্টারপ্রেটার সাের্স প্রােগ্রামকে অবজেক্ট প্রােগ্রামে রূপান্তর করে না, লাইন নির্বাহ করে এবং তাৎক্ষণিক ফলাফল প্রদর্শন করে। যেমন- BASIC ভাষায় লিখিত প্রােগ্রামের তিনটি লাইন।
LET A = 8
LET B = 4 + A
PRINT B

ইন্টারপ্রেটার যখন প্রথম লাইনে প্রবেশ করবে, তখন কম্পিউটার A চলকের জন্য মেমরি এলাকা তৈরি করে তার মধ্যে 8 জমা রাখে। দ্বিতীয় লাইনে প্রবেশ করলে B চলকের জন্য মেমরি এলাকা তৈরি করে তার মধ্যে 12 জমা রাখবে। তৃতীয় লাইনে প্রবেশ করার পর কম্পিউটার স্কিনে B এর মান 12 প্রদর্শন করবে।
এভাবে ইন্টারপ্রেটার প্রােগ্রামের লাইন অনুসারে প্রােগ্রামকে নির্বাহ করে।

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

ইন্টারপ্রেটারের সুবিধা/অসুবিধাসমূহ:

  • এটি ব্যবহারে প্রােগ্রামের ভুল সংশােধন করা এবং পরিবর্তন করা সহজ হয়।
  • Interpreter program আকারে ছােট হয় এবং মেমরি কম লাগে। এটি সাধারণত ছােট কম্পিউটারে ব্যবহার করা হয়।
  • ইন্টারপ্রেটার ব্যবহারে প্রােগ্রাম কার্যকরী করতে কম্পাইলারের তুলনায় বেশি সময় লাগে।
  • ইহার মাধ্যমে রূপান্তরিত প্রােগ্রাম সম্পূর্ণরূপে মেশিন প্রােগ্রামে রূপান্তরিত হয় না।
  • প্রতিটি কাজের পূর্বে অনুবাদ করার প্রয়ােজন হয়, ইত্যাদি।

প্রােগ্রাম সংগঠন (Program Organization) কি?

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

প্রােগ্রাম সংগঠন (Program Organization)

প্রোগ্রাম তৈরির ধাপ (Steps of Developing a Program): প্রোগ্রাম সম্পর্কে আগের পাঠে আমরা জেনেছি। যেকোন প্রােগ্রাম সুষ্ঠুভাবে তৈরি করতে কতকগুলাে ধাপ অনুসরণ করতে হয়।

  1. সমস্যা নির্দিষ্টকরণ (Problem Specification)
  2. সমস্যা বিশ্লেষণ (Problem Analysis)
  3. প্রােগ্রাম ডিজাইন (Program Design)
  4. প্রােগ্রাম উন্নয়ন (Program Development)
  5. প্রােগ্রাম বাস্তবায়ন (Program Implementation)
  6. প্রােগ্রাম রক্ষণাবেক্ষণ (Maintenance)

প্রােগ্রাম টেস্টিং ( Program Testing) কি?

প্রােগ্রাম টেস্টিং ( Program Testing): প্রােগ্রাম টেস্টিং হচ্ছে কোন প্রােগ্রাম কোডিং সম্পন্ন করার পর প্রােগ্রামটির যে ধরনের আউটপুট বা ফলাফল হওয়া উচিৎ তা ঠিক মত আসছে কিনা বা রান করছে কিনা তা যাচাই করা। এই ধাপে ভিন্ন ভিন্ন ইনপুট দিয়ে আউটপুটের অবস্থা পর্যবেক্ষণ করা হয়। এক্ষেত্রে যদি কোন অসঙ্গতি পাওয়া যায় তবে বুঝতে হবে প্রােগ্রাম কোডিংয়ে কোথাও ভুল হয়েছে। প্রােগ্রামে সাধারণত তিন ধরনের ভুল পরিলক্ষিত হয়। যথা

  1. ব্যাকরণগত ভুল (Syntax Error)।
  2. যৌক্তিক ভুল (Logical Error) ও
  3. নির্বাহজনিত ভুল (Execution Error Or Runtime Error)।

১। ব্যাকরণগত ভুল (Syntax Error): যে ভাষায় প্রােগ্রাম লেখা হবে সেই ভাষার নিজস্ব কতগুলাে নিয়ম থাকে। নিয়ম বহির্ভূত কোন কোডিং হয়ে থাকলে তাকে ব্যাকরণগত ভুল হিসেবে বিবেচনা করা হয়। যেমন- C প্রােগ্রামিং ভাষায় কোন স্টেটমেন্টের পর সেমিকোলন (;) দিতে হয়। এক্ষেত্রে কোন স্টেটমেন্টের পর সেমিকোলন (;) না দিলে তা হবে C প্রােগ্রামিং ভাষার ক্ষেত্রে ব্যাকরণগত ভুল। ব্যাকরণগত ভুল থাকলে কম্পাইলার error message দিবে এবং প্রােগ্রামের কোথায় কি ভুল হয়েছে তা জানিয়ে দিবে। ভুল সংশােধন করা সাপেক্ষে কম্পাইলার প্রােগ্রাম নির্বাহ করবে।

২। যৌক্তিক ভুল (Logical Error): প্রােগ্রামে কোন লজিক লিখতে ভুল হলে ফলাফল আসবে কিন্তু তা সঠিক হবে না। এ ধরনের ভুলকে যৌক্তিক ভুল বলা হয়। ধরা যাক, x>y এর স্থলে x<y লেখলে কম্পাইলার কোনো error message দিবে না কিন্তু ফলাফল ভুল প্রদর্শিত হবে।

৩। নির্বাহজনিত ভুল (Execution Error or Runtime Error): প্রােগ্রাম নির্বাহের সময় ইনপুট দিতে ভুল হলে অর্থাৎ ভুল ডেটা ইনপুট দিলে আউটপুট বা ফলাফল ভুল আসবে। এ ধরনের ভুলকে নির্বাহজনিত ভুল বলা হয়।

প্রােগ্রাম ডিবাগিং (Program Debugging) কি?

আমরা উপরে প্রােগ্রাম টেস্টিং এর ক্ষেত্রে তিন ধরনের ভুল সম্পর্কে জেনেছি। প্রােগ্রামে যে কোন ভুলকে বাগ (bug) বলে। উক্ত বাগকে সমাধান করাকেই ডিবাগ (debug) বলে । এক্ষেত্রে syntax error সমাধান করা সহজ। কিন্তু logical error সমাধান করা তুলনামুলক জটিল।