ভেরিয়েবল এবং Immutable Data

ডেটা টাইপস এবং ভেরিয়েবলস (Data Types and Variables in Erlang) - এরল্যাং (Erlang) - Computer Programming

325

Erlang এ ভেরিয়েবল এবং Immutable Data

Erlang একটি ফাংশনাল প্রোগ্রামিং ভাষা, যেখানে ভেরিয়েবল এবং immutable data একটি গুরুত্বপূর্ণ ভূমিকা পালন করে। এই দুটি ধারণা Erlang-এ প্রোগ্রামিংয়ের মূল ভিত্তি তৈরি করে এবং এর কার্যকারিতা এবং নির্ভরযোগ্যতা বাড়ায়। এখানে ভেরিয়েবল এবং immutable data সম্পর্কে বিস্তারিত আলোচনা করা হলো।


1. Erlang-এ ভেরিয়েবল (Variables)

Erlang-এ ভেরিয়েবল অন্য কোনো প্রোগ্রামিং ভাষার মতোই ব্যবহৃত হয়, তবে এর সাথে কিছু গুরুত্বপূর্ণ পার্থক্য রয়েছে। এখানে ভেরিয়েবল বলতে এমন একটি সেম্যাবল (symbol) বোঝায় যা কোনো একটি মান ধারণ করে এবং একবার একটি মান নির্ধারণ হলে তা পরিবর্তন করা সম্ভব নয়।

1.1. ভেরিয়েবল ডিক্লেয়ারেশন (Variable Declaration)

  • Erlang-এ ভেরিয়েবলগুলি সাধারণত বড় অক্ষরে (uppercase) শুরু হয়। ভেরিয়েবল নামের প্রথম অক্ষর যদি বড় হয় তবে সেটি ভেরিয়েবল হিসেবে পরিচিত হয়, যেমন X, Y, Total ইত্যাদি।
  • ভেরিয়েবল একবার মান নির্ধারণ হলে, তা পরবর্তীতে পরিবর্তন করা যায় না। এর অর্থ, Erlang-এ ভেরিয়েবল ইমিউটেবল (immutable) থাকে।

উদাহরণ:

X = 5.
Y = X + 10.

এখানে:

  • X = 5 ভেরিয়েবল X কে ৫ দিয়ে নির্ধারণ করেছে।
  • এরপর Y = X + 10 ভেরিয়েবল Y কে X (যার মান ৫) এর সাথে ১০ যোগ করে নির্ধারণ করেছে। অর্থাৎ, Y = 15

1.2. ভেরিয়েবল পুনঃমূল্যায়ন (Variable Re-assignment)

  • Erlang-এ একবার একটি ভেরিয়েবলে মান দেওয়া হলে সেটি আর পরিবর্তন করা সম্ভব নয়। যদি আপনি একই ভেরিয়েবলকে পুনরায় মান নির্ধারণ করতে চান, তাহলে নতুন একটি ভেরিয়েবল তৈরি করতে হবে।

উদাহরণ:

X = 5,
X = 10.  %% এটি একটি ত্রুটি তৈরি করবে, কারণ Erlang এ ভেরিয়েবল পরিবর্তনযোগ্য নয়।

এই ক্ষেত্রে, উপরের কোডটি ত্রুটি তৈরি করবে কারণ Erlang-এ একবার মান নির্ধারণের পর, তা পরিবর্তন করা যায় না।


2. Immutable Data (অপরিবর্তনীয় ডেটা)

Erlang একটি ফাংশনাল প্রোগ্রামিং ভাষা, এবং এর একটি মৌলিক ধারণা হলো immutable data। এর মানে হল যে একবার ডেটা তৈরি হলে সেটি আর পরিবর্তিত হতে পারে না। অর্থাৎ, কোনো ডেটা বা ভেরিয়েবল একবার নির্ধারণ হলে সেটি পুনরায় পরিবর্তন করা যাবে না, বরং একটি নতুন কপি তৈরি করতে হবে।

2.1. Immutable Data এর সুবিধা

  • প্রোগ্রামিং ত্রুটি কমানো: ইমিউটেবল ডেটা ব্যবহারের মাধ্যমে ডেটার পরিবর্তন বা পদ্ধতিগত ত্রুটি থেকে রক্ষা পাওয়া যায়, কারণ একবার ডেটা তৈরি হলে সেটি পরিবর্তন করা সম্ভব নয়।
  • কনকারেন্সি এবং থ্রেড সেফটি: যখন ডেটা ইমিউটেবল থাকে, তখন একাধিক প্রসেস বা থ্রেড একই ডেটা ব্যবহার করলেও ডেটার মধ্যে কোনো রকমের অবাঞ্ছিত পরিবর্তন ঘটে না। ফলে, কনকারেন্ট সিস্টেমে নিরাপত্তা এবং পারফরম্যান্স নিশ্চিত করা যায়।
  • ফল্ট টলারেন্স (Fault Tolerance): যখন ডেটা অপরিবর্তনীয় থাকে, তখন প্রোগ্রাম সহজে ফেইলও করতে পারে না। কারণ ডেটার কোনো অংশ কোনোভাবে পরিবর্তিত হতে পারে না, তাই ত্রুটি ছাড়া কাজ করা যায়।

2.2. Immutable Data এর উদাহরণ

Erlang-এ একটি লিস্ট, টিউপল বা ম্যাপ এর মতো ডেটা একবার নির্ধারণের পর পরিবর্তিত করা যাবে না। যদি একটি নতুন মান প্রয়োজন হয়, তবে সেই ডেটার একটি নতুন কপি তৈরি করতে হবে।

লিস্ট (List) উদাহরণ:

List1 = [1, 2, 3],
List2 = [4 | List1]. %% List2 হবে [4, 1, 2, 3]

এখানে:

  • List1 হচ্ছে [1, 2, 3]
  • এরপর List2 তৈরি হয়েছে, যেখানে List1 এর আগে 4 যোগ করা হয়েছে। তবে List1 এর মান অপরিবর্তিত রয়েছে, এটি পরিবর্তিত হয়নি।

টিউপল (Tuple) উদাহরণ:

Person = {john, 25},
NewPerson = {john, 26}. %% এখানে Person পরিবর্তন হয়নি, কিন্তু NewPerson তৈরি হয়েছে।

এখানে:

  • Person একটি টিউপল {john, 25} ধারণ করে।
  • NewPerson তৈরি হয়েছে {john, 26} এর মাধ্যমে, তবে Person এর মান অপরিবর্তিত রয়েছে।

2.3. Immutable Data এর প্রভাব

Erlang-এ ইমিউটেবল ডেটার কারণে আপনি যখন কোনো ডেটাকে পরিবর্তন করতে চান, তখন একটি নতুন কপি তৈরি করা হয়, পুরনো ডেটা অপরিবর্তিত থাকে। এতে ডেটার মূল অখণ্ডতা এবং নিরাপত্তা বজায় থাকে, এবং সিস্টেমে ত্রুটি হওয়ার সম্ভাবনা কমে যায়। এটি বিশেষভাবে ডিস্ট্রিবিউটেড সিস্টেম, ফাল্ট টলারেন্স, এবং কনকারেন্ট সিস্টেম-এ কার্যকরী।


উপসংহার

Erlang-এ ভেরিয়েবল এবং immutable data দুটি গুরুত্বপূর্ণ ধারণা। ভেরিয়েবল একবার নির্ধারিত হলে আর পরিবর্তিত হতে পারে না, এবং immutable data এর কারণে সিস্টেমে ডেটা একবার তৈরি হলে সেটি অপরিবর্তিত থাকে। এই দুটি বৈশিষ্ট্য ফাংশনাল প্রোগ্রামিং এর মৌলিক রূপ এবং এটি fault tolerance, concurrency, এবং distributed systems নির্মাণে সহায়ক ভূমিকা পালন করে।

Content added By
Promotion

Are you sure to start over?

Loading...