Bnlang · প্রোগ্রামিং ভাষা

Bnlang সম্পর্কে

Bnlang মূলত বাংলাদেশের জন্য তৈরি একটি বহুভাষিক প্রোগ্রামিং ভাষা এবং রানটাইম। এটি ডেভেলপারদের মাতৃভাষা—বাংলায়—ভাবতে এবং ইংরেজিতে প্রকাশ করতে দেয়, কোনো semantics, tooling বা production readiness না বদলিয়েই।

কেন Bnlang (বাংলাদেশের জন্য)

মানুষ বিভিন্ন ভাষায় ভাবে এবং কাজ করে—বাংলায় শেখে, ইংরেজিতে খুঁজে এবং প্রকাশ করে। প্রচলিত ভাষা এক রূপে বাধ্য করে; Bnlang আপনাকে মানিয়ে নেয়। শিখুন, প্রোটোটাইপ বানান এবং প্রোডাকশনে চালান নিজের স্বাচ্ছন্দ্যের লিপিতে—ইকোসিস্টেম ভাঙা বা ইঞ্জিনিয়ারিং দৃঢ়তা ছাড়াই।

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

প্রতিটি অংশ ভাষার নকশা, রানটাইম, ইন্টারঅপ এবং কমিউনিটির কারণ ব্যাখ্যা করে। এটি শিক্ষক, ব্যবহারকারী এবং অবদানকারীদের জন্য লেখা যারা বাস্তব প্রকল্পে Bnlang মূল্যায়ন করতে চান।

প্রকল্পের অবস্থা
bnl-vscode, bnl-web (ওয়েবসাইট), এবং bpm ওপেন সোর্স ও বিনামূল্যে। প্রধান Bnlang রানটাইম সোর্স এখন প্রাইভেট (পরে ওপেন সোর্স করার পরিকল্পনা আছে)।
খরচ
Bnlang ডিস্ট্রিবিউশন ও টুলিং সম্পূর্ণ বিনামূল্যে ব্যবহারযোগ্য—কোনো লাইসেন্স ফি নেই, কোনো লুকানো চার্জ নেই। ব্যক্তি, স্কুল ও কোম্পানি বিনা খরচে এটি গ্রহণ করতে পারে, শেখা, সহযোগিতা ও প্রোডাকশন ডিপ্লয়মেন্ট সহজলভ্য করে।

কীভাবে কাজ করে (এবং কেন)

Bnlang হলো আধুনিক C++ এ লেখা একটি নেটিভ, ট্রি-ওয়াকিং ইন্টারপ্রেটার। এটি libuv ব্যবহার করে অ্যাসিঙ্ক I/O চালায় এবং OpenSSL, llhttp, zlib, SQLite, libpq, mongo-c-driver এর মতো প্রমাণিত লাইব্রেরির সাথে মিলিত হয়—তাই স্কুল ও কোম্পানি Windows, Linux ও macOS-এ একটি স্বনির্ভর বাইনারি পায় যা সরাসরি চলে।

ফ্রন্টএন্ড: Lexer, Parser, Checker
  • বাংলা/ইংরেজি টোকেন স্বাভাবিক হয়ে একটি AST-তে রূপান্তরিত হয়।
  • স্কোপ ও আর্গুমেন্টের জন্য স্ট্যাটিক চেক; দ্বিভাষিক ডায়াগনস্টিকস।
  • UTF-8 জুড়ে — বাংলা আইডেন্টিফায়ার ও কীওয়ার্ড প্রথম-শ্রেণির নাগরিক।
ব্যাকএন্ড: নেটিভ C++ ইন্টারপ্রেটার
  • সরাসরি 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.

নেটিভ Stdlib ও FFI: C++
  • বিল্ট-ইন মডিউল (HTTP সার্ভার/ক্লায়েন্ট, WebSocket, টেমপ্লেট, তিনটি DB ড্রাইভার, ক্রিপ্টো, JSON, …) সরাসরি C++ এ।
  • `bnl.exe` + `bnl_core.dll`/`.so`/`.dylib` হিসেবে বা একটি একক স্ট্যাটিক বাইনারি হিসেবে ডিস্ট্রিবিউট করুন।
  • FFI প্লাগইন লোডার — `bnl.json` এর পাশে `.dll`/`.so`/`.dylib` রাখুন, bnl রিকম্পাইল না করে রানটাইম এক্সটেন্ড করুন।
Packages ও Stdlib (কেন)
BPM integrity checks ও semantic version দেয়। স্ট্যান্ডার্ড লাইব্রেরিতে I/O, HTTP/WebSocket, টেমপ্লেট, তিনটি ডাটাবেস, ক্রিপ্টো ও টেক্সট ইউটিলিটি — যেখানে দরকার সেখানে দ্বিভাষিক, প্রতিটি OS-এ একই আচরণ।
টুলিং (কেন)
REPL, টেস্ট রানার, ফরম্যাটার ও স্ক্যাফোল্ডিং ভাষার সাথে আসে। ক্লাসরুম ও CI-তে আপগ্রেড পূর্বানুমানযোগ্য থাকে কারণ টুল একসাথে বিকশিত হয়।
Interop (কেন আলাদা বাগান নয়)
C++ হোস্ট অ্যাপ্লিকেশনে সরাসরি `bnl_core` এমবেড করুন, অথবা FFI লোডার দিয়ে রানটাইমে নেটিভ প্লাগইন লোড করুন। কোনো ট্রান্সপাইলেশন স্টেপ নেই — ইন্টারপ্রেটারই রানটাইম।

Runtime Stack (under the hood)

Pragmatic, portable, and proven components for Bangladesh today.

C++20
পুরো Bnlang রানটাইম আধুনিক C++ — লেক্সার, পার্সার, ট্রি-ওয়াকিং ইন্টারপ্রেটার, ভ্যালু মডেল ও প্রতিটি বিল্ট-ইন নেটিভ মডিউল। কোনো VM নেই, কোনো ট্রান্সপাইলেশন স্টেপ নেই।
libuv
ক্রস-প্ল্যাটফর্ম অ্যাসিঙ্ক I/O — নেটওয়ার্কিং, ফাইল সিস্টেম, টাইমার, ইভেন্ট লুপ ও চাইল্ড প্রসেস। উচ্চ-থ্রুপুট, নন-ব্লকিং ওয়ার্কলোডের জন্য পরীক্ষিত ভিত্তি।
OpenSSL
HTTPS ও WebSocket-over-TLS এর জন্য TLS, এবং ক্রিপ্টো মডিউলের বিল্ডিং ব্লক (হ্যাশিং, HMAC, base64/hex কোডেক, সিকিউর র‍্যান্ডম)।
llhttp
দ্রুত, সিকিউরিটি-অডিটেড HTTP/1.1 পার্সার। বিল্ট-ইন HTTP রিকোয়েস্ট ও রেসপন্স পার্সার চালায়, যা ওয়েব সার্ভার ও ক্লায়েন্ট ব্যবহার করে।
SQLite · libpq · mongo-c-driver
ডাটাবেস ড্রাইভার কম্পাইল ইন। এমবেডেড SQLite; PostgreSQL এর জন্য libpq; MongoDB এর জন্য mongo-c-driver — সবই একই `import "pg"` / `import "sqlite"` ইত্যাদি API এর পিছনে।
zlib
gzip / deflate / র‍্যাও inflate। HTTP কন্টেন্ট-এনকোডিং ও সাধারণ ডেটা প্রসেসিং এ ব্যবহৃত হয়।

ভাষার নকশা (কেন ঠিক মনে হয়)

পার্সার তিনটি রূপ গ্রহণ করে; কম্পাইলার সেগুলো সমানভাবে ব্যবহার করে। আপনি যেভাবে ভাবেন সেভাবেই শেখান এবং কাজ করুন—কোনো 'বিশেষ মোড' কোড ছাড়াই।

দ্বিভাষিক কীওয়ার্ড এবং API
কন্ট্রোল ফ্লো এবং ঘোষণা বাংলায়/ইংরেজিতে বিদ্যমান; টুলিং বিশ্লেষণ এবং আউটপুটের জন্য স্বাভাবিক করে।
নিরাপত্তা এবং স্বচ্ছতা
স্পষ্ট ইমপোর্ট, পূর্বানুমানযোগ্য স্কোপিং, কঠোর ফরম্যাটার এবং পাঠযোগ্য এরর রিভিউকে যুক্তিতে ফোকাস রাখে।
অ্যাক্সেসিবিলিটি-প্রথম
ইউনিকোড-সেফ যতিচিহ্ন, প্রচলিত বাংলা কীবোর্ড অভ্যাসের সাথে সামঞ্জস্যপূর্ণ উদাহরণ এবং দ্বিভাষিক ডায়াগনস্টিকস।

বাংলাদেশের জন্য অ্যাক্সেসিবিলিটি (কেন অগ্রাধিকার)

ভাষার বাস্তবতা
বাংলায় শিখুন, ইংরেজিতে খুঁজুন। Bnlang তিনটিকেই সমর্থন করে কোনো 'মোড সুইচিং' ছাড়াই।
ফন্ট এবং ইউনিকোড
কম্পাইলার এবং ফরম্যাটার বাংলা যতিচিহ্ন/সংখ্যা হ্যান্ডেল করে; ডকস সহজলভ্য ফন্ট সুপারিশ করে।
লো ব্যান্ডউইথ এবং পাওয়ার
ছোট ডাউনলোড, নির্ধারিত ইনস্টল এবং অফলাইন ডকস বাস্তব ক্লাসরুমে ঘর্ষণ কমায়।

ইন্টারঅপ ও গ্রহণ (কেন নতুন করে বানাবেন না)

ইমপোর্ট / এক্সপোর্ট
বিদ্যমান C/C++ লাইব্রেরি ব্যবহার করুন; পরিচ্ছন্ন ইন্টারফেস এক্সপোর্ট করুন। যে কোনো প্ল্যাটফর্মে চালান যা রানটাইম সমর্থন করে।
ধাপে ধাপে মাইগ্রেশন
প্রথমে স্ক্রিপ্ট বা একটি সার্ভিস দিয়ে শুরু করুন; বাকি অংশ বিদ্যমান ভাষায় থাকুক। কেবল প্রয়োজন হলে হট পাথ C++ এ নিন।
ডিটারমিনিস্টিক বিল্ড
Lockfiles এবং checksums CI এবং ল্যাব মেশিনে একই আচরণ নিশ্চিত করে—even অনিয়মিত কানেক্টিভিটিতেও।

গভর্নেন্স, লাইসেন্স ও সিকিউরিটি (কেন ভরসা করবেন)

ওপেন গভর্নেন্স
কমিউনিটি RFC পরিবর্তন গড়ে। ব্রেকিং পরিবর্তন মাইগ্রেশন গাইড ও টুল সাপোর্ট সহ আসে।
লাইসেন্সিং
bnl-vscode, bnl-web, এবং bpm ওপেন সোর্স; মূল রানটাইম সোর্স এখন প্রাইভেট (পরে ওপেন সোর্স করার পরিকল্পনা আছে)। সবই বিনামূল্যে ব্যবহারযোগ্য।
সিকিউরিটি ও টেলিমেট্রি
দায়িত্বশীল ডিসক্লোজার, সাইনড আর্টিফ্যাক্ট এবং ঐচ্ছিক, প্রাইভেসি-সম্মানজনক টেলিমেট্রি (যেকোনো সময় অপ্ট-আউট)।

রোডম্যাপ (নিকট ভবিষ্যতের অগ্রাধিকার)

v1.x স্থিতিশীলতা
মূল সিনট্যাক্স লক করুন, stdlib মডিউল ফাইনালাইজ করুন, এবং শিক্ষাবিদ ও কোম্পানির জন্য LTS উইন্ডো ঘোষণা করুন।
টুলিং গভীরতা
ল্যাঙ্গুয়েজ সার্ভার পরিশীলন, ভালো এডিটর ইন্টিগ্রেশন এবং উন্নত ডিবাগ/ট্রেস সুবিধা।
নেটিভ পারফরম্যান্স
C++ মডিউল সম্প্রসারণ, হট পাথ প্রোফাইল করা এবং সমর্থিত সব OS/arch জুটির জন্য প্রিবিল্ট বাইনারি দেওয়া।

কমিউনিটি ও গভর্নেন্স

আলোচনায় যোগ দিন, RFC প্রস্তাব করুন এবং রোডম্যাপ গঠনে সহায়তা করুন। ডকুমেন্টেশন থেকে মূল প্যাকেজ পর্যন্ত—প্রতিটি অবদান গুরুত্বপূর্ণ।