LISP একটি প্রোগ্রামিং ভাষা যা Symbols এবং Keywords ব্যবহার করে কোডের কার্যপ্রণালী এবং মান পরিচালনা করতে। এই দুটি ধারণা LISP এর ডাটা মডেল এবং কোড স্ট্রাকচারের জন্য গুরুত্বপূর্ণ, এবং এগুলি কোডে বিভিন্ন ভূমিকা পালন করে। নিচে Symbols এবং Keywords এর ব্যবহারের বিস্তারিত আলোচনা করা হলো।
১. Symbols (সীম্বল)
Symbols LISP এর একটি মৌলিক ডাটা টাইপ, যা সাধারণত ভেরিয়েবল নাম, ফাংশন নাম, অথবা কনস্ট্যান্ট হিসেবে ব্যবহৃত হয়। LISP এর মধ্যে Symbols কে ডাটা হিসেবে রাখা যায়, এবং এগুলি সাধারণত কোনো বিশেষ মান বা অবজেক্টের প্রতিনিধিত্ব করে।
Symbols এর গঠন:
একটি Symbol হল এমন একটি নাম যা একটি বিশেষ মান বা কার্যকলাপের প্রতিনিধিত্ব করে। সাধারণত, Symbols নামের মধ্যে কোনো স্পেস, সংখ্যার শুরু, অথবা বিশেষ অক্ষর থাকেনা (যেমন: +, -, * প্রভৃতি)। উদাহরণস্বরূপ, x, y, counter, my-function—এগুলো সবই Symbols।
Symbols এর ব্যবহার:
ভেরিয়েবল ডিফাইন করা:
(setq x 10) ; x ভেরিয়েবলে ১০ আসাইন করা হচ্ছে (print x) ; x এর মান প্রিন্ট করা হচ্ছেএখানে,
xএকটি Symbol, যার মান ১০ অ্যাসাইন করা হয়েছে।ফাংশন নাম হিসাবে ব্যবহার:
(defun square (x) ; square একটি ফাংশন নাম (* x x))এখানে,
squareএকটি Symbol যা ফাংশন হিসেবে ব্যবহার হচ্ছে। ফাংশনের নাম হিসাবে এটি একটি সংজ্ঞায়িত Symbol।Symbol কে একটি মানের প্রতিনিধিত্ব হিসেবে ব্যবহার:
(setq symbol-value 'my-symbol)এখানে,
'my-symbolএকটি Symbol হিসাবে ব্যবহৃত হয়েছে এবং এটিকে একটি ভ্যালু হিসেবে অ্যাসাইন করা হয়েছে।
Symbols এর বৈশিষ্ট্য:
- Unique Identity: প্রতিটি Symbol এর একটি ইউনিক পরিচয় থাকে, অর্থাৎ, দুটি আলাদা Symbol একই নাম থাকলেও তাদের পরিচয় আলাদা হবে।
- Evaluation: Symbol সাধারণত তার মানের জন্য রেফারেন্স প্রদান করে। উদাহরণস্বরূপ,
(setq x 5)এর পরে,xহবে একটি Symbol এবং তার মান হবে ৫।
২. Keywords (কিওয়ার্ডস)
Keywords LISP এ একটি বিশেষ ধরনের Symbol যা সাধারণত : (colon) চিহ্ন দিয়ে শুরু হয়। Keywords সাধারণত কোডে বিশেষ মান বা ট্যাগ হিসেবে ব্যবহৃত হয় এবং এগুলির মান অপরিবর্তনীয় (immutable)। Keywords প্রধানত ডাটা স্ট্রাকচারের অংশ হিসেবে ব্যবহার করা হয় এবং সেগুলির মধ্যে সাধারণত কোনো ভ্যালু থাকে না।
Keywords এর গঠন:
Keywords সবসময় : দিয়ে শুরু হয় এবং তারা শুধুমাত্র একটি ইউনিক চিহ্ন হিসেবে কাজ করে। যেমন: :foo, :bar, :name, :age—এগুলো সবই Keywords।
Keywords এর ব্যবহার:
ডাটা স্ট্রাকচারে ট্যাগ হিসেবে ব্যবহার:
Keywords সাধারণত সিম্বলিক ট্যাগ হিসাবে ব্যবহার করা হয়। উদাহরণস্বরূপ, একটি অ্যাসোসিয়েটিভ অ্যারে বা হ্যাশ টেবিলের মধ্যে ট্যাগ হিসেবে ব্যবহার:(setq my-data '(:name "John" :age 30 :city "New York"))এখানে,
:name,:age,:cityসব Keywords, এবং এগুলির পাশে ডাটা মান দেওয়া আছে।ফাংশন প্যারামিটার হিসেবে:
Keywords ফাংশনের প্যারামিটার বা অপশন হিসেবে ব্যবহার হতে পারে। উদাহরণস্বরূপ:(defun greet (name &key greeting) (print (concatenate 'string greeting " " name))) (greet "Alice" :greeting "Hello")এখানে,
:greetingএকটি Keyword হিসেবে ব্যবহৃত হয়েছে।- কিওয়ার্ড হিসাবে মান সেটিং:
Keywords এর মধ্যে কোনো মান থাকে না। তারা শুধুমাত্র ট্যাগ হিসেবে ব্যবহৃত হয়, কিন্তু যখন ডাটা স্ট্রাকচারের মধ্যে Keywords ব্যবহার করা হয়, তখন তাদের পাশে সংশ্লিষ্ট মান থাকে।
Keywords এর বৈশিষ্ট্য:
- Immutable: Keywords পরিবর্তন করা যায় না। তাদের মান অপরিবর্তনীয় (constant)।
- Unique: Keywords এর প্রতিটি ইনস্ট্যান্স ইউনিক এবং তারা কোডের মধ্যে বিশেষ উদ্দেশ্য প্রদান করে।
- Self-Evaluating: Keywords সাধারণত নিজেই তাদের মান নির্ধারণ করে এবং তাদের ভ্যালুতে কোনো পরিবর্তন সম্ভব নয়।
৩. Symbols এবং Keywords এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Symbols | Keywords |
|---|---|---|
| নাম | সাধারণত কোনো নাম, যেমন: x, counter, foo | সবসময় : দিয়ে শুরু হয়, যেমন: :name, :age |
| মান | Symbols এর মান থাকতে পারে এবং তারা পরিবর্তনশীল (mutable) | Keywords এর মান থাকে না, এগুলি অপরিবর্তনীয় (immutable) |
| ব্যবহার | ভেরিয়েবল নাম, ফাংশন নাম, কনস্ট্যান্ট হিসেবে ব্যবহৃত হয় | ট্যাগ হিসেবে, ডাটা স্ট্রাকচারে এবং অপশন প্যারামিটার হিসেবে ব্যবহৃত হয় |
| ইউনিক আইডেন্টিটি | Symbols ইউনিক কিন্তু মান পরিবর্তনযোগ্য | Keywords সবসময় ইউনিক এবং অপরিবর্তনীয় |
৪. Symbols এবং Keywords এর ব্যবহার সংক্ষেপে
- Symbols: LISP কোডে পরিবর্তনযোগ্য মানের প্রতিনিধিত্ব করে, যেমন ভেরিয়েবল নাম বা ফাংশন নাম। এগুলি সাধারণত প্রোগ্রামের কার্যপ্রণালী নির্ধারণ করে এবং তাদের মান পরিবর্তিত হতে পারে।
- Keywords: ডাটা স্ট্রাকচারে ট্যাগ হিসেবে ব্যবহার হয় এবং এগুলির কোনো পরিবর্তনশীল মান থাকে না। Keywords প্রধানত immutable থাকে এবং এগুলি সাধারণত ডাটা স্ট্রাকচারগুলির অংশ হিসেবে ব্যবহৃত হয়।
সারসংক্ষেপ
Symbols এবং Keywords LISP প্রোগ্রামিং ভাষার গুরুত্বপূর্ণ ডাটা টাইপ। Symbols সাধারণত পরিবর্তনশীল মান এবং ফাংশন/ভেরিয়েবল নাম হিসেবে ব্যবহৃত হয়, যখন Keywords ডাটা স্ট্রাকচার এবং অপশন প্যারামিটারগুলির জন্য ট্যাগ হিসেবে ব্যবহৃত হয় এবং সেগুলি অপরিবর্তনীয় (immutable)। LISP কোডে এই দুটি ধারণার সঠিক ব্যবহার কোডের গঠন এবং কার্যকারিতা সহজ এবং পরিষ্কার রাখে।
Read more