"সবুজ" একটি প্রোগ্রামিং ভাষা যা দিয়ে সম্পূর্ণ বাংলায় কম্পিউটার কোড লিখা যায়, সরাসরি অপারেটিং সিস্টেমের কমান্ড লাইন থেকে সেই কোড কম্পাইল ও রান করা যায়। "সবুজ" প্রোগামিং ভাষার উদ্ভাবক "মোঃ সবুজ সরকার" ছোটবেলা থেকেই যখন জানতে পারেন যে কম্পিউটারের মাধ্যমে যা কিছু হয় সে সব কিছু পরিচালিত হয় কোডের মাদ্ধমে এবং সেই সকল কোড কোনো না কোনো প্রোগ্রামিং ভাষায় লিখা হয় তখন থেকে তিনি স্বপ্ন দেখতে শুরু করেন বাংলায় কোড লিখা যাবে এমন একটি প্রোগ্রামিং ভাষার তিনি তৈরী করবেন।
English version of the README: README-EN.MD
এই প্রোগ্রামিং ভাষায় লিখিত একটি 'হ্যালো ওয়ার্ল্ড' প্রোগ্রাম দেখিয়ে পরিচিতি শুরু করিঃ
যন্ত্র শুরু! {
লিখ! `বাংলায় কম্পিউটাররে সাথে কথা বলি।`;
}
এই কোডটি রান করানোর পর আপনি দেখতে পাবেন
বাংলায় কম্পিউটাররে সাথে কথা বলি।
প্রথম যেই শব্দটি (কি-ওয়ার্ড) দেখছেন সেটি হলো "যন্ত্র"। যন্ত্র কি করে? একটি যন্ত্র কোন কাজ করে - সুন্দরভাবে বললে 'একটি কর্ম সম্পাদন করে'। আবার যন্ত্র শুধু কাজই করে না বরং অধিকাংশ যন্ত্র কিছু গ্রহণ করে (ইনপুট নেয়), নিজের কিছু কাজ করার পাশাপাশি সেই গ্রহণ করা বস্তুর উপর কাজ করে এবং কিছু ফেরত দেয় (আউটপুট দেয়)। যেমন, সরিষার তেল তৈরি করা যন্ত্র সরিষা গ্রহণ করে, সেটি মাড়ায় করে, এবং সরিষার তেল ও খৈল ফেতর দেয়। একই ভাবে জুস তৈরি করার ব্লেন্ডারের কথা ভাবুন। সেই সব জন্ত্রের ইনপুট, আউটপুট ঐসব নিয়ে পরে কথা বলবো। আপাতত আমরা যে যন্ত্র তৈরী করতে যাচ্ছি সে খুবই সাধারণ।
"যন্ত্র" শব্দটি দিয়ে বোঝানো হয় যে আপনি কোডের মধ্যে একটি যন্ত্র তৈরি করতে যাচ্ছেন। তো, যন্ত্রের তো একটি নাম দিতে হবে। আমরা যন্ত্রের নাম দিচ্ছি "শুরু"। আবার এই "শুরু" যন্ত্রটি খুবই বিশেষ একটি যন্ত্র। অন্নান্য যন্ত্র নিজে চালু হতে পারে না। কিন্তু "শুরু" নামের যন্ত্র বড়য় উৎসুক, সে প্রোগ্রাম রান হবার সাথে সাথে চালু হয়ে যায়, কোন স্টার্ট দেওয়া লাগে না। অর্থাৎ, এই প্রোগ্রামিং ভাষায় "শুরু" নামের যন্ত্র দিয়েই প্রোগ্রাম শুরু হয়।
এইবার আসে "!" আশ্চর্য জনক চিহ্ন। এই ভাষায় যন্ত্রে তৈরি করার সময় নামের পরে এবং যন্ত্র চালু করতে একে ব্যাবহার করা হয়। অর্থাৎ এই ভাষায় "!" হলো একটি "আদেশ" বোধক চিহ্ন।
এইবার যন্ত্রের মধ্যে আমরা কোড লিখব, অর্থাৎ যন্ত্রকে কি কি কাজ করতে হবে তা বলবো। যন্ত্রের মধ্যে যা কিছু লিখব সেগুলো {} বন্ধনীর মধ্যে আবদ্ধ রাখতে হয়। সেই জন্য "!" পরেই দেখতে পাচ্ছেন "{" দ্বিতীয় বন্ধনীকে। চলেন এবার যন্ত্রের ভেতরের কাজ শুরু করি।
এই ভাষায় "লিখ" নামের একটি যন্ত্র আছে যা এই ভাষার রান টাইমে যুক্ত করা আছে। তো, আমরা সেই যন্ত্রকে আদেশ চালু হবার করবো তার নামের পরে "!" বসিয়ে। এই যন্ত্র চালু হবার পর কি করবে? সে আমাদের কম্পিউটারের, মোবাইলের বা যেখানে এই কোড রান হবে তার ডিসপ্লের, মনিটর অথবা টার্মিনালে আমাদেরকে কিছু দেখাবে। তো, কি দেখাবে? সে তাই দেখাবে আমরা তাকে যা দেখাতে বলবো। আমরা তাকে দেখাতে বলবো "বাংলায় কম্পিউটাররে সাথে কথা বলি।"।
এই লাইনটি এই প্রোগ্রামিং ভাষায় "লিখন" হিসেবে পরিচিত। তো, কোন লিখন বোঝাতে আমাদের সেই লিখন কে "`" দিয়ে শুরু এবং শেষ করতে হবে। "`" এর নাম ব্যাকটিক, যাকে সাধারণত "Esc" বাটনের নিচে খুঁজে পাবেন। "লিখ" যন্ত্র দিয়ে একটি আদেশ করার পর যখন আপনি বঝাবেন যে আপনার আদেশ শেষ হয়েছে তখন আপনি ";" অর্থাৎ সেমিকোলন দিয়ে শেষ করবেন।
আমাদের তো আর কোন কাজ নেই, তাই আমরা "}" বন্ধনী শেষ করে বোঝাচ্ছি যে আমাদের যন্ত্রের কাজের বর্ণনা শেষ। এখন এটিকে রান করলেই আপনার অপেক্ষিত ফল পেয়ে যাবেন।
একটি প্রোগ্রামিং ভাষায় যেই লিখাগুলো কোন কাজ করে না বরং তাদের রাখা হয় কোন বিষয় বর্ণনার জন্য, নোট করে রাখার জন্য অথবা কোন কিছু মার্ক করার জন্য, তাকে আমরা বলি মন্তব্য বা কমেন্ট।
এই প্রোগ্রামিং ভাষায় একটি মন্তব্য শুরু হয় "//" দুইটি সামনে বাঁকানো স্ল্যাশ দিয়ে এবং তার শেষ হয় লাইনের শেষে গিয়ে। তো আমরা সেই হ্যালো ওয়ার্ল্ড প্রোগ্রামটিই আবার এভাবে লিখতে পারি।
যন্ত্র শুরু! () { // প্যারামিটারের বন্ধনী ঐচ্ছিক
// লিখন হলো স্ট্রিং
// শুরু যন্ত্রটিতে কমান্ড লাইন আর্গুমেন্টের প্যারামিটারটি না থাকলেও হবে
লিখ! `বাংলায় কম্পিউটাররে সাথে কথা বলি।`;
// লিখ!(`বাংলায় কম্পিউটাররে সাথে কথা বলি।`) বন্ধনী ঐচ্ছিক
}
সেগুলো শীঘ্রয় রিলিজে যুক্ত করা হবে।
উদাহরণ সমূহ পাওয়া যাবে /examples ফোল্ডারে।
এখানে কিছু উদাহরণের তালিকা দেওয়া হলোঃ
- হ্যালো ওয়ার্ল্ড
- মন্তব্য আকারে ব্যাখ্যা সহ হ্যালো ওয়ার্ল্ড
- ইউজার থেকে ইনপুট নিয়ে আউটপুট দেখানো
- সংখ্যার বর্গ
- সর্ত সাপেক্ষে কোড পরিচালনা
- লুপ/ঘূর্ণন
- বাইনারী অপেরেটর সমূহ
- যতক্ষণ ঘূর্ণন
- লিখন যুক্তকরণ/স্ট্রিং জোড়া লাগানো
- শর্ত সাপেক্ষে সংখ্যার বর্গ সম্পর্কে দেখানো
- রিকার্সিভ যন্ত্র
- যন্ত্র ওভারলোডিং
- ফ্যাক্টোরিয়াল
- লুপ, আবার/কন্টিনিউ
- লিখনের দৈর্ঘ্য
- সেকেন্ড আকারে সময়
- তালিকা
- ভাগ
- ইনপুট, আউটপুট