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

প্রোগ্রামিং ভাষাগুলিকে কয়েকটি প্রোগ্রামিং ভাষার প্রজন্মের মধ্যে শ্রেণীবদ্ধ করা হয়েছে। ঐতিহাসিকভাবে, এই শ্রেণিবিন্যাসটি প্রোগ্রামিং শৈলীর ক্রমবর্ধমান ক্ষমতা নির্দেশ করতে ব্যবহৃত হয়েছিল। পরবর্তীতে লেখকরা অর্থগুলিকে কিছুটা পুনঃসংজ্ঞায়িত করেছেন কারণ পূর্বে গুরুত্বপূর্ণ হিসাবে দেখা পার্থক্যগুলি বর্তমান অনুশীলনে কম তাৎপর্যপূর্ণ হয়ে উঠেছে। উদাহরণ: Machine-level Programming Languages প্রথম প্রজন্মের প্রোগ্রামিং ভাষা (1GL) হলো Machine-level প্রোগ্রামিং ভাষা । প্রথম-প্রজন্মের প্রোগ্রামিং ভাষা (1GL) হল প্রোগ্রামিং ভাষার একটি গ্রুপিং যা প্রথম প্রজন্মের কম্পিউটারগুলিকে প্রোগ্রাম করতে ব্যবহৃত মেশিন স্তরের ভাষা। মূলত, প্রথম প্রজন্মের ভাষা কম্পাইল বা অ্যাসেম্বল করতে কোনো অনুবাদক ব্যবহার করা হতোনা। প্রথম প্রজন্মের প্রোগ্রামিং নির্দেশাবলী কম্পিউটার সিস্টেমের সামনের প্যানেলের সুইচগুলির মাধ্যমে প্রবেশ করানো হতো। The instructions in 1GL are made of binary numbers, represented by 1s and 0s. This makes the language suitable for the understanding of the machine but far more difficult to interpret and learn by the human programmer. উদাহরণ: অ্যাসেম্বলি ভাষা দ্বিতীয়-প্রজন্মের প্রোগ্রামিং ভাষা (2GL) হল অ্যাসেম্বলি ভাষা শ্রেণীবদ্ধ করার একটি প্রজন্মগত উপায়। উদাহরণ: C, C++, Java, Python, PHP, Perl, C#, BASIC, Pascal, Fortran, ALGOL, COBOL তৃতীয়-প্রজন্মের প্রোগ্রামিং ভাষা (3GL) অনেক বেশি মেশিন-স্বাধীন (সহজে বহনীয়) এবং আরও প্রোগ্রামার-বান্ধব। এতে সামগ্রিক ডেটা প্রকারের জন্য উন্নত সমর্থন এবং এমনভাবে ধারণা প্রকাশ করার মতো বৈশিষ্ট্য অন্তর্ভূক্ত রয়েছে যা কম্পিউটার নয়, প্রোগ্রামারের পক্ষ সমর্থন করে। কম্পিউটারকে অপ্রয়োজনীয় বিবরণের যত্ন নেওয়াতে একটি তৃতীয়-প্রজন্মের ভাষা দ্বিতীয় প্রজন্মের ভাষার তুলনায় উন্নত। 3GLগুলি পূর্ববর্তী প্রজন্মের ভাষার তুলনায় আরও ভাবমূলক, তাই তাদেরকে প্রথম এবং দ্বিতীয়-প্রজন্মের তুলনায় উচ্চ-স্তরের ভাষা হিসাবে বিবেচিত যেতে পারে। ১৯৫০-এর শেষের দিকে প্রথম প্রবর্তিত হওয়া Fortran, ALGOL, এবং COBOL হল প্রাথমিক 3GL-এর উদাহরণ। বর্তমানে সর্বাধিক জনপ্রিয় সাধারণ-ক্ষেত্রের ভাষাগুলো, যেমন C, C++, C#, Java, BASIC এবং Pascal-ও তৃতীয় প্রজন্মের ভাষা, যদিও এই ভাষাগুলির প্রতিটিকে অন্যান্য সমসাময়িক বৈশিষ্ট্যের উপর ভিত্তি করে অন্যান্য বিভাগে আরও উপবিভক্ত করা যেতে পারে। বেশিরভাগ 3GL স্ট্রাকচার্ড প্রোগ্রামিং সমর্থন করে। কিছু আবার অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং সমর্থন করে। এই জাতীয় বৈশিষ্ট্যগুলি প্রায়ই একটি 3GL হওয়ার পরিবর্তে একটি ভাষা বর্ণনা করতে ব্যবহৃত হয়ে থাকে। উদাহরণ: ABAP, Unix Shell, SQL, PL/SQL, Oracle Reports, R চতুর্থ প্রজন্মের ভাষাগুলি নির্দিষ্ট প্রোগ্রামিং ডোমেইনের দিকে বিশেষায়িত হয়ে থাকে। 4GL-এর মধ্যে ডাটাবেজ ম্যানেজমেন্ট, রিপোর্ট তৈরি, গাণিতিক অপ্টিমাইজেশান, GUI ডেভেলপমেন্ট বা ওয়েব ডেভেলপমেন্টের জন্য সমর্থন অন্তর্ভুক্ত থাকতে পারে। উদাহরণ: Prolog, OPS5, Mercury পঞ্চম-প্রজন্মের প্রোগ্রামিং ভাষা (5GL) প্রোগ্রামার দ্বারা লিখিত একটি অ্যালগরিদম ব্যবহার না করে বরং প্রোগ্রামে দেওয়া সীমাবদ্ধতা ব্যবহার করে সমস্যা সমাধানের উপর ভিত্তি করে তৈরী প্রোগ্রামিং ভাষা । বেশিরভাগ সীমাবদ্ধতা-ভিত্তিক এবং যুক্তিভিত্তিক প্রোগ্রামিং ভাষা এবং কিছু অন্যান্য ঘোষণামূলক প্রোগ্রামিং হলো এই পঞ্চম প্রজন্মের ভাষা। এটি নিজেই সমস্যা সমাধানের জন্য কৃত্রিম বুদ্ধিমত্তা বা (AI) প্রযুক্তি ব্যবহার করে থাকে। যদিও চতুর্থ-প্রজন্মের প্রোগ্রামিং ভাষাগুলি নির্দিষ্ট প্রোগ্রাম তৈরি করার জন্য ডিজাইন করা হয়েছে, পঞ্চম-প্রজন্মের ভাষাগুলি এমনভাবে ডিজাইন করা হয়েছে যাতে কম্পিউটার প্রোগ্রামার ছাড়াই একটি প্রদত্ত সমস্যা সমাধান করতে পারে। এইভাবে, ব্যবহারকারীকে কেবলমাত্র কোন সমস্যাগুলি সমাধান করা দরকার এবং কোন শর্ত পূরণ করা দরকার তা নিয়ে চিন্তা করতে হবে, কিন্তু কীভাবে সেগুলি সমাধান করার জন্য একটি রুটিন বা অ্যালগরিদম প্রয়োগ করতে হবে তা নিয়ে চিন্তা করতে হবেনা৷ পঞ্চম প্রজন্মের ভাষাগুলি মূলত কৃত্রিম বুদ্ধিমত্তা বা এআই গবেষণায় ব্যবহৃত হয়ে থাকে। OPS5 এবং Mercury হল পঞ্চম-প্রজন্মের ভাষার উদাহরণ, একইভাবে ICAD-ও, যা Lisp- এর উপর ভিত্তি করে নির্মিত হয়েছিল। KL-ONE হল একটি ফ্রেম ভাষা যা সম্পর্কিত ধারণার একটি উদাহরণ। উদাহরণ: Bubble.io ষষ্ঠ-প্রজন্মের প্রোগ্রামিং ভাষা (6GL) হল ভিজ্যুয়াল ডেভেলপমেন্টের উপর ভিত্তি করে তৈরী প্রোগ্রামিং ভাষা। এগুলোর সামগ্রিক বৈশিষ্ট্য হলো "নোকোড" বা "ভিজ্যুয়াল ডেভেলপমেন্ট"। NoCode ডেভেলপমেন্ট প্ল্যাটফর্ম সম্পর্কে আরও বিস্তারিত জানার জন্য এখানে দেখুন প্রোগ্রামিং ভাষায় "প্রথম-প্রজন্ম" এবং "দ্বিতীয়-প্রজন্ম" শব্দগুলো "তৃতীয়-প্রজন্ম" শব্দটি তৈরির আগে ব্যবহার করা হয়নি; এই তিনটি নামের কোনোটিই প্রোগ্রামিং ভাষার প্রাথমিক সংকলনে উল্লেখ করা হয়নি। কম্পিউটার প্রযুক্তির তৃতীয় প্রজন্মের প্রবর্তন একটি নতুন প্রজন্মের প্রোগ্রামিং ভাষার সৃষ্টির সাথে মিলে যায়। মেশিনের ক্ষেত্রে এই প্রজন্মগত পরিবর্তন উচ্চস্তরের প্রোগ্রামিং ভাষা নামে পরিচিত অনেকগুলি গুরুত্বপূর্ণ পরিবর্তনের সাথে সম্পর্কযুক্ত,যা নিচে আলোচনা করা হয়েছে, যেখানে প্রযুক্তিগত বিষয়বস্তু উল্লেখ করে উচ্চস্তরের প্রোগ্রামিং ভাষার সাথে দ্বিতীয়/তৃতীয় প্রজন্মের পার্থক্যের পাশাপাশি যান্ত্রিক ভাষাকে প্রথম প্রজন্মের ভাষা এবং অ্যাসেম্বলি ভাষাকে দ্বিতীয় প্রজন্ম হিসেবে উল্লেখ করা হয়েছে। প্রাথমিকভাবে, অ্যাসেম্বলির চেয়ে উচ্চস্তরের সকল প্রোগ্রামিং ভাষাকে "তৃতীয়-প্রজন্ম" বলে অভিহিত করা হয়েছিল, কিন্তু পরে (তৎকালীন), নতুন ঘোষণামূলক প্রোগ্রামিং (যেমনঃ প্রোলগ এবং ডোমেইন-স্পেসিফিক ভাষা) আলাদা করার চেষ্টা করার জন্য " চতুর্থ প্রজন্ম " শব্দটি চালু করা হয়েছিল; যেগুলি আরও উচ্চস্তরে এবং ব্যবহারকারীর আসল ডোমেইন (যেমনঃ প্রাকৃতিক-ভাষা স্তর) - এর চেয়েও আরও নিকটবর্তীতে কাজ করার দাবী করে। অপরিহার্য উচ্চ-স্তরের ভাষা, যেমনঃপ্যাসকেল, সি, ALGOL, ফোর্টরান, বেসিক, ইত্যাদি উচ্চস্তরের ভাষাগুলির (তৃতীয় প্রজন্ম এবং পরবর্তী) "প্রজন্মগত" শ্রেণিবিভাগ কখনই সম্পূর্ণরূপে সুনির্দিষ্ট ছিল না এবং পরবর্তীতে সম্ভবত পরিত্যক্ত করা হয়েছিল, আরও সুনির্দিষ্ট শ্রেণিবিভাগ সাধারণ ব্যবহার লাভ করার ফলে, যেমন অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং, এবং Function। C থেকে আসে C++ এবং পরে জাভা এবং C# ; লিস্প থেকে CLOS ; অ্যাডা টু অ্যাডা 2012 ; এমনকি COBOL থেকে COBOL 2002 । সেই ‘প্রজন্মে’ নতুন ভাষার উদ্ভবও হয়েছে। প্রোগ্রামিং ভাষা "Computer Hope, Generation languages". Brookshear, J. Glenn (২০১২)। Computer science : an overview (11th সংস্করণ)। Addison-Wesley। পৃষ্ঠা 240–241। আইএসবিএন 0-13-256903-5।  Vass, Péter। "Programming Language generations and Programming Paradigms" (পিডিএফ)। ২০২০-০১-২৯ তারিখে মূল (পিডিএফ) থেকে আর্কাইভ করা।  35th Hawaii International Conference on System Sciences - 1002 Domain-Specific Languages for Software Engineering. ওয়েব্যাক মেশিনে আর্কাইভকৃত মে ১৬, ২০১১ তারিখে. Arie van Deursen; Paul Klint (১৯৯৮)। "Domain-Specific Languages: An Annotated Bibliography"। ২০০৯-০২-০২ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২০০৯-০৩-১৫।  Network dictionary। Javvin Technologies, Inc.। ২০০৭। পৃষ্ঠা 195। আইএসবিএন 9781602670006।  E. Balagurusamy, Fundamentals of Computers, Mcgraw Hill Education (India), 2009, আইএসবিএন ৯৭৮-০০৭০১৪১৬০৫, p. 340.