কোড লিখুন নিজের ভাষায়
শূন্য একটি সাধারণ উদ্দেশ্যের প্রোগ্রামিং ল্যাঙ্গুয়েজ, যার কিওয়ার্ড, ভেরিয়েবলের নাম এবং সংখ্যা—সবই বাংলা। এটি হাই-লেভেল, স্ট্যাটিকালি টাইপড, এবং মেশিন কোডে কম্পাইল হয়।
// প্রথম প্রোগ্রামলেখা নাম = 'শুন্য';সংখ্যা সাল = ২০২৪;দেখাও('হ্যালো, ' + নাম + '!');যদি (সাল > ২০২০) { দেখাও('বাংলায় প্রোগ্রামিং');}- হ্যালো, শুন্য!
- বাংলায় প্রোগ্রামিং
যে ভাষা আপনি যেভাবে ভাবেন সেভাবেই পড়া যায়
তিনটি সিদ্ধান্ত বাকি সবকিছু ঠিক করে দেয়।
পুরোটাই বাংলা
কিওয়ার্ড বাংলা শব্দ, ভেরিয়েবলের নাম বাংলা শব্দ, আর সংখ্যা লেখা হয় ০ থেকে ৯ দিয়ে। কিছুই লিপ্যন্তর করা নয়, আর ভেতরে কোনো ইংরেজি ভাষার মোড়কও নেই।
স্ট্যাটিকালি টাইপড
প্রতিটি ভেরিয়েবলের ধরন প্রোগ্রাম চলার আগেই কম্পাইলার জানে। যে মান তার জায়গায় খাপ খায় না, সেটি বিল্ড এরর—ব্যবহারকারীর সামনে হঠাৎ আসা বিস্ময় নয়।
মেশিন কোডে কম্পাইল হয়
শূন্য চলার সময় ইন্টারপ্রেট হয় না। কম্পাইলার আপনার সোর্সকে এক্সিকিউটেবল বানায়, তাই তৈরি প্রোগ্রাম এমন একটি ফাইল যা অন্য কাউকে দিয়ে দেওয়া যায়।
শুন্য মানে শূন্য
ভাষাটির নাম এই অঙ্কটির নামে, আর যুক্তির শুরুও এখান থেকেই।
বাংলার নিজস্ব সংখ্যা আছে, আর শূন্য সেগুলোই ব্যবহার করে: কম্পাইলারের কাছে ৫ একটি সংখ্যা, রূপান্তর করার মতো কোনো অক্ষর নয়।
শূন্য সৎ সূচনাবিন্দুও বটে। শূন্য ধরে নেয় না যে আপনি ইংরেজি জানেন, আগে কোনো ভাষা শিখেছেন, বা বাইরের কোনো শব্দভান্ডার আপনার আছে।
বাংলাভাষী শিশু সবার আগে যে অঙ্কটি লিখতে শেখে, এখন সেটি দিয়েই সে হিসাব করাতে পারে।
পুরো ভাষাটি, এক পর্দায়
শূন্য-এর সবকটি সংরক্ষিত শব্দ। কোনো কার্ডের ওপর মাউস নিলে ব্যবহারের নমুনা দেখা যাবে।
- চলকvarঘোষণাচলক ক = ৫;
- ধ্রুবকconstঘোষণাধ্রুবক পাই = ৩.১৪;
- সংখ্যাintধরনসংখ্যা বয়স = ২৫;
- ভগ্নাংশfloatধরনভগ্নাংশ দাম = ৯.৫;
- লেখাstringধরনলেখা নাম = 'রফিক';
- বুলboolধরনবুল সত্যি = সত্য;
- সারিarrayধরনসারি নামগুলো;
- সত্যtrueলিটারেলবুল ক = সত্য;
- মিথ্যাfalseলিটারেলবুল খ = মিথ্যা;
- যদিifনিয়ন্ত্রণযদি (ক > ৫) { }
- নাহলেelseনিয়ন্ত্রণনাহলে { }
- নাহলে_যদিelse ifনিয়ন্ত্রণনাহলে_যদি (ক < ০) { }
- যখনwhileনিয়ন্ত্রণযখন (ক < ১০) { }
- চক্রforনিয়ন্ত্রণচক্র (ক) { }
- থামাওbreakনিয়ন্ত্রণথামাও;
- চালাওcontinueনিয়ন্ত্রণচালাও;
- এবংandঅপারেটরযদি (ক এবং খ) { }
- অথবাorঅপারেটরযদি (ক অথবা খ) { }
- নয়notঅপারেটরযদি (নয় ক) { }
- ফাংশনfunctionফাংশনফাংশন যোগ() { }
- পাঠাওreturnফাংশনপাঠাও ফল;
- দেখাওprintবিল্ট-ইনদেখাও('হ্যালো');
এটুকুই পুরো শব্দভান্ডার—দ্বিতীয় কোনো পাতা নেই। যে ভাষা মাথায় ধরে রাখা যায়, সেটি আজ সন্ধ্যায়ই ব্যবহার শুরু করা যায়।
সংখ্যা লেখা হয় ০ থেকে ৯
দেখানোর জন্য রূপান্তর করা নয়—লেক্সার এটিই পড়ে, আর প্রোগ্রামও এটিই ছাপে।
- 0০
- 1১
- 2২
- 3৩
- 4৪
- 5৫
- 6৬
- 7৭
- 8৮
- 9৯
শূন্য-তে সাংখ্যিক লিটারেল মেলানো হয় [০-৯] দিয়ে, আর দশমিক অংশও একই অঙ্কে। বাংলা সংখ্যা ঢোকে, বাংলা সংখ্যাই বেরোয়—মাঝখানে কিছুই অনুবাদ হয় না।
সংখ্যা ক = ৭;সংখ্যা খ = ৬;দেখাও(ক * খ);দেখাও(ক + খ);- ৪২
- ১৩
সত্যিকারের প্রোগ্রাম, আর তারা যা ছাপে
নিচের প্রতিটি আউটপুট এই পাতা তৈরির সময় ঠিক ওই প্রোগ্রামটি চালিয়ে পাওয়া।
দেখাও('হ্যালো, আমি শুন্য!');- হ্যালো, আমি শুন্য!
শূন্য-এর নিজস্ব ডকুমেন্টেশনের উদাহরণ, অপরিবর্তিত। দেখাও তার আর্গুমেন্ট ছাপে।
সংখ্যা বয়স = ২৫;ভগ্নাংশ উচ্চতা = ৫.৮;লেখা নাম = 'রফিক';বুল ছাত্র = সত্য;দেখাও(নাম);দেখাও(বয়স);দেখাও(উচ্চতা);দেখাও(ছাত্র);- রফিক
- ২৫
- ৫.৮
- সত্য
চারটি বিল্ট-ইন ধরন। C-এর মতোই ধরনের নাম দিয়ে ঘোষণা শুরু হয়।
সংখ্যা নম্বর = ৮৫;যদি (নম্বর >= ৮০) { দেখাও('এ প্লাস');} নাহলে_যদি (নম্বর >= ৭০) { দেখাও('এ');} নাহলে { দেখাও('আরও চেষ্টা করো');}- এ প্লাস
যদি, নাহলে_যদি আর নাহলে। তুলনার অপারেটরগুলো আপনার চেনা চিহ্নই।
চলক গণনা = ১;চলক যোগফল = ০;যখন (গণনা <= ১০) { যোগফল = যোগফল + গণনা; গণনা = গণনা + ১;}দেখাও('এক থেকে দশ পর্যন্ত যোগফল');দেখাও(যোগফল);- এক থেকে দশ পর্যন্ত যোগফল
- ৫৫
শর্ত সত্য থাকা পর্যন্ত যখন চলতে থাকে। চলক দিয়ে ঘোষিত ভেরিয়েবলের ধরন অনুমান করে নেওয়া হয়।
সংখ্যা সংখ্যাটি = ২৯;চলক ভাজক = ২;বুল মৌলিক = সত্য;যখন (ভাজক < সংখ্যাটি) { যদি (সংখ্যাটি % ভাজক == ০) { মৌলিক = মিথ্যা; থামাও; } ভাজক = ভাজক + ১;}যদি (মৌলিক) { দেখাও('মৌলিক সংখ্যা');} নাহলে { দেখাও('মৌলিক নয়');}- মৌলিক সংখ্যা
ভাগ করে পরীক্ষা, আর থামাও দিয়ে লুপ থেকে আগেভাগে বেরিয়ে আসা। ঊনত্রিশ মৌলিক।
আপনার লাইন টোকেনে ভাঙে
কম্পাইলার প্রথমে যা করে তা হলো লেখাটিকে অর্থবহ ক্ষুদ্রতম টুকরোয় কেটে ফেলা।
সংখ্যা মোট = ৫ + ৩;
- সংখ্যাধরন
- মোটনাম
- =অপারেটর
- ৫সংখ্যা
- +অপারেটর
- ৩সংখ্যা
- ;চিহ্ন
প্রতিটি চিপ একটি টোকেন, সঙ্গে তার শ্রেণি
টোকেন থেকে গাছ
পার্সার বের করে কোনটা কার সঙ্গে যায়—এখানেই আপনার হিসাবের বন্ধনী নিছক চিহ্ন থাকে না, কাঠামো হয়ে ওঠে।
পার্সার এই স্টেটমেন্টের জন্য যে সিনট্যাক্স ট্রি বানায়
ভুল প্রোগ্রাম কম্পাইলার বানাতে অস্বীকার করে
স্ট্যাটিকালি টাইপড হওয়ার আসল লাভ এটাই: ভুলটা এখনই ধরা পড়ে, যন্ত্রের হাতে—পরে ব্যবহারকারীর হাতে নয়।
সংখ্যা বয়স = ২৫;লেখা নাম = 'রফিক';দেখাও(নাম + বয়স);$ shunno build main.shno
- main.shno:4 ‘+’ cannot join লেখা and সংখ্যা
- ১টি এরর — কোনো এক্সিকিউটেবল তৈরি হয়নি
সংখ্যা বয়স = ২৫;লেখা নাম = 'রফিক';দেখাও(নাম);দেখাও(বয়স);$ shunno build main.shno
সফলভাবে তৈরি হয়েছে
কিছুই চলেনি। অর্ধেক লেখা আউটপুট নেই, আধা-তৈরি ফাইলও নেই—প্রোগ্রামটির একটি লাইনও চালানোর আগেই সেটি বাতিল হয়েছে।
আপনার লেখা থেকে এক্সিকিউটেবল
ছয়টি ধাপ, আর প্রতিটির পর প্রোগ্রামটি অন্যরকম একটি জিনিস।
- সোর্সদেখাও('হ্যালো');আপনি যা লিখেছেন।
- লেক্সার[দেখাও] [(] ['হ্যালো'] [)] [;]টোকেনে কাটা।
- পার্সারদেখাও └ 'হ্যালো'গাছের আকারে সাজানো।
- টাইপ চেকলেখা ✓প্রতিটি মান তার জায়গায় মেলানো।
- কোড জেনারেশনmov rdi, msg call printইনস্ট্রাকশনে নামানো।
- এক্সিকিউটেবল48 89 F8 E8 00মেশিন কোড, চালানোর জন্য প্রস্তুত।
যে ফাংশন নিজেকেই ডাকে
প্রতিটি কল তার নিচেরটির জন্য অপেক্ষা করে, আর উত্তরগুলো ফেরে ঠিক উল্টো ক্রমে।
ফাংশন ক্রমগুণ(সংখ্যা ন) { যদি (ন <= ১) { পাঠাও ১; } পাঠাও ন * ক্রমগুণ(ন - ১);}দেখাও(ক্রমগুণ(৫));- ক্রমগুণ(৫)ফেরায়১২০
- ক্রমগুণ(৪)ফেরায়২৪
- ক্রমগুণ(৩)ফেরায়৬
- ক্রমগুণ(২)ফেরায়২
- ক্রমগুণ(১)ফেরায়১
পাশের এই ট্রেসটি মেপে নেওয়া নয়, লিখে দেওয়া—এই সাইটের বাকি নমুনাগুলো যে ব্রাউজার-ইন্টারপ্রেটার চালায়, সেটি এখনো ফাংশন ঘোষণা চালাতে পারে না।
এক সন্ধ্যায় শিখে ফেলার মতো ছোট
এতে খুব বেশি কিছু নেই, আর সেটাই নকশা।
সংরক্ষিত শব্দ
সম্পূর্ণ শব্দভান্ডার
বিল্ট-ইন ধরন
সংখ্যা, ভগ্নাংশ, লেখা, বুল, সারি
এডিটর ইন্টিগ্রেশন
VS Code, JetBrains
চিরকালের খরচ
STechBD License-এর আওতায় বিনামূল্যে
প্রচলিত একটি কম্পাইলার, খোলাখুলি
Lex ও Yacc দিয়ে ফ্রন্ট এন্ড, C++ ড্রাইভার, লক্ষ্য x86-64। অস্বাভাবিক কিছু নেই, আর পুরোটাই পড়ে বোঝা যায়।
টুলচেইন ও লক্ষ্য
- Lex
- Yacc
- Flex
- Bison
- C++
- GCC
- Make
- CMake
- Windows
- x86-64
- Machine code
- Static typing
- Unicode
- UTF-8
- Bengali numerals
- CLI
- VS Code
- JetBrains
- TextMate grammar
- GitHub
- STechBD License
- Free
- Open source
- STechBD
ভাষার চারপাশে যা পাবেন
একা কম্পাইলার মানে গবেষণা প্রকল্প। এগুলোই সেটিকে প্রকল্প শুরু করার মতো জিনিস বানায়।
কম্পাইলার
Lex/Yacc ফ্রন্ট এন্ড আর তার C++ ড্রাইভার, GitHub-এ। ক্লোন করুন, বিল্ড করুন, পড়ুন।
এখনই পাওয়া যাচ্ছেVS Code এক্সটেনশন
সব কিওয়ার্ড, দুই ধরনের মন্তব্য আর বাংলা সাংখ্যিক লিটারেলের সিনট্যাক্স হাইলাইটিং।
এখনই পাওয়া যাচ্ছেডকুমেন্টেশন
ভাষার রেফারেন্স ও টিউটোরিয়াল, docs.stechbd.net-এ।
এখনই পাওয়া যাচ্ছেJetBrains প্লাগইন
IntelliJ-পরিবারের এডিটরের জন্য একই হাইলাইটিং। রিপোজিটরি আছে; প্লাগইন এখনো প্রকাশিত হয়নি।
কাজ চলছে
যা হয়েছে, আর যা পরে
শূন্য ছোট একটি প্রকল্প, তালিকাও ছোট। এটিই তার সৎ রূপ।
- v1.0.0সম্পন্ন
প্রথম প্রকাশ
সংস্করণ ১.০.০ — ভাষা, কম্পাইলার আর ডকুমেন্টেশন, একসঙ্গে প্রকাশিত।
- Windowsসম্পন্ন
Windows কম্পাইলার
Lex/Yacc ফ্রন্ট এন্ড ও C++ ড্রাইভার, নেটিভ এক্সিকিউটেবল তৈরি করে।
- Editorsচলমান
এডিটর সাপোর্ট
VS Code এক্সটেনশন প্রকাশিত। JetBrains প্লাগইনের রিপোজিটরি আছে, কাজ শেষ হয়নি।
- Linux · macOSপরিকল্পিত
আরও প্ল্যাটফর্ম
Linux ও macOS বিল্ড। শুরু হয়নি, আর কোনো তারিখের প্রতিশ্রুতিও নেই।
এখানেই শূন্য লিখুন
ইনস্টল নেই, অ্যাকাউন্ট নেই। প্রোগ্রামটি বদলান, চালান চাপুন, আউটপুট পড়ুন।
এই প্রোগ্রামটি কম্পাইল ও চালাতে “চালান” চাপুন।
এটি শূন্য-এর একটি অংশের জন্য ব্রাউজারে চলা ইন্টারপ্রেটার, আসল কম্পাইলার নয়। ঘোষণা, দেখাও, যদি, যখন, থামাও ও চালাও কাজ করে; ফাংশন, চক্র ও সারি চেনা যায় কিন্তু চালানো হয় না।
শূন্য আর তার চারপাশের সবকিছু
এস টেকনোলজিস যা তৈরি ও রক্ষণাবেক্ষণ করে, ভাষাটি তারই একটি বড় বৃত্তের ভেতরে।
কারা তৈরি করেন
ছোট একটি প্রকল্প, নির্ভুলভাবে বলা।
আপনার প্রথম শূন্য প্রোগ্রাম মাত্র এক লাইনের
কম্পাইলার ইনস্টল করুন, কিংবা সেটি বাদ দিয়ে সরাসরি ব্রাউজারেই কিছু লিখুন। যেভাবেই হোক, আগামী কয়েক মিনিটের মধ্যেই আপনি বাংলায় একটি প্রোগ্রাম চালিয়ে ফেলবেন।
STechBD License-এর আওতায় বিনামূল্যে। সোর্স GitHub-এ।

