ভূমিকা
সবাইকে স্বাগতম! আশা করি সবাই ভালো আছেন।
বছরটা খুব দ্রুত কেটে যাচ্ছে, আর আমরা এখন এসে পড়েছি Mindshifting May-তে, সম্ভবত এটাই সেই মাস যার জন্য আমি সবচেয়ে বেশি উত্তেজিত, মূলত কারণ এতে Prolog আছে!
আশা করি Analytical April আপনাদের ভালো লেগেছে। আপনাদের মধ্যে অসংখ্য মানুষ অংশ নিয়েছেন, আর আমার মনে হয় এটা এখন পর্যন্ত সবচেয়ে সফল মাসগুলোর একটি ছিল। এপ্রিলেই একটি বিলম্বিত Functional February ইন্টারভিউ হিসেবে আমি Simon Peyton Jones-এর সঙ্গে কথা বলেছিলাম। সেটা সত্যিই দারুণ ছিল, আর আমি অবশ্যই এটি আবার দেখার পরামর্শ দেব, যদি শুধু এই চমৎকার লাইনটির জন্যই হয়: "When the limestone of imperative programming has worn away the granite of functional programming will be revealed underneath"।
যাই হোক, এবার Mindshifting May-এর পালা! বরাবরের মতো এরিক আর আমি আপনাদের সংক্ষেপে বলে দেব মাসগুলো আসলে কী নিয়ে, আর আমরা কোন কোন ভাষা ঘেঁটে দেখব।
তাহলে এই মাসে তো রয়েছে একেবারে ছয়টি ভাষা: Ballerina, Pharo, Prolog, Red, Tcl (টিকল) আর Unison। এই প্রতিটি ভাষাই তথাকথিত "মূলধারার" ভাষাগুলো থেকে বেশ আলাদা, তাই এদের পার্থক্য কেমন তা টের পেতে আমরা আপনাকে একটির বেশি ভাষা চেষ্টা করে দেখার পরামর্শ দেব। আমি নিশ্চিতভাবে Prolog চেষ্টা করার পরামর্শ দেব, কারণ আমার জীবনে যে ভাষাগুলোতে কোড লিখতে সবচেয়ে বেশি মজা পেয়েছি, Prolog তাদের একটি। এরিকও Unison নিয়ে খুব উত্তেজিত, তাই এটিও চেষ্টা করে দেখার জন্য আরেকটি ভালো পছন্দ।
ব্যাজ
Mindshifting May ব্যাজ পেতে হলে মে মাসে এই ভাষাগুলোর যেকোনো একটিতে পাঁচটি অনুশীলনী সম্পূর্ণ করতে হবে।
এর সঙ্গে আছে সারা বছরব্যাপী 12in23 ব্যাজ। এটি পেতে হলে এই ভাষাগুলোর একটিতে আমাদের নির্বাচিত পাঁচটি অনুশীলনী সমাধান করতে হবে। আপনি যদি মে মাসের পরে এটি দেখছেন, তাহলে বছরের যেকোনো সময়েই এই অংশটি করতে পারেন, তাই আপনার কিছুই হাতছাড়া হয়নি। ভাষাগুলো সব এত আলাদা হওয়ায় এই অনুশীলনীগুলো বাছাই করা কঠিন ছিল, তাই আমরা বরং আরও সাধারণ কিছু অনুশীলনী বেছেছি, যেগুলো সমাধান করতে মজা লাগে আর যেগুলোতে ভিন্ন ভিন্ন পদ্ধতি ঘেঁটে দেখতে ভালো লাগে।
- অ্যাক্রোনিম: একটি বাক্যাংশকে তার অ্যাক্রোনিমে রূপান্তর করুন
- আইসোগ্রাম: একটি বাক্যাংশে পুনরাবৃত্ত অক্ষর আছে কি না তা যাচাই করুন
- রোমান সংখ্যা: একটি সংখ্যাকে রোমান সংখ্যায় রূপান্তর করুন
- বৃষ্টির ফোঁটা: একটি সংখ্যাকে বৃষ্টির ফোঁটার শব্দে রূপান্তর করুন
- মহাকাশ যুগ: আমাদের সৌরজগতের গ্রহগুলোতে কারও বয়স কত হবে তা হিসাব করুন
এই অনুশীলনীগুলো আর আগের মাসগুলোর অনুশীলনীগুলো সবই #12in23 পেজে পাওয়া যাবে।
এক নজরে
চলুন, প্রতিটি ভাষার একটি সংক্ষিপ্ত পরিচিতি নিয়ে সেগুলো ঘেঁটে দেখি।
Prolog:
- চিন্তা করার আলাদা একটি ধরন। একটি প্রোগ্রামকে সংজ্ঞায়িত করা হয় সম্পর্কের একটি সেট হিসেবে। এরপর আপনি ইউনিফিকেশন (প্যাটার্ন ম্যাচিং) ব্যবহার করে উত্তর খুঁজে বের করতে সম্পর্ক-ডেটাবেজে "কোয়েরি" করেন। নিয়মভিত্তিক সিস্টেমের জন্য একেবারে উপযুক্ত
- সিনট্যাক্স খুবই কম, মাত্র একটি ডেটা টাইপ (টার্ম) আর ভাষার একটি গঠনগত উপাদান (ক্লজ)। ক্লজগুলো পুরোপুরি টার্ম দিয়ে তৈরি, আর এগুলো দিয়ে ফ্যাক্ট বা রুল সংজ্ঞায়িত করা যায়।
- খুবই ডিক্লারেটিভ। জিনিসগুলো কীভাবে হিসাব হবে তা নিয়ে কম ভাবুন, বরং কী হিসাব হওয়া উচিত তা নিয়ে বেশি ভাবুন। অনেক ক্ষেত্রেই এর মানে কম কোড
- বড় সার্চ স্পেসে কোয়েরি করার জন্য ভালোভাবে কাজ করার কথা ভেবেই তৈরি। ভিন্ন ভিন্ন সার্চ কৌশল (ডেপথ ফার্স্ট, ব্রেডথ ফার্স্ট), স্বয়ংক্রিয় প্রুনিং সমর্থন করে
Unison
- Unison কোডে কোনো ভার্সন সংঘর্ষ নেই! একটি Unison ফাংশন তার ডিপেন্ডেন্সিগুলোর হ্যাশ জানে, তাই তার যে ভার্সনটি দরকার সেটি সে নিজেই খুঁজে নিতে পারে।
- Unison লোকাল ডেভেলপমেন্ট UI আর হোস্টেড রিপোজিটরিতে লাইভ কোড ব্রাউজিং সমর্থন করে, তাই যে লাইব্রেরিগুলোর উপর আপনি নির্ভর করেন সেগুলোর সোর্স কোড দেখতে আপনি সবসময় ক্লিক করে ঢুঁ মারতে পারেন।
- Abilities হলো "এফেক্ট" (যেমন IO) খাঁটি ফাংশনাল পদ্ধতিতে সামলানোর একটি উপায়
Pharo
- সিনট্যাক্স খুব সামান্য, পুরো সিনট্যাক্সই একটা পোস্টকার্ডে ধরে যায় (মাত্র ৬টি রিজার্ভড ওয়ার্ড!)। মেসেজ সিনট্যাক্স প্রাকৃতিক ভাষার আদলে তৈরি, কর্তা, ক্রিয়া আর পরিপূরক নিয়ে (between: 1 and: 2 +)। সিম্যান্টিক্সও সহজ (যেমন অত্যন্ত সরল প্রিসিডেন্স নিয়ম)। শেখা আর পড়া দুটোই সহজ করে তোলে
- একবার শুরুর লার্নিং কার্ভ পার হয়ে গেলে প্রোডাক্টিভিটি দারুণ। এর পেছনে অনেক কারণ আছে, যেমন সহজ সিম্যান্টিক্স আর সামান্য সিনট্যাক্স, আর সঙ্গে পরে উল্লেখ করা Pharo-র কিছু অনবদ্য ফিচারও
- বেশিরভাগ প্ল্যাটফর্মে (Windows, macOS, Linux + ARM সাপোর্ট) একটি দ্রুত ভার্চুয়াল মেশিনে (OpenSmalltalk) চলে
- এটি নিছক একটি Smalltalk ইমপ্লিমেন্টেশন নয়, এখনও সক্রিয়ভাবে ডেভেলপ করা হচ্ছে (সর্বশেষ SmallTalk ভার্সন SmallTalk 80, যা ১৯৮০ সালের)
- বন্ধুত্বপূর্ণ কমিউনিটি
Tcl (উচ্চারণ "টিকল")
- সিনট্যাক্স খুব কম, মাত্র ১২টি নিয়ম, আর তা এক টুকরো কাগজে ধরে যায়। সিম্যান্টিক্সও তুলনামূলক সরল। প্রোগ্রাম পড়া আর শেখা সহজ করে তোলে
- করুটিনের মাধ্যমে সহজ কনকারেন্সি, যা দিয়ে অ্যাসিঙ্ক্রোনাস কোড সিঙ্ক্রোনাস কোডের মতো করে লেখা যায়
- নেটওয়ার্ক প্রোগ্রামিং আর অ্যাসিঙ্ক্রোনাস ফাইল I/O-এর জন্য বিল্ট-ইন ইভেন্ট লুপ
- পরিণত, তবু এখনও বিবর্তনশীল
Ballerina
- ভাষার সঙ্গে সংযুক্ত কোয়েরি সহ JSON, XML আর টেবুলার ডেটার টাইপ-সেফ, ডিক্লারেটিভ প্রসেসিংয়ের জন্য ফার্স্ট-ক্লাস সমর্থন
- নমনীয় টাইপ, যেখানে স্ট্রাকচারাল টাইপিং (ডাক টাইপিং) বেশি দেখা যায়। ক্লোজড টাইপ হলো সাবটাইপিং করার একটি উপায়, আর ওপেন টাইপ অতিরিক্ত ডেটা পাঠানো হলেও সুন্দরভাবে সামলে নেয়। HTTP রিসোর্সে ব্যবহার করলে ডেটা বাইন্ডিং ও ভ্যালিডেশন বিল্ট-ইন থাকে
- কমন ইন্টিগ্রেশন প্যাটার্ন আর কানেক্টরের জন্য বিল্ট-ইন সমর্থন, যার মধ্যে আছে ডিস্ট্রিবিউটেড ট্রানজ্যাকশন, কম্পেনসেশন আর সার্কিট ব্রেকার
- প্রতিটি Ballerina প্রোগ্রাম যেকোনো Open Telemetry টুল দিয়ে স্বয়ংক্রিয়ভাবে অবজার্ভ করা যায়, যা কোডের আচরণ ও পারফরম্যান্সের উপর আপনাকে পূর্ণ নিয়ন্ত্রণ ও দৃশ্যমানতা দেয়।
- স্ট্র্যান্ডের মাধ্যমে দারুণ কনকারেন্সি, যেগুলো হালকা ওজনের থ্রেড। নন-ব্লকিং IO কল সহজ। কম্পাইলার ওয়ার্কারদের মধ্যে পাঠানো-গ্রহণের কল যাচাই করতে সাহায্য করে, ফলে ডেডলক এড়ানো যায়। নেটওয়ার্কিংয়ের জন্যও ইমিউটেবিলিটি দারুণ
- ইউনিয়ন টাইপ আর এর সুবিধার জন্য
checkসিনট্যাক্টিক সুগারের মাধ্যমে স্পষ্ট এরর হ্যান্ডলিং
Red
- হালকা। পুরো টুলচেইন মাত্র প্রায় ১.৫ MB ডাউনলোড, একটি একক এক্সিকিউটেবল।
- পোর্টেবল। ক্রস-কম্পাইলেশন সহজ। ডিপেন্ডেন্সি ছাড়াই ছোট বাইনারি তৈরি করে। মেমরি ব্যবহার কম।
- Red নিজেই নিজের মেটা-ভাষা আর নিজের ডেটা-ফরম্যাট (LISP-গুলোর মতো)। প্রোগ্রাম কোড রূপান্তর বা পড়তে পারে।
- রিঅ্যাক্টিভ: প্রোগ্রামের আকার ও জটিলতা কমাতে অবজেক্টগুলো পরস্পর লিংক করা যায় (Excel শিটের কথা ভাবুন)
এই ভাষাগুলো কোথায় ব্যবহার হয়?
Prolog:
- কৃত্রিম বুদ্ধিমত্তা (IBM-এর Watson)
- (ন্যাচারাল) ভাষা প্রসেসিং
- নলেজ বেসের জন্য ডিস্ট্রিবিউটেড ডেটাবেজ (TerminusDB)
- এমনকি Java Virtual Machine-এর টাইপ রুল নির্দিষ্ট করতেও এটি ব্যবহৃত হয়েছে
Unison
- ডিস্ট্রিবিউটেড সিস্টেম লেখার কাজে ব্যবহৃত
- সাধারণ ওয়েব সার্ভিস
- ব্যাচ কম্পিউটিং জব
Pharo
- ইন্টার্যাক্টিভ টুলের জন্য ব্যবহৃত
- পরস্পর থেকে অনেক আলাদা নানা ক্ষেত্রে ব্যবহৃত: অনলাইন ট্রেডিং প্ল্যাটফর্ম এবং ইনভেস্টমেন্ট ম্যানেজমেন্টের ক্লাউড-ভিত্তিক টুল
- প্রতিরক্ষা শিল্পে ইউজার ইন্টারফেস ও ইন্টার্যাকশনের প্রোটোটাইপিং
- ইভেন্ট প্ল্যানিংয়ের জন্য ওয়েব-ভিত্তিক অ্যাপ্লিকেশন
- API, ডেটা ও সিস্টেম ঘেঁটে দেখার জন্য মোল্ডেবল ডেভেলপমেন্ট এনভায়রনমেন্ট টুল
Tcl
- গ্লু কোড হিসেবে বা এমবেড করে ব্যবহৃত
- CISCO রাউটারের GUI-তে ব্যবহৃত
- নানা ধরনের ম্যানুফ্যাকচারিং সিস্টেম
- NASA অনেকবার এটি ব্যবহার করেছে
- Pixar, Boeing, Intel, NBC সহ আরও অনেক বড় প্রতিষ্ঠান এর মধ্যে আছে।
- উইন্ডোয়িং টুলকিট Tk-কে perl/python/ruby-র মতো অন্য "স্ক্রিপ্টিং" ভাষাগুলোও গ্রহণ করেছে।
- Expect, ইন্টার্যাক্টিভ CLI অ্যাপ্লিকেশন স্বয়ংক্রিয় করার একটি টুল
Ballerina
- ক্লাউড নেটিভ অ্যাপ্লিকেশনের জন্য ব্যবহার
- MOSIP এটি ব্যবহার করে, যেটি একটি ফাউন্ডেশনাল আইডেন্টিটি প্ল্যাটফর্ম যা সরকার ও অন্যান্য প্রতিষ্ঠানকে সাশ্রয়ী উপায়ে ডিজিটাল ও ফাউন্ডেশনাল আইডেন্টিটি সিস্টেম চালু করতে সাহায্য করে।
প্রোগ্রামিংয়ের দৃষ্টিকোণ থেকে এই ভাষাগুলোকে আকর্ষণীয় করে তোলে কী?
Prolog:
- লজিক প্রোগ্রামিং ভাষা (প্রথমদিকের একটি), যা নিজেই একটি প্যারাডাইম (OO আর ফাংশনাল প্রোগ্রামিংয়ের মতো)
- ডাইনামিক্যালি টাইপড
Unison
- খাঁটি ফাংশনাল ভাষা
- স্ট্যাটিক্যালি টাইপড
Pharo
- অবজেক্ট-ওরিয়েন্টেড ভাষা, তবে SmallTalk-এর অর্থে। "সাধারণ" অবজেক্ট-ওরিয়েন্টেড ভাষাগুলো থেকে আলাদা: কোনো কনস্ট্রাক্টর নেই, টাইপ ডিক্লারেশন নেই, ইন্টারফেস নেই, প্রিমিটিভ টাইপ নেই।
- ডাইনামিক্যালি টাইপড
Tcl
- মাল্টি-প্যারাডাইম: অবজেক্ট-ওরিয়েন্টেড, ইমপেরেটিভ আর ফাংশনাল স্টাইল সমর্থিত
- ডাইনামিক্যালি টাইপড
Ballerina
- মাল্টি-প্যারাডাইম: অবজেক্ট-ওরিয়েন্টেড, ফাংশনাল আর ডিক্লারেটিভ
- স্ট্যাটিক্যালি টাইপড
Red
- মাল্টি-প্যারাডাইম: ইমপেরেটিভ, ফাংশনাল, অবজেক্ট-ওরিয়েন্টেড, সিম্বলিক, রিঅ্যাক্টিভ
- স্ট্যাটিক্যালি টাইপড
এদের অনবদ্য ফিচারগুলো কী?
Prolog:
- নমনীয়। অনেক বিল্ট-ইন প্রেডিকেট বিভিন্ন দিকে কাজ করে। একই সিনট্যাক্স দিয়ে ডেটা কোয়েরি ও তৈরি দুটোই করা যায়। অন্য ভাষায় কঠিন কিছু সমস্যা এখানে তুচ্ছ
- DCG হলো প্রায় বিল্ট-ইন পার্সার কম্বিনেটরের মতো, যা সিকোয়েন্স পার্স করা, তৈরি করা, সম্পূর্ণ করা আর যাচাই করার জন্য দুর্দান্ত
- CLP হলো কনস্ট্রেইন্টের পরিপ্রেক্ষিতে প্রোগ্রাম সংজ্ঞায়িত করার একটি কার্যকর উপায়
Unison
- কোড টেক্সট নয়, বরং (ইমিউটেবল) ডেটা। কোড একটি ডেটাবেজে সংরক্ষিত থাকে আর Unison Codebase Manager-এর মাধ্যমে তা অ্যাক্সেস ও আপডেট করা হয়। ডেটাবেজের ভেতরে কোড ঢোকানোর একটি উপায় মাত্র টেক্সট ফাইল। ইমিউটেবল ডেটার আরেকটি মানে হলো টেস্টের ফলাফল ক্যাশে রাখা যায়, আর টাইপ চেকিংও একবারই করতে হয়
- সংজ্ঞাগুলো নাম দিয়ে নয়, হ্যাশ দিয়ে রেফার করা হয়। এটাকে বলা হয় "কনটেন্ট-অ্যাড্রেসড" কোড। একটি সংজ্ঞার সিনট্যাক্স ট্রিই তার হ্যাশ নির্ধারণ করে। কোনো ভার্সনিং সংঘর্ষ নেই, নাম বদলানো তুচ্ছ ব্যাপার।
- Unison ডকুমেন্টেশন ভাষার একটি ফার্স্ট-ক্লাস এনটিটি এবং যে ফাংশনগুলো বর্ণনা করে তাদের সঙ্গে তা সবসময় সিঙ্কে থাকে। এতে আপনি লাইভ উদাহরণ বসাতে পারেন এবং নিশ্চিত করতে পারেন যে আপনার উদাহরণ কোড কম্পাইল হয়।
- ক্লাউড কম্পিউটেশনের জন্য আদর্শ: কোনো বিল্ড নেই, ফাংশন মুহূর্তেই ডিস্ট্রিবিউট করা যায়, আর Unison-এর সার্ভিস-টু-সার্ভিস যোগাযোগের জন্য এনকোডার-ডিকোডার লিখতে কম সময় লাগে।
Pharo
- সোজাসাপ্টা এক্সিকিউশন মডেল: সবকিছুই অবজেক্ট, আর এক্সিকিউশন ঘটে একচেটিয়াভাবে মেসেজের মাধ্যমে (যেগুলোও অবজেক্ট)। এমনকি কন্ট্রোল ফ্লোও মেসেজ দিয়েই হয়। মডেলটি সরল হলেও এটি খুবই শক্তিশালী। অন্য অবজেক্ট-ওরিয়েন্টেড ভাষাগুলো থেকে বেশ আলাদা।
- আপনার কোড টেক্সট ফাইলে নয়, একটি Pharo ইমেজে থাকে। একটি Pharo ইমেজে আপনার অ্যাপ্লিকেশনের পুরো স্টেট থাকে এবং তা একটি Pharo ভার্চুয়াল মেশিনে চালানো যায়। আপনি যখন কাজ সেভ করেন, Pharo তখন পরিবেশের পুরো স্টেট একটি ইমেজ ফাইল হিসেবে সেভ করে। এই ফাইলে সব অবজেক্ট, তাদের সম্পর্ক আর এক্সিকিউশন কনটেক্সট থাকে। ইমেজ ফাইলগুলো অন্য কারও সঙ্গে শেয়ার করা যায় এবং ভিন্ন মেশিন বা প্ল্যাটফর্মে লোড করা যায়। এতে ডেভেলপাররা সহজে একটি প্রকল্পে একসঙ্গে কাজ করতে বা Pharo-তে বানানো অ্যাপ্লিকেশন বিতরণ করতে পারেন
- লাইভ আর নিমগ্ন, Pharo-নির্দিষ্ট IDE-র মাধ্যমে রানটাইমে তাৎক্ষণিক ফিডব্যাক। প্রোগ্রাম চলতে চলতেও আপনি তা চালাতে ও বদলাতে পারেন! শক্তিশালী ডিবাগার, যা মেথড রিস্টার্ট করা আর হাতের মুহূর্তেই বাগ ঠিক করা সমর্থন করে
Tcl
- সোজাসাপ্টা টাইপ সিস্টেম: সবকিছুই স্ট্রিং। "সবকিছুই স্ট্রিং" ছিল আগে Tcl যেভাবে ইমপ্লিমেন্ট করা হতো। এখন ভেতরে-ভেতরে একটি শক্তিশালী টাইপ সিস্টেম আছে, যেখানে Tcl এনটিটির (স্ট্রিং, ফ্লোট, অ্যারে বা ডিকশনারি যা-ই হোক) একটি টাইপ-নির্দিষ্ট রূপ এবং একটি স্ট্রিং রূপ থাকে। এতে Tcl কোডের পারফরম্যান্স অনেক বেড়ে যায়, কারণ আর স্ট্রিং থেকে বারবার রূপান্তর করার দরকার পড়ে না।
- "সবকিছুই কমান্ড হিসেবে চলে"। কোনো বিল্ট-ইন কমান্ড নেই। Tcl-এর সঙ্গে কমান্ডের একটি "স্ট্যান্ডার্ড লাইব্রেরি" আসে, যার মধ্যে if আর while ইত্যাদি আছে। নতুন কন্ট্রোল ফ্লো কমান্ড যোগ করা খুবই সহজ: যেমন একটি until লুপ। Tcl কমান্ড ওভাররাইড করাও সহজ।
- কমপ্যাক্ট, সরল সিম্যান্টিক্স আর C-লাইব্রেরি হিসেবে ইমপ্লিমেন্ট করা হওয়ায় এমবেড করা সহজ
Ballerina
- ক্লাউড নেটিভ। JSON থেকে ইউজার-ডিফাইন্ড টাইপে বিল্ট-ইন কনভার্সন। (মাইক্রো)সার্ভিস তৈরির জন্য অতি হালকা সিনট্যাক্স। সার্ভিসগুলোর বিল্ট-ইন কনকারেন্ট এক্সিকিউশন। HTTP (1 ও 2), graphql আর gRPC-র সমর্থন বিল্ট-ইন
- আপনার কোড ভিন্ন ভিন্ন ক্লাউডে ডিপ্লয় করার জন্য স্বয়ংক্রিয়ভাবে আর্টিফ্যাক্ট তৈরি করে। এই আর্টিফ্যাক্টগুলো Dockerfile, Docker ইমেজ, Kubernetes YAML ফাইল বা সার্ভারলেস ফাংশন হতে পারে।
- কোডকে সিকোয়েন্স ডায়াগ্রাম হিসেবে দেখানোর বিল্ট-ইন ভিজুয়ালাইজেশন। কোডের প্রবাহ দেখানোর জন্য দারুণ। HTTP কলও দেখানো যায়
Red
- ডোমেইন স্পেসিফিক ভাষা/"ডায়ালেক্ট" (Rebol-এর পরিভাষা) তৈরি বা পার্স করার জন্য দুর্দান্ত। কয়েকটি বিল্ট-ইন ডায়ালেক্ট:
- Red/System: নেটিভ কোডে কম্পাইল হওয়া একটি C-লেভেল সিস্টেম প্রোগ্রামিং ভাষা
- Parse: একটি শক্তিশালী PEG পার্সার
- VID: একটি সরল GUI লেআউট তৈরির ডায়ালেক্ট
- Draw: একটি ভেক্টর 2D ড্রয়িং ডায়ালেক্ট
- Rich-text: একটি রিচ-টেক্সট বর্ণনার ডায়ালেক্ট
- সহজ GUI। সম্পূর্ণ ক্রস-প্ল্যাটফর্ম ও নেটিভ। টু-ওয়ে বাইন্ডিং, লাইভ-আপডেটিং, ইভেন্ট সমর্থন করে, আর OS-এর ফিচারগুলোতে অ্যাক্সেস দেয়
মে মাসে কোনটি বা কোনগুলো চেষ্টা করা উচিত?
প্রতিটি ভাষাই নিজের গুণে আকর্ষণীয়, তাই যেকোনোটির পক্ষেই যুক্তি দেওয়া যায়।
- ক্লাউড কম্পিউটিংয়ে আগ্রহী হলে Ballerina আর Unison দারুণ পছন্দ। Tcl-ও দারুণ কনকারেন্সি ফিচার দেয়
- অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংয়ের সঙ্গে পরিচিত হলেও এর এক ভিন্ন রূপ দেখতে চাইলে Pharo চেষ্টা করুন
- টেক্সট ফাইলের উপর নির্ভর করে না এমন ভাষায় প্রোগ্রাম করা কেমন লাগে তা অনুভব করতে চাইলে Pharo আর তার অনন্য ও শক্তিশালী IDE, অথবা Unison Codebase Manager সহ Unison, যেকোনোটিই চেষ্টা করে দেখুন।
- মিনিমালিজম পছন্দ হলে, Tcl, Prolog, Pharo আর Red সবগুলোতেই সিনট্যাক্স বেশ কম আর সিম্যান্টিক্স তুলনামূলক সরল
- প্যারাডাইমের মজার মিশ্রণ দেখতে চাইলে Ballerina, Tcl আর Red সবগুলোই ভিন্ন ভিন্ন প্যারাডাইম সমর্থন করে
- আরও অস্বাভাবিক কিছু প্যারাডাইম চেষ্টা করতে চাইলে লজিক প্রোগ্রামিংয়ের জন্য Prolog, রিঅ্যাক্টিভ প্রোগ্রামিংয়ের জন্য Red আর ডিক্লারেটিভ প্রোগ্রামিংয়ের জন্য Ballerina চেষ্টা করুন
- ফাংশনাল প্রোগ্রামিং ভালো লাগলে Unison দেখুন, বিশেষ করে এর Abilities।
- মেটাপ্রোগ্রামিংয়ে আগ্রহী হলে Tcl, Prolog, Pharo আর Red সবগুলোতেই দারুণ সমর্থন আছে
অবশ্যই, সময় থাকলে আমি দুটো-তিনটে চেষ্টা করে দেখার পরামর্শ দেব! সবগুলোই বেশ অনন্য। একই অনুশীলনী নির্বাচিত ভাষাগুলোর কয়েকটিতে গিয়ে সমাধান করুন, আর দেখুন ইমপ্লিমেন্টেশন কত আলাদা হয়।