প্রজন্ম থেকে প্রজন্মে প্রোগ্রামিং ভাষা

টিউন বিভাগ প্রোগ্রামিং
প্রকাশিত
জোসস করেছেন
Level 3
শিক্ষার্থী, গুরুদয়াল সরকারি কলেজ, কিশোরগঞ্জ

প্রোগ্রামিং ভাষার জগৎ যেন এক অদ্ভুত মায়াবী পথ। প্রযুক্তির এই পথে একেক প্রজন্মের ভাষা আমাদের নতুন নতুন সম্ভাবনার দিগন্তে নিয়ে গেছে। যেখানে প্রথম প্রজন্মের মেশিন ল্যাঙ্গুয়েজে আমরা ০ আর ১-এর জগতে আটকে ছিলাম, সেখানে আজ আমরা কৃত্রিম বুদ্ধিমত্তা এবং জ্ঞান-ভিত্তিক প্রোগ্রামিংয়ের মাধ্যমে ভবিষ্যতের সীমানা স্পর্শ করছি।

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

প্রথম প্রজন্মের প্রোগ্রামিং ভাষা (1GL)

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

উদাহরণ

ধরা যাক, আমরা একটি সংখ্যা যোগ করতে চাই। এটি মেশিন ল্যাঙ্গুয়েজে লিখতে হলে আমাদের সরাসরি বাইনারি কোড লিখতে হবে, যেমন: 0001 1010 0001 (এখানে প্রতিটি সংখ্যা একটি নির্দিষ্ট অর্থ বহন করে)।

সুবিধা ও অসুবিধা

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

দ্বিতীয় প্রজন্মের প্রোগ্রামিং ভাষা (2GL)

অ্যাসেম্বলি ল্যাঙ্গুয়েজ (Assembly Language) দ্বিতীয় প্রজন্মের বা 5GL এর প্রোগ্রামিং ভাষা হিসেবে বেশ পরিচিত। যেখানে প্রথম প্রজন্মে মেশিন ল্যাঙ্গুয়েজ বাইনারি কোড ব্যবহার করতো, সেখানে ২য় প্রজন্মের বা 2GL এর অ্যাসেম্বলি ল্যাঙ্গুয়েজ (Assembly Language) মেমোনিক কোডের মাধ্যমে প্রোগ্রামিং করতো। মেশিন ল্যাঙ্গুয়েজের চেয়ে অ্যাসেম্বলি ল্যাঙ্গুয়েজ (Assembly Language) কিছুটা সহজবোধ্য। অ্যাসেম্বলি ল্যাঙ্গুয়েজে লেখা কোড কম্পিউটারের জন্য অ্যাসেম্বলার ব্যবহার করে মেশিন ল্যাঙ্গুয়েজে রূপান্তর করা হতো।

উদাহরণ

এটি সাধারণ অ্যাসেম্বলি ভাষার উদাহরণ হতে পারে:

model small.stack 100h.data
msg db 'Hello, World!', 0.code
main:
; print the message
mov ah, 09h
lea dx, msg
int 21h
; exit program
mov ah, 4Ch
int 21h
end main

এখানে ASM কোড কোনসোলে "Hello World!" প্রিন্ট করবে।

সুবিধা ও অসুবিধা

  • সুবিধা: অ্যাসেম্বলি ভাষা মেশিন ল্যাঙ্গুয়েজের চেয়ে কিছুটা সহজ এবং সরাসরি হার্ডওয়্যার নিয়ন্ত্রণের সুযোগ দেয়।
  • অসুবিধা: অ্যাসেম্বলি ল্যাঙ্গুয়েজ মেশিনের ওপর নির্ভরশীল হওয়ায় এটি খুব জটিল এবং বেশিরভাগ লোকের জন্য বোঝা কঠিন।

তৃতীয় প্রজন্মের প্রোগ্রামিং ভাষা (3GL)

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

উদাহরণ

জনপ্রিয় ৩GL ভাষার মধ্যে রয়েছে C (সি), C+ (সি+), Java (জাভা), Python (পাইথন), BASIC (বেসিক), FORTRAN (ফোরট্রান), COBOL (কোবল) এবং Pascal (প্যাসকেল)। উদাহরণস্বরূপ, C ভাষায় একটি সাধারণ প্রোগ্রাম নিচে দেওয়া হলো:

</pre>
#include <stdio.h>

int calculateMonths(int startYear, int startMonth, int endYear, int endMonth) {return (endYear - startYear) * 12 + (endMonth - startMonth);}

int main() {int startYear = 2024, startMonth = 5;
int endYear = 2024, endMonth = 11;

int monthsKnown = calculateMonths(startYear, startMonth, endYear, endMonth);

printf("অপরাজিতা এবং মেঘের পরিচয়ের সময়কাল: %d মাস\n", monthsKnown);

return 0;}
<pre>

এই C প্রোগ্রামটি অপরাজিতা এবং মেঘের সম্পর্কের সময়কাল বের করবে। calculateMonths ফাংশনটি দুটি তারিখের মধ্যে মাসের পার্থক্য বের করে, যেখানে শুরু এবং শেষ বছরের মাসের ভিত্তিতে মোট মাসের সংখ্যা হিসাব করবে। main ফাংশনে, অপরাজিতা এবং মেঘের পরিচয়ের তারিখ এবং বর্তমান তারিখ দেয়া রয়েছে। প্রোগ্রামটি তাদের সম্পর্কের সময়কাল ৬ মাস হিসেবে আউটপুট দেখাবে।

সুবিধা ও অসুবিধা

  • সুবিধা: ৩GL ভাষাগুলো শিখতে ও কোডিং করা সহজ। এটি অনেক বেশি জটিল প্রোগ্রাম তৈরির সুবিধা দেয়।
  • অসুবিধা: উচ্চ স্তরের ভাষাগুলোর ক্ষেত্রে কোড কম্পাইল করে মেশিন কোডে রূপান্তর করতে কিছুটা সময় প্রয়োজন হয়।

চতুর্থ প্রজন্মের প্রোগ্রামিং ভাষা (4GL)

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

উদাহরণ

একটি ডেটাবেজের তথ্য সংরক্ষণ, পরিচালনা, এবং বিশ্লেষণ থেকে শুরু করে ডেটাবেজের পুরো ম্যানেজমেন্ট করতে ব্যবহার হয় SQL। ডেটাবেজ ম্যানেজমেন্টের জন্য SQL খুবই জনপ্রিয় ল্যাঙ্গুয়েজ।

</pre>
CREATE TABLE Employees (ID INT,
Salary DECIMAL(10, 2),
Bonus DECIMAL(10, 2));

INSERT INTO Employees VALUES (1, 5000.00, 1000.00);
INSERT INTO Employees VALUES (2, 6000.00, 1200.00);

SELECT ID, Salary + Bonus AS TotalIncome FROM Employees;
<pre>

SQL, MATLAB, R, SAS এবং ABAP-ও চতুর্থ প্রজন্মের ভাষার উদাহরণ।

সুবিধা ও অসুবিধা

  • সুবিধা: 4GL ভাষাগুলো খুব দ্রুত এবং ব্যবহার সহজ। এতে ডেটা ম্যানেজমেন্ট এবং রিপোর্ট তৈরির জন্য বিশেষ ফাংশন অন্তর্ভুক্ত থাকে।
  • অসুবিধা: এই ভাষাগুলো মেশিন লেভেল টাস্কের জন্য উপযুক্ত নয় এবং কম্পিউটার হার্ডওয়্যার নিয়ন্ত্রণে দুর্বল।

পঞ্চম প্রজন্মের প্রোগ্রামিং ভাষা (5GL)

পঞ্চম প্রজন্মের ভাষাগুলো কৃত্রিম বুদ্ধিমত্তা এবং লজিক্যাল প্রোগ্রামিং-এর ওপর ভিত্তি করে তৈরি। এ ধরনের ভাষাগুলো সাধারণত এআই এবং মেশিন লার্নিং অ্যাপ্লিকেশন তৈরিতে ব্যবহৃত হয়। ৫GL ভাষাগুলো বিভিন্ন জ্ঞানভিত্তিক এবং জটিল সমস্যার সমাধান দেওয়ার ক্ষমতা রাখে। 5GL এর প্রোগ্রামিং ভাষার মধ্য Prolog এবং LISP বেশ জনপ্রিয়। তাছাড়াও Mercury ও OPS5-ও বেশ জনপ্রিয়।

উদাহরণ

নিচে Prolog এ একটি ছোট্ট প্রোগ্রামের উদাহরণসহ দেওয়া হলো:

met_date(oprajita, megh, 2024, 5).

known_for(X, Y, Months) :-
met_date(X, Y, Year, Month),
current_date(CurrentYear, CurrentMonth),
Months is (CurrentYear - Year) * 12 + (CurrentMonth - Month).

current_date(2024, 11).

উপরের Prolog কোডে, met_date(oprajita, megh, 2024, 5). নির্দেশ করে যে অপরাজিতা ও মেঘের পরিচয় মে ২০২৪-এ হয়েছিল। known_for(X, Y, Months) নিয়মটি পরিচয় ও বর্তমান তারিখ (নভেম্বর ২০২৪) থেকে তাদের পরিচয়ের মোট মাস বের করে।

ফলে?- known_for(oparajita, megh, Months). প্রশ্ন করলে Months = 6 পাওয়া যায়, অর্থাৎ ৬ মাস।

সুবিধা ও অসুবিধা

  • সুবিধা: 5GL ভাষাগুলোতে নিজেই জটিল সমস্যার সমাধান করার সক্ষমতা রয়েছে।
  • অসুবিধা: এ ভাষাগুলোর ব্যবহার জটিল এবং বিশেষজ্ঞ ছাড়া ব্যবহার করা জটিল।

শেষ কথা

প্রোগ্রামিং ভাষার প্রতিটি প্রজন্ম আমাদের প্রযুক্তির পথে এক ধাপ এগিয়ে নিয়ে গেছে। মেশিন ল্যাঙ্গুয়েজ থেকে শুরু করে কৃত্রিম বুদ্ধিমত্তাভিত্তিক ভাষা পর্যন্ত প্রতিটি ধাপ প্রোগ্রামিংকে আরও সহজ, শক্তিশালী এবং ব্যবহারবান্ধব করেছে। ভবিষ্যতেও নতুন প্রজন্মের ভাষাগুলি প্রযুক্তির আরও জটিল সমস্যার সমাধান দেবে এবং আমাদের সম্ভাবনার দিগন্তকে আরও প্রসারিত করবে।

Level 3

আমি মো সানজিদ। শিক্ষার্থী, গুরুদয়াল সরকারি কলেজ, কিশোরগঞ্জ। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 2 বছর 6 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 15 টি টিউন ও 19 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 1 ফলোয়ার আছে এবং আমি টেকটিউনসে 3 টিউনারকে ফলো করি।


টিউনস


আরও টিউনস


টিউনারের আরও টিউনস


টিউমেন্টস