- প্রোগ্রাম (Program)
কোনো সমস্যা সমাধানের জন্য কম্পিউটার ভাষায় ধারাবাহিকভাবে কতগুলো কমান্ড বা নির্দেশের সমষ্টিকে প্রোগ্রাম বলা হয়। প্রোগ্রাম লেখার জন্য বিভিন্ন ধরনের প্রোগ্রাম ভাষা ব্যবহৃত হয়। ইংরেজ কবি লর্ড বায়রনের কন্যা লেডি অ্যাডা অগাস্টাকে কম্পিউটার প্রোগ্রামিং ধারণার প্রবর্তক মনে করা হয়।
- প্রোগ্রামের ভাষা (Programming Language)
কম্পিউটার সিস্টেমে প্রোগ্রাম রচনার জন্য ব্যবহৃত শব্দ, বর্ণ, অঙ্ক, সংকেত এবং এগুলো বিন্যাসের নিয়মগুলোকে একত্রে বলা হয় প্রোগ্রামের ভাষা বা প্রোগ্রামিং ল্যাঙ্গুয়েজ ।
১৯৪৫ সাল থেকে শুরু করে এ পর্যন্ত কয়েকশ প্রোগ্রামিং ল্যাঙ্গুয়েজ বা ভাষা আবিষ্কৃত হয়েছে। এ সব ভাষাকে বৈশিষ্ট্য অনযায়ী পাঁচটি স্তর বা প্রজন্মে ভাগ করা যায়। যথা:
- প্রথম প্রজন্ম ভাষা (১৯৪৫) : মেশিন ভাষা (Machine Language)
- দ্বিতীয় প্রজন্ম ভাষা (১৯৫০) : অ্যাসেম্বলি ভাষা (Assembly Language)
- তৃতীয় প্রজন্ম ভাষা (১৯৬০) : উচ্চতর ভাষা (High Level Language)
- চতুর্থ প্রজন্ম ভাষা (১৯৭০) : অতি উচ্চতর ভাষা (Very High Level Language)
- পঞ্চম প্রজন্ম ভাষা (১৯৮০) : স্বাভাবিক বা ন্যাচারাল ভাষা (Natural Language)
প্রথম প্রজন্মের ভাষা : মেশিন ভাষা (Machine Language) :
কম্পিউটারের নিজস্ব ভাষা হচ্ছে মেশিন ভাষা। এই ভাষা 0 এবং 1 এই দুই বাইনারি অঙ্ক দিয়ে লিখতে হয়। কম্পিউটার একমাত্র মেশিন ভাষাই বুঝতে পারে, অন্য ভাষায় প্রোগ্রাম করলে কম্পিউটার আগে উপযুক্ত অনুবাদকের সাহায্যে তাকে মেশিন ভাষায় পরিণত করে নেয়। মেশিনের ভাষায় লিখিত প্রোগ্রামকে অবজেক্ট প্রোগ্রামও বলা হয়।
সুবিধা: মেশিন ভাষায় লেখা প্রোগ্রাম কম্পিউটার সরাসরি বুঝতে পারে তাই অনুবাদকের প্রয়োজন হয় না। ফলে প্রোগ্রাম দ্রুত কাজ করে।
অসুবিধা: ০ এবং ১ ব্যবহার করে প্রোগ্রাম লেখা হয় বিধায় এ প্রোগ্রাম রচনা অত্যন্ত ক্লান্তিকর ও সময়সাপেক্ষ ।
দ্বিতীয় প্রজন্মের ভাষা : অ্যাসেম্বলি ভাষা (Assembly Language) :
অ্যাসেম্বলি ভাষা হচ্ছে মেশিন ভাষার পরবর্তী প্রোগ্রামের ভাষা। এ ভাষা বিভিন্ন সংকেত সহযোগে গঠিত। তাই একে সাংকেতিক ভাষাও বলা হয়। মেশিন ভাষার চেয়ে এ ভাষায় প্রোগ্রাম লেখা ও পড়া প্রোগ্রামারদের জন্য সহজ। অ্যাসেম্বলি ভাষায় সাংকেতিক কোডে নির্দেশ দেয়া হয়। এ ভাষায় লিখিত প্রোগ্রাম সরাসরি কম্পিউটার বুঝতে পারে না । অ্যাসেম্বলি ভাষায় লিখিত প্রোগ্রামকে মেশিনের ভাষায় রূপান্তরিত করার জন্য অ্যাসেম্বলার নামক এক ধরনের ট্রান্সলেটর বা অনুবাদক প্রোগ্রাম ব্যবহার করা হয়। অ্যাসেম্বলি ভাষায় ব্যবহৃত বিভিন্ন সংকেতকে নিমোনিক বলে। যেমন- ADD, SUB, MUL, DIV ইত্যাদি। অ্যাসেম্বলি ভাষার নির্দেশে চারটি অংশ থাকে। যথা- লেভেল (Level), অপকোড (Opcode), অপারেন্ড (Operand), কমেন্ট (Comment) ।
সুবিধা: এ ভাষায় রচিত প্রোগ্রাম দক্ষ ও সংক্ষিপ্ত হয়। প্রোগ্রাম রচনায় ভুলের পরিমাণ কম হয়।
অসুবিধা: এক ধরনের মেশিনের জন্য লিখিত প্রোগ্রাম অন্য ধরনের মেশিনে ব্যবহার করা যায় না। এই ভাষা সরাসরি মেশিন বুঝতে পারে না।
[অ্যাসেম্বলি লাঙ্গুয়েজ ও হাইলেভেল ল্যাঙ্গুয়েজের মধ্যবর্তী ল্যাঙ্গুয়েজকে মিড লেভেল ল্যাঙ্গুয়েজ বা মধ্যবর্তী ভাষা বলা হয়।]
তৃতীয় প্রজন্মের ভাষা : উচ্চতরের ভাষা (High Level Language) :
মেশিন ও অ্যাসেম্বলি ভাষায় এক ধরনের কম্পিউটারের জন্য রচিত প্রোগ্রাম অন্য ধরনের কম্পিউটারে ব্যবহার করা যায় না। তাছাড়া লো-লেভেল ভাষায় (মেশিন ও অ্যাসেম্বলি ভাষা) প্রোগ্রাম লেখা কষ্টকর ও শ্রমসাধ্য কাজ। এ সব অসুবিধা থেকে অব্যাহতির প্রচেষ্টার ফলে হাই-লেভেল ল্যাঙ্গুয়েজ (উচ্চতর ভাষা)-এর উদ্ভব হয়। যে প্রোগ্রামিং ভাষার প্রতীক এবং শব্দসমূহ সাধারণত গাণিতিক ও ইংরেজি ভাষার মত এবং যা মানুষের জন্য সহজে বোধগম্য, সে প্রোগ্রামিং ভাষাকে উচ্চস্তরের প্রোগ্রামিং ভাষা (High Level Language) বলা হয়। মানুষ হাই-লেভেল ভাষা দ্রুত লিখতে, বুঝতে ও স্মরণ রাখতে পারে। এটি ইংরেজি ভাষার সদৃশ। উদাহরণ: C, C++, JAVA, ORACLE, BASIC, PASCAL, FORTRAN ইত্যাদি।
বৈশিষ্ট্য/সুবিধা: এ ভাষা শেখা সহজ এবং দ্রুত প্রোগ্রাম লেখা যায়। প্রোগ্রাম ভুল হবার সম্ভাবনা কম ও সংশোধন করা সহজ। লাইব্রেরি ফাংশন সুবিধা পাওয়া যায়।
অসুবিধা: প্রোগ্রাম লেখার পূর্বে স্ট্রাকচার ও কমান্ডের সিনটেক্স জানতে হয়। মেশিন ল্যাঙ্গুয়েজে রূপান্তরের জন্য অনুবাদক প্রোগ্রাম প্রয়োজন হয়। লো-লেভেল ভাষার তুলনায় বেশি মেমোরি প্রয়োজন পড়ে।
ব্যবহার: বড় প্রোগ্রাম তৈরির কাজে। জটিল গাণিতিক সফটওয়্যার তৈরির কাজে। বিভিন্ন ধরনের অটোমেটিক প্রসেস কন্ট্রোলের কাজে।
জনপ্রিয় কয়েকটি হাই-লেভেল ল্যাঙ্গুয়েজের পরিচিতি:
সি (C):
সি++ (C++):
জাভা (Java):
জাভাস্ক্রিপ্ট (JavaScript):
ওরাকল (ORACLE):
ফোরট্রান (FORTRAN):
পাইথন (Python):
চতুর্থ প্রজন্মের ভাষা (Fourth Generation Language – 4GL) : অতি উচ্চতরের ভাষা (Very High Level Language) :
কম্পিউটারে সহজে ব্যবহারের জন্য বিশেষ ভাষাকে চতুর্থ প্রজন্মের ভাষা (4GL) বা অতি উচ্চতরের ভাষাও বলা হয়। এ ভাষায় একটি নির্দেশ দিয়ে খুব সহজে অনেক কাজ করা যায়। এ ভাষায় ইংরেজি ভাষার মতো নির্দেশ দিয়ে কম্পিউটার ব্যবহারকারী ডেটাবেজের সাথে সংযোগ স্থাপন এবং ডেটা আদান-প্রদান করতে পারেন। ডেটাবেজ ম্যানেজমেন্টের সাথে সংশ্লিষ্ট কুয়েরি (Query) এবং রিপোর্ট জেনারেটর ও ডেটা সঞ্চালনের জন্য ব্যবহৃত ভাষাসমূহ চতুর্থ প্রজন্মের ভাষা হিসেবে বিবেচনা করা হয়। যেমন: Structured Query Language (SQL), Oracle ইত্যাদি।
বৈশিষ্ট্য/সুবিধা: এটি অনেকটা ন্যাচারাল বা স্বাভাবিক ভাষার মতো। ডেটা সংরক্ষণ, কুয়েরি, রিপোর্ট তৈরি ইত্যাদি কাজ খুব সহজেই করা যায়। উচ্চতর ভাষার তুলনায় 4GL খুবই সহজ বোধগম্য ও ব্যবহারযোগ্য।
অসুবিধা: অনেক বেশি মোমোরির প্রয়োজন হয়। প্রোগ্রামের আকার অধিকাংশ সময়ে বড় হয়।
পঞ্চম প্রজন্মের ভাষা (Fifth Generation Language – 5GL) : স্বাভাবিক বা ন্যাচারাল ভাষা (Natural Language) :
ফিফথ জেনারেশন প্রোগ্রামিং ল্যাঙ্গুয়েজ হলো অ্যালগরিদম ব্যবহার না করে সহজভাবে সমস্যা সমাধান করার ল্যাঙ্গুয়েজ। এ ভাষাকে এমনভাবে ডিজাইন করা হয়েছে, যাতে আগের প্রোগ্রামিং ল্যাঙ্গুয়েজের মতো জটিল কোড লিখতে পারে এমন প্রোগ্রামার ছাড়াই কম্পিউটার দিয়ে সমস্যা সমাধান করা যায়। ফলে প্রোগ্রামারদেরকে কিভাবে একটি রুটিন অথবা অ্যালগরিদম প্রয়োগ করতে হবে, তা চিন্তা না করে কী সমস্যা সমাধান করতে হবে, কী শর্ত পূরণ করতে হবে, তা নিয়ে ভাবলেই চলে। ফিফথ জেনারেশন ল্যাঙ্গুয়েজ মূলত কৃত্রিম বুদ্ধিমত্তা গবেষণায় ব্যবহৃত হয়। Prolog, Mercury হলো ফিফথ জেনারেশন ল্যাঙ্গুয়েজের