প্রোগ্রামিং ফান্ডামেন্টালস নিয়ে যারা কনফিউশনে আছেন বা বিষয় গুলো ধরতে পারছেন না তাঁদের জন্য লিখা। আশা করি উপকৃত হবেন। আর যদি কোথাও কোন ভূল ত্রুটি হয়ে থাকে, সিনিয়ররা শুধরে দিবেন। আমি এখানে আমার উপলব্ধি বা আমি যেভাবে বুঝি সহজভাবে তুলে ধরার চেষ্টা করেছি।
প্রোগ্রামিং ফান্ডামেন্টালস কি?
প্রোগামিং ফান্ডামেন্টালস বুঝার আগে আমরা আগে আরেকবার প্রোগ্রামিং কি তা আরেকবার একটু দেখে নেই। এককথায় প্রোগ্রামিং হলো ইন্সট্রাকশন দিয়ে নিজের কাজ এর সমাধান বের করে আনা, এক কথায় বলা চলে মাইন্ডসেট। এই মাইন্ডসেট যে কারো যে কোনরকম হতে পারে।তাহলে প্রোগ্রামিং ফান্ডামেন্টালস টা কি? এই যে আমি আমার কাজ বা সমাধানটা বের করে আনছি, সেই সমাধানটা বের করে আনার জন্য কিছু মৌলিক বিষয় রয়েছে যাকে আমরা ভিত্তি বলতে পারি। এই মৌলিক বিষয়গুলোকেই প্রোগ্রামিং ফান্ডামেন্টালস বলে। বাস্তবিক জীবনে ধরা যাক,আমার সমস্যা হলো আমার ফোন এ ব্যালেন্স নাই। সমাধান টা একটু ভাবা যাক, আমার ফ্লেক্সিলোডের দোকানে যেতে হবে, দোকানদার কে বলতে হবে, টাকা দিতে হবে,নাম্বার ঠিক মত দিতে হবে,আমার ফোন এ ব্যালেন্স সে পাঠাবে এই সব কিছু প্রক্রিয়া শেষ হউয়ার পর ই আমার সমস্যার সমাধান হবে।পুরো একটা বাস্তব জীবনের প্রোগ্রাম কমপ্লিট হলো। এইবার ভাবা যাক এখানে ভিত্তি হিসেবে কি কি কাজ করলো। চিন্তা করাটা ছিলো আমার মাইন্ডসেট,দোকানদার কে টাকা দিলাম একটা মৌলিক ব্যাপার,কথা বললাম মানে ভাষা একটা মৌলিক ব্যাপার। সব গুলোর এক এক জায়গায় এক এক রকমের রোল প্লে করে ই শেষ পর্যন্ত আমার সমস্যার সমাধান হলো। এইখানে তাহলে ফান্ডামেন্টালস গুলো কি ছিল? আপনি একটু ভাবেন এই ভাবা টা ই একজন প্রোগ্রামারের কাজ।
এতক্ষন বললাম, বাস্তবিক জীবনের প্রোগ্রামিং এর কথা এইবার বলা যাক কম্পিউটার প্রোগ্রামিং এর কথা।আপনি অবশ্যই কোন না কোন সমস্যার সমধান করবেন, সুডোকোড এর মাধ্যমে নিজেও বুঝলেন কিভাবে সল্ভ করবেন, কিন্তু কম্পিউটার কে কিভাবে বুঝাবেন? ইন্সট্রাকশন টা দিবেন কিভাবে? এইবার আসলো প্রোগ্রামিং ল্যাঙ্গুয়েজ এর রোল। অবশ্যই প্রোগ্রামিং ল্যাঙ্গুয়েজের মাধ্যমে। আর এই প্রোগ্রামিং ল্যাংগুয়েজের ও কিছু ভিত্তি বা মৌলিক ব্যাপার আছে যেমন টা আমাদের বাস্তব জীবনের প্রোগ্রামটা তে ছিল। আর সেই টুলস গুলোর এক এক মৌলিক বিষয়গুলোর এক এক রকমের সুপার পাওয়ার রয়েছে। সেই সুপারপাওয়ার সংবলিত ভিত্তি গুলোকেই প্রোগ্রামিং ফান্ডামেন্টালস বলে। সে সুপারপাওয়ার গুলোর সাথে ই আমরা এখন পরিচিত হব।
- ভ্যারিয়েবল
- অপারেটরস
- স্টেটমেন্টস
- কন্ডিশন
- লুপ
- অ্যারে
- ফাংশন
- প্রোগ্রামিং ল্যাংগুয়েজ নির্বাচন
১) ভ্যারিয়েবলঃ
যারা প্রোগ্রামিং ল্যাংগুয়েজ এর সাথে পরিচিত বা শেখার প্রসেস এ আছেন বা ঘাটাঘাটি করছেন তারা ভ্যারিয়েবল টার্ম টার সাথে পরিচিত। ভ্যারিয়েবল বিষয়টা আসলে কি? চলুন প্রথমে আমরা আমাদের নিজের বাস্তব জীবন থেকে দেখে আসি, আমাদের প্রতিদিনের জীবনে কোন কিছু রাখার জন্য একটা পাত্র বা নির্দিষ্ট কোন কিছু দরকার যেমনঃ পানি রাখতে হলে বোতল এর প্রয়োজন বা আমরা পানি জগ এ ও রাখতে পারি অথবা বালতি তে ও রাখতে পারি। মোট কথা পানি টা যে পাত্রে রাখা হবে সেই পাত্র টা ই ভ্যারিয়েবল। এইবার ভাবা যাক প্রোগ্রামিং এর পয়েন্ট থেকে। আমরা যা ই দেখি কম্পিউটার এর স্ক্রিন এ কম্পিউটার এর ভিতর যা হয় সব ই ডেটা এর খেলা। এই ডেটা গুলো তো আমরা ছড়িয়ে ছিটিয়ে রাখতে পারি না। আপনি ভাবেন তো পানি,পাত্র ছাড়া কি রাখা, সংরক্ষন করা সম্ভব? ঠিক একই ভাবে ডেটা গুলো আমরা সুনির্দিষ্ট ভাবে সংরক্ষন করে রাখি তা ই ভ্যারিয়েবল।
২) অপারেটরসঃ
যে কোন কিছু ঘটায় সে ই অপারেটর,আর যার সাথে ঘটায় সে অপারেন্ড। এককথায় বলে দিলাম, এবার আসুন বাস্তব জীবনের একটা উদাহরন দেখি, ফ্যাক্টরি তে মেশিন থাকে, সেই মেশিনটা কেউ না কেউ পরিচালনা করে, এখানে কোন কিছু ঘটাচ্ছে কে? যে মেশিন টা চালাচ্ছে সে অবশ্যই সে কিছু না কিছু ঘটাচ্ছে। তার মানে দাঁড়ায় যে মেশিন টা ছালাচ্ছে সে অপারেটর আর মেশিনটার সাথে ঘটছে, তার মানে মেশিন টা অপারেন্ড। আরেকটু সহজ ভাবে প্রোগ্রামার এর দৃষ্টি থেকে দেখা যাক, যেমন ধরা যাক ঃ ১০ + ২০ = ৩০ এখানে ভাবুন তো কে ঘটাচ্ছে আর কার সাথে ঘটছে? এখানে + কি করছে,যোগ করছে মানে + এর মাধ্যমে কিছু একটা ঘটছে আর কার সাথে করছে? ১০ এর সাথে ২০ এর কিছু একটা ঘটাচ্ছে, মানে এখানে ১০ এবং ২০ অপারেন্ড,আবার = কি করছে? = ১০ আর ২০ এর সাথে যা ঘটছে তা আবার এসাইন করছে,মানে = ও কিছু একটা ঘটাচ্ছে,তাহলে = ও একটি অপারেটর।
৩) স্টেটমেন্টসঃ
স্টেটমেন্ট এর মানে হচ্ছে একটি পূর্ন নির্দেশনা বা বিবরন। যেমন ধরেন, আপনার টিচার আপনাকে হোম ওয়ার্ক দিলো।এইটা আপনার করতে ই হবে এবং এইটা আপনি পালন করলেন। টিচার যেই কথা টা বললো তা হলো একটি স্টেটমেন্ট। কিন্তু যদি টিচার যখন আপনাকে হোমওয়ার্ক করার কথা বললো কিন্তু আপনি তার এগেইন্সট এ কোন কথা বললেন,যেমন আপনি বললেন যে আমি তো কাল আসবো না স্যার পরশু দিন করে আনি। তখন আর টিচার এর কথাটা ষ্টেটমেন্ট থাকবে না।তখন টিচার এর কথা টা হয়ে যাবে এক্সপ্রেশন। প্রোগ্রামিং এর ক্ষেত্রে ও বিষয়টা সেম, একটা প্রোগ্রামিং ফাইল এ যা যা যত কোড লেখা থাকে সব ই এক এক টি স্টেটমেন্ট।ছোট ছোট স্টেটমেন্ট এর সমন্বয়ে একটি প্রোগ্রামিনিগ ফাইল তৈরি হয়।
৪) কন্ডিশনঃ
কন্ডিশন কথাটার মানে কি? শর্ত। শর্ত, বলতে এই রকম কিছু ই বুঝায় যে,যদি এইটা হয়,তাহলে এইটা হবে আর যদি না হয় তাহলে ওইটা হবে। এই উদাহরন টা আমি আমাদের বাবা-মা দের উদাহরন দিয়ে বলতে চাই,যেমন ঃ আমাদের ছোট বেলা মা বাবা বলেছে না যে যদি পরীক্ষায় পাশ করো তাহলে খেলনা কিনে দিবো,যদি না করো তাহলে মাইর। এইখানে কি ঘটেছে দেখুন, শর্ত দেয়া হয়েছে, মানে কন্ডিশন। যদি, তাদের শর্ত ফুলফিল হয় তাহলে,খেলনা আর যদি না হয় তাইলে মাইর।ঠিক একই ভাবে প্রোগ্রামিং এর ক্ষেত্রে ও কন্ডিশন ঠিক একই ভাবে আমরা ব্যবহার করে থাকি আমরা কিছু শর্ত দিবো যদি আমাদের শর্ত পুরা হয় তাহলে একরকম রেসাল্ট শো করবে,আর যদি না হয় তাহলে এক রকম রেসাল্ট শো করবে। প্রোগ্রামিন এ সচরাচর ৩টা কন্ডিশন ই বেশি ব্যবহার করা হয়, If, else if, else...
৫) লুপঃ
"লুপ" শব্দটার কথা চিন্তা করলে ই প্রথম আমার মাথায় যেই ছবিটা ভাসে তা হল ঘড়ি অথবা গাড়ির চাকা, বাইকের চাকা অথবা যে কোন কিছু ঘুড়ছে এবং বার বার চলছে এমন কিছু। একবার আপনার দেয়াল ঘড়ির দিকে তাকান তো,দেখেন আসলে কি হচ্ছে? সেকেন্ড এর কাটাটা ঘুড়ছে ০-৬০ পর্যন্ত,আবার মিনিট এর কাটা ,ঘন্টার কাটা ও। ঘুড়তে ই আছে, ঘুড়তে ই আছে। শেষ ই হচ্ছে না। একই কাজ বার বার রিপিট করার কন্সেপটটা ই হচ্ছে এক্স্যাক্ট লুপ এর কন্সেপ্ট। আসলে আমাদের পুরো জীবনটা ই লুপ,একটু লুপ এর নজরে দেখলে হাজারো ইদাহরন আপনার আশে পাশে দেখতে পাবেন। প্রোগ্রামিং এর ক্ষেত্রে লুপ কেন প্রয়োজন? একই কাজ যাতে বার বার না করতে হয়। একবার ভাবুন আপনি ২+২=৪। এই যোগফল টা আমি দশ বার শো করতে চাই।দশ বার আমি লিখে শো করালাম,কিন্তু যদি ১০০ বার ১০০০ বার ১০০০০ অথবা ১০০০০০ বার শো করতে হয় সেক্ষেত্রে লিখে সম্ভব? এই রিপিটেটিভ সমস্যার সমধান করার জন্য মূলত লুপ ব্যবহার করা হয়ে থাকে।
৬) অ্যারেঃ
একটি বইয়ের কথা ভাবুন তো। একটা বই হয় অনেকগুলো পাতার সমস্টিতে।আবার অনেকগুলো বই মিলিয়ে একটা লাইব্রেরি হয়। এখানে আপনি বইকে অ্যারে ভাবতে পারেন। একটা লাইব্রেরির যেকোন বইয়ের যেকোন পাতা আমরা যখন খুশি তখন আমরা আমাদের প্রয়োজনমত পড়তে পারি। অ্যারে কে ও ঠিক এইরকম ভাবে ভাবতে পারেন। অনেক গুলো ডেটা একটা অ্যারের ভিতর স্টোর করা যায়। অনেক গুলো বলতে অনেকগুলো(এক এক প্রোগ্রামিং ল্যাঙ্গুয়েজ এর ক্ষেত্রে এক এক লিমিটেশন)। আমরা আমাদের প্রয়োজনমত অ্যারের ভিতর আমাদের ডেটা স্টোর করে রাখতে পারি,ব্যবহার করতে পারি।
৭) ফাংশনঃ
আপনি এই আধুনিক যুগে যে কোন গেজেট কেনার আগে তার ফাংশনালিটি জানতে চান,বুঝতে চান যে আপনি ওই গেজেট টা দিয়ে কি কি কাজ করতে পারবেন। আচ্ছা আরেকটু সহজ ভাবে বুঝা যাক,আপনি যখন আপনার লাইট জালাতে চান তখন কি করেন? সুইচ টিপ দেন আর লাইট টা জ্বলে যায়,মানে আপনি কিছু একটা করছেন আর কিছু একটা হচ্ছে। এই যে আপনি সুইচ এ চাপ দিলে আর লাইট টা জ্বললো,এইটা তো আর এমনি ই জলে নাই বিহাইন্ড দ্যা সিন অনেক কিছু কাজ করেছে বা অনেক অপারেশন ঘটেছে। এই অপারেশন গুলো ই হচ্ছে ফাংশন,যেই ফাংশন একজন ইলেক্ট্রিক প্রোগ্রামার প্রোগ্রাম করেছে।
৮) প্রোগ্রামিং ল্যাংগুয়েজ নির্বাচনঃ
ধরা যাক,আপনি বাংলাদেশ জাতীয় ক্রিকেট দলে একজন ব্যাটসম্যান হিসেবে খেলতে চান। এখন আপনার কি করতে হবে একদম প্রথম থেকে ভেবে দেখুন তো। আপনাকে আগে ক্রিকেট খেলার নিয়ম কানুন বুঝতে হবে সব,ওয়াইড,নো বল,বাউন্ডারী,উইকে মানে যা আছে নিয়ম কানুন সব বুঝতে হবে। বুঝার পর আপনি যদি বলেন যে না আমি শুধু ব্যাটিং ই করবো, ফিল্ডিং তো আমার ভালো লাগে না, বোলিং কিভাবে করে তা বুঝে আমার কি কাজ!! আমি তো ব্যাটসম্যান হবো। ক্যাচ ধরে আমি কি করবো আমি তো ব্যাটসম্যান হবো। এইভাবে যদি ভাবেন তাহলে কি কখনো ক্রিকেটার হওয়া সম্ভব? কখনই না। প্রথমে আপনাকে নিয়ম বুঝতে হবে,সব কয়টা বিষয় বুঝে ব্যাটিং,বোলিং,ফিল্ডিং তারপর আপনি আপনার যেটা ইচ্ছা সেটাতে যদি আপনি ব্যাটসম্যন হতে চান সেটা তে আপনি ফোকাস দিবেন,যদি বোলার হতে চান তো সেভাবে আপনি ফোকাস দিবেন।
প্রোগ্রামিং ল্যাঙ্গুয়েজ নির্বাচন এর ক্ষেত্রে ও বিষয়টা অনেকটা এমন ই। সি কে বলা হয় মাদার অব অল প্রোগ্রামিং ল্যাঙ্গুয়েজ। সি থেকে আজকের দিনে আমরা যে সমস্ত হাই লেভেল ল্যাঙ্গুয়েজ ইউস করি সবগুলোর উৎপত্তি। সি হচ্ছে মেশিনের খুব কাছাকাছি ল্যাঙ্গুয়েজ আবার মানুষ ও বুঝতে পারে এমন ল্যাঙ্গুয়েজ। মেশিনের এর চেয়ে কাছাকাছি ল্যাঙ্গুয়েজ আছে যেমন মেশিন,ল্যাংগুয়েজ,এসেম্বলি ল্যাঙ্গুয়েজ। তবে সেগুলো মানুষ বুঝতে পারে এমন ল্যাংগুয়েজ না। যেহেতু এইটা মেশিনের খুব কাছাকাছি ল্যাঙ্গুয়েজ তাই মেশিনের মত করে চিন্তা করা,কমান্ড করা,লজিক বিউল্ড করা টা সহজ হবে।আর একবার একটু ভেবে দেখেন আপনি যখন ডেভেলপমেন্টে যাবেন মেষিন এর মত চিন্তা করার, কমান্ড করার কেপেবিলিটি যদি আপনার যদি থাকে তাহলে আপনি কত সহজে আপনার ্কাজ মেশিন কে দিয়ে করিয়ে আনতে পারবেন।
২য় জাভা। জাভা ইস অব্জেক্ট ওরিয়েন্টেড ল্যাঙ্গুয়েজ, আর আজকে ২০২০ এ দাঁড়িয়ে আমরা যখন টেকনোলজির দিকে তাকাই, সব ই অব্জেক্ট। অব্জেক্ট এর জগতে থেকে অব্জেক্ট ওরিয়েন্টেড প্রোগ্রামিং না জানলে কি আর হয় নাকি!! সি তে আপনার প্রোগ্রামিং লগিক বিউল্ড হলো তারপর জাভা তে এসে আপনি অব্জেক্ট এর সাথে খেলবেন আর নতুন নতুন জিনিষ বানাবেন কম্পিউটার কে কমান্ড করে। এই লজিক বিউল্ড হয়ে গেলে আপনি কম্পিউটার কে দিয়ে কিভাবে আপনার কাজ বের করে আনবেন সে ব্যাপারে একদম ক্লিয়ার লজিক বিউল্ড হয়ে যাবে,আপনার প্রব্লেম সল্ভিং স্কিল ও অনেক ভালো হয়ে উঠবে।
জাভস্ক্রিপ্ট,পিএইপি,পাইথন,রুবি,গো ল্যাং বা অন্যান্য ডায়নামিক ল্যাঙ্গুয়েজ গুলো প্রথম ল্যাঙ্গুয়েজ হিসেবে না নেয়ার সাজেশন থাকে আমার কারন এগুলো হচ্ছে হাইলেভেল লেঙ্গুয়েজ, ডেভেলপমেন্ট পারপাস এ এই ল্যাঙ্গুয়েজ গুলো তৈরি করা হয়েছে । এই ল্যাংগুয়েজ গুলোতে বিহাইন্ড দ্যা সিন অনেক কিছু ঘটে যা জানা বা বুঝা ই যায় না। ফলে হয় কি যে কোথাও কোন লজিক্যাল সমস্যা তে আটকিয়ে গেলে আমরা আর তার সমধান করতে পারি না কারন আমরা মেশিন কিভাবে কাজ করে কমান্ড নেয় তা জানি ই না।
লেখাঃ Islam Timir