Erlang এ List এবং Tuple এর মৌলিক ধারণা
Erlang একটি ফাংশনাল প্রোগ্রামিং ভাষা যেখানে List এবং Tuple হল দুটি গুরুত্বপূর্ণ data structure যা ডেটা সংরক্ষণ এবং পরিচালনার জন্য ব্যবহৃত হয়। Erlang এ এই দুটি ডেটা স্ট্রাকচার আলাদা উদ্দেশ্যে ব্যবহৃত হয় এবং তাদের নিজস্ব সুবিধা এবং বৈশিষ্ট্য রয়েছে। এখানে List এবং Tuple এর মৌলিক ধারণা আলোচনা করা হলো।
1. List
Erlang-এ List একটি অর্ডার করা ডেটা সেকোয়েন্স যা একাধিক উপাদান ধারণ করতে পারে। List গুলি একাধিক আইটেম ধারণ করে এবং প্রতিটি উপাদান কমা (,) দ্বারা পৃথক করা হয়। একটি লিস্টের প্রথম উপাদানটি Head এবং বাকি উপাদানগুলি Tail নামে পরিচিত।
List এর সিনট্যাক্স:
[Element1, Element2, ..., ElementN]- Head: প্রথম উপাদান, যেটি লিস্টের প্রধান উপাদান হিসেবে কাজ করে।
- Tail: বাকি উপাদানগুলি যা
Headএর পর রয়েছে। Tail নিজেই একটি লিস্ট হতে পারে।
List এর উদাহরণ:
List1 = [1, 2, 3, 4, 5].
List2 = [a, b, c].এখানে:
List1একটি লিস্ট যা ৫টি সংখ্যা ধারণ করে।List2একটি লিস্ট যা তিনটি অক্ষর ধারণ করে।
লিস্টের বৈশিষ্ট্য:
- Ordered: লিস্টের মধ্যে উপাদানগুলি একটি নির্দিষ্ট অর্ডারে থাকে।
Heterogeneous: লিস্টের উপাদানগুলি বিভিন্ন ধরনের হতে পারে। যেমন, একটি লিস্টে সংখ্যা এবং স্ট্রিং একসাথে থাকতে পারে।
List3 = [1, "Hello", {a, b}, 3.14].- Linked structure: Erlang এ লিস্টগুলি linked structure হিসেবে কাজ করে, যেখানে প্রতিটি উপাদান তার পরবর্তী উপাদানের সাথে সংযুক্ত থাকে।
লিস্ট অপারেশন:
Head এবং Tail বের করা:
[Head | Tail] = [1, 2, 3].এখানে
Head = 1এবংTail = [2, 3]হবে।Concatenation:
List3 = List1 ++ List2. %% List3 হবে [1, 2, 3, 4, 5, a, b, c]Length:
Length = length([1, 2, 3]). %% আউটপুট হবে 3
2. Tuple
Erlang-এ Tuple একটি স্ট্যাটিক ডেটা স্ট্রাকচার যা একটি নির্দিষ্ট সংখ্যক উপাদান ধারণ করে। Tuple একটি নির্দিষ্ট আকারের (fixed size) ডেটা স্ট্রাকচার, যেখানে প্রতিটি উপাদান একটি কমা দিয়ে পৃথক করা হয়। Tuple সাধারণত {} চিহ্নের মধ্যে রাখা হয়।
Tuple এর সিনট্যাক্স:
{Element1, Element2, ..., ElementN}Tuple এর উদাহরণ:
Tuple1 = {1, 2, 3}.
Tuple2 = {name, "Alice", 30}.এখানে:
Tuple1একটি Tuple যা ৩টি উপাদান ধারণ করে।Tuple2একটি Tuple যা তিনটি ভিন্ন ধরনের উপাদান ধারণ করে (একটি অ্যাট্রিবিউট, একটি স্ট্রিং এবং একটি সংখ্যা)।
Tuple এর বৈশিষ্ট্য:
- Fixed Size: Tuple এর আকার নির্দিষ্ট এবং একটি Tuple এর মধ্যে সর্বদা একটি নির্দিষ্ট সংখ্যক উপাদান থাকে।
- Homogeneous (অথবা Heterogeneous): Tuple এর উপাদানগুলি এক বা একাধিক ধরনের হতে পারে, যেমন সংখ্যাগুলি অথবা স্ট্রিং এবং অন্যান্য ডেটা টাইপের মিশ্রণ।
- Indexed by Position: Tuple এর উপাদানগুলিকে তাদের পজিশন দ্বারা অ্যাক্সেস করা হয়, যেমন প্রথম উপাদানটি
element(Tuple, 1)দ্বারা অ্যাক্সেস করা যাবে।
Tuple অপারেশন:
Accessing Elements:
Tuple এর প্রথম উপাদান অ্যাক্সেস করতে:Element1 = element(1, {1, 2, 3}). %% আউটপুট হবে 1Concatenation:
Erlang এ Tuple গুলি সরাসরি concatenate করা যায় না, তবে আপনি তাদের ম্যানুয়ালি একত্রিত করতে পারেন:Tuple3 = {1, 2} ++ {3, 4}. %% সঠিক নয়, কিন্তু List এর মতো না থাকলে ম্যানুয়ালি করতে হবেLength:
Tuple এর আকার (number of elements) বের করতে:Length = tuple_size({1, 2, 3}). %% আউটপুট হবে 3
List এবং Tuple এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | List | Tuple |
|---|---|---|
| আকার | আকার পরিবর্তনযোগ্য, মানে লিস্টের আকার পরিবর্তন করা যায়। | আকার নির্দিষ্ট, একবার নির্ধারিত হলে আকার পরিবর্তন করা যায় না। |
| ডেটার ধরন | লিস্টে একাধিক ডেটা টাইপ থাকতে পারে। | Tuple-এ একাধিক ডেটা টাইপ থাকতে পারে, তবে আকার একেবারে ফিক্সড। |
| পাঠযোগ্যতা | লিস্টগুলো সাধারণত লিনিয়ার এবং একের পর এক উপাদান থাকে। | Tuple এর উপাদানগুলো নির্দিষ্ট অর্ডারে থাকে, তবে এগুলি ফিক্সড। |
| অপারেশন | লিস্ট অপারেশন দ্রুত এবং ছোট, তবে কিছু অপারেশন ধীর হতে পারে (যেমন, অ্যাক্সেস)। | Tuple অপারেশন দ্রুত এবং কার্যকরী, বিশেষ করে যখন নির্দিষ্ট আকারের ডেটা দরকার। |
| অ্যাক্সেসিং টাইম | লিস্টের অ্যাক্সেস স্লো (ওভারহেড বেশি)। | Tuple এর অ্যাক্সেস দ্রুত। |
উপসংহার
- List হল একটি ডাইনামিক সিকোয়েন্স যা একাধিক উপাদান ধারণ করতে সক্ষম এবং তাদের মধ্যে অ্যাক্সেস করতে কিছুটা সময় নেয়, তবে এটি লিনিয়ার এবং হেটেরোজেনিয়াস হতে পারে।
- Tuple একটি স্ট্যাটিক ডেটা স্ট্রাকচার যা নির্দিষ্ট আকারের এবং দ্রুত অ্যাক্সেসযোগ্য, তবে একবার তৈরি হলে এটি পরিবর্তন করা যায় না।
Erlang-এ List এবং Tuple দুটি বিভিন্ন পরিস্থিতিতে ব্যবহৃত হয়, যেখানে List সাধারণত লিনিয়ার ডেটা সংগ্রহে ব্যবহৃত হয় এবং Tuple প্রাথমিকভাবে একটি নির্দিষ্ট আকারের, দ্রুত অ্যাক্সেসযোগ্য ডেটার জন্য ব্যবহৃত হয়।
Read more