𝗗𝗲𝗰𝗹𝗮𝗿𝗮𝘁𝗶𝘃𝗲. 𝗜𝗺𝗽𝗲𝗿𝗮𝘁𝗶𝘃𝗲. 𝗜𝗻𝘁𝗲𝗻𝘁𝗶𝗼𝗻𝗮𝗹.
ডেভেলপাররা সব সময় প্রোগ্রামিং প্যারাডাইম নিয়ে কথা বলেন।
আমরা ইমপারেটিভ প্রোগ্রামিং ব্যবহার করি। আমরা ডিক্লেয়ারেটিভ প্রোগ্রামিং ব্যবহার করি। আমরা ফাংশনাল বা অবজেক্ট-ওরিয়েন্টেড স্টাইল ব্যবহার করি।
কিন্তু আমরা একটি স্তর মিস করছি।
ভবিষ্যৎ হলো ইনটেনশনাল (intentional)।
ইমপারেটিভ প্রোগ্রামিং কম্পিউটারকে ঠিক কী করতে হবে তা বলে দেয়। আপনি ধাপে ধাপে নির্দেশনা প্রদান করেন। আপনি প্রক্রিয়ার (process) ওপর মনোযোগ দেন। আপনি সিকোয়েন্স বা ক্রম নিয়ন্ত্রণ করেন। এটি আপনাকে নির্ভুলতা দেয়, কিন্তু প্রতিটি ধাপের ভার আপনাকে বহন করতে হয়।
ডিক্লেয়ারেটিভ প্রোগ্রামিং এটি পরিবর্তন করেছে। আপনি কী চান তা বর্ণনা করেন, কীভাবে করবেন তা নয়। SQL একটি নিখুঁত উদাহরণ। আপনি ডেটা চান। আপনি লুপ (loops) লেখেন না বা মেমরি ম্যানেজ করেন না। সিস্টেম নিজেই কাজটি সম্পন্ন করে। এটি উৎপাদনশীলতা বাড়ায়।
তবুও, এমনকি ডিক্লেয়ারেটিভ সিস্টেমগুলোও প্রায়শই আপনাকে ইমপ্লিমেন্টেশন (implementation) নিয়ে ভাবতে বাধ্য করে।
রেসপন্সিভ ওয়েব ডিজাইনের দিকে তাকান। আপনি কলাম এবং ব্রেকপয়েন্টের জন্য কোড লেখেন। আপনি এখনও মেকানিক্স বা কৌশল বর্ণনা করছেন। আপনি বর্ণনা করছেন একটি লেআউট কীভাবে কাজ করা উচিত।
সিস্টেম জানে আপনি কী করছেন, কিন্তু কেন করছেন তা জানে না।
ইনটেনশনাল প্রোগ্রামিং লক্ষ্য বা উদ্দেশ্য বদলে দেয়।
CSS বর্ণনা করার পরিবর্তে, আপনি কাঙ্ক্ষিত আচরণ (behavior) বর্ণনা করেন। আপনি সিস্টেমকে খাপ খাইয়ে নিতে (adapt) বলেন। আপনি সিস্টেমকে প্রেক্ষাপট (context) অনুযায়ী পুনর্গঠিত করতে বলেন। মনোযোগ মেকানিজম থেকে সরে এসে উদ্দেশ্যের দিকে চলে যায়।
সফটওয়্যার এই দিকেই এগিয়ে যাচ্ছে।
- SQL: আপনি ডেটা বর্ণনা করেন।
- Infrastructure as Code: আপনি রিসোর্স বর্ণনা করেন।
- Nectarine: আপনি schemas এবং APIs বর্ণনা করেন।
সিস্টেম বাকিটুকু সামলে নেয়।
সেরা সফটওয়্যার লাইব্রেরিগুলো কেবল ফিচার প্রদান করার চেয়েও বেশি কিছু করে। তারা একটি ভাষা প্রদান করে। তারা আপনাকে শেখায় কীভাবে চিন্তা করতে হয়। প্রতিটি API এবং প্রতিটি নাম একটি দর্শন তৈরিতে সাহায্য করে।
ইমপ্লিমেন্টেশন গুরুত্বপূর্ণ, কিন্তু এটি প্রতিটি স্তরে ছড়িয়ে পড়া উচিত নয়। ডেভেলপাররা মেকানিক্স প্রকাশ করতে চান না। তারা তাদের উদ্দেশ্য (intent) প্রকাশ করতে চান। তারা জানেন তারা কী অর্জন করতে চান।
ভালো অ্যাবস্ট্রাকশন (abstraction) জটিলতাকে লুকিয়ে রাখে। দুর্দান্ত অ্যাবস্ট্রাকশন উদ্দেশ্যকে স্পষ্ট করে তোলে।
ইমপারেটিভ এবং ডিক্লেয়ারেটিভ স্টাইলগুলো থেকে যাবে। কিন্তু আমরা এমন সিস্টেমের দিকে এগোচ্ছি যা লক্ষ্য বুঝতে পারে। আমাদের এমন সিস্টেম প্রয়োজন যা উদ্দেশ্যকে ফলাফলে রূপান্তরিত করে।
কীভাবে কাজ করে তার বদলে আপনি কী বোঝাতে চাচ্ছেন তার ওপর মনোযোগ দিন। মেকানিক্সের চেয়ে অর্থ বা উদ্দেশ্য বেশি গুরুত্বপূর্ণ।
Source: https://dev.to/stinklewinks/declarative-imperative-intentional-4j60