Boolean Expressions এবং Short-Circuit Evaluation
ক্লোজারে (Clojure) বুলিয়ান এক্সপ্রেশন এবং শর্ট-সার্কিট ইভ্যালুয়েশন (Short-Circuit Evaluation) প্রোগ্রামিংয়ের গুরুত্বপূর্ণ অংশ। বুলিয়ান এক্সপ্রেশন হল এমন এক্সপ্রেশন যা true বা false হিসেবে মূল্যায়ন করে। শর্ট-সার্কিট ইভ্যালুয়েশন একটি অপ্টিমাইজেশন কৌশল, যেখানে নির্দিষ্ট শর্ত মিট হলে বাকি অংশ মূল্যায়ন না করেই এক্সপ্রেশন শেষ হয়।
Boolean Expressions
ক্লোজারে, বুলিয়ান এক্সপ্রেশন সাধারণত true বা false ভ্যালু প্রদান করে এবং সাধারণ লজিক্যাল অপারেটর ব্যবহার করে তৈরি করা হয়, যেমন and, or, এবং not। ক্লোজারে nil এবং false ছাড়া সবকিছু সত্যি (truthy) হিসেবে বিবেচিত হয়।
উদাহরণ: বুলিয়ান এক্সপ্রেশন
(def age 20)
(def adult? (>= age 18)) ; age যদি 18 বা তার বেশি হয়, তাহলে adult? হবে trueএখানে >= অপারেটর ব্যবহার করে adult? ভ্যারিয়েবলের মান নির্ধারণ করা হয়েছে। age যদি ১৮ বা তার বেশি হয়, তাহলে adult? এর মান হবে true অন্যথায় false।
Short-Circuit Evaluation
শর্ট-সার্কিট ইভ্যালুয়েশন এমন একটি কৌশল যেখানে লজিক্যাল অপারেটরের প্রথম অংশেই এক্সপ্রেশনের ফলাফল নির্ধারণ করা গেলে, পরবর্তী অংশগুলিকে আর মূল্যায়ন করা হয় না। ক্লোজারে and এবং or অপারেটর এই শর্ট-সার্কিট ইভ্যালুয়েশন প্রক্রিয়া অনুসরণ করে।
and অপারেটর এবং Short-Circuit Evaluation
and অপারেটর তখনই true রিটার্ন করে যখন সব এক্সপ্রেশন সত্য হয়। প্রথম কোনো এক্সপ্রেশন false হলে, বাকি অংশগুলি মূল্যায়ন করা হয় না, কারণ একবার false পাওয়া গেলে ফলাফলও false হবে।
(defn check-age-and-status [age status]
(and (>= age 18) (= status "active")))
(check-age-and-status 20 "active") ; আউটপুট: true
(check-age-and-status 15 "active") ; আউটপুট: false, কারণ প্রথম শর্তই falseএখানে, (>= age 18) শর্তটি false হলে (= status "active") পরীক্ষা করা হয় না, যা শর্ট-সার্কিট ইভ্যালুয়েশনের উদাহরণ।
or অপারেটর এবং Short-Circuit Evaluation
or অপারেটর তখনই true রিটার্ন করে যখন অন্তত একটি এক্সপ্রেশন সত্য হয়। প্রথম কোনো এক্সপ্রেশন true হলে, বাকি অংশগুলি মূল্যায়ন করা হয় না, কারণ প্রথম true ভ্যালু পেলেই ফলাফলও true হবে।
(defn check-permission [role permission]
(or (= role "admin") (= permission "granted")))
(check-permission "admin" "denied") ; আউটপুট: true, কারণ প্রথম শর্ত true
(check-permission "user" "granted") ; আউটপুট: true, কারণ দ্বিতীয় শর্ত true
(check-permission "user" "denied") ; আউটপুট: falseএখানে, role যদি "admin" হয়, তাহলে পরবর্তী শর্ত (= permission "granted") মূল্যায়ন করার প্রয়োজন হয় না, কারণ or অপারেটর প্রথম শর্ত true পেলেই true রিটার্ন করে।
not অপারেটর
not অপারেটর একটি একক বুলিয়ান এক্সপ্রেশনকে উল্টো মান প্রদান করে। এটি true কে false এবং false কে true করে।
(def logged-in false)
(def guest? (not logged-in)) ; আউটপুট: trueএখানে logged-in ভ্যারিয়েবলের মান false হওয়ায় guest? হবে true।
শর্ট-সার্কিট ইভ্যালুয়েশনের সুবিধাসমূহ
- পারফরম্যান্স অপ্টিমাইজেশন: অপ্রয়োজনীয় এক্সপ্রেশন মূল্যায়ন না করার কারণে কোডের পারফরম্যান্স উন্নত হয়।
- নিরাপদ অপারেশন: যখন ডিভিশন বা নাল চেকের মতো শর্ত থাকে, শর্ট-সার্কিট ইভ্যালুয়েশন ব্যবহার করে এড়ানো যায়।
- সহজ শর্ত: কমপ্লেক্স শর্তের মূল্যায়ন শর্ট-সার্কিটের মাধ্যমে সহজ হয়।
সারসংক্ষেপ
| অপারেটর | কাজ | শর্ট-সার্কিটের ধরন |
|---|---|---|
and | সব এক্সপ্রেশন সত্য হলে true | প্রথম false পেলে বাকি অংশ ইভ্যালুয়েট হয় না |
or | কোনো একটি এক্সপ্রেশন সত্য হলে true | প্রথম true পেলে বাকি অংশ ইভ্যালুয়েট হয় না |
not | এক্সপ্রেশন উল্টায় | শুধু একক এক্সপ্রেশনে ব্যবহৃত হয় |
ক্লোজারে বুলিয়ান এক্সপ্রেশন এবং শর্ট-সার্কিট ইভ্যালুয়েশন কার্যকর শর্ত নির্ধারণ ও অপ্টিমাইজেশনের জন্য গুরুত্বপূর্ণ এবং প্রোগ্রামিংকে আরও কার্যকর ও সুরক্ষিত করে।
Read more