Erlang এর সিনট্যাক্স এবং কোড স্ট্রাকচার
Erlang একটি ফাংশনাল প্রোগ্রামিং ভাষা এবং এর সিনট্যাক্স অন্যান্য ফাংশনাল ভাষার মতো কিছুটা ভিন্ন। এর কোড স্ট্রাকচার সরল, পরিষ্কার এবং পাঠযোগ্য। এখানে Erlang এর সিনট্যাক্স এবং কোড স্ট্রাকচার সম্পর্কে কিছু মূল ধারণা দেওয়া হলো।
1. Erlang সিনট্যাক্সের মৌলিক বৈশিষ্ট্য
1.1. কোডের শেষে সেমিকোলন (Semicolon)
Erlang কোডের প্রতিটি স্টেটমেন্টের শেষে সেমিকোলন (
;) ব্যবহার করা হয়, তবে শেষ স্টেটমেন্ট এর পরে সেমিকোলন দেয়া হয় না।উদাহরণ:
X = 5; Y = 10.
1.2. ফাংশন ডেফিনেশন (Function Definition)
Erlang-এ ফাংশনগুলি একটি মডিউলের (module) মধ্যে ডিফাইন করা হয়। ফাংশন ডিফাইন করতে
-module()এবং-export()ডিরেকটিভ ব্যবহার করা হয়।উদাহরণ:
-module(math_operations). -export([add/2, multiply/2]). add(X, Y) -> X + Y. multiply(X, Y) -> X * Y.
1.3. ভ্যারিয়েবল এবং কনস্ট্যান্ট
Erlang-এ ভ্যারিয়েবলগুলি বড় অক্ষরে (Uppercase) শুরু হয়, যেমন
X,Total,Valueইত্যাদি। লোয়ারকেসে শুরু হওয়া নামগুলি সাধারণত কনস্ট্যান্ট বা ফাংশনের আর্গুমেন্ট হিসেবে ব্যবহৃত হয়।উদাহরণ:
Total = 100, Value = 50.
1.4. প্যাটার্ন ম্যাচিং (Pattern Matching)
Erlang প্যাটার্ন ম্যাচিংয়ের উপর ভিত্তি করে কাজ করে। প্যাটার্ন মেটিং ভেরিয়েবলের মান নির্ধারণের সময় হয় এবং এটি একটি শক্তিশালী ফিচার।
উদাহরণ:
add({ok, X}, {ok, Y}) -> X + Y.
1.5. কমেন্টস (Comments)
Erlang-এ একক লাইন কমেন্ট
%%দিয়ে শুরু হয়।উদাহরণ:
%% এই ফাংশনটি দুটি সংখ্যা যোগ করে add(X, Y) -> X + Y.
2. Erlang কোড স্ট্রাকচার
Erlang কোডে সাধারণত মডিউল, ফাংশন এবং ব্যাসিক ডেটা টাইপস ব্যবহৃত হয়। নিচে Erlang এর কোড স্ট্রাকচার বিস্তারিতভাবে আলোচনা করা হয়েছে:
2.1. মডিউল (Module)
- একটি Erlang প্রোগ্রামে মডিউল ডিফাইন করতে
-module()ডিরেকটিভ ব্যবহার করা হয়। মডিউল কোডের একটি স্বতন্ত্র অংশ হিসেবে কাজ করে যা এক বা একাধিক ফাংশন ধারণ করে।
উদাহরণ:
-module(calculator).
2.2. এক্সপোর্ট (Export)
-export()ডিরেকটিভ ব্যবহার করে আপনি মডিউলের বাইরের ফাংশনগুলিকে এক্সপোর্ট করতে পারেন, অর্থাৎ অন্যান্য মডিউল বা কোড অংশ এই ফাংশনগুলোকে ব্যবহার করতে পারে।ফাংশনের নাম এবং আর্গুমেন্টের সংখ্যা
/চিহ্ন দিয়ে উল্লেখ করা হয়।উদাহরণ:
-export([add/2, subtract/2]).
2.3. ফাংশন (Function)
Erlang-এ প্রতিটি ফাংশন একটি নির্দিষ্ট কার্যাবলি সম্পাদন করে এবং এর মধ্যে প্যাটার্ন ম্যাচিং, কন্ডিশনাল স্টেটমেন্ট, এবং রিকার্সন থাকতে পারে।
উদাহরণ:
add(X, Y) -> X + Y. subtract(X, Y) -> X - Y.
2.4. রিকার্সন (Recursion)
Erlang-এ রিকার্সন ব্যবহৃত হয় প্রোগ্রামিং লজিক তৈরি করার জন্য, বিশেষ করে যখন একটি ফাংশন নিজেকে পুনরায় কল করে।
উদাহরণ:
factorial(0) -> 1; factorial(N) -> N * factorial(N - 1).
2.5. কন্ডিশনাল স্টেটমেন্ট (Conditional Statements)
Erlang-এ case, if, এবং receive স্টেটমেন্ট ব্যবহার করা হয় কন্ডিশনাল লজিক তৈরি করতে।
উদাহরণ:
case X of 1 -> io:format("X is 1~n"); 2 -> io:format("X is 2~n"); _ -> io:format("X is something else~n") end.if স্টেটমেন্ট:
if X == 1 -> io:format("X is 1~n"); X == 2 -> io:format("X is 2~n"); true -> io:format("X is something else~n") end.
3. Erlang এর কিছু গুরুত্বপূর্ণ সিনট্যাক্সের উদাহরণ
3.1. Hello World উদাহরণ
Erlang-এ "Hello World" প্রিন্ট করার একটি উদাহরণ:
-module(hello).
-exports([world/0]).
world() ->
io:format("Hello, World!~n").এখানে:
-module(hello).— মডিউল নাম।-export([world/0]).—worldফাংশনটি বাইরের কোডে ব্যবহারযোগ্য।io:format("Hello, World!~n").— কনসোলে "Hello, World!" প্রিন্ট করার জন্য।
3.2. List Operations
Erlang-এ লিস্টের অপারেশন করতে প্যাটার্ন ম্যাচিং ব্যবহার করা যায়:
sum([]) -> 0;
sum([H | T]) -> H + sum(T).এখানে:
- প্রথম ফাংশনটি খালি লিস্টের জন্য ০ রিটার্ন করে।
- দ্বিতীয় ফাংশনটি লিস্টের হেড (প্রথম উপাদান) যোগ করে টেল (অবশিষ্ট উপাদান) এর সাথে এবং রিকার্সন ব্যবহার করে এটি পুনরায় চালায়।
3.3. টিউপল (Tuple)
Erlang-এ টিউপল তৈরি এবং ব্যবহারের একটি উদাহরণ:
Person = {john, 25, male}.এখানে Person একটি টিউপল যা একটি নাম, বয়স এবং লিঙ্গ ধারণ করছে।
উপসংহার
Erlang এর সিনট্যাক্স খুবই সরল এবং পাঠযোগ্য, যা ফাংশনাল প্রোগ্রামিং এর দৃষ্টিকোণ থেকে কার্যকরী। মডিউল, ফাংশন, প্যাটার্ন ম্যাচিং, এবং রিকার্সন এর মাধ্যমে Erlang শক্তিশালী এবং দক্ষ প্রোগ্রামিং সমাধান তৈরি করতে সহায়ক। এর সিনট্যাক্স এবং কোড স্ট্রাকচার স্পষ্ট এবং কার্যকরী কোড লেখার জন্য উপযুক্ত, বিশেষ করে concurrency এবং distributed systems ব্যবহারের ক্ষেত্রে।