এই পোস্টে আমরা প্রসিডিউরাল এবং নন-প্রসিডিউরাল ল্যাঙ্গুয়েজের পার্থক্য বুঝব।
প্রসিডিউরাল ল্যাঙ্গুয়েজ (Procedural language)
- প্রোগ্রাম কোড ইনস্ট্রাকশনের একটি সিকোয়েন্স হিসেবে লেখা হয়।
- ইউজার স্পেসিফাই করে কী করতে হবে এবং কীভাবে করতে হবে, অর্থাৎ এর ধাপে ধাপে প্রসিডিউর।
- এটিকে কমান্ড-ড্রিভেন ল্যাঙ্গুয়েজ বলা হয়।
- এটি মেশিনের স্টেট (state) এর সাথে কাজ করে।
- অন্য প্যারাডাইমের তুলনায় এর সেম্যান্টিক্স কঠিন।
- প্রোগ্রামের আকার বড় হয়।
- এই স্টেপগুলো সিকোয়েনশিয়াল মেথডে এক্সিকিউট হয়।
- এটি সীমিত ডেটা টাইপ এবং কিছু অনুমোদিত ভ্যালু রিটার্ন করে।
- সমগ্র ইফিশিয়েন্সি বেশি।
- ইনস্ট্রাকশনগুলো একটি নির্দিষ্ট/সেট সমস্যা সমাধানের জন্য লেখা হয়।
- উদাহরণ: BASIC, FORTRAN, ALGOL, C, COBOL, Pascal।
- যেখানে সময় একটি ক্রিটিক্যাল কনস্ট্রেইন্ট সেখানে এটি উপযোগী নয়।
- প্রসিডিউরাল ল্যাঙ্গুয়েজে কাজ করার সময় ইটেরেটিভ লুপ এবং রিকার্সিভ কল ব্যবহার করা হয়।
নন-প্রসিডিউরাল ল্যাঙ্গুয়েজ (Non-procedural Language)
- ইউজার স্পেসিফাই করে কী করতে হবে কিন্তু কীভাবে করতে হবে সেটি না বলে।
- এটিকে অ্যাপ্লিকেটিভ (applicative) বা ফাংশনাল (functional) ল্যাঙ্গুয়েজ বলা হয়।
- এটি অন্য ফাংশনের ওপর ভিত্তি করে ফাংশন ডেভেলপ করার মাধ্যমে জটিল ফাংশনালিটি কনস্ট্রাক্ট করার সাথে জড়িত।
- এটি ম্যাথেম্যাটিক্যাল ফাংশনর সাহায্যে কাজ করে।
- প্রসিডিউরাল ল্যাঙ্গুয়েজের তুলনায় এর সেম্যান্টিক্স সহজ।
- উদাহরণ: LISP, SQL, PROLOG।
- এটিকে ফাংশন-ড্রিভেন ল্যাঙ্গুয়েজ বলা হয়।
- এতে যেকোনো ডেটা টাইপ বা ভ্যালু রিটার্ন করার ক্ষমতা আছে।
- নন-প্রসিডিউরাল ল্যাঙ্গুয়েজের সমগ্র ইফিশিয়েন্সি প্রসিডিউরাল ল্যাঙ্গুয়েজের তুলনায় কম।
- প্রোগ্রামের আকার ছোট।
- যেখানে সময় একটি ক্রিটিক্যাল ফ্যাক্টর সেখানে এটি ভালো উপযোগী।
- নন-প্রসিডিউরাল ল্যাঙ্গুয়েজে কাজ করার সময় রিকার্সিভ কল ব্যবহার করা হয়।