আমার ক্যারিয়ারের শুরু থেকেই আমি ইন্টার্প্রেটেড ল্যাংগুয়েজ নিয়ে কাজ করছি। আমি পুরো সময়টায় (৯৫% সময়) ওয়ব ভিত্তিক এ্যাপ্লিকেশনে কাজ করেছি। আরেক ভাবে বলতে গেলে আমি সিংহভাগ সময় PHP নিয়ে কাজ করেছি। কিছু টুকিটাকি কাজ Go’তে এবং TypeScript দিয়ে করেছি। এই দুটো আমি কাজ চালানোর মতো জানি, খুব প্রোফেশনাল এমন না, তো কাজ চালিয়ে নিতে পারি আরকি।
Go বেশ ভালো এবং খুব ছোট একটা ল্যাংগুয়েজ, তবে আমি OOP ঘরনার মানুষ হবার কারনে Functional paradigm এর ল্যাংগুয়েজে আমাকে খুব একটা টানে না, অর্থাৎ মজা পাইনা। অন্যদিকে JavaScript এর দুনিয়ায় প্রোগ্রামিং এর থেকে টুলিং অনেক বেশি হবার কারনে আমার কাছে সব ওলটপালট লাগে। আর JS এর দুনিয়ায় সব এতো ফাস্টার পরিবর্তন হয় যে আমি তার সাথে তাল মিলিয়ে চলতে পারি না(আমি আসলে স্লো)। TypeScript OOP হলেও আমি এখানে OOP এর পূর্ন স্বাদ নিতে পারিনি। আমার কাছে অনেক কিছুর লিমিটেশন মনে হয়েছে(এটা আমার জ্ঞানের সীমাবদ্ধতাও হতে পারে)।
আপনারা অনেকেই জানানেন আমি PHP, Laravel এর মানুষ অর্থাৎ এটা আমার প্রাইমারী স্ট্যাক। আমি এটিকে এখনও ভালোবাসি এবং এটা আমার প্রতিষ্ঠানেরও প্রাইমারী টেক স্ট্যাক। এখন আমি চাচ্ছি একটা সেকেন্ডারী টেকস্ট্যাক এডপ্ট করতে। কিন্তু সেটা কোনটা করবো সেটাই একটা বিশাল প্রশ্ন হয়ে দাঁড়িয়েছে, Go, Rust, Python, NodeJS, Java এর দুনিয়ায় এই সিদ্ধান্তটা নেয়া খুবই কঠিন। তাই আমার কাছে জাস্ট কয়েকটা প্রশ্ন ছিলো, আমি সেগুলোর উত্তর খুজতে ছিলাম,
১। আমার এমন একটা ল্যাঙ্গুয়েজ লাগবে যেটা পুর্নাঙ্গ OOP.
২। ল্যাঙ্গুয়েজটাতে মডার্ন OOP এবং Developer Experience এর সকল কিছু বিদ্যমান থাকবে।
৩। এর পারফরম্যান্স হবে Go এর কাছাকাছি।
৪। এটি হবে ক্রস প্লাটফর্ম এবং ওপেনসোর্স।
৫। ল্যাঙ্গুয়েজটি হবে কম্পাইল্ড।
৬। এর থাকবে একটিভ ও বিশাল কমিউনিটি।
৭। একে বড় কোনো কোম্পানী ব্যাকড করবে।
৮। ল্যাগুয়েজটা যেন কো-রুটিন, মাল্টিথ্রেডিং সমর্থন করে।
৯। এর সিনট্যাক্স PHP এর কাছাকাছি হলে ভালো হয়।
১০। এবং ফাইনালি এটি দিয়ে ওয়েব এবং ডেস্কটপ দুটো প্লাটফর্মেই কাজ যেন করা যায়।
এই প্রশ্নগুলো দিয়ে ফিল্টার করে আমার কাছে তিনটি ল্যাঙগুয়েজ এসেছে
১। Java
২। Kotlin
৩। C#
উপরের তিনটি ল্যাঙগুয়েজই চমৎকার, তিনটাই অসাধারন এতে কোনো সন্দেহ নাই। তবে আমি যা কন্সিডার করেছি,
১। সিন্ট্যাক্সগত ভাবে C# হচ্ছে PHP এর কাছাকাছি
২। CLR কম্পারটেভলি JVM এর তুলনায় ভালো(আমি যতটুকু রিসার্চ করে পেয়েছি)
৩। রিসেন্ট সময়ে C# বেশ ভালো কিছু পরিবর্তন নিয়ে এসেছে এবং .Net অনেক অপ্টিমাইজ করা হয়েছে ফলে Java এর সাথে তুলনা করলে C# এর পারফরম্যান্স ভালো বলা যায়।
৪। ডট নেট বেশ স্ট্রেইট ফরওয়ার্ড, আমার কাছে Java এর তুলনায় শেখাটা সহজ মনে হচ্ছে।
৫। যেহেতু আমি ওয়েব নিয়ে কাজ করি C# এখন ওয়েবে চমৎকার কাজ করে, API, Microservice, Full-stack সবকিছুই দারুন কাজ করে এখানে।
৬। C# গেম ডেভলপমেন্টের জন্যও দারুন, বিশেষ করে Unity এর সাথে।
৭। পুরো উইন্ডোজ ইকোসিস্টেম .Net এর উপরে দাড়ানো।
৮। এমন কিছু নাই যা এই ইকোসিস্টেমে পাবেনা না, Web, API, Mobile App(Android, iOS), Desktop App(Windows, MacOS, Linux), Game Development, Microservice, Serverless(Lambda), Machine Learning and AI আরও অনেক কিছু। এই সবগুলোতে ওরা টপনচ সাপোর্ট দেয়, জাস্ট করা যায় এমন না, প্রোডাকশন গ্রেডের কাজ করা যায়।
৯। এটার ব্যাক করছে Microsoft এর মতো একটা জায়ান্ট কোম্পানী, আপনি ভালোবাসেন কিংবা না, কিন্তু মাইক্রোসফটের টেক দুনিয়ায় অবদান অস্বীকার করা যাবে না। রিসেন্ট সময়ে মাইক্রোসফটের মুভমেন্টগুলো দেখলে আপনিও একেবারে অবাক হবেন।
১০। .Net হচ্ছে কমপ্লিট একটা ইকোসিস্টেম, আপনাকে এর বাহিরে সারাজীবনেও যাবার প্রয়োজন পরবে না।
আমি সিদ্ধান্ত নিয়েছি C# .Net নিয়ে পরাশুনা করার এবং এটিকে আমার সেকেন্ডারী স্ট্যাক হিসেবে গ্রহন করার(আপাতত)। আমি আমার কোম্পানীতেও C# এডাপশনের জন্য প্রায়োরিটি দিচ্ছি, যেহেতু আমরা সার্ভিসে ফোকাজড তাই আমাদের অনেক এন্টার্প্রাইজ এ্যাপ্লিকেশনের প্রোপোজার আসে। তাছাড়া রিসেন্ট সময়ে C# বেশ ভালো করছে বিশেষ করে যারা *nix ভিত্তিক OS নিয়ে কাজ করছেন তাদের জন্য Microsoft প্রতিদিন নতুন নতুন ফিচার নিয়ে আসছে।
তাই আপনারাও যারা প্রোগ্রামিং’য়ে যাত্রা শুরু করবেন ভাবছেন কিংবা সেকেন্ডারী টেক স্ট্যাক নিয়ে কাজ করবেন তারা C# কে কন্সিডার করতে পারেন। ইনশা’আল্লাহ একদিন আমাকে ধন্যবাদ দিবেন