Bnlang সম্পর্কে
Bnlang মূলত বাংলাদেশের জন্য তৈরি একটি বহুভাষিক প্রোগ্রামিং ভাষা এবং রানটাইম। এটি ডেভেলপারদের মাতৃভাষা—বাংলায়—ভাবতে এবং ইংরেজিতে প্রকাশ করতে দেয়, কোনো semantics, tooling বা production readiness না বদলিয়েই।
মানুষ বিভিন্ন ভাষায় ভাবে এবং কাজ করে—বাংলায় শেখে, ইংরেজিতে খুঁজে এবং প্রকাশ করে। প্রচলিত ভাষা এক রূপে বাধ্য করে; Bnlang আপনাকে মানিয়ে নেয়। শিখুন, প্রোটোটাইপ বানান এবং প্রোডাকশনে চালান নিজের স্বাচ্ছন্দ্যের লিপিতে—ইকোসিস্টেম ভাঙা বা ইঞ্জিনিয়ারিং দৃঢ়তা ছাড়াই।
- দ্রুত শেখা: একই উদাহরণ দুইটি রূপে পাওয়া যায়—ইংরেজি, বাংলা একই আচরণে।
- রিভিউ সহজ: ডায়াগনস্টিকস এবং ফরম্যাটিং কোডকে মিশ্র-ভাষায়ও পাঠযোগ্য ও সঙ্গত রাখে।
- অনুবাদের ঝামেলা নেই: বাংলায় মূল ধারণা শিখুন, প্রয়োজনে ইংরেজিতে প্রোডাকশনে পাঠান।
প্রতিটি অংশ ভাষার নকশা, রানটাইম, ইন্টারঅপ এবং কমিউনিটির কারণ ব্যাখ্যা করে। এটি শিক্ষক, ব্যবহারকারী এবং অবদানকারীদের জন্য লেখা যারা বাস্তব প্রকল্পে Bnlang মূল্যায়ন করতে চান।
কীভাবে কাজ করে (এবং কেন)
Bnlang হলো আধুনিক C++ এ লেখা একটি নেটিভ, ট্রি-ওয়াকিং ইন্টারপ্রেটার। এটি libuv ব্যবহার করে অ্যাসিঙ্ক I/O চালায় এবং OpenSSL, llhttp, zlib, SQLite, libpq, mongo-c-driver এর মতো প্রমাণিত লাইব্রেরির সাথে মিলিত হয়—তাই স্কুল ও কোম্পানি Windows, Linux ও macOS-এ একটি স্বনির্ভর বাইনারি পায় যা সরাসরি চলে।
- বাংলা/ইংরেজি টোকেন স্বাভাবিক হয়ে একটি AST-তে রূপান্তরিত হয়।
- স্কোপ ও আর্গুমেন্টের জন্য স্ট্যাটিক চেক; দ্বিভাষিক ডায়াগনস্টিকস।
- UTF-8 জুড়ে — বাংলা আইডেন্টিফায়ার ও কীওয়ার্ড প্রথম-শ্রেণির নাগরিক।
- সরাসরি C++ এ বাস্তবায়িত ট্রি-ওয়াকিং এভ্যালুয়েটর — কোনো ভার্চুয়াল মেশিন নেই, কোনো ট্রান্সপাইলেশন নেই।
- Values, closures, classes ও modules সব C++ টাইপ; লাইফটাইম `shared_ptr` দ্বারা নিয়ন্ত্রিত।
- libuv ইভেন্ট লুপ অ্যাসিঙ্ক কলব্যাক, টাইমার, নেটওয়ার্কিং ও ফাইল I/O চালায়।
Execution model: Bnlang is a native tree-walking interpreter written in C++. No transpilation, no virtual machine — the runtime evaluates the AST directly and dispatches async I/O through libuv.
- বিল্ট-ইন মডিউল (HTTP সার্ভার/ক্লায়েন্ট, WebSocket, টেমপ্লেট, তিনটি DB ড্রাইভার, ক্রিপ্টো, JSON, …) সরাসরি C++ এ।
- `bnl.exe` + `bnl_core.dll`/`.so`/`.dylib` হিসেবে বা একটি একক স্ট্যাটিক বাইনারি হিসেবে ডিস্ট্রিবিউট করুন।
- FFI প্লাগইন লোডার — `bnl.json` এর পাশে `.dll`/`.so`/`.dylib` রাখুন, bnl রিকম্পাইল না করে রানটাইম এক্সটেন্ড করুন।
Runtime Stack (under the hood)
Pragmatic, portable, and proven components for Bangladesh today.
ভাষার নকশা (কেন ঠিক মনে হয়)
পার্সার তিনটি রূপ গ্রহণ করে; কম্পাইলার সেগুলো সমানভাবে ব্যবহার করে। আপনি যেভাবে ভাবেন সেভাবেই শেখান এবং কাজ করুন—কোনো 'বিশেষ মোড' কোড ছাড়াই।
বাংলাদেশের জন্য অ্যাক্সেসিবিলিটি (কেন অগ্রাধিকার)
ইন্টারঅপ ও গ্রহণ (কেন নতুন করে বানাবেন না)
গভর্নেন্স, লাইসেন্স ও সিকিউরিটি (কেন ভরসা করবেন)
রোডম্যাপ (নিকট ভবিষ্যতের অগ্রাধিকার)
কমিউনিটি ও গভর্নেন্স
আলোচনায় যোগ দিন, RFC প্রস্তাব করুন এবং রোডম্যাপ গঠনে সহায়তা করুন। ডকুমেন্টেশন থেকে মূল প্যাকেজ পর্যন্ত—প্রতিটি অবদান গুরুত্বপূর্ণ।