SL3 Framework

The Purpose of Computer Programming

প্রোগ্রামিং হচ্ছে একটা মাইন্ডসেট, যেই মাইন্ডসেট একটা সমস্যা সমাধানের জন্য কাজ করবে। সমস্যা সমাধানের সব থেকে ভালো উপায় হচ্ছে খাতা কলম। খাতা কলমে আপনি যা খুশি হিজিবিজি আঁকবেন, লিখবেন এবং সমস্যার সমাধান করবেন। কিন্তু এই সমাধান তো কম্পিউটার বুঝবে না। কম্পিউটারকে বোঝানোর জন্য কম্পিউটারের ভাষা লাগবে। আর এই ভাষাকেই আমরা বলছি প্রোগ্রামিং ল্যাংগুয়েজ।

কম্পিউটার একটা মেশিন, যাকে আমরা বলি বোকা বাক্স। এই বোকা বাক্সের আবার ভাষা? ভাবতেই কেমন অবাক লাগছে না? সেটা নাকি আবার মানুষের শিখতে হবে এই বোকা বাক্সকে কনট্রোল করতে চাইলে? আসলে সত্যি কথা বলতে কম্পিউটারের কোনো ভাষা নেই। আমরা মানুষেরা আমাদের সুবিধার জন্য কম্পিউটারের জন্য ভাষা তৈরি করেছি। আপনি বিশ্বাস করেন আর নাই করেন কম্পিউটার কোনো প্রোগ্রামিং ল্যাঙ্গুয়েজই বোঝে না। কারণ কম্পিউটারতো কয়েকটা হার্ডওয়্যার মানে কয়েকটা ইলেক্ট্রনিক্স এর পার্টসপত্র দিয়ে তৈরি। তার আবার ভাষা থাকে কেমনে? তার থাকলে তো থাকার কথা কারেন্ট বা ইলেক্ট্রিসিটি।

একদম সত্যি কথা। কম্পিউটার যেহেতু কয়েকটা ইলেক্ট্রনিক্স এর টুকরা তাই এর ভিতরে শুধু আছে কয়েক কোটি সুইচ। এই সুইচ গুলো কারেন্ট পাস করবে কি করবে না তাই আমরা বলে দেই প্রোগ্রামিং ল্যাংগুয়েজ ব্যবহার করে।

তাই নাকি? কিভাবে?

কম্পিউটার শুধুমাত্র বুঝতে পারে দুইটা জিনিস, শূন্য এবং এক। শূন্য মানে হচ্ছে সুইচ অফ, কারেন্ট যাবে না। আর এক মানে হচ্ছে সুইচ অন, কারেন্ট যাবে। আপনি কম্পিউটারে যায় করেন না কেন কম্পিউটার এই শূন্য এবং ১ দ্বারাই বুঝতে পারে কম্পিউটার স্ক্রিনে কি প্রদর্শন করতে হবে। আপনি যখন কম্পিউটারকে বলছেন ১০০ প্রিন্ট করতে, কম্পিউটার কিন্তু আপনার এই নাম্বার বুঝতে পারছে না, সে বুঝতে পারছে '1100100' যাকে বলা হয় বাইনারি নাম্বার। আপনি কম্পিউটারকে প্রিন্ট করতে বলছেন 'Stack Learner', সে বুঝতে পারছে '01010011 01110100 01100001 01100011 01101011 00100000 01001100 01100101 01100001 01110010 01101110 01100101 01110010'

SL3 Framework - Binary World

আমরা কম্পিউটারে যা দেখি বা শুনি সব কিছুরই একটা বাইনারি রিপ্রেসেন্টেশন আছে। আর কম্পিউটার শুধু বুঝতে পারে এই বাইনারি নাম্বার। কিন্তু সরাসরি বাইনারি নাম্বার নিয়ে কাজ করাটা অনেক জটিল এবং সময় সাপেক্ষ একটা বিষয়। তাই কিছু বুদ্ধিমান প্রোগ্রামার বুদ্ধি করে একটা কম্পাইলার বা ট্রান্সলেটর বানালো যা মানুষের ভাষার কাছিকাছি কিছু সাংকেতিক কোড বুঝতে পারে এবং সেই অনুযায়ী কম্পিউটারের জন্য বাইনারি কোড লিখতে পারে। একে আমরা বলতে পারি কম্পাইলার বা ইন্টারপ্রেটার।

ব্যাপারটা অনেকটা এরকম যে চাইনা থেকে কিছু মানুষ বাংলাদেশে এসেছে ব্যবসার উদ্দেশ্যে। কিন্তু তারা তো এদেশের ভাষা কিছুই বোঝে না। আবার আমরা বাঙালিরা তো চাইনার ভাষা কিছুই বুঝি না। এই জন্য তারা এমন একজন হায়ার করলো যে দুই দেশের ভাষায় বুঝতে পারে। সহজ কথায় একজন ট্রান্সলেটর হায়ার করলেন ভাষা ট্রান্সলেট করার জন্য। কম্পাইলার বা ইন্টারপ্রেটারও এক্স্যাক্ট সেম কাজটাই করছে।

তারমানে কম্পিউটার এবং আমাদের মাঝের মধ্যম সত্তা হচ্ছে কম্পাইলার। আমরা যা বলি সে কম্পিউটারকে তার ভাষায় সুন্দর করে বোঝায়ে বলে। কিন্তু কম্পাইলার হচ্ছে অশিক্ষিত এবং চরম ঘাড় ত্যাড়া প্রকৃতির। আমাদের আশে পাশে প্রচুর কম্পাইলার আছে। যেমন সি এর কম্পাইলার, জাভার কম্পাইলার, পাইথনের কম্পাইলার (ইন্টারপ্রেটার), জাভাস্ক্রিপ্টের কম্পাইলার। প্রতিটা কম্পাইলারই বোকা এবং ঘাড় ত্যাড়া। কেউ কারোর ভাষা বোঝে না। এমনকি নিজের ভাষার বাইরে একটা সেমিকোলনও যদি আপনি ভুল বলেন সে ত্যাড়ামি শুরু করবে। নিজের মাথা খাটিয়ে একটা কাজও করবে না। যত টুকু সে জানে ততটুকুর বাইরে একটা স্পেসও সে নিজে বসাবে না। এই যে কম্পাইলের যে জ্ঞান বা রুল সেট যা কম্পাইলার মেনে কম্পিউটারের সাথে কথা বলে এটাই প্রোগ্রামিং ল্যাংগুয়েজ। এটা অনেকটা মানুষের ভাষার মতো, আবার অনেকটা দেখতে হিজিবিজি কোড ওয়ার্ডের মতো।

আমরা আমাদের বেশির ভাগ সময় ব্যয় করি প্রোগ্রামিং ল্যাংগুয়েজ শেখার পিছনে। বেশির ভাগ ক্ষেত্রেই আমরা এর আসল উদ্দেশ্য বুঝতে পারি না। শিখেই যায় শিখেই যায় এবং শিখেই যায়। কোথায় থামতে হবে, কত টুকু শিখতে হবে, কিভাবে বাস্তব প্রয়োগ করতে হবে তার কোনো কিছুই আমরা জানি না। কিন্তু শিখতে থাকি। যার ফলে কিছু দিন পরে আবার বিরক্তির শিকার হই।

আপনারা এখন নিশ্চয় জানেন আমাদের কম্পিউটার মহাশয়ের কাজ কি? ডেটা স্টোর করা, প্রয়োজনের সময় ডেটা খুঁজে বের করা আর প্রয়োজন না হলে ডেটা রিমুভ করে দেওয়া। আপনারা নিশ্চয় এটাও এখন জানেন প্রোগ্রামিং ল্যাংগুয়েজ ব্যবহার করে আমরা কম্পিউটারকে কন্ট্রোল করে থাকি। তাহলে কম্পিউটার যা করতে পারবে তার বাইরে তো আর আমরা তাকে দিয়ে বেশি কিছু করাতে পারবো না তাই না? তাই যদি হয়ে থাকে তাহলে আলটিমেটলি প্রোগ্রামিং ল্যাংগুয়েজ এরও কাজ হচ্ছে ডেটা স্টোর করা, প্রয়োজনের সময় ডেটা রিট্রাইভ করা এবং প্রয়োজন শেষে ডেটা ডিলিট করার কমান্ড কম্পিউটারকে দেওয়া। মানে কম্পিউটারের কাজটাই আমরা করছি প্রোগ্রামিং ল্যাংগুয়েজ ব্যবহার করে। এর বাইরে দুনিয়াতে কম্পিউটার বা প্রোগ্রামিং ল্যাংগুয়েজের আর কোনো কাজ নেই। আপনারা হয়তো ডেটা স্ট্রাকচার, অ্যালগোরিদমের নাম শুনেছেন। অনেক ভারি ভারি টার্ম, নাম শুনলেই কিছুটা ভয় লাগে। এই এত বড় বড় জিনিসও এসেছে সুন্দর করে ডেটাকে গুছিয়ে রাখার জন্য, প্রয়োজনের সময় সহজে এবং দ্রুত ডেটা খুঁজে বের করার জন্য।

SL3 Framework - Data is Everything

আসলে প্রোগ্রামিং ল্যাংগুয়েজ কত টুকু শেখা উচিত, কত টুকু শিখতে পারলে বাস্তব প্রয়োগ করা যাবে তার এক্স্যাক্ট ইনফরমেশন দেওয়াটা খুব কঠিন। আপনি যত বেশি জানবেন, তত আপনার জন্য ভালো। কিন্তু প্রয়োগ না বুঝতে পেরে ল্যাংগুয়েজের অনেক কিছু শিখে ফেলেও কোনো লাভ নেই। আবার প্রয়োগ করার জন্য প্রোগ্রামিং ল্যাংগুয়েজ এর খুব বেশি জ্ঞানেরও দরকার নেই, শুধু প্রোগ্রামিং ফান্ডামেন্টালস জানলেই আপনি অনেক কিছু করতে পারবেন। তবে সেই ক্ষেত্রে আপনার ব্রেইনে একটু বেশি প্রেশার দিতে হবে।

প্রোগ্রামিং ফান্ডামেন্টালসঃ প্রোগ্রামিং ফান্ডামেন্টালস বলতে মূলত সেই টপিক্স গুলোকে বোঝানো হয় যেগুলো ব্যবহার করে আপনি খাতা কলমে একটা সমস্যার সমাধান করতে পারেন। এবং এই ফান্ডামেন্টাল টপিক্স গুলো প্রতিটা প্রোগ্রামিং ল্যাংগুয়েজেই এক। যেমনঃ ভ্যারিয়েবল, ডেটা টাইপ, অপারেটরস, কন্ডিশন, লুপ, অ্যারে, ফাংশন। বাস্তব জগতের যেকোনো সমস্যা সমাধান করার জন্য এই কয়েকটা টপিক্সই যথেষ্ট। এই টপিক্স গুলো শেখার পরে আপনি যদি কোনো অনলাইন জাজে প্রব্লেম সল্ভিং শুরু করেন তাহলেই আপনার বেস ধীরে ধীরে গড়া শুরু হবে।

অবজেক্ট অরিয়েন্টেড প্রোগ্রামিংঃ যখন আপনি প্রোগ্রামিং এবং প্রব্লেম সল্ভিং এর সাথে মোটামুটি কম্ফর্টেবল হয়ে যাবেন তখন আপনার কাজ হচ্ছে অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং নিয়ে স্টাডি করা। ছোটো খাটো সমস্যা সমাধানের জন্য মূলত অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং ব্যবহৃত হয় না। বাস্তব জীবনের বড় বড় সমস্যা গুলো যখন আমরা সমাধান করার কথা চিন্তা করি তখন আমাদের দরকার হয় অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং। এবং এটা শুধুমাত্র একটা থিওরি। কোনো প্রোগ্রামিং ল্যাংগুয়েজের ফিচার না।

ফাংশনাল প্রোগ্রামিংঃ ফাংশনাল প্রোগ্রামিং টা আর একটু অ্যাডভান্সড কনসেপ্ট। সব ল্যাংগুয়েজ আবার এই প্যারাডাইমটা সাপোর্টও করে না। তবে ফাংশনাল প্রোগ্রামিং বর্তমান বিশ্বে ব্যাপক প্রভাব ফেলছে। তাই সময় সুযোগ বুঝে এর কনসেপ্ট বুঝে নেওয়াটাই বুদ্ধিমানের কাজ।

প্রোগ্রামিং ল্যাংগুয়েজের কাজ মূলত কম্পিউটারের সাথে কথা বলা, আমরা যেই সমস্যাটার সমাধান খাতা কলমে করলাম তা কম্পিউটারের কাছে পৌঁছে দেওয়া। ডেটা ক্রিয়েট করে কম্পিউটারে স্টোর করা, প্রয়োজনের সময় ডেটা রিট্রাইভ করা এবং প্রয়োজন না থাকলে ডেটা রিমুভ করে দেওয়া। এত এত হিজিবিজি সব ফাংশনালিটিস শুধু মাত্র এই কাজেই ব্যবহৃত হচ্ছে।

Edit this page on GitHub