Uploaded avatar of iHiD

অবজেক্ট ওরিয়েন্টেড অক্টোবর এসে গেছে!

@iHiD
প্রায় 3 বছর আগে
ভিডিও

ভূমিকা

সবাইকে শুভেচ্ছা। আমি আশা করি আপনারা ভালো আছেন। সেপ্টেম্বরে আমাদের বেশ ব্যস্ত মাস কেটেছে। আমরা সাইটে অনেক নতুন উন্নতি ও ফিচার এনেছি, মূলত মেন্টরিং এবং তার সাথে সম্পর্কিত কার্যপ্রবাহ উন্নত করার লক্ষ্যে। ফলস্বরূপ, এখন আমরা ৪ সপ্তাহ আগের তুলনায় দ্বিগুণ মেন্টরিং অনুরোধ পাচ্ছি, যা দারুণ। আপনি যদি এখনো মেন্টরের মাধ্যমে আপনার code রিভিউ করাননি, তবে অবশ্যই করবেন - এটি শেখার এক অসাধারণ উপায়। আর আপনি যদি অন্যদের সাহায্য করতে চান, তাহলে কিউতে অনেক অনুরোধ আপনার সাহায্যের অপেক্ষায় আছে। আপনি Contribute মেনুর Mentoring লিংকের অধীনে মেন্টর হিসেবে সাইন আপ করতে পারেন! আমরা MySQL 5.6 থেকে MySQL 8-এ একটি বড় ডেটাবেস আপডেট করেছি, যা আমি রেকর্ড করেছি এবং এটি Insiders সেকশনে পাওয়া যাচ্ছে, তাই আপনি যদি Insider হন এবং এখনো না দেখে থাকেন, তাহলে অবশ্যই দেখুন!

ঠিক আছে, এখন #12in23-এ আসি। সেপ্টেম্বর ছিল একটি মজার মাস, যেখানে আমরা সংক্ষিপ্ত, স্বল্পভাষী ভাষাগুলো নিয়ে ঘাঁটাঘাঁটি করেছি। এই মাসে আমরা অন্য দিকে যাচ্ছি, এবং অনেক বড় বড় ভাষাগুলো দেখব। আমরা অবজেক্ট ওরিয়েন্টেড ভাষাগুলোতে মনোযোগ দিচ্ছি, বিশেষ করে C#, Crystal, Java, Pharo, Ruby এবং PowerShell। আমরা ইতিমধ্যে Pharo এবং Java উভয় নিয়েই আলোচনা করেছি - যথাক্রমে মে এবং আগস্টে - তাই এই ভিডিওতে আমরা সেগুলো আবার কভার করব না, কিন্তু আপনি যদি সেই ভাষাগুলোর পরিচিতিতে আগ্রহী হন, তাহলে আগের মাসগুলোর ভিডিওগুলো দেখে নিন। তবে এই ভিডিওতে, আমরা C#, Crystal, Ruby এবং Powershell অন্বেষণ করব, এবং বরাবরের মতো এরিক আমাদের বলবেন কী এই ভাষাগুলোকে মজার এবং অনন্য করে তোলে।

ব্যাজগুলো

সর্বদা যেমন, আপনি এই ভাষাগুলোতে যেকোনো ৫টি অনুশীলনী সম্পন্ন করে অবজেক্ট ওরিয়েন্টেড অক্টোবর ব্যাজ অর্জন করতে পারেন। আমাদের বছরব্যাপী ব্যাজও আছে, যা我知道你们中的许多人正在努力争取। এর জন্য আমাদের ৫টি ফিচার্ড অনুশীলনী আছে যা আপনাকে সম্পন্ন করতে হবে, এবং সবগুলোই OOP ধাঁচে সমাধান করার জন্য ভালো মানায়। সেগুলো হলো:

  • Binary Search Tree: একটি বাইনারি ট্রিতে সংখ্যা ইনসার্ট ও সার্চ করুন
  • Circular Buffer: একটি এন্ড-টু-এন্ড সংযুক্ত ডেটা স্ট্রাকচার ইমপ্লিমেন্ট করুন
  • Clock: একটি ঘড়ি ইমপ্লিমেন্ট করুন যা তারিখ ছাড়া সময় হ্যান্ডেল করে
  • Matrix: একটি স্ট্রিং হিসেবে প্রকাশিত ম্যাট্রিক্সের সারি ও কলাম রিটার্ন করুন
  • Simple Cipher: একটি সাবস্টিটিউশন সাইফার ইমপ্লিমেন্ট করুন

ওভারভিউ

C#

  • ২০০০ সালে মাইক্রোসফটে অ্যান্ডার্স হেজলসবার্গ দ্বারা বিকশিত
  • ভাষা ও ভার্চুয়াল মেশিনের অফিসিয়াল স্পেসিফিকেশন আছে। ২০০২ সালে অফিসিয়াল ECMA স্ট্যান্ডার্ড এবং ২০০৩ সালে ISO স্ট্যান্ডার্ড হয়
  • কম্পাইলার, .NET Framework (স্ট্যান্ডার্ড লাইব্রেরি) এবং Visual Studio (এডিটর) সবই প্রথমে ক্লোজড-সোর্স ছিল, কিন্তু কম্পাইলার ও .NET Framework ২০১৪ সালে ওপেন-সোর্স করা হয়
  • Java-এর সাথে (যা কয়েক বছর আগে রিলিজ হয়েছিল) অনেক সিনট্যাক্স শেয়ার করলেও, C# ছিল Java-এর এক-থেকে-এক কপি নয় (যেমন প্রপার্টি, ভ্যালু টাইপ সাপোর্ট এবং কোন চেকড এক্সেপশন নেই)
  • বাইটকোডে কম্পাইল করে, .NET 7 থেকে মেশিন কোডে কম্পাইলেশন সাপোর্ট করে (এখনো উন্নত হচ্ছে)
  • ওয়েবসাইট থেকে এমবেডেড সিস্টেম, এবং অ্যাপ (Xamarin) থেকে গেম (Unity) পর্যন্ত প্রচুর সফটওয়্যারে ব্যবহৃত

Crystal

  • Crystal বিকশিত করেছেন আরি বোরেনজভাইগ (যার Exercism-এ একটি অ্যাকাউন্ট আছে), জুয়ান ওয়াজনারম্যান, ব্রায়ান কার্ডিফ (মূলত নাম ছিল Joy, কিন্তু ৩ দিন পরে Crystal নামকরণ করা হয় :))
  • Ruby-এর এলিগেন্স ও প্রোডাক্টিভিটি কিন্তু একটি আধুনিক কম্পাইলড ভাষার স্পিড, এফিশিয়েন্সি ও টাইপ সেফটি দিয়ে ডিজাইন করা
  • Manas সংস্থা দ্বারা বিকশিত ওপেন-সোর্স ভাষা
  • ১.০ সংস্করণ ২০২১ সালে রিলিজ হয়
  • LLVM ব্যবহার করে মেশিন কোডে কম্পাইল করে (Rust-এর মতো)
  • কম্পাইলারটি প্রথমে Ruby-তে লেখা ছিল কিন্তু পরে একটি self-hosted সংস্করণে রূপান্তরিত হয়
  • ট্রাক কোম্পানি Nikola, Manas এবং অন্যান্যরা ব্যবহার করে, বেশিরভাগ ওয়েবসাইটের জন্য, কিন্তু ক্লাউড সার্ভিস, কমান্ড-লাইন অ্যাপ্লিকেশন ও স্ক্রিপ্টের জন্যও

PowerShell

  • মাইক্রোসফটে জেফরি স্নোভারের নেতৃত্বে একটি দল তৈরি করেছে এবং মূলত ২০০৬ সালে রিলিজ হয়
  • ডেভেলপমেন্টের সূত্রপাত হয়েছিল Intel থেকে, যারা তাদের KornShell স্ক্রিপ্ট সান RISC থেকে অন্য প্ল্যাটফর্মে স্থানান্তর করতে চেয়েছিল, তাদের CPU-এর ডেভেলপমেন্টে সহায়তার জন্য। শেষ পর্যন্ত Intel একটি ভিন্ন প্ল্যাটফর্ম বেছে নেয়, কিন্তু মাইক্রোসফট তাদের নতুন শেল PowerShell-এ কাজ চালিয়ে যায়, কারণ এটি Windows সিস্টেম অ্যাডমিনিস্ট্রেশন উন্নত করার সম্ভাবনা দিয়েছিল (যা তখন বিশেষ ভালো ছিল না, প্রায়ই GUI-এর প্রয়োজন হতো)
  • সিনট্যাক্স KornShell দ্বারা অনুপ্রাণিত, কিন্তু PHP, Perl এবং অন্যান্য দ্বারাও
  • প্রথম সংস্করণ শুধু .NET Framework-এ চলত, যার মানে এটি শুধু Windows-এ চলত। কিন্তু PowerShell 6.0 (২০১৮ সালে রিলিজ) .NET Core-এ চলত, যা ক্রস-প্ল্যাটফর্ম ও ওপেন-সোর্স।
  • প্রধানত সিস্টেম অ্যাডমিনিস্ট্রেশনের জন্য ব্যবহৃত, কিন্তু CLI ইউটিলিটি বা অন্য টুলের র্যাপার প্রদানেও ব্যবহৃত। আমরা এটি Exercism রিপোর সাথে বাল্ক কাজে প্রচুর ব্যবহার করেছি

Ruby

  • ইউকিহিরো মাতসুমোতো (যিনি Matz নামে পরিচিত) দ্বারা বিকশিত এবং প্রথম ১৯৯৫ সালে রিলিজ হয়
  • Matz একটি সঠিক অবজেক্ট-ওরিয়েন্টেড স্ক্রিপ্টিং ভাষা নিয়ে কাজ করতে চেয়েছিলেন, কিন্তু বিদ্যমান অপশনগুলো (যেমন Perl ও Python) পছন্দ করেননি এবং তাই একটি নতুন ভাষা তৈরি করেন: Ruby
  • Matz Ruby-কে বর্ণনা করেন একটি সরল Lisp ভাষা হিসেবে যার মূল ভিত্তি, Smalltalk-এর মতো একটি অবজেক্ট সিস্টেম, higher-order ফাংশন দ্বারা অনুপ্রাণিত ব্লক, এবং Perl-এর মতো প্র্যাকটিক্যাল ইউটিলিটি
  • সাধারণত ইন্টারপ্রেটেড, কিন্তু মেশিন কোডে জাস্ট-ইন-টাইম কম্পাইলও করা যায়
  • অফিসিয়াল ইন্টারপ্রেটার ছাড়াও বিকল্প ইমপ্লিমেন্টেশন আছে, যেমন JRuby (JVM-এ চলে), Rubinius (LLVM ব্যবহার করে) এবং YJIT, একটি জাস্ট-ইন-টাইম কম্পাইলার যা অফিসিয়াল ইনস্টলেশন প্যাকেজের অংশ হিসেবে আসে
  • বেশিরভাগ ওয়েবসাইটে ব্যবহৃত (Ruby on Rails ব্যবহার করে), যেমন GitHub, Stripe, Shopify এবং আরও অনেক (Exercism ও Exercism ফোরামসহ!)। Ruby অটোমেশনের জন্যও ব্যবহৃত হয়

এবং প্রোগ্রামিংয়ের দৃষ্টিকোণ থেকে, এরা কীভাবে আলাদা?

এরা সবাই অবজেক্ট-ওরিয়েন্টেড ভাষা, যদিও সবাই একইভাবে এটি ইমপ্লিমেন্ট করে না (যেমন Crystal ও Ruby মেথড কল করার জন্য Smalltalk-এর মেসেজ-সেন্ডিং মডেল ব্যবহার করে)।

C#

  • স্ট্রং এবং স্ট্যাটিক্যালি টাইপড
  • ইম্পারেটিভ ও ডিক্লারেটিভ প্যারাডাইমও সাপোর্ট করে এবং 점점 더 ফাংশনাল হয়ে উঠছে

Crystal

  • স্ট্রং এবং স্ট্যাটিক্যালি টাইপড (Ruby-এর বিপরীতে)
  • ফাংশনাল ও ইম্পারেটিভ প্রোগ্রামিংও সাপোর্ট করে

PowerShell

  • স্ট্রংলি-টাইপড
  • ইম্পারেটিভ, ফাংশনাল প্রোগ্রামিং এবং পাইপলাইন-ভিত্তিক প্রোগ্রামিংও সাপোর্ট করে

Ruby

  • ডায়নামিক্যালি টাইপড
  • ফাংশনাল ও ইম্পারেটিভ প্রোগ্রামিংও সাপোর্ট করে

তবে এগুলো সবই প্রধানত অবজেক্ট-ওরিয়েন্টেড ভাষা।

কোন কোন বিষয় এই ভাষাগুলোকে দুর্দান্ত করে তোলে?

C#

  • (প্রায়) সব জায়গায় চলে, Xamarin-এর মাধ্যমে অ্যাপসহ। মূলত শুধু Windows-এ চলত, যা Mono-এর জন্ম দেয়, একটি মুক্ত ও ওপেন-সোর্স C# কম্পাইলার ও রানটাইম ইমপ্লিমেন্টেশন যা ক্রস-প্ল্যাটফর্ম ছিল। ২০১৫ সালে .NET Core চালু হয়, যা সম্পূর্ণ ক্রস-প্ল্যাটফর্ম ও ওপেন-সোর্স ছিল।
  • জেনারেল পারপাস: প্রায় যেকোনো ওয়ার্কলোডের জন্য ব্যবহার করা যায়, যার মধ্যে অ্যাপ, ওয়েবসাইট ও গেম অন্তর্ভুক্ত
  • এক্সপ্রেসিভ: তুলনামূলকভাবে অল্প C# কোড দিয়ে অনেক কিছু করা যায়। LINQ বিশেষভাবে দুর্দান্ত প্রোডাক্টিভিটি বুস্ট এবং কাজ করতে খুব মজার
  • দুর্দান্ত টুলিং, IDE এবং বিল্ড সিস্টেমের মতো অন্যান্য টুলের জন্য। Visual Studio শুধু Windows-এ চলে, কিন্তু JetBrains Rider এবং VS Code ক্রস-প্ল্যাটফর্ম
  • .NET Compiler Platform (যাকে প্রায়ই Roslyn বলা হয়) C# কোড পার্স/ট্রান্সফর্ম/জেনারেট করার একটি চমৎকার উপায় (আমরা C# টেস্ট রানার/অ্যানালাইজার/রিপ্রেজেন্টারে এটি extensively ব্যবহার করি)
  • ডকুমেন্টেশন ব্যাপক, বিস্তারিত এবং ভালোভাবে লেখা
  • বড় কমিউনিটি: অনেক রিসোর্স পাওয়া যায়, যার মধ্যে ব্লগ, ফোরাম ইত্যাদি

Crystal

  • এলিগেন্ট ও পাঠযোগ্য সিনট্যাক্স, যা Crystal কোড পড়া ও লেখা সহজ করে
  • এক্সপ্রেসিভ। Ruby-এর মতো, Crystal খুব এক্সপ্রেসিভ, যেখানে অল্প কোডে অনেক কিছু করা যায়। এটি আংশিকভাবে চমৎকার ও বিস্তৃত স্ট্যান্ডার্ড লাইব্রেরির কারণে।
  • দ্রুত। স্ট্যাটিক টাইপিং LLVM ব্যবহার করে দক্ষ মেশিন কোডে কম্পাইল করার অনুমতি দেয়, সাথে গারবেজ কালেক্টরের মাধ্যমে সরল মেমরি ম্যানেজমেন্ট।
  • অসাধারণ অবজেক্ট-ওরিয়েন্টেড ইমপ্লিমেন্টেশন। সবকিছুই একটি অবজেক্ট, যার মধ্যে ক্লাস এবং সংখ্যা ও বুলিয়ানের মতো প্রিমিটিভ টাইপও অন্তর্ভুক্ত
  • ব্যাটারি অন্তর্ভুক্ত, বড় স্ট্যান্ডার্ড লাইব্রেরি, বিল্ট-ইন ফরম্যাটার, টেমপ্লেট ইঞ্জিন, টেস্টিং ফ্রেমওয়ার্ক এবং আরও
  • ইন্টারঅপ। C লাইব্রেরির সাথে সহজ ইন্টারঅপ
  • ক্রস-প্ল্যাটফর্ম: linux, macOS ও Windows-এ চলে, যদিও Windows এখনো first-class নাগরিক নয়

PowerShell

  • শক্তিশালী: PowerShell অ্যাডমিনিস্ট্রেটরদের জন্য একটি শক্তিশালী টুল। এটি অনেক অন্যান্য সিস্টেমের সাথে ভালোভাবে ইন্টিগ্রেট করে, যেমন Windows OS (কম্পোনেন্ট, সার্ভিস ও সেটিংস), Exchange, SharePoint, Azure ইত্যাদির মতো অন্যান্য মাইক্রোসফট পণ্য। এটি REST API, ডেটাবেস, ওয়েব সার্ভিস এবং আরও অনেক প্রযুক্তির সাথেও ইন্টারঅ্যাক্ট করতে পারে।
  • অ্যাভেইলেবিলিটি: PowerShell প্রতিটি আধুনিক Windows OS-এ পূর্ব-ইনস্টল করা আসে এবং যেকোনো সিস্টেমে ইনস্টল করা যায় যা .NET চালায় (যার মধ্যে macOS, Linux এবং অনেক Unix সিস্টেম অন্তর্ভুক্ত)
  • সিকিউরিটি: PowerShell স্ক্রিপ্ট সুরক্ষিত করার এবং সাইন করা স্ক্রিপ্ট ও এক্সিকিউশন পলিসির ভিত্তিতে তাদের এক্সিকিউশন সীমাবদ্ধ করার ফিচার অন্তর্ভুক্ত করে। আপনার অটোমেশন প্রক্রিয়ার নিরাপত্তা নিশ্চিত করার জন্য এটি অত্যন্ত গুরুত্বপূর্ণ।
  • GUI: আপনি এটিকে Windows Forms বা Windows Presentation Foundation-এর মতো অন্যান্য ফ্রেমওয়ার্কের সাথে একত্রিত করে আপনার PowerShell স্ক্রিপ্টের জন্য গ্রাফিক্যাল ইন্টারফেস ডিজাইন ও তৈরি করতে পারেন যাতে এটি আরও ব্যবহারকারী-বান্ধব হয়।
  • পাইপলাইন: unix সিস্টেমে Bash-এর মতো, PowerShell আপনাকে cmdlet-গুলোকে একসাথে চেইন করতে দেয় জটিল অপারেশন ও কাজ সম্পাদন করতে, একটি cmdlet-এর আউটপুট অন্যটির ইনপুট হিসেবে পাস করে

Ruby

  • এলিগেন্ট ও পাঠযোগ্য সিনট্যাক্স, যা Ruby কোড পড়া ও লেখা সহজ করে
  • এক্সপ্রেসিভ। Ruby একটি অত্যন্ত এক্সপ্রেসিভ ভাষা, যেখানে অল্প কোডে অনেক কিছু করা যায়। এটি আংশিকভাবে চমৎকার ও বিস্তৃত স্ট্যান্ডার্ড লাইব্রেরির কারণে
  • বিশাল ইকোসিস্টেম, প্রচুর সংখ্যক উপলব্ধ লাইব্রেরি (gems) সহ
  • অসাধারণ অবজেক্ট-ওরিয়েন্টেড ইমপ্লিমেন্টেশন। সবকিছুই একটি অবজেক্ট, যার মধ্যে ক্লাস এবং সংখ্যা ও বুলিয়ানের মতো প্রিমিটিভ টাইপও অন্তর্ভুক্ত।
  • প্র্যাগমেটিক। Ruby এবং এর বেশিরভাগ লাইব্রেরি খুব প্র্যাগমেটিক, বাস্তব-জগতের সমস্যা সমাধানে মনোযোগী।
  • ইন্টারঅপ। C লাইব্রেরির সাথে সহজ ইন্টারঅপ, যা প্রায়ই ব্যবহৃত হয় যখন পারফরম্যান্স বিশেষভাবে গুরুত্বপূর্ণ। উদাহরণস্বরূপ, Nokogiri gem C লাইব্রেরিগুলোকে র্যাপ করে ভারী কাজ করানোর মাধ্যমে XML নিয়ে উচ্চ-পারফরম্যান্সে কাজ করার অনুমতি দেয়
  • অনেক ইনোভেশন ঘটছে। যেমন Stripe তৈরি করেছে Sorbet, Ruby-এর জন্য একটি টাইপ চেকার, Shopify তৈরি করেছে YJIT, Ruby-এর জন্য একটি জাস্ট-ইন-টাইম কম্পাইলার (Ruby 3.1+ এ অন্তর্ভুক্ত) এবং WASM সাপোর্ট নিয়ে কাজ চলছে

স্ট্যান্ডআউট ফিচার

C#

  • দুর্দান্ত পারফরম্যান্স, বিশেষ করে একটি ম্যানেজড ভাষার জন্য। ভাষা ও রানটাইম উভয়েই পারফরম্যান্স উন্নত করার প্রচুর ফিচার আছে, যেমন Span<t> টাইপ এবং CPU ইনট্রিনসিক্স (যেমন AVX নির্দেশনা) অ্যাক্সেস। CLR একটি পরিপক্ক, স্থিতিশীল এবং উচ্চ-পারফরম্যান্স ভার্চুয়াল মেশিন যা ক্রমাগত উন্নত হচ্ছে</t>
  • বিশাল ইকোসিস্টেম, প্রচুর সংখ্যক উপলব্ধ লাইব্রেরি সহ। সেই লাইব্রেরিগুলো C#-এর মতোই পরিপক্ক, স্থিতিশীল ও পূর্ণ-ফিচারড
  • আধুনিক ও ক্রমবর্ধমান: ভাষা ও রানটাইম এখনো বিকশিত হচ্ছে, ভাষাটিকে আরও আধুনিক করতে খুব নিয়মিত আপডেট আসছে। এর উদাহরণ:
  • সহজ কনকারেন্সির জন্য async/await
  • দক্ষ মেমরি ব্যবহারের জন্য span<t></t>
  • Nullable রেফারেন্স টাইপ (বিলিয়ন-ডলার ভুল সংশোধন)
  • রানটাইমও নিয়মিত আপডেট হয়, যেমন সরাসরি মেশিন কোডে কম্পাইল করার জন্য .NET AOT
  • অন্যান্য অনেক ভাষা/ইকোসিস্টেমের তুলনায় কম বিকল্প। বেশিরভাগ উদ্দেশ্যে, আপনি ডিফল্ট, মাইক্রোসফট-প্রদত্ত সমাধান ব্যবহার করেই কাজ চালাতে পারেন, যার মধ্যে প্রায়ই IDE-ও অন্তর্ভুক্ত থাকে। কেউ এটাকে অসুবিধাও বলতে পারে, কিন্তু এটি দুর্দান্ত হতে পারে, বিশেষ করে একটি ভাষা শুরু করার সময়

Crystal

  • উভয় জগতের সেরা। গ্লোবাল টাইপ ইনফারেন্স ও ইউনিয়ন টাইপের সমন্বয় Crystal-কে একটি ডায়নামিক্যালি টাইপড ভাষার মতো অনুভব করায় যেখানে প্রায়ই খুব কম টাইপিং নির্দিষ্ট করতে হয়, কিন্তু তবুও একটি স্ট্যাটিক্যালি টাইপড ভাষার পারফরম্যান্স ও অতিরিক্ত নিরাপত্তা গ্যারান্টি (কম্পাইল টাইমে nil চেকিংসহ) থাকে
  • মেটাপ্রোগ্রামিং। Ruby-এর ডায়নামিক, রানটাইম মেটাপ্রোগ্রামিংয়ের পরিবর্তে, Crystal-এ ম্যাক্রো আছে, যা কম্পাইল টাইমে চলে। ম্যাক্রো AST নোডে কাজ করে এবং কোড তৈরি করে। এগুলো সংজ্ঞায়িত ও ব্যবহার করা বেশ সহজ। Embedded Crystal (ECR) একটি বিল্ট-ইন টেমপ্লেট ইঞ্জিন যা ম্যাক্রো ব্যবহার করে অন্য টেক্সটে Crystal কোড এমবেড করে
  • দুর্দান্ত কনকারেন্সি। কনকারেন্সি ব্যবহার করা সহজ একটি Go-সদৃশ কনকারেন্সি মডেল দিয়ে যা ফাইবার (হালকা এক্সিকিউশন ইউনিট) ব্যবহার করে যা চ্যানেলের মাধ্যমে যোগাযোগ করে
  • প্রোডাক্টিভ ও মজার। Ruby প্রোডাক্টিভিটি ও ডেভেলপার সন্তুষ্টির জন্য বিখ্যাতভাবে ডিজাইন করা, এলিগেন্ট, পাঠযোগ্য সিনট্যাক্স ও দুর্দান্ত এরগনমিক্স সহ। যেহেতু Crystal-এর সিনট্যাক্স ও ডিজাইন Ruby-এর সাথে খুবই মিল, এটি Crystal-এর ক্ষেত্রেও প্রযোজ্য (মজার তথ্য: যথেষ্ট পরিমাণ Ruby কোড বৈধ Crystal কোড)।

PowerShell

  • Cmdlets: PowerShell তার বিল্ডিং ব্লক হিসেবে cmdlets (উচ্চারণ “command-lets”) ব্যবহার করে। এগুলো ছোট, টাস্ক-ভিত্তিক কমান্ড যা বিদ্যমান কার্যকারিতা র্যাপ করে, সিস্টেম অ্যাডমিনিস্ট্রেটরদের জন্য একটি সামঞ্জস্যপূর্ণ (যেমন যেকোনো cmdlet-এর সাহায্য দেখানোর জন্য Get-Help), অ্যাডমিনিস্ট্রেটর-বান্ধব ইন্টারফেস প্রদান করে। বিভিন্ন ধরনের “ব্যাকএন্ডের” জন্য cmdlets আছে, যেমন সমস্ত .NET ক্লাস, Windows Management Instrumentation, Azure এবং আরও অনেক। Cmdlets যেকোনো .NET ভাষায় সংজ্ঞায়িত করা যায় এবং খুব ডিক্লারেটিভ উপায়ে সংজ্ঞায়িত করা হয়, যেখানে প্যারামিটার, তাদের ভ্যালিডেশন, প্রয়োজনীয়তা (required true/false), বিকল্প (switch) নাম ইত্যাদি সহজে সংজ্ঞায়িত করা যায়।
  • অবজেক্ট-ওরিয়েন্টেড: PowerShell-এ প্রায় সবকিছুই একটি অবজেক্ট যার অনেক ভিন্ন প্রপার্টি আছে। ফাইল, প্রসেস, রেজিস্টার কী, এমনকি স্ট্রিং ও সংখ্যার মতো সরল ডেটা টাইপও অবজেক্ট হিসেবে বিবেচিত হয়, এই পদ্ধতি বিভিন্ন ধরনের ডেটা ও সার্ভিসের সাথে আপনার কাজ ও ইন্টারঅ্যাকশন সহজ করে। যারা .NET নিয়ে কাজ করেছেন তাদের কাছে এটি খুব পরিচিত লাগবে
  • রিমোট ম্যানেজমেন্ট: এটি Windows সার্ভার ও সিস্টেম, এমনকি Azure, AWS ও GCP জুড়ে ক্লাউড রিসোর্সের রিমোট ম্যানেজমেন্ট সাপোর্ট করে যা বড় মাপের অটোমেশন ও ডিপ্লয়মেন্ট পরিচালনার জন্য অত্যন্ত জরুরি।
  • এক্সটেনসিবল: এতে একটি দুর্দান্ত বিল্ট-ইন মডিউল সিস্টেম আছে, সাথে আপনি কাস্টম cmdlets, ফাংশন ও মডিউল তৈরি করতে পারেন, এবং প্রয়োজন অনুযায়ী এর সক্ষমতা আরও বাড়াতে অন্যান্য প্রোগ্রামিং ভাষা ও লাইব্রেরির সাথে কাজ করতে পারেন।

Ruby

  • প্রোডাক্টিভ ও মজার। Ruby প্রোডাক্টিভিটি ও ডেভেলপার সন্তুষ্টির জন্য বিখ্যাতভাবে ডিজাইন করা। পরিমাপ করা কঠিন হলেও, যারা Ruby ব্যবহার করেছেন তাদের উৎসাহ অনেক কিছু বলে
  • মেটাপ্রোগ্রামিং। Ruby অত্যন্ত ডায়নামিক এবং রানটাইম মেটাপ্রোগ্রামিংয়ের অনুমতি দেয়। বিদ্যমান ক্লাসে monkey-patching, ডায়নামিকভাবে মেথড যোগ করা বা কল করা, Ruby সবই কভার করে
  • Ruby on Rails ওয়েবসাইট তৈরির জন্য একটি দুর্দান্ত, পূর্ণ-ফিচারড ফ্রেমওয়ার্ক। আউট-অব-দ্য-বক্স, এতে টেমপ্লেটিং, ক্যাশিং, ActiveRecord (অবজেক্টের মাধ্যমে ডেটাবেসের সাথে ইন্টারঅ্যাক্ট করার একটি উপায়), মাইগ্রেশন, স্ক্যাফোল্ডিং, WebSockets এবং আরও অনেক কিছু আছে।

কোনটি বেছে নেবেন

  • আপনি যদি অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংয়ের সাথে পরিচিত হন কিন্তু এর একটি ভিন্ন রূপ দেখতে চান, Pharo চেষ্টা করুন
  • আপনি যদি Java বা C# জানেন কিন্তু অনেকদিন ধরেননি, আবার চেষ্টা করুন। উভয় ভাষা অনেক বিবর্তিত হয়েছে, তাই সেই চকচকে নতুন ফিচারগুলো দেখে নিন!
  • C# এবং Java (এবং কিছুটা Ruby) চাকরির খোঁজ করলে দুর্দান্ত বিকল্প, কারণ নিয়োগকর্তাদের কাছে এগুলো সবচেয়ে বেশি চাওয়া ভাষাগুলোর মধ্যে
  • আপনি যদি Ruby জানেন, Crystal চেষ্টা করে দেখুন স্ট্যাটিক্যালি টাইপড Ruby দেখতে ও অনুভব করতে কেমন হয়
  • আপনি যদি ডায়নামিক ভাষা পছন্দ করেন কিন্তু দুর্দান্ত পারফরম্যান্সও চান, Crystal দেখে আসুন
  • আপনি যদি Bash বা Windows ব্যাচ ফাইল জানেন, শেল স্ক্রিপ্টিংয়ের একটি ভিন্ন, অবজেক্ট-ওরিয়েন্টেড রূপের জন্য PowerShell চেষ্টা করুন
  • আপনি যদি সাধারণভাবে স্ক্রিপ্টিং ভাষা পছন্দ করেন, Ruby, Crystal ও PowerShell সবই ভালো বিকল্প
  • Pharo, Crystal ও Ruby দুর্দান্ত যদি আপনি কিছু মেটা-প্রোগ্রামিং করতে চান (C#-ও কিছু মেটা-প্রোগ্রামিং ফিচার পাচ্ছে)
  • টেক্সট ফাইল দ্বারা সমর্থিত নয় এমন একটি ভাষায় প্রোগ্রামিং কেমন হয় তা অনুভব করতে চাইলে, Pharo এবং এর অনন্য ও শক্তিশালী IDE চেষ্টা করুন
  • আপনি যদি ওয়েবসাইট তৈরি করতে চান, Ruby ও এর Ruby on Rails ফ্রেমওয়ার্ক চেষ্টা করার মতো
1 অক্টোবর 2023 · কাজে লেগেছে?