পঞ্চম অধ্যায় পাঠ-১: বিভিন্ন প্রজন্ম এবং বিভিন্ন স্তরের প্রোগ্রামিং ভাষা।

এই পাঠ শেষে যা যা শিখতে পারবে-

১। বিভিন্ন প্রজন্মের প্রোগ্রামিং ভাষা বর্ণনা করতে পারবে।

২। বিভিন্ন স্তরের প্রোগ্রামিং ভাষা বর্ণনা করতে পারবে।

৩। মেশিন ভাষার সুবিধা, অসুবিধা ও বৈশিষ্ট্য ব্যাখ্যা করতে পারবে।

৪। অ্যাসেম্বলি ভাষার সুবিধা, অসুবিধা ও বৈশিষ্ট্য ব্যাখ্যা করতে পারবে।

৫। উচ্চস্তরের প্রোগ্রামিং ভাষার সুবিধা, অসুবিধা ও বৈশিষ্ট্য ব্যাখ্যা করতে পারবে।

 

Go for English Version

 

 

একটি কম্পিউটার সিস্টেমের সাধারণত দুটি পার্ট থাকে। একটি হার্ডওয়্যার এবং অপরটি সফটওয়্যার। হার্ডওয়্যার হলো কম্পিউটারের বিভিন্ন যন্ত্রপাতি যেমন- মনিটর, হার্ডডিস্ক, মাদারবোর্ড, প্রসেসর, র‌্যাম(RAM), রম(ROM) ইত্যাদি। অপরদিকে সফটওয়্যার হলো কতোগুলো প্রোগ্রামের সমষ্টি যা হার্ডওয়্যারকে নিয়ন্ত্রণ করে। সফটওয়্যার ছাড়া হার্ডওয়্যার প্রাণহীন দেহের মতো।

প্রোগ্রামঃ যন্ত্রের মাধ্যমে কোন সমস্যা সমাধানের লক্ষ্যে প্রোগ্রামিং ভাষা ব্যবহার করে প্রোগ্রামারের দেওয়া ধারাবাহিক নির্দেশনার সমষ্টিকে প্রোগ্রাম বলা হয়।

কম্পিউটার আবিষ্কারের শুরুর দিকে প্রোগ্রামের কোন ধারণা ছিলোনা। তখন কোন সমস্যা সমাধান করার জন্য প্রয়োজনীয় নির্দেশসমূহ ধারাবাহিকভাবে ০ ও ১  ইনপুটের মাধ্যমে সমাধান করা হতো।

প্রোগ্রামিং ভাষাঃ যে ভাষার সাহায্যে একটি যন্ত্রকে নির্দেশনা দিয়ে কোন সমস্যা সমাধান করা যায় তাকে প্রোগ্রামিং ভাষা বলে।

সহজে বলা যায়, প্রোগ্রাম লিখতে বা নির্দেশাবলী সেট করতে যেসকল ভাষা ব্যবহৃত হয় তাদের “প্রোগ্রামিং ভাষা” বলা হয়।

অন্যভাবে বলা যায়, যন্ত্রের মাধ্যমে কোন সমস্যা সমাধানের জন্য ব্যবহৃত শব্দ, বর্ণ, অংক, চিহ্ন প্রভৃতির সমন্বয়ে গঠিত রীতিনীতিকে প্রোগ্রামিং ভাষা বলা হয়।

কম্পিউটার ০ ও ১ ছাড়া কিছুই বুঝতে পারে না। সকল নির্দেশনা এর মাধ্যমেই দিতে হয়। একে যান্ত্রিক বা মেশিন ভাষা বলা হয়।মেশিন ভাষা হলো কম্পিউটারের মাতৃভাষা। এই ভাষা মানুষের জন্য বুঝা কষ্টকর। তাই পরবর্তিতে বিভিন্ন ধরণের প্রোগ্রামিং ভাষার উদ্ভব হয়েছে।

যেমন- BASIC, C, C++, COBOL, Java, FORTRAN, Ada, Pascal ইত্যাদি।

প্রোগ্রামারঃ যন্ত্রের মাধ্যমে কোন সমস্যা সমাধানের লক্ষে যে ব্যক্তি প্রোগ্রামিং ভাষা ব্যবহার করে ধারাবাহিকভাবে প্রয়োজনীয় নির্দেশনা দেয় বা প্রোগ্রাম লিখে তাকে প্রোগ্রামার বলে।

অ্যাডা লাভলেস (লন্ডনের সম্ভ্রান্ত কবি লর্ড বায়রনের কন্যা ) চার্লস ব্যাবেজের অ্যানালিটিক্যাল ইঞ্জিনে বিভিন্ন সমস্যা সমাধানের জন্য সর্বপ্রথম প্রোগ্রাম রচনা করেন। এজন্য অ্যাডা অগাস্টা কে বিশ্বের প্রথম কম্পিউটার প্রোগ্রামার বিবেচনা করা হয়। এডা প্রোগ্রামিং ল্যাংগুয়েজ এর নামকরণ তার নামেই করা হয়।

 

প্রোগ্রামিংঃ প্রোগ্রামিং ভাষা ব্যবহার করে কোন যন্ত্রকে নির্দেশনা দেওয়াকে বলা হয় প্রোগ্রামিং। অন্যভাবে বলা যায়, প্রোগ্রাম রচনার পদ্ধতি বা কৌশলকে প্রোগ্রামিং বলা হয়।

 

প্রোগ্রামিং ভাষার প্রকারভেদঃ

1945 থেকে শুরু করে এ পর্যন্ত যত প্রোগ্রামিং ভাষা আবিষ্কৃত হয়েছে তাদেরকে বৈশিষ্ট্য অনুযায়ী নিমোক্ত পাঁচটি প্রজন্মে ভাগ করা হয়েছে।

১। প্রথম প্রজন্ম – First Generation(1945-1950)

Machine Language ( যান্ত্রিক ভাষা)

২। দ্বিতীয় প্রজন্ম – Second Generation(1950-1960)

Assembly Language (অ্যাসেম্বলি ভাষা)

৩। তৃতীয় প্রজন্ম –Third Generation(1960-1970)

High Level Language (উচ্চস্তরের ভাষা)

৪। চতুর্থ প্রজন্ম – Fourth Generation(1970-1980)

Very High Level Language (অতি উচ্চস্তরের ভাষা)

৫। পঞ্চম প্রজন্ম – Fifth Generation(1980-present)

Natural Language (স্বাভাবিক ভাষা)

 

প্রোগ্রাম রচনার বৈশিষ্ট্যের ভিত্তিতে প্রোগ্রামিং ভাষাসমূহকে আবার বিভিন্ন স্তরে বিভক্ত করা হয়ঃ 

১। নিম্নস্তরের ভাষা (Low Level Language)

 -Machine Language, Assembly Language

২। মধ্যমস্তরের ভাষা (Mid Level Language)

 -C, C++, JAVA, Forth, Dbase, WordStar ইত্যাদি।

৩। উচ্চস্তরের ভাষা (High Level Language- 3GL)

 -Fortran, Basic, Pascal, Cobol, C, C++, C#, Visual Basic, Java, Python ইত্যাদি।

৪। অতি উচ্চস্তরের ভাষা (Very High Level Language- 4GL)

-Perl, Python, Ruby, SQL, MatLab(MatrixLaboratory) ইত্যাদি।

 

প্রথম প্রজন্মের ভাষা(1st Generation Language-1GL):

মেশিন বা যান্ত্রিক ভাষা (Machine Language): 

যে ভাষায় শুধুমাত্র ০ এবং ১ ব্যবহার করে প্রোগ্রাম লেখা হয় তাকে মেশিন বা যান্ত্রিক ভাষা বলে। কম্পিউটারের নিজস্ব ভাষা  বা মৌলিক ভাষা হচ্ছে মেশিন ভাষা। এই ভাষায় শুধু মাত্র ০ এবং ১ ব্যবহার করা হয় বলে এই ভাষায় দেওয়া কোনো নির্দেশ কম্পিউটার সরাসরি বুঝতে পারে। ফলে এর সাহায্যে কম্পিউটারের সাথে সরাসরি  যোগাযোগ করা যায়।

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

মেশিন ভাষায় দুটি সংখ্যা যোগ করার প্রোগ্রাম-

 

মেশিন ভাষার সুবিধা:

১। মেশিন ভাষার সবচেয়ে বড় সুবিধা হচ্ছে কম্পিউটারের সাথে সরাসরি যোগাযোগ করা যায়।

২। মেশিন ভাষায় লেখা প্রোগ্রাম নির্বাহের জন্য অনুবাদের প্রয়োজন হয় না। তাই কোনো প্রকার অনুবাদক প্রোগ্রামের প্রয়োজন হয় না। ফলে দ্রুত নির্বাহ হয়।

৩। মেশিন ভাষায় লেখা প্রোগ্রাম রান করতে অল্প মেমোরি প্রয়োজন হয়।

মেশিন ভাষার অসুবিধা:

১।  শুধু ০ ও ১ ব্যবহার করা হয় বলে মেশিন ভাষা শেখা কষ্টকর এবং এই ভাষা ব্যবহার করে প্রোগ্রাম লেখাও কষ্টসাধ্য।

২। এই ভাষায় লেখা প্রোগ্রাম সাধারণত মানুষের জন্য বুঝা কঠিন।

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

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

৫। এই ভাষায় প্রোগ্রাম রচনার ক্ষেত্রে প্রোগ্রামারকে কম্পিউটারের অভ্যন্তরীণ সংগঠন ভালোভাবে জানতে হয়।

৬। সকল মেমোরি অ্যাড্রেস মনে রাখতে হয়।

৭। সকল অপারেশন কোড মনে রাখতে হয়।

 

দ্বিতীয় প্রজন্মের ভাষা (2nd Generation Language-2GL):

অ্যাসেম্বলি ভাষা (Assembly Language): 

যে ভাষায় বিভিন্ন সংকেত বা নেমোনিক ব্যবহার করে প্রোগ্রাম লেখা হয় তাকে অ্যাসেম্বলি ভাষা বলে। অ্যাসেম্বলি ভাষায় প্রোগ্রাম লেখার জন্য ০ ও ১ ব্যবহার না করে বিভিন্ন সংকেত ব্যবহার করা হয়।

এই সংকেতকে বলে সাংকেতিক কোড (Symbolic Code) বা নেমোনিক (mnemonic) এবং এটি সর্বোচ্চ পাঁচটি লেটারের সমন্বয়ে হয়, যেমন- SUB(বিয়োগের জন্য), MUL(গুণের জন্য), ADD(যোগের জন্য), DIV(ভাগের জন্য) ইত্যাদি। এই বৈশিষ্ট্যের জন্য এই ভাষাকে সাংকেতিক ভাষাও বলা হয়।

অ্যাসেম্বলি ভাষা দ্বিতীয় প্রজন্মের এবং নিম্নস্তরের ভাষা। দ্বিতীয় প্রজন্মের কম্পিউটারে এই ভাষা ব্যাপকভাবে প্রচলিত ছিল। এই ভাষা মেশিন ভাষা থেকে উন্নত হলেও উচ্চতর ভাষার সমকক্ষ নয় এবং যন্ত্র নির্ভর হওয়ায় অ্যাসেম্বলি ভাষাকে নিম্নস্তরের ভাষা বলা হয়।

এই ভাষায় লেখা প্রোগ্রাম অনুবাদের প্রয়োজন হয় এবং অনুবাদক প্রোগ্রাম হিসেবে অ্যাসেম্বলার ব্যবহৃত হয়।

অ্যাসেম্বলি ভাষায় দুটি সংখ্যা যোগ করার প্রোগ্রাম-

অ্যাসেম্বলি ভাষায় প্রতিটি নির্দেশের চারটি অংশ থাকে। যথা- 

  • লেবেল (Label)
  • অপ-কোড (Opcode)
  • অপারেন্ড (Operand)
  • কমেন্ট (Comment)

লেবেলঃ প্রোগ্রামের একটি নির্দিস্ট স্থানকে চিহ্নিত করতে লেবেল ব্যবহৃত হয়। লেবেল ব্যবহারের ফলে প্রোগ্রাম একটি নির্দিস্ট স্টেটমেন্ট থেকে অপর একটি নির্দিস্ট স্টেটমেন্টে জাম্প করতে পারে। লেবেল লেখার ক্ষেত্রে এক বা দুইটি আলফানিউমেরিক ক্যারেক্টার ব্যবহৃত হয় এবং ক্যারেক্টারের মাঝে কোন ফাঁকা থাকা যাবে না। লেবেল হিসেবে কোন নেমোনিক ব্যবহার করা যাবে না। লেবেলের শেষে কোলন(:) দিতে হয়। যেমন- BB:

অপ-কোডঃ অপ-কোডকে অপারেশন কোডও বলা হয়। অপ-কোডে নির্দেশ নেমোনিক থাকে। এই নেমোনিকগুলো ভিন্ন ভিন্ন কম্পিউটারে ভিন্ন ভিন্ন হতে পারে। কিছু নির্দেশ নেমোনিক ও তাদের ব্যবহার দেখানো হল-

নেমোনিক ব্যবহার
LDAপ্রধান মেমোরির ডেটা অ্যাকিউমুলেটরে লোড করা।
STAঅ্যাকিউমুলেটরের ডেটাকে একটি নির্দিস্ট অবস্থানে সংরক্ষণ করা।
CLRঅ্যাকিউমুলেটর খালি করা।
ADDঅ্যাকিউমুলেটরের সাথে অপারেন্ডের মান যোগ করে যোগফল অ্যাকিউমুলেটরে রাখা।
SUBঅ্যাকিউমুলেটর থেকে অপারেন্ডের মান বিয়োগ করে বিয়োগফল অ্যাকিউমুলেটরে রাখা।
MULঅ্যাকিউমুলেটরের সাথে অপারেন্ডের মান গুন করে গুণফল অ্যাকিউমুলেটরে রাখা।
DIVঅ্যাকিউমুলেটরের মানকে অপারেন্ডের মান দ্বারা ভাগ করে ভাগফল অ্যাকিউমুলেটরে রাখা।
JMPশর্তহীনভাবে প্রোগ্রামের নির্দিস্ট লেভেলে জাম্প করতে।
INPডেটা বা নির্দেশ গ্রহণ করে মেমোরির নির্দিস্ট অবস্থানে রাখা।
OUTমেমোরির নির্দিস্ট অবস্থানের ডেটা আউটপুটে প্রদর্শন।
STPপ্রোগ্রামকে থামানো।

অপারেন্ডঃ অপকোড যার উপর কাজ করে তাকে অপারেন্ড বলে। এটি সাধারণত মেমোরির অ্যাড্রেস বা সরাসরি ডেটা হতে পারে।

কমেন্টঃ প্রোগ্রামে কোন নির্দেশের কী কাজ তা বর্ননা আকারে লেখা হয় যাকে কমেন্ট বা মন্তব্য বলে। এটি প্রোগ্রাম নির্দেশের কোন অংশ নয়। প্রোগ্রাম নির্দেশগুলোর কমেন্ট থাকলে পরবর্তীতে প্রোগ্রামের পরিবর্তন করা সহজ হয় বা অন্য কোন প্রোগ্রামারের পক্ষে প্রোগ্রাম নিয়ে কাজ করা সহজ হয়।

 

অ্যাসেম্বলি ভাষার সুবিধা:

১। অ্যাসেম্বলি ভাষা সহজে বুঝা যায় এবং এই ভাষায় প্রোগ্রাম রচনা করা যান্ত্রিক ভাষার তুলনায় অনেক সহজ।

২। এ ভাষায় প্রোগ্রাম রচনা করতে সময় এবং শ্রম কম লাগে।

৩। প্রোগ্রাম সহজে পরিবর্তন করা যায়।

৪। প্রোগ্রামের ত্রুটি(Error) বের করে তা সমাধান করা অর্থাৎ ডিবাগিং করা মেশিন ভাষার চেয়ে সহজ।

অ্যাসেম্বলি ভাষার অসুবিধা:

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

২। প্রোগ্রাম রচনার সময় প্রোগ্রামারকে মেশিন সম্পর্কে ধারণা থাকতে হয়।

৩। প্রোগ্রাম নির্বাহের জন্য অনুবাদক প্রোগ্রামের প্রয়োজন হয়।

 

তৃতীয় প্রজন্মের ভাষা (3rd Generation Language-3GL):

উচ্চস্তরের ভাষা (High Level Language): 

উচ্চস্তরের ভাষা হলো সেই সকল ভাষা যা মানুষের বোধগম্য এবং মানুষের ভাষার কাছাকাছি। যেমন- উচ্চস্তরের ভাষা ইংরেজি ভাষার সাথে মিল আছে এবং এই প্রোগ্রামিং ভাষা যন্ত্র নির্ভর নয়, এই জন্য এসব ভাষাকে উচ্চস্তরের ভাষা বলা হয়।

এটি মানুষের জন্য বুঝা খুব সহজ কিন্তু কম্পিউটার সরাসরি  বুঝতে পারে না বলে অনুবাদক প্রোগ্রামের সাহায্যে একে মেশিন ভাষায় রুপান্তর করে নিতে হয়। এটি তৃতীয় প্রজন্মের ভাষা।

যেমন- Fortran, Basic, Pascal, Cobol, C, C++, Visual Basic, Java, Python ইত্যাদি।

উচ্চস্তরের(C) ভাষায় দুটি সংখ্যা যোগ করার প্রোগ্রাম-

 

উচ্চস্তরের ভাষার প্রকারভেদ:

ব্যবহারের ক্ষেত্র অনুসারে উচ্চস্তরের ভাষাগুলোকে দুই ভাগে ভাগ করা যায়। যথা-

সাধারণ কাজের ভাষা (General Purpose Language): যেসকল উচ্চস্তরের প্রোগ্রামিং ভাষা সব ধরনের কাজের উপযোগী তা সাধারণ কাজের ভাষা নামে পরিচিত। যেমন- C, Java, Python ইত্যাদি।

বিশেষ কাজের ভাষা (Special Purpose Language) : যেসকল উচ্চস্তরের প্রোগ্রামিং ভাষা বিশেষ বিশেষ কাজের উপযোগী তা বিশেষ কাজের ভাষা নামে পরিচিত। যেমন: LISP, ALGOL, FORTRAN ইত্যাদি।

নির্বাহ মডেল অনুসারে উচ্চস্তরের ভাষাগুলোকে দুই ভাগে ভাগ করা যায়। যথা-

কম্পাইল্ড ভাষা (Compiled language): যেসকল উচ্চস্তরের প্রোগ্রামিং ভাষায় লেখা প্রোগ্রাম নির্বাহের জন্য কম্পাইলার অনুবাদক ব্যবহার করে কম্পাইল করতে হয় তাদেরকে কম্পাইল্ড ভাষা বলা হয়।

যেমন-  C, C++, C# ইত্যাদি।

ইন্টারপ্রেটেডে ভাষাঃ (Interpreted language): যেসকল উচ্চস্তরের প্রোগ্রামিং ভাষায় লেখা প্রোগ্রাম নির্বাহের জন্য ইন্টারপ্রেটার অনুবাদক ব্যবহার করে ইন্টারপ্রেট করতে হয় তাদেরকে ইন্টারপ্রেটেডে ভাষা বলা হয়।

যেমন- Python, Ruby, Perl ইত্যাদি।

প্রোগ্রাম ডিজাইনের উপর ভিত্তি করে উচ্চস্তরের ভাষাগুলোকে দুই ভাগে ভাগ করা যায়। যথা-

প্রসিডিউর ভাষা (Procedure language): এই প্রোগ্রামিং মডেলে একটি সমস্যাকে বিভিন্ন ছোট ছোট মডিউল বা অংশে ভাগ করে একটি বড় সমস্যার সমাধান করা হয়। প্রতিটি মডিউলকে ফাংশন বলা হয়। এই মডেলে প্রোগ্রামের নিয়ন্ত্রন উপর থেকে নিচের দিকে পরিচালিত হয় অর্থাৎ টপ-ডাউন পদ্ধতি অনুসরণ করে। এই মডেলে প্রোগ্রামের ডেটা গুলো ইন্সট্রাকশন দ্বারা নিয়ন্ত্রিত হয়।

যেমন- C, FORTRAN ইত্যাদি।

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

যেমন- C++, C#, JAVA ইত্যাদি।

 

উচ্চস্তরের ভাষার সুবিধা: 

১। উচ্চস্তরের ভাষা প্রোগ্রামার বান্ধব। তাই শেখা সহজ ফলে এই ভাষা ব্যবহার করে প্রোগ্রাম লেখা সহজ ও লিখতে সময় কম লাগে।

২। এতে ভুল হবার সম্ভবনা কম থাকে এবং প্রোগ্রামের ত্রুটি(Error) বের করে তা সংশোধন করা অর্থাৎ ডিবাগিং সহজ।

৩। এই ভাষায় প্রোগ্রাম লেখার জন্য কম্পিউটারের অভ্যন্তরীণ সংগঠন সম্পর্কে ধারণা থাকার প্রয়োজন নেই।

৪। এক মডেলের কম্পিউটারের জন্য লেখা প্রোগ্রাম অন্য মডেলের কম্পিউটারে ব্যবহার করা যায়। অর্থাৎ যন্ত্র নির্ভর নয়।

উচ্চস্তরের ভাষার অসুবিধা:

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

২। এই ভাষায় লেখা প্রোগ্রামকে অনুবাদ করে কম্পিউটারকে বুঝিয়ে দিতে হয়। অর্থাৎ অনুবাদক প্রোগ্রামের প্রয়োজন হয়।

৩। উচ্চস্তরের প্রোগ্রামগুলো নিম্নস্তরের প্রোগ্রামের চেয়ে তুলনামূলকভাবে ধীর হয়।

৪। প্রোগ্রাম রান করতে বেশি মেমোরি প্রয়োজন হয়।

উচ্চস্তরের ভাষার ব্যবহার:

১। বড় অ্যাপ্লিকেশন সফটওয়্যার তৈরিতে।

২। অ্যাপ্লিকেশন প্যাকেজ সফটওয়্যার তৈরিতে।

৩। বিভিন্ন ধরনের অটোমেটেড প্রসেস কন্ট্রোলের জন্য সফটওয়্যার তৈরিতে ইত্যাদি।

 

জনপ্রিয় কিছু উচ্চস্তরের প্রোগ্রামিং ভাষার পরিচিতিঃ

ফোরট্রান(FORTRAN): ১৯৫৭ সালে এই ভাষার প্রথম রিলিজ হয়। Formula Translation থেকে Fortran এর উৎপত্তি যা উচ্চস্তর প্রোগ্রামিং ভাষাগুলোর মধ্যে সবচেয়ে আদিমতম ভাষা। IBM এর গবেষক জন বাকাস IBM মেইনফ্রেম কম্পিউটার এর জন্য এটি তৈরি করেন।

এটি কম্পাইল্ড ভাষা ও প্রসিডিউর প্রোগ্রামিং ভাষা।

গাণিতিক জটিল হিসাব-নিকাশের জন্য এবং প্রকৌশল বিজ্ঞানে গবেষণার কাজে এটি বেশ জনপ্রিয়।

 

অ্যালগল(ALGOL): ১৯৫৮ সালে এই ভাষার প্রথম রিলিজ হয়। এর পূর্ণনাম Algorithmic Language।

অ্যালগোরিদম প্রকাশের জন্য এবং গণনা করার জন্য ১৯৫৮-৬০ এর সময় কার্নেগি মেলন বিশ্ববিদ্যালয়ের অ্যালান জে পেরিলিসের নেতৃত্বে অ্যাসোসিয়েশন অফ কম্পিউটিং মেশিনারি (এসিএম) এর একটি আন্তর্জাতিক কমিটি এই ভাষা ডিজাইন করেছিলো।

এটি কম্পাইল্ড ভাষা ও প্রসিডিউর প্রোগ্রামিং ভাষা।

এটি ব্যবহৃত হতো মূলত বৈজ্ঞানিক গবেষণায় বিভিন্ন সমস্যার সমাধানে।

এছাড়া, ৩০ বছরেরও বেশি সময় ধরে পাঠ্যপুস্তকে এবং একাডেমিয়ায় অ্যালগোরিদম তৈরির জন্য স্ট্যান্ডার্ড মেথড হিসাবে এসিএম(ACM) দ্বারা ALGOL ব্যবহৃত হয়েছিল।

 

সি(C): ১৯৭২ সালে এই ভাষার প্রথম রিলিজ হয়। ডেনিশ রিচি (Dennis M. Ritchie) বেল ল্যাবরেটরিতে UNIX অপারেটিং সিস্টেম ডেভেলোপ করার জন্য ‘সি’ প্রোগ্রামিং ভাষাটি তৈরি করেন। ১৯৭০ সালে প্রথম ‘সি’ প্রোগ্রামিং ভাষাটি DEC PDP-11 কম্পিউটারে প্রয়োগ করা হয়েছিল।

‘সি’ প্রোগ্রামিং ভাষা একটি সাধারণ কাজের ভাষা, স্ট্রাকচার্ড, প্রোসিডিউর,কম্পাইল্ড প্রোগ্রামিং ভাষা ও  উচ্চস্তরের প্রোগ্রামিং ভাষা। মিড-লেভেল ল্যাঙ্গুয়েজ হিসেবে ‘সি’ অত্যন্ত জনপ্রিয়।

‘সি’ নামটা এসেছে মার্টিন রিচার্ডস (Martins Richards) এর উদ্ভাবিত বিসিপিএল (BCPL-Basic Combined Programming Language) ভাষা থেকে। BCPL এর উন্নত সংস্করণ B নামে পরিচিত ছিল। পরে B এর উন্নয়নের ফলে C এর বিকাশ ঘটে। ‘সি’ প্রোগ্রামিং ভাষাকে সকল প্রোগ্রামিং ভাষার ভিত্তি বলা হয়।

 

সি++(C++): ১৯৮৫ সালে Bjarne Stroustrup বেল ল্যাবরেটরিতে C ভাষার বৈশিষ্ট্যের সাথে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর বৈশিষ্ট্য যুক্ত করে নতুন এক প্রোগ্রামিং ভাষা তৈরি করেন যা C++ নামে পরিচিত।

শুরুতে এর নামকরণ করা হয়েছিল “C with Classes” কিন্তু পরবর্তীতে ১৯৮৩ সালে C++ (সি++) নামকরণ করা হয়। সি++ হলো সি এর সুপারসেট।

এই ভাষাকে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ভাষা বলা হয়।

একে কম্পাইল্ড প্রোগ্রামিং ভাষা ও মধ্যম-স্তরের প্রোগ্রামিং ভাষাও বলা হয়।

এই ভাষার সাহায্যে বিভিন্ন সিস্টেম সফটওয়্যার, অ্যাপ্লিকেশন সফটওয়্যার, ডিভাইস ড্রাইভার ইত্যাদি তৈরি করা যায়।

 

পাইথন(Python): ১৯৯০ সালে Guido Van Rossum পাইথন প্রোগ্রামিং ভাষা ডিজাইন করেছিলেন এবং পাইথন সফটওয়্যার ফাউন্ডেশন দ্বারা ডেভেলোপ করা হয়েছিল। এটি মূলত কোড পঠনযোগ্যতার উপর জোর দেওয়ার জন্য তৈরি করা হয়েছিল এবং এর সহজ সিনট্যাক্স প্রোগ্রামারদেরকে অল্প সংখ্যক লাইন কোডের মাধ্যমেই একটি ধারণা প্রকাশ করার সুবিধা দেয়।

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

এটি ইন্টারপ্রেটেড প্রোগ্রামিং ভাষা।

ডেস্কটপ GUI অ্যাপ্লিকেশন, ওয়েবসাইট এবং ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টের জন্য পাইথন ব্যপকভাবে ব্যবহৃত হয়।

এছাড়া ডেটা এনালাইসিস, মেশিন লার্নিং ও কৃত্রিম বুদ্ধিমত্তায় ব্যপকভাবে ব্যবহৃত হচ্ছে।

 

ভিজুয়্যাল বেসিক(Visual BASIC): ১৯৯১ সালে এই ভাষার প্রথম রিলিজ হয়। মাইক্রোসফ্ট কোম্পানি এই প্রোগ্রামিং ভাষা এবং পরিবেশ ডেভেলোপ করে। এই ভাষার জনক Alan Cooper.

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

বেসিক(BASIC) ভাষার উপর ভিত্তি করে তৈরি ভিজুয়াল বেসিক প্রোগ্রামিং ভাষাটি প্রথম গ্রাফিক্যাল প্রোগ্রামিং পরিবেশ এবং ইউজার-ইন্টারফেস ডেভেলপমেন্টের জন্য একটি পেইন্ট মেটাফোর সরবরাহকারী প্রোগ্রামিং ভাষা।

সিনট্যাক্স সম্পর্কে উদ্বিগ্ন হওয়ার পরিবর্তে ভিজ্যুয়াল বেসিক প্রোগ্রামার ড্রাগ-এন্ড-ড্রপের সাহায্যে প্রয়োজনীয় কোড যুক্ত করতে পারে।

এই ভাষা ব্যবহার করে খুব সহজেই কাস্টমাইজড অ্যাপ্লিকেশন সফটওয়্যার তৈরি করা যায়।

 

জাভা(Java): জাভা প্রোগ্রামিং ভাষাটি মূলত সান মাইক্রোসিস্টেম কোম্পানি ডেভেলোপ করেন যা James Gosling শুরু করেছিলেন। এই জন্য James Gosling কে জাভা প্রোগ্রামিং ভাষার জনক বলা হয়।

১৯৯৫ সালে সান মাইক্রোসিস্টেমের জাভা প্ল্যাটফর্মের মূল উপাদান হিসাবে প্রকাশ করেছিলেন Java 1.0 [J2SE]

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

কম্পাইল্ড এবং ইন্টারপ্রেটেড ভাষা।

মধ্যম-স্তর ও সাধারণ কাজের ভাষাও বলা হয়।

শুরুতে এই ভাষার নামকরণ করা হয়েছিলো ‘Oak’ । গোসলিংয়ের (James Gosling) অফিসের বাইরে দাঁড়িয়ে থাকা ‘oak’ গাছের নামানুসারে এই নামকরণ করা হয়। পরবর্তীতে ‘Green’ নামে পরিবর্তন হয় এবং সবশেষে জাভা নামকরণ করা হয়।

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

 

মধ্যমস্তরের ভাষা(Mid Level Language): 

যেসকল প্রোগ্রামিং ভাষায় নিম্নস্তরের ভাষার বৈশিষ্ট্য এবং উচ্চস্তরের ভাষার বৈশিষ্ট্য উভয় বিদ্যমান তাদেরকে মধ্যম স্তরের ভাষা বা মিড লেভেল ল্যাঙ্গুয়েজ বলা হয়।

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

অর্থাৎ মিড লেভেল ল্যাঙ্গুয়েজে নিম্নস্তরের ভাষার বৈশিষ্ট্য এবং উচ্চস্তরের ভাষার বৈশিষ্ট্য উভয় বিদ্যমান।

মধ্যম স্তরের ভাষার উদাহরণ হল – C, C++, JAVA, Forth, Dbase, WordStar ইত্যাদি।

 

চতুর্থ প্রজন্মের ভাষা(4th Generation Language-4GL):

4GL এর পূর্ণরূপ Fourth Generation Language।197০ সাল থেকে চতুর্থ প্রজন্মের ভাষার ব্যবহার শুরু হয়।

উচ্চস্তরের ভাষার চেয়ে এই প্রজন্মের ভাষাগুলো মানুষের ভাষার অধিক কাছাকাছি এবং প্রোগ্রামার ফ্রেন্ডলি হওয়ায় অতি উচ্চস্তরের ভাষাও বলা হয়।

ডেটাবেজ প্রোগ্রামিং এবং স্ক্রিপ্টিং এর ক্ষেত্রে এই প্রজন্মের ভাষা ব্যবহৃত হয়।

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

এই প্রজন্মের ভাষাগুলো Domain-specific। অর্থাৎ প্রতিটি প্রোগ্রামিং ভাষা একটি নির্দিস্ট উদ্দেশ্যে ব্যবহার করা হয়।

এই প্রজন্মের ভাষাকে non-procedural বা Functional Language বলা হয়। কারণ এই প্রজন্মের ভাষার ব্যবহারের ক্ষেত্রে যে তথ্যাবলি দরকার কেবল তা বলে দিলেই হয়, কীভাবে কুয়েরি করা যাবে তা বলার দরকার হয় না।

এই প্রজন্মের ভাষার উদাহরণ হল Perl, Python, Ruby, SQL, MatLab(MatrixLaboratory)  ইত্যাদি।

চতুর্থ প্রজন্মের ভাষাব্যবহার

১। Database management

২। Report generation

৩। Mathematical optimization

৪। GUI development

৫। Web development

 

ওরাকল(Oracle): ওরাকল একটি RDBMS(Relational Database Management System) সফটওয়্যার যা ওরাকল কর্পোরেশন তৈরি করে।

লরেন্স এলিসন এবং অন্যান্য ডেভেলপারদের দ্বারা মূলত 1977 সালে ডেভেলপ করা হয়েছিল, ওরাকল ডিবি হ’ল অন্যতম নির্ভরযোগ্য এবং বহুল ব্যবহৃত রিলেশনাল ডাটাবেস ইঞ্জিন।

ডেটাবেজ সফটওয়্যারগুলোর মধ্যে ওরাকল অন্যতম নির্ভরযোগ্য এবং বহুল ব্যবহৃত রিলেশনাল ডেটাবেজ ইঞ্জিন।

 

পঞ্চম প্রজন্মের ভাষা(5th Generation Language-5GL):

5GL এর পূর্ণরূপ Fifth Generation Language। পঞ্চম প্রজন্মের ভাষাকে স্বাভাবিক ভাষাও (Natural Language) বলা হয়।

Artificial Intelligence বা কৃত্রিম বুদ্ধিমত্তা নির্ভর যন্ত্র তৈরিতে বা গবেষণায় এই প্রজন্মের ভাষা ব্যবহৃত হয়।

পঞ্চম প্রজন্মের ভাষায় লেখা প্রোগ্রামকে মেশিন ভাষায় রূপান্তরের জন্য ইন্টেলিজেন্ট কম্পাইলার ব্যবহৃত হয়। এই প্রজন্মের ভাষা ব্যবহার করে মানুষ যন্ত্রকে মৌখিক নির্দেশ দিতে পারে।

পঞ্চম প্রজন্মের ভাষার উদাহরণ হচ্ছে PROLOG(PROgramming LOGic), LISP, Mercury  ইত্যাদি।

 

পাঠ মূল্যায়ন- 

জ্ঞানমূলক প্রশ্নসমূহঃ

ক) প্রোগ্রাম কী?

ক) প্রোগ্রামিং ভাষা কী?

ক) প্রোগ্রামার কাকে বলে?

ক) প্রোগ্রামিং কী?

ক) মেশিন বা যান্ত্রিক ভাষা কী?

ক) অ্যাসেম্বলি ভাষা কী?

ক) নেমোনিক কী?

ক) নিম্নস্তরের ভাষা কী?

ক) উচ্চস্তরের ভাষা কী?

ক) 4GL কী?

Go for answer

 

অনুধাবনমূলক প্রশ্নসমূহঃ

খ) শুধুমাত্র ০ ও ১ দিয়ে লেখা ভাষাটি ব্যাখ্যা কর।

খ) মেশিন ভাষাকে নিম্নস্তরের ভাষা বলা হয় কেন? ব্যাখ্যা কর।

খ) “শব্দ ছাড়াই শুধুমাত্র সংখ্যার মাধ্যমে ভাষা প্রকাশ সম্ভব”- ব্যাখ্যা কর।

খ) “নিম্ন স্তরের ভাষার দুর্বলতাই উচ্চস্তরের ভাষার উৎপত্তির কারণ ”- ব্যাখ্যা কর।

খ) মেশিন ভাষায় লিখিত প্রোগ্রাম দ্রুত নির্বাহ হয় কেন?

খ) “অ্যাসেম্বলি ভাষা মেশিন ভাষার চেয়ে উন্নততর” – ব্যাখ্যা কর।

খ) “উচ্চস্তরের ভাষা মেশিন থেকে উন্নততর”-ব্যাখ্যা কর।

খ) “উচ্চস্তরের প্রোগ্রামিং ভাষায় প্রোগ্রামিং করা সহজ”- ব্যাখ্যা কর।

খ) “সি” প্রোগ্রামিং ভাষাকে মিড-লেভেল প্রোগ্রামিং ভাষা বলা হয় কেন?

খ) ” ‘সি’ একটি উচ্চ স্তরের প্রোগ্রামিং ভাষা” -ব্যাখ্যা কর।

Go for answer

 

সৃজনশীল প্রশ্নসমূহঃ

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

নাফিছা ম্যাডাম আইসিটি ক্লাসে প্রোগ্রামিং ভাষা নিয়ে আলোচনা করছিলেন। তিনি বললেন কম্পিউটার আবিষ্কারের শুরুর দিকে শুধুমাত্র সংখ্যা ব্যবহার করে প্রোগ্রাম লেখা হতো। কিন্তু বর্তমানে তা ব্যবহৃত হয় না। তিনি বললেন, বর্তমানে ‘সি’ প্রোগ্রামিং ভাষাটি খুবই জনপ্রিয়। তিনি ‘সি’ ভাষার উপর বিশদ আলোচনা করলেন এবং ছাত্রছাত্রীদের ৬ এবং ১২ সংখ্যা দুটির ল.সা.গু নির্ণয়ের জন্য ‘সি’ ভাষায় একটি প্রোগ্রাম লিখতে বললেন।

গ) উদ্দীপকে উল্লিখিত প্রথম ভাষাটি সম্পর্কে বিস্তারিত লেখ।

ঘ) উদ্দীপকে উল্লিখিত প্রোগ্রামটি লিখ।

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

রহিম, করিম ও রকিব প্রোগ্রামার। রহিম প্রোগ্রাম লেখার জন্য বিভিন্ন সংকেত বা নিমোনিক ব্যবহার করে এবং করিম প্রোগ্রাম লেখার জন্য বিভিন্ন ইংরেজি শব্দ ব্যবহার করে যা মানুষের বোধগম্য। অপরদিকে রকিব সংখ্যার মাধ্যমে প্রোগ্রাম রচনা করে।

গ) উদ্দীপকে উল্লিখিত রকিব কোন ভাষা ব্যবহার করেছে? ব্যাখ্যা কর।

ঘ) উদ্দীপকের রহিম ও করিমের ব্যবহৃত প্রোগ্রামিং ভাষা দুটির মধ্যে কোনটি সুবিধাজনক? বিশ্লেষণ কর।

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

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

গ) উদ্দীপকে রিতার ব্যবহৃত প্রোগ্রামিং ভাষাটি কোন প্রজন্মের? ব্যাখ্যা কর।

ঘ) উদ্দীপকে উল্লিখিত নিপা ও অর্পার ব্যবহৃত প্রোগ্রামিং ভাষা দুটির মধ্যে কোন স্তরের ভাষাটি সুবিধাজনক? বিশ্লেষণ কর।

 

বহুনির্বাচনি প্রশ্নসমূহঃ

১। কোন ভাষায় লিখিত প্রোগ্রামের জন্য অনুবাদক প্রোগ্রামের প্রয়োজন হয় না?

ক) মেশিন ভাষা          খ) উচ্চস্তরের ভাষা

গ) অ্যাসেম্বলি ভাষা     ঘ) স্বাভাবিক ভাষা

২। কোন ভাষায় হার্ডওয়্যার নিয়ন্ত্রণের পাশাপাশি উচ্চস্তরের ভাষার সুবিধা পাওয়া যায়?

ক) PASCAL        খ) COBOL

গ) C                    ঘ) FORTRAN

৩। সাংকেতিক চিহ্ন দিয়ে লিখিত ভাষা কোনটি ?

ক) যান্ত্রিক ভাষা         খ) অ্যাসেম্বলি ভাষা

গ) উচ্চস্তরের ভাষা    ঘ) চতুর্থ প্রজন্মের ভাষা

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

ক) মেশিন ভাষা          খ) উচ্চস্তরের ভাষা

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

৫। 4GL বলতে বোঝায়-

ক) অতি উচ্চস্তরের ভাষা        খ) উচ্চস্তরের ভাষা

গ) মধ্যম স্তরের ভাষা              ঘ) নিন্ম স্তরের ভাষা

৬। কোন ভাষা কম্পিউটারে সরাসরি ব্যবহার করা যায়?

ক) অ্যাসেম্বলি ভাষা     খ) যান্ত্রিক ভাষা

গ) উচ্চস্তরের ভাষা      ঘ) অতি উচ্চস্তরের ভাষা

৭। সাংকেতিক ভাষা কোনটি?

ক) মেশিন ভাষা           খ) অ্যাসেম্বলি ভাষা

গ) উচ্চস্তরের ভাষা      ঘ) অতি উচ্চস্তরের ভাষা

৮। কোনটিতে কম মেমোরি ও রিসোর্স নিয়ে সহজে প্রোগ্রাম লেখা যায়?

ক) অ্যাকসেস            খ) ওরাকল

গ) সি                         ঘ) পাইথন

৯। অ্যাসেম্বলি ভাষা কোন প্রজন্মের ভাষা?

ক) ১ম           খ) ২য়

গ) ৩য়           ঘ) ৪র্থ

১০। মেশিন ভাষায় লেখা প্রোগ্রামকে কী বলা হয়?

ক) অ্যাসকি                  খ) সোর্স কোড

গ) অবজেক্ট  কোড       ঘ) ইউনিকোড

১১। প্রোগ্রাম লিখতে মেশিন ভাষা ব্যবহার করা হলে-

i. প্রোগ্রাম পরিবর্তন করা কষ্টসাধ্য হয়

ii. দক্ষ প্রোগ্রামার প্রয়োজন হয়

iii. প্রোগ্রাম দ্রুত নির্বাহ হয়

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

ক) i ও ii               খ) i ও iii

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

১২। মেশিন ভাষা-

i. অন্যান্য ভাষা হতে দ্রুত নির্বাহ হয়

ii. যন্ত্রের ওপর নির্ভরশীল থাকে

iii. দ্বারা তাড়াতাড়ি প্রোগ্রাম লেখা যায়

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

ক) i ও ii              খ) i ও iii

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

১৩। মেশিন ভাষার প্রোগ্রাম-

i. সরাসরি ও দ্রুত কার্যকর হয়

ii. কম্পিউটার সংগঠন বর্ণনা করে

iii. লেখা সহজ ও সাধারণের ব্যবহার উপযোগী

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

ক) i ও ii              খ) i ও iii

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

১৪। মেমোরি অ্যাড্রেস নিয়ে সরাসরি কাজ হয়-

i. মেশিন ভাষায়

ii. অ্যাসেম্বলি ভাষায়

iii. C ভাষায়

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

ক) i ও ii              খ) i ও iii

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

 


Written by,

One thought on “পঞ্চম অধ্যায় পাঠ-১: বিভিন্ন প্রজন্ম এবং বিভিন্ন স্তরের প্রোগ্রামিং ভাষা।

Comments are closed.