# ভূমিকা

**লেখক ও কন্ট্রিবিউটরদের তালিকা**\
[বিস্তারিত এখানে](https://github.com/howtocode-dev/clojure.howtocode.dev/graphs/contributors?type=a)

> Lisp is worth learning for the profound enlightenment experience you will have when you finally get it; that experience will make you a better programmer for the rest of your days, even if you never actually use Lisp itself a lot.
>
> > \-- [Eric S Raymond](http://en.wikipedia.org/wiki/Eric_S._Raymond) in [How to Become A Hacker](http://www.catb.org/esr/faqs/hacker-howto.html)

১৯৫০ সালের দিকে কম্পিউটিং জগতে শুরু হয় একটি রেভলিউশন যাকে আমরা লিস্প হিসেবে চিনি। লিস্প বিষয়ক বক্তব্য খুঁজতে গেলে নাম পাওয়া যাবে নামী দামি সব প্রোগ্রামারদের। এডগার ডাইজক্সট্রা, পিটার নরভিগ, পল গ্রাহাম, অ্যাল্যান পারলিস, রিচারড স্টলম্যান তাঁদের মধ্যে উল্লেখযোগ্য। সেই অর্ধ শতাব্দী আগেই এটি নিয়ে আসে গারবেজ কালেকশন, ডি এস এল, ইন্টার‍্যাক্টিভ প্রোগ্রামিং, ডাইন্যামিক টাইপিং, ল্যাম্বডা ক্যালকুলাসের মত বিষয় যা মেইন্সট্রিমে আসে ২/৩ দশক পর। ফাংশনাল প্রোগ্রামিঙ্গের সম্ভ্রান্ত পরিবারের এই প্রোগ্রামিং ল্যাঙ্গুয়েজ বহু প্রোগ্রামারদের কৌশলকে করেছে নিপুণ ও এর দ্বারা প্রভাবিত হয়েছে বর্তমানের প্রায় সমস্ত ল্যাঙ্গুয়েজ। কিন্তু লিস্প নিজে কোন ল্যাঙ্গুয়েজ ঠিক না, বরং একটি ল্যাঙ্গুয়েজ পরিবার যা কিছু বিশেষত্ব বহন করে, আর প্রতি দশকে হয় এই পরিবারের কোন না কোন ল্যাঙ্গুয়েজের আবির্ভাব।

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

এই বইটি লিখা হচ্ছে ক্লোজারকে নিয়ে। আপনাকে লিস্প ও ফাংশনাল প্রোগ্রামিঙের সাথে পরিচয় করিয়ে দেওয়ার জন্য আমাদের এই প্রয়াস। ক্লোজারের ল্যাঙ্গুয়েজগত আদ্যপান্ত স্টেপ বাই স্টেপ আলোচনা করা হবে এখানে। বিশেষভাবে ফাংশনাল প্রোগ্রামিং ও কঙ্কারেন্সিকে প্রাধান্য দেওয়া হবে। সর্বোপরি চেষ্টা হবে থিওরি ও প্র্যাক্টিকালিটির মাঝে সমন্বয় সাধনে যা খুব ভাল করেই পারে ক্লোজার। ওয়েব অ্যাপ্লিকেশান হোক, স্ক্রেপিং হোক, হোক ডাটা এনালাইসিস, অথবা হতে পারে প্রোগ্রামিং প্রব্লেম সল্ভিং, সব কিছুই ভিন্ন, সুন্দরভাবে করা যায় ক্লোজারের মাধ্যমে, আরও সুচারুভাবে, এবং এই বইটির মাধ্যমে আমাদের চেষ্টা থাকবে আপনাকে সেই ভিন্ন, সুন্দর, ও সুচারু দৃষ্টিভঙ্গির সাথে পরিচয় করিয়ে দেওয়া। ক্লোজার ও লিস্পের সুন্দরতম জগতে আপনাকে স্বাগতম।

## টার্গেট পাঠকগণ

আমরা ভাবতে পছন্দ করি যে আপনি যে কোন ব্যাকগ্রাউন্ডের হন না কেন, আপনি এই বইটি পড়ে লাভবান হবেন। কিন্তু আপনি সবচেয়ে উপকৃত হবেন যদি আপনার প্রোগ্রামিং এক্সপিরিয়েন্স থাকে (ফাংশনাল না হলেও চলবে)। ক্লোজার আপনাকে ভিন্ন ধারার একটি প্রোগ্রামিং পন্থা দেখাবে যা আপনার বর্তমান স্কিলকে আরও সবল করবে যদিও আপনি আপনার কর্মক্ষেত্রে ক্লোজার ব্যবহার না করেন। সর্বোপরি আপনি যদি নতুন কিছু শিখতে ও প্রয়োগ করতে ভালবাসেন, এই বইটি আপনার জন্য।

## বইটি পড়ার সবচেয়ে ভাল উপায়

এই বইটি চারটি পর্বে বিভক্ত । আর প্রতিটি পর্বে রয়েছে কিছু চ্যাপ্টার। সবচেয়ে ভাল ফল পাবেন যদি ক্রমানুযায়ী চ্যাপ্টারগুলো পড়তে পারেন। প্রতিটি চ্যাপ্টার অবজেক্টিভ ও মোটিভেশন দিয়ে শুরু হবে টপিক স্পেসিফিক আলোচনা শেষে প্র্যাক্টিকাল উদাহরণ দিয়ে শেষ হবে। প্রতিটি কোড ওপেন সোর্স থাকবে (তা তো বটেই)।

> "Lisp is a language for doing what you've been told is impossible."
>
> > \-- [Kent Pitman](http://en.wikipedia.org/wiki/Kent_Pitman)

## ওপেন সোর্স

এই বইটি মূলত স্বেচ্ছাশ্রমে লেখা এবং বইটি সম্পূর্ন ওপেন সোর্স । এখানে তাই আপনিও অবদান রাখতে পারেন লেখক হিসেবে । আপনার কন্ট্রিবিউশান গৃহীত হলে অবদানকারীদের তালিকায় আপনার নাম যোগ করে দেওয়া হবে ।

এটি মূলত একটি [গিটহাব রিপোজিটোরি](https://github.com/howtocode-dev/clojure.howtocode.dev) যেখানে এই বইয়ের আর্টিকেল গুলো মার্কডাউন ফরম্যাটে লেখা হচ্ছে। রিপোজটরিটি ফর্ক করে পুল রিকুয়েস্ট পাঠানোর মাধ্যমে আপনারাও অবদান রাখতে পারেন ।

> **বর্তমানে বইটির কন্টেন্ট বিভিন্ন কন্ট্রিবিউটর এবং নানা রকম সোর্স থেকে সংগৃহীত এবং সংকলিত।**

\
This work is licensed under a [Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License](http://creativecommons.org/licenses/by-nc-nd/4.0/).


# পর্ব ১ - ল্যাঙ্গুয়েজ

আমাদের বইয়ের এই প্রথম পর্বে থাকছে ক্লোজার ল্যাঙ্গুয়েজ পরিচিতি। এই পর্বের বিভিন্ন চ্যাপ্টার আপনার ক্লোজার ভাষা জ্ঞানকে সমৃদ্ধ করার কাজে নিয়োজিত থাকবে। [চ্যাপ্টার ১](/part_1/1_1) এ আমরা ক্লোজারের উত্তরাধিকার বিশ্লেষণ করব এবং আলোচনা করব লিস্প ও জাভাকে নিয়ে। সাথে সাথে চলে আসবে ক্লোজারস্ক্রিপ্ট এবং কি করে এর মাধ্যমে জাভাস্ক্রিপ্ট বিশেষত এর ফ্রন্ট-এন্ড ইকোসিস্টেমে ক্লোজার ভূমিকা রাখে। এরপর রয়েছে ক্লোজার সিনট্যাক্সের একটি ঝটিকা সফর, ইন্সটলেশন প্রক্রিয়া, লাইনিঙ্গেন এবং ক্লোজার ও লিস্প কালচারের কিছু টার্ম। ক্লোজার সিনট্যাক্সকে আরও ভালোভাবে শিখার জন্য [চ্যাপ্টার ২](https://github.com/howtocode-com-bd/clojure.howtocode.com.bd/tree/1de4ddce4fc8195865bd2f38f0bf0cd14b495891/1_2.md) একাই যথেষ্ট। ক্লোজার সিনট্যাক্স যে কতটাই সিম্পল তা আপনি বুঝতে পারবেন এই চ্যাপ্টার শেষ করার পর। যে কোন লিস্পের প্রাণ হল এর ডাটা স্ট্রাকচার ও ফাংশন। আর ক্লোজারের ডাটা স্ট্রাকচার ও ফাংশন হল [চ্যাপ্টার ৩](/part_1/1_3) এর মূল আলোচ্য বিষয়। এরই মাঝে হয়ত রেপল (REPL) হয়ে উঠবে আপনার বেস্ট ফ্রেন্ড। লুপিং, ব্রাঞ্চিং, রিকারশন ও কিছু ফাংশনাল প্রোগ্রামিং দিয়ে আমরা আমাদের এই প্রথম পর্ব শেষ করব [চ্যাপ্টার ৪](/part_1/1_4) এর মাধ্যমে। ততক্ষণে আপনারও অনেকাংশে শেখা হয়ে যাবে অসাধারণ এই ল্যাঙ্গুয়েজটি। আর প্রতিটি চ্যাপ্টার শেষে মজার মজার কেইস স্টাডি অথবা কুকবুক তো আছেই।

আমাদের সামনে রয়েছে চমৎকার একটি জার্নি, যা এলিট শ্রেণির একটি প্রোগ্রামিং ল্যাঙ্গুয়েজের সাথে আপনার বন্ধুত্ব গড়ে তুলবে। তাহলে আপনার টার্মিনাল ও এডিটরকে রেডি হতে বলুন, খুব শীঘ্রই আমরা হতে চলেছি ক্লোজারিয়ান!


# এক নজরে ক্লোজার ও তার পরিবার

## অবতারণা

প্রোগ্রামিং ল্যাঙ্গুয়েজ শুধু কম্পিউটারকে দেয়া ইন্সট্রাকশন না; শুধু সঙ্কেত হিসাবে প্রোগ্রামিং ল্যাঙ্গুয়েজকে দেখলে ভুল হবে। প্রোগ্রামিং ল্যাঙ্গুয়েজ হল আপনার মস্তিষ্ককে কোন একটি প্যাটার্নে আবেশিত করার একটি অবকাঠামো, আর সেই অবকাঠামোতে থেকে আপনি সৃষ্টি করেন লজিকের ভাণ্ডার। একেক সমস্যার সমাধান করতে আপনাকে চিন্তা করতে হয় একেকভাবে, সৃজনশীলতাকে প্রয়োগ করতে হয় একেকভাবে, কিন্তু আপনি হয়ত কোন নির্দিষ্ট প্যাটার্নে চিন্তা করতে পছন্দ করেন। ওইসব কারণেই সৃষ্টি হয়েছে বিভিন্ন ল্যাঙ্গুয়েজের। ০ আর ১ দিয়ে যদি আপনি কম্পিউটারের সাথে কথা বলতেন তাহলে প্রোগ্রামারদের মধ্যে হয়ত আত্মহত্যার হার থাকত সর্বাধিক আর এত আনন্দময় পেশাও হয়ত হত না এটি, আর এর পিছনে কারণ হোল ভুরি ভুরি প্রোগ্রামিং মতবাদ, তত্ত্ব ও ল্যাঙ্গুয়েজ।

একেকটি ল্যাঙ্গুয়েজ একেক প্যাটার্নের চিন্তাকে প্রোমোট করে। কেউ কেউ অবজেক্ট ওরিয়েন্টেড আর কেউ কেউ ফাংশনাল, কেউ আবার প্রসিডিউরাল। আপনার হাতের প্রব্লেমকে আপনি কিভাবে মোকাবেলা করবেন তাঁর কিছু গাইডলাইন দেয় এইসব প্যারাডাইম, আর সেই প্যারাডাইমের ল্যাঙ্গুয়েজ সাহায্য করে আপনাকে ওই গাইডলাইন ফলো করতে। আপাতত আমরা আলোচনা করব ফাংশনাল ও অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং প্যারাডাইম নিয়ে। কারণ, ক্লোজারের আবির্ভাব হয়েছে এমন একটি যুগে যখন ইন্ডাস্ট্রি অবজেক্ট ওরিয়েন্টেডের মোহ কাটিয়ে পুনরায় ঝুঁকছে ফাংশনাল প্যারাডাইমে। আর ক্লোজারের সাথে হরহামেশা যুক্ত হয় দুটি নাম- লিস্প ও জাভা। আর এই দুটি নাম উল্লিখিত দুটি প্যারাডাইমের শক্তিশালী সদস্য। গেল লিস্প ও জাভা, ক্লোজার ডট নেটেও চলে, ক্লোজার সি এল আর নামে, আর এন্ড্রয়েড/আই ও এস ইকোসিস্টেমেও একে চালানো যায়, তবে সেগুলো উপরোল্লিখিত ল্যাঙ্গুয়েজগুলির মত পপুলার, এমনকি ম্যাচিউর না। তবে, এর জাভাস্ক্রিপ্ট রূপ, যাকে বলা হয়ে থাকে ক্লোজারস্ক্রিপ্ট, খুব অল্প সময়ের মধ্যে জনপ্রিয়তা লাভ করেছে এবং এর প্রগতি জাভা ভার্সনের সমতুল্য। কাজেই জাভাস্ক্রিপ্টকেও আমরা ক্লোজার পরিবারের সদস্য বলতে পারি।

## ক্লোজার পরিবার- জাভা

বর্তমান যুগে ইন্ডাস্ট্রিতে খুব শক্তিশালী একটি নাম জাভা। এন্টারপ্রাইজ বলতেই জাভা বলা চলে। এর পেছনের মূল কারণ কিন্তু ল্যাঙ্গুয়েজ না, প্লাটফরম। জাভা সর্বপ্রথম আপনাকে প্লাটফরম ইন্ডেপেন্ডান্স দেয়, কিন্তু ইন্টারেস্টিং বিষয় প্লাটফরম ইন্ডেপেন্ডান্স না, বরং জাভা কিভাবে তা করে সেটি। জাস্ট-ইন-টাইম কম্পাইলেশনের মাধ্যমে জাভা কোড পরিণত হয় বাইট কোডে, যা কিনা জে ভি এম (জাভা ভার্চুয়াল মেশিন) এর মেশিন ল্যাঙ্গুয়েজ, আর ঐ জে ভি এম হল হোস্ট মেশিনের খুব কাছাকাছি থাকা একটি এন্টিটি। রান করার সময়ে সেই কম্পাইল্ড হওয়া বাইট কোড ইন্টারপ্রেটেড হয় জে ভি এম এ। আর প্রতি বছর জে ভি এম উন্নত হচ্ছে, আর তার সাথে বাড়ছে জাভার স্পীড। জে ভি এম আরও পারদর্শী মাল্টীথ্রেডেড প্রোগ্রামিং করতে। জাভার এন্টারপ্রাইজ প্রীতি ও ইন্টারনেট প্রীতি, এবং এর ওপেন সোর্স হওয়া একে দিয়েছে অগুনতি লাইব্রেরী, যেখানে বহু নামীদামী প্রোগ্রামাররা তাদের শিল্পের প্রদর্শন ঘটিয়েছেন। এমন খুব কম প্রব্লেম ডোমেইন আছে যার সমাধান জাভা দ্বারা দেওয়া হয়নি। কাজেই, জাভা অদ্বিতীয় যদি আমরা মাইন্ড শেয়ার, লাইব্রেরীর সংখ্যা, আর বিশ্বস্ততার কথা ভাবি।

## ক্লোজার পরিবার- লিস্প

> The greatest single programming language ever designed.
>
> > \-- [Alan Kay](http://en.wikipedia.org/wiki/Alan_Kay)

এবার লিস্পের দিকে নজর দেওয়া যাক। অর্ধ-শতাব্দীরও আগে লিস্প এমন সব জিনিস নিয়ে আসে, যা আজকেও সব প্রোগ্রামিং ল্যাঙ্গুয়েজ পারে না। লিস্প কোড মূলত ডাটা স্ট্রাকচার। আপনি ডাটা স্ট্রাকচারের উপর কাজ করবেন, কাজেই আপনার সম্পূর্ণ ক্ষমতা থাকবে প্রোগ্রামিং ল্যাঙ্গুয়েজটির ইন্টারনালের উপর। কোন নির্দিষ্ট প্রব্লেম সল্ভ করতে আপনি প্রোগ্রাম লিখেন এমনভাবে যেন আপনি ওই প্রোগ্রামিং ল্যাঙ্গুয়েজটিকেই পুনর্গঠিত করছেন আপনার হাতের প্রব্লেম সমাধানের জন্যে। আজকে যে ডি এস এল নিয়ে লাফালাফি চলছে তা মূলত লিস্প পৃথিবীতে নিয়ে এসেছে সেই ৫০ এর দশকে। বিভিন্ন সমস্যা সমাধানে নিজেকে সেই সমস্যা অনুযায়ী পরিবর্তিত করতে লিস্প অসাধারণ। আর লিস্প প্রোগ্রাম হয় অত্যন্ত ছোট, আর সরলতার কারণে লিস্প এর কনসেপ্ট একবার বোঝার পর কোন সমস্যাকেই সমস্যা মনে হয় না (কাজেই আমার ভূমিকা পর্বে আমার শেয়ার করা বক্তব্য গুলি)। সবশেষে বলা চলে, লিস্প একটি ফাংশনাল ল্যাঙ্গুয়েজ। এই প্রজাতির ল্যাঙ্গুয়েজগুলো অপরিবর্তনশীল কাঠামো ব্যবহার করে যা কঙ্কারেন্সির জন্য উপযোগী। যেহেতু আপনি কোন ডাটাকে পরিবর্তিত করছেন না তাই যতগুলো কোর থাকুক, সবগুলিকেই আপনি কাজে লাগাতে পারবেন। আর আমরা সবাই জানি এর গুরুত্ব কত। আপনার চিন্তাধারাকে বিকশিত করতে ও সমস্যা যত উদ্ভটই হোক, এর সংক্ষিপ্ত ও সুন্দর সমাধান দিতে লিস্প অদ্বিতীয়।

![lisp\_image](http://imgs.xkcd.com/comics/lisp_cycles.png)

## ক্লোজার পরিবার- জাভাস্ক্রিপ্ট?

ল্যাঙ্গুয়েজ হিসেবে খুব প্রশংসা করা মুশকিল হলেও জাভাস্ক্রিপ্টের সর্ব্ব্যাপিতা অনশ্বিকার্য। ওয়েব ফ্রন্ট-এন্ডে এর জন্ম এমন এক সময়ে যখন রিচ ইউজার ইন্টার্ফেইস বলতে জাভা অ্যাপ্লেট ব্যবহৃত হত। এমনকি এর নামটিও "জাভা" থেকে ধার নেয়া, যদি কিনা একটু পপুলারিটি পাওয়া যায়। ব্রেন্ডান আইক জাভাস্ক্রিপ্ট তৈরি করেন "স্কীম" টাইপ একটি ল্যাঙ্গুয়েজ তৈরি করতে (স্কীম এক প্রকার লিস্প) কিন্তু সময়ের অভাবে এবং কার্লি ব্রেইসের জনপ্রিয়তার কারণে তা হয়ে দাঁড়ায় সম্পুর্ন ভিন্ন এক উপাদান। কিন্তু ইঞ্জিনিয়ারিংগত অথবা তাত্ত্বিক মাধুর্যগত ভাবে যেমনি হোক না কেন, জাভাস্ক্রিপ্ট একচ্ছত্র আধিপত্য বিস্তার করে আসছে এবং তা রেকোগ্নিশন পাচ্ছে ধাপে ধাপে, প্রথমে অ্যাজাক্সের আবির্ভাব, এরপর ওয়েব সকেট, নোড জে এস, ফ্রন্ট-এন্ড এম ভি সি, আর রিসেন্টলি রিয়াক্ট ও এর বন্ধুরা। এর সর্বব্যপিতা যেমন এর মাইন্ড শেয়ার বিস্তৃত করেছে, আর তারই সাথে একে হোস্ট প্ল্যাটফর্ম/লাঙ্গুয়াগেজে পরিণত করেছে, আর সাথে সাথে আবির্ভাব হয়েছে জাভাস্ক্রিপ্ট টার্গেটেড ল্যাঙ্গুয়েজ পরিবারের, যেমন কফিস্ক্রিপ্ট, ক্লোজারস্ক্রিপ্ট, এল্ম, ডার্ট ইত্যাদি।

## ক্লোজারের বিশেষত্ব

লিস্পের শক্তি এর ল্যাঙ্গুয়েজ কাঠামো, আর জাভার শক্তি এর প্লাটফরম কাঠামো। ক্লোজার এই দুয়ের সমন্বয়ে সৃষ্ট। জে ভি এম শুধু জাভা না, যে কোন ল্যাঙ্গুয়েজকেই স্থান দেয়, আর ওইসব ল্যাঙ্গুয়েজ অনায়াসে জে ভি এম এর শক্তি ও সুবিধা ব্যবহার করতে পারে। ২০০৭ সালে রিচ হিকি যে ভি এম ও লিস্পের মিশ্রণ ঘটিয়ে আবিষ্কৃত করেছেন ক্লোজারকে। লিস্পের প্রোগ্রামিং স্টাইল ও জে ভি এম এর লাইব্রেরী এর সম্মিলনে ক্লোজার উন্নত সাপোর্ট প্রদান করে প্যারালাল সিস্টেম তৈরিতে। আবার বর্তমান যুগে সৃষ্টি হওয়ায় এই ল্যাঙ্গুয়েজটিতে রয়েছে আধুনিক সব টেকনোলজির সমন্বয় যার লক্ষ্যই হল বর্তমান সময়ের চাহিদা পূরণ এবং আধুনিক প্রোগ্রামারদের মানসিকতার সাথে খাপ খাওয়ানো।

লিস্প হিসাবে ক্লোজার পারফেক্ট একটি অস্ত্র ডি এস এল তৈরীতে। আজকাল এটি খুবই জরুরী কারণ ফুল স্ট্যাক প্রোগ্রামারদের কাজ করতে হয় বিভিন্ন প্রবলেম ডোমেইন নিয়ে। একটি ল্যাঙ্গুয়েজ সব জায়গায় থাকলে অনেক কষ্টই কম হয়। আবার ল্যাঙ্গুয়েজ এক্সটেন্সিবল হওয়াতে এর সৃষ্ট প্রোগ্রাম হয় অনেক ছোট। জাভা তো বটেই, এমনকি পাইথন থেকেও ছোট থাকে ক্লোজার প্রোগ্রামগুলি। আর জাভা প্ল্যাটফরমের কারণে দ্রুততা তো রয়েছেই, খুব সহজেই ক্লোজার প্রোগ্রাম হয় পাইথন/রুবী থেকে ২ - ১০ গুন পর্যন্ত দ্রুত। যদিও ক্লোজার নিজেও ডাইনামিক ল্যাঙ্গুয়েজ। আরও গুরুত্বপূর্ণ হল, এর কঙ্কারেন্সি প্রিমিটিভ, যার মাধ্যমে কঙ্কারেন্ট, মাল্টীথ্রেডেড প্রোগ্রামিং হয়ে উঠে সহজতর।

কিন্তু এই ফাংশনাল প্রোগ্রামিং, ডাটা স্ট্রাকচার ইত্যাদি কি করে ভূমিকা রাখতে পারে ফ্রন্ট এন্ডে? এর উত্তর হবে, অনেকখানি। প্রথমত, ডাটা স্ট্রাকচার নির্ভর প্রোগ্রামিং আপনাকে দিবে একটা ডিক্লেরেটিভ ইন্টার্ফেস যা ইউজার ইন্টার্ফেস তৈরীতে সহায়ক। আর ইম্মিউটেবল ডাটা স্বাভাবতই রিয়েক্টিভ প্রোগ্রামিং করতে সরলতর একটি ব্যবস্থা করে দেয় যেহেতু আপনি জানছেন যে আপনার ডাটা পরিবর্তিত হবে না কাজেই একমুখী ডাটা-ফ্লো এবং পাবলিশ-সাবস্ক্রাইব করতে আপনার বেশী একটা ঘুরিয়ে চিন্তা করা লাগছে না।

## ভাষা হিসাবে ক্লোজার

...

## ক্লোজারের প্রয়োগ

...

## ক্লোজারস্ক্রিপ্ট এর আগমন

এই প্রেক্ষিতে আরেকটি ল্যাঙ্গুয়েজের কথা না বলেই নয়, আর তা হল জাভাস্ক্রিপ্ট। অনেক আগে সৃষ্ট এই ল্যাঙ্গুয়েজটি ধাপে ধাপে স্বীকৃতি পেয়েছে, প্রথমে অ্যাজাক্স এর আবির্ভাবে, এরপর নোড জে এস ও এর বন্ধুদের দিয়ে। জাভাস্ক্রিপ্ট দিয়ে আজকাল সবাই সবকিছু করে বসছে। কিন্তু, ল্যাঙ্গুয়েজ হিসেবে জাভাস্ক্রিপ্ট, অন্তত এর সর্বাধিক ব্যবহৃত ভার্সনে রয়েছে কিছু সমস্যা, যে কারণে অনেকেই অনেক প্রচেষ্টা করেছে এর সর্বব্যপিতাকে মাথায় রেখে শুধু চামড়া পাল্টে দিতে, অর্থাৎ,

## ক্লোজার বনাম অন্যান্য ল্যাঙ্গুয়েজ

...

## জানতে হলে

* <http://lispers.org/>


# ক্লোজার সিনট্যাক্স পরিচিতি


# ডাটা স্ট্রাকচার ও ফাংশন


# ডাটা বাইন্ডিং, কন্ট্রোল-ফ্লো ও রিকারশন


# পর্ব ২ - ফাংশনাল প্রোগ্রামিং


# ফাংশনাল প্রোগ্রামিং ও ল্যাম্বডা ক্যালকুলাস


# ইম্মিউটেবল ডাটা স্ট্রাকচার ও আলস্য


# ক্লোজার সিকুয়েন্স অ্যাবস্ট্রাকশন


# উচ্চতর মাত্রার ফাংশন, রিডিউসার, ট্রান্সডিউসার ইত্যাদি


# ফাংশনাল প্রোগ্রামিং ও ডিজাইন প্যাটার্ন


# পর্ব ৩ - অ্যাডভান্সড ক্লোজার


# ম্যাক্রো পরিচিতি


# ক্লোজার পলিমরফিজম- প্রটোকল ও মাল্টীমেথড


# জাভা ইন্টার-অপারেবিলিটি


# ভিন্নধর্মী ক্লোজার- ডানেই, টাইপড ক্লোজার এবং লজিক প্রোগ্রামিং


# পর্ব ৪ - কঙ্কারেন্সি


# কঙ্কারেন্সি ও প্যারালেলিজম


# ক্লোজার কঙ্কারেন্সি প্রিমিটিভ


# কোর অ্যাসিঙ্ক, গো-ব্লক ও চ্যানেল


# অ্যাপেন্ডিক্স ১ - লাইনিঙ্গেন কথন


# অ্যাপেন্ডিক্স ২ - ক্লোজার লাইব্রেরীর একটি সঙ্কলন


# তারপর?


