Bangla
আপনি মানেন আর না মানেন AI এর একটা বড় বিপ্লব হয়ে গেসে। এমন না যে বিপ্লবটা এই বছর ChatGPT আসার পর পর হয়ছে। বিপ্লবটা বেশ অনেকদিন ধরেই হচ্ছে। আর ChatGPT বিপ্লবের পালে একটা বড় হাওয়া লাগাইসে। আর আমরা বলতেই পারি আমরা AI এর দুনিয়ায় আসি। আর এই সময় বসে প্রোগ্রামিং শিখাইতে গেলে মাইনষে আমারে গাইল্লাবে এটা স্বাভাবিক বিষয়। কিন্তু তারপরও আমি শিখাইতে আসছি। কারণ:
যত বড় বড় AI ই আসুক না কেন, আপনাকে Prompt দিয়ে প্রোগ্রাম লিখতে হইলে অবশ্যই বেসিক ক্লিয়ার থাকতে হবে। মানে ব্যাপারটা বুঝেন। আপনি ভালো রান্না করতে চাচ্ছেন, তার মানে এই না যে আপনার কাছে বাজারের সবচেয়ে দামি সবজি আছে আর আপনি সবগুলারে এক সাইজে কাটি পাতিলে ঢালি লাড়ি দিসেন আর জোস একটা রান্না হয়ে গেসে। আপনাকে রান্না জানতে হবে। রান্নার বেসিক জানতে হবে। কীভাবে চুলা ধরায় জানতে হবে। নাইলে আপনি যত টাকায় খরচ করেন না কেন রান্না ভালো হবে না। আর বেসিক প্রোগ্রামিং না জানলে AI যে ভুলডা কোথায় করসে আপনি টসলাইট দিয়ে খুইজ্জাও পাবেন না। মানে কথা বুঝেন।
আপনি Tech এর দুনিয়ায় যে চাকরিতেই যান, আপনার কি মনে হয় আপনারে সম্মানজনক কোন পোস্ট দিবে যখন আপনি বেসিক প্রোগ্রামিংই জানেন না? তাই, AI আসুক আর সুনামি আপনারে বেসিক প্রোগ্রামিং জানতেই হবে।
এই পোস্ট থেকে আপনি হেইডাই জানবার পারবেন। মানে কথা বুঝেন। আপনারে আমি কোন ল্যাংগুয়েজ শিখাবো না। আপনি আপনার পছন্দমত ল্যাংগুয়েজ চুজ করে নিজের মত শিখবেন। কিন্তু, সেই ল্যাংগুয়েজে গিয়ে আপনারে জাস্ট সিনট্যাক্স, মানে সেই ল্যাংগুয়েজ লেখার স্টাইল শিখতে হবে। আর কিসসু না। এখানে আমি উদাহরণ বোঝানোর লাইগা পাইথন ব্যবহার করছি। কারণ:
আপনি পাইথন ল্যাংগুয়েজ না জানলেও আপনি পাইথনে লেখা কোনকিছু আপনার বুঝতে অসুবিধা হবে না।
এখান থেকে আপনি কিছু পাইথন শিইক্ষা গেলে আপনা ভবিষ্যতে সেই ফিল্ডেই যান, এমনকি ইডিট করতে গেলেও পাইথন দিয়ে করতে পারবেন।
তো কাহিনি হইল গিয়া আমি এই দুনিয়ায় আমি বেডি মানুষ দুই চক্ষে দেখতে পারেনি। আমার চশমারে সহ যদি আপনি চাইর চক্ষু ধরেন তাও না। তারফরেও দুইজনরে আমি দিল থেকে অনেক ভালোবাসি। একডা হইল গিয়ে আমার আম্মা। আরেকটা হইল গিয়ে সখিনা। সখিনা'রে পটাইতে গিয়া আমি প্রোগ্রামিং শিখছিলাম। ঘটনাডা খুইলা কই। তহন আমাগো ফাশের গেরামের মফিজ আর আমি দুইজনেই সখিনার উপর কিরাশ। মফিজ্জারে আমি ছোডবেলা থে চিনি। লুইচ্চা বেডা। এই বেডা আমার কথা জানতো আমিও হের। এখন ঘটনাডা হয়সে কি, হেতে একবার সখিনা'রে পটানের লাইজ্ঞা ১০ মিনিটে ১০০ বার "I Love You" লিক্ষা পাডাইসে। আমি তো শ্যাস। মোর লাগতেসে সখিনা খাতুন গেসে। তহন আমার এক বড় ভাই আমারে কইল বেডা এডি কোন ব্যাফার! কইয়াই সে কম্পিউটার খুইল্লা একটা কালা পর্দায় কালা জাদু কইরা আমারে ২মিনিটে ১০,০০০ লাইন "Sokhina, I Love You U" লিইক্ষা দিলো। মুই তো শ্যাষ। সেই ভাইয়ের হাতে পায়ে ধইরা আমি প্রোগ্রামিং শিখসিলাম। এখন ব্যাপার সেইডা না। ব্যাপার হইলো বিয়ার পর সখিনারে পাশের বাসার জরিনা ভাবি কইসে সে নাকি প্রোগ্রামারের বউ হইয়া প্রোগ্রামিং না জানা অপ্রোগ্রামিত। তাই সখিনা আমারে ধরল প্রোগ্রামিং শিখাইতে হইব। মানে কথা বুঝেন। এই বেডিরা প্রোগ্রামিং শিখাইতে গেলে যেই টাইম লাগবো, সেই টাইমে তো আমি ফেসবুকের তল খুঁজে পারবো। কিন্তু কি আর করার, বিবাহিত পুরুষের বউয়ের আবদার। আপনারা বুইজ্জা লন।
(প্রথম দিন)
আমি:- তো সখিনা, আজকে থেকে তোরে আমি প্রোগ্রামিং শিখাবো।
সখিনা:- প্রোগ্রামিং জিনিসটা কি? খায় না মাথায় দেয়। সেই তো দেহি কম্পিউটারে বোতাম কতগুলা চিবেন। হেই তো আমিও পারি।
আমি:- (মনে মনে, কন্ট্রোল ভাই কন্ট্রোল) দেখ সখিনা, প্রোগ্রামিং হইল একটা ভাষার মত। মানে ধইরা ল এটা কম্পিউটারের ভাষা। এই ভাষায় তুই কম্পিউটারের লগে কথা কইতে পারবি। তারে দিয়া যেকোন কাম ফিরিতে করাই লইতে পারবি।
সখিনা:- আল্লা সত্যি!!!!! আমার মাথায় হাত রাইক্ষা কও। তাইলে আমি প্রোগ্রাম কইরা এটারে দিয়ে ঘর ঝাড়ু দেওয়াইতে ফারবো!!!! কিন্তু, সে আমাগের ভাষা বুঝে না কেন?
আমি:- কারণ, হেই বলদ। তুই তারে যতই শিখা হেতে বুঝবে না। হেই এত্তো বড় বলদ। নাইলে কি তোর কাম ফিরিত কইরা দিত?
সখিনা:- কথায় যুক্তি আসে। আইচ্ছা, শুরু করেন।
আমি:- তো দেখ, প্রোগ্রামিং কি হেইডা বুইজ্জা লইসস:- প্রোগ্রামিং হলো এমন একটি ভাষা যার সাহায্যে কম্পিউটারের সাথে যোগাযোগ স্থাপন করা যায় এবং তাকে বিভিন্ন আদেশ দেওয়া যায়।
এহন দেখ, বাংলাদেশের সবার মাতৃভাষা বাংলা। কিন্তু তুই যদি সিলেট যাস, দেখবি মানুষ এক ঢং এ কথা কইবো আবার যদি চট্টগ্রামে যাস, সেখানের মানুষ আরেক ঢং এ কথা কইব। সিলেটের মানুষ সিলেটি কইব, নোয়াখালির মানুষ নোয়াখাইল্লা, বরিশালের মানুষ বরিশাইল্লা, চট্টগ্রামের মানুষ চাঁটগাইয়া। কিন্তু ঘুরি-ফিরি সবই বাংলা ভাষার বিভিন্ন রকম। এরকমই প্রোগ্রামিং এরও হাজার খানের রকম আছে। সেগুলোরে বলে প্রোগ্রামিং ল্যাংগুয়েজ। তার মইদ্দে সবচেয়ে বেশি মাইনষে যেগুলো ব্যবহার করে সেগুলো হলো:- C, Python, JavaScript, Java, SQL, C++ ইত্যাদি
[বি:দ্র: HTML প্রোগ্রামিং নয় বরং মার্কআপ ল্যাংগুয়েজ]
সখিনা:- একদম আমার মনের মত। পুরা সাদা ফকফইক্কা কিলিয়ার।
আমি:- এহন, আই Variable এ
সখিনা:- ভেড়া ক্যাবল!!!! এইডা কোন কোম্পানির ক্যাবল আবার!!!!
আমি:- আবে, ভেড়া ক্যাবল না। Variable, Variable, Vary able বুঝচ্চস?
সখিনা:- হ! Vary Able. এইডার কাম কি?
আমি:- Variable হলো বয়ামের মতন। মানে কথা বুঝ। তুই রান্নাঘরে গেলি। তুই একটা খালি বয়াম নিলি। এখন এটা তোর বিষয় যে তুই বয়ামের ভিতর কি রাখবি। তোর মর্জি মত। ধর, তুই ঠিক করলি বয়ামে চিনি রাখবি। তাইলে তুই বয়ামের নাম দিলি: "চিনির বয়াম"। ঠিক না?
সখিনা:- হ
আমি:- তো আমি শুরুতে কি বলিস? কি রাখবি তোর মর্জি মত। কিছুদিন চিনি রাখার পর তুই চিন্তা করলি এই বয়ামটারে চিনির বয়াম থেকে পাল্টায় দারুচিনির বয়াম বানাবি। তাহলে তুই বয়ামের নামে "চিনির বয়াম" থেকে পাল্টায় দিলি "দারুচিনির বয়াম" আর চিনির বদলে রাখা শুরু করলি দারুচিনি। এখন তুই বয়ামে যাই রাখ, সবই হবে কিন্তু রান্নার মশলাপাতি জাতীয় জিনিস। তুই তো আর বেগুন কিংবা শিম কিংবা মুরগী কাটি বয়ামে রাখবি না। চিনি রাখ কিংবা মশলা রাখ, রাখবি তো মশলাই। না?একইভাবে, প্রোগ্রামে.......
সখিনা:- আইচ্চা বাজারে গেলে চিনি আর দারুচিনি আইনো। দুইটার কোনটাই নাই।
আমি:-............
সখিনা:- আরে, এখন না কইলা ভুইলা যাইতাম। তুমি কন্টুনি কর।
আমি:- তো প্রোগ্রামিং এ ও একইভাবে Variable হলো বয়াম আর এই বয়ামে রাখা হয় বিভিন্ন Data। এখন তোমার মর্জি যে তুমি তোমার Variable এর নাম কি দিবা আর Variable এ কি ধরণের Data রাখবা। প্রোগ্রামের দুনিয়ায় সব কাজ Data নিয়ে। তাইলে দাড়াইল গিয়ে: Variable হলো একপ্রকার এর বয়াম যাতে সংরক্ষণ করা যায় বিভিন্ন ডাটা। এই বয়ামের নাম মনমতো দেওয়ার পাশাপাশি এই বয়ামের নাম এবং তথ্য ইচ্ছামত পাল্টানোও যায়।
সখিনা:- হুম। বুঝলাম। এইসব তো ডাইল-ভাত। কেন যে ওই ভাদ্দাইম্মা বিদেশিগুলো এগুলোর জন্য তোমারে হাজার হাজার ডলার দেয় মাসে কে জানে? আইচ্ছা, সজনে ডাঁটা তো এক ধরণেরই হয়। ডাঁটার আবার ধরন কি?
আমি:- (মনে মনে, কন্ট্রোল...) এই Data মানে সজনে ডাঁটা না, এই Data এর মানে তথ্য/উপাত্ত। আর এই তথ্য বিভিন্ন ধরণের হয়। যেমন: তোমার নাম "Sokhina" এটা হলো গিয়ে String টাইপ ডাটা। সাধারণত, প্রোগ্রামিং এর ভাষায় যেকোন লেখাকে স্ট্রিং টাইপ ডাটা বলে। আবার তোমার বয়স 25 এটা হলো Integer টাইপ ডাটা যেটাকে সংক্ষেপে Int বলে। সাধারণ প্রোগ্রামিং এর ভাষায় দশমিক বিহীন পূর্ণ সংখ্যাকে বলে Int টাইপ ডাটা। আর লাস্ট হলো Float টাইপ ডাটা। যেকোন দশমিক যুক্ত সংখ্যাকে Float বলে। যেমন: তোমার মোবাইলের ব্যালেন্স 64.68। এগুলো ছাড়াও আরো আসে। কিন্তু তোর মত অশিক্ষিত বেডির মাথাউ ঢুকবে না বলে বললাম না। এগুলো দিয়েই চলবে। বুঝচ্ছস?
সখিনা:- এই এই এই এই, তুমি অশিক্ষিত কারে কইলা? তুমি আমার শিক্ষায় আঘাত দিলা? তুমি জানো আমি এসএসসিতে পুরা জেলার মধ্যে ১০০ তে ৩৩ পাই পাস করসি। তুমি আমার শিক্ষায় হাত দাও? তোমার প্রোগ্রামিং আর সংসারের খেতায় আগুন। আমি যাচ্ছি বাপের বাড়ি। ভাদাইম্মার ঘরের ভাদাইম্মা।
[সখিনার সবেগে প্রস্থান]
আমি:- এই এই এই এই এই সখিনা...........
[দাম্পত্য কলহের জেড়ে বাকি অংশ জানতে পারবেন পরবর্তীতে। চোখ রাখুন মনিটরের পর্দায়।]
(পরেরদিন)
সেদিনের পর অনেকটা কষ্টে সখিনাকে শান্ত করসি রে ভাই। বিবাহ মানেই প্যারা। আপনি ব্যাচেলর হলে বিবাহ না করিবার পরামর্শ রহিল। বউ ঠান্ডা করার ধাক্কায় মাতৃভাষা হারিয়ে পেলেচি। তো যাই হউক। মনের তীব্র ভয় মনেই চেপে সখিনাকে আবার প্রোগ্রামিং শিখাইতে বসছি। ইয়া মাবুদ। বাঁচাইয়া লইও তোমার পাপী বান্দারে।
আমি:- সখু, আগে যা পড়াইসি তা কিছু মনে আছে।
সখিনা:- আগেরবার পড়াইসিলা প্রোগ্রামিং কি, ভেড়া ক্যাবল আই মিন Variable আর Data Type। প্রোগ্রামিং হইল এমন একটি ভাষা যেডা দিয়ে কম্পিউটারকে ঘর ঝাড়ু দেওয়ানোও যায়, Variable হলো মশলার বয়াম যেটাকে তোমার মত আমি নাকে দড়ি দিয়ে ঘোরাতে পারি আর ডাটা টাইপগুলো হলো, String কিংবা তোমার মত ভাদাইম্মার বকবকানি Integer(Int) আমার বয়স আর Float হলো আমার মোবাইলের ব্যালেন্স। হয়সে না? হুহ। আমি হইলাম গিয়ে এসএসসিতে পুরো জেলায় ১০০ তে ৩৩ পাওয়া সখিনা। তুমি আমার শিক্ষায় হাত দেওয়ার সাহস কর।
আমার বুক থেকে অতি দীর্ঘ একটা দীর্ঘশ্বাস বের হয়ে গিয়ে আগেরদিনের কথা মনে করে আবার ঢুকে গেল। ইয়া মাবুদ উডাইয়া লও। কেন যে বিবাহ করিলাম।
আমি:- আচ্ছা সখু, এবার আমরা তাইলে আসি Array এর টপিকে।
সখিনা:- এ্যাঁ!!!!!!!!!!
আমি:- রে। এ্যারে। এ্যারে মানে হলো গিয়ে ধর তোমার বাজারের ব্যাগের মত। ধর বাজারের ব্যাগ নিয়ে তুমি গেলা বাজার করতে। এখন বাজার করতে গিয়ে তুমি কিনলা প্রথমে আলু। এখন আলু নেওয়ার সময় তুমি বেছে বেছে ভালো আলুগুলো নিলা। এরপর নিলা পটল। এভাবে তুমি ভালো ভালো পটল গুলো তুললা।
সখিনা:- এই এই এই এই এই খাঁড়াও। আলু যদি "নিই" তাহলে পটল "তুলবো" কেয়া? তুমি কি বুঝাইবার চাও?
আমি:- সরি, মুখ থেকে ভুলে বাইর হয় গেসে। তো এখন দেখো বাজারের ব্যাগে তুমি শুধুমাত্র নিত্য প্রয়োজনীয় খাদ্য পণ্য রাখতেসো। তার সাথে, কোন খারাপ পণ্য রাখতেসো না এবং একাধিক পণ্য রাখতেসো। প্রোগ্রামিং এ Array হচ্ছে এই তোমার বাজারের থলের মত। তবে এখানেও Data ই রাখা হয়। মানে কথা বুঝো। এক্ষেত্রে বাজারের ব্যাগ হলো Array এবং নিত্য প্রয়োজনীয় পণ্য হলো Data। তবে এখানে একাধিক ডাটা থাকতে পারে যেমন একই ব্যাগে তুমি একাধিক ধরণের পণ্য রাখো কিন্তু কোন ডাটা একাধিকবার থাকতে পারে না। যেমন বাজারের ব্যাগে তুমি কোন খারাপ পণ্য রাখো না তেমনই।
সখিনা:- মানে Array হলো গিয়ে তোমার লুইচ্চা বেডা বন্ধু মফিজের মত। যার মনে সব মাইয়াই জায়গা পায়। কিন্তু কাউরে তা একাবারের বেশি ভালো লাগে না।
আমি:-হ্যাঁ। Array হলো এমন এক Variable যাতে একের অধিক ডাটা রাখা যায়। তবে একই ডাটা একাধিকবার রাখা যায় না।
জানালা দিয়ে তাকায় দেখে আমার কলিজা বাইর হইবার জোগাড়। মফিজ আমাদের বাড়িই আসতেসে। ইয়া মাবুদ! মানে কথাডা বুঝো।
মফিজ:- বন্ধু, মিষ্টি খাও, মিষ্টি খাও। ভাবি মিষ্টি খান।
আমি:- কীরে মফিজ? ব্যাপার কি? ফ্রি'তে তো তুই খাইতি। তুই আবার ফ্রি'তে খাওয়াস!!!
মফিজ:- আরে ধুর বেডা। হেই দিন কি আছে? আইচ্ছা হোন, আগামী জুম্মাবার আমি শাদি মোবারক সম্পন্ন করতেসি।
আমি মফিজকে নিজের অমোঘ বাণী শোনাতেও গিয়েও পারলাম না। কারণ সামনে সখিনা দাঁড়ায় আছে।
সখিনা:- [Array কি Variable হয়ে যাইতেসে!!!!!!]
মফিজ:- ভাবি কিছু কইলেন?
সখিনা:- না না। কিছু না। আপনি বসেন। আমি চা বানায় আনি।
মফিজ:- না না ভাবি। সময় নাই। অনেকের বাড়ি যাইতে হইব। আজ উডি।
মফিজ যাওয়ার পর সখিনা আমার দিকে ফিরে কইল,
সখিনা:- কীরে ভাদাইম্মা, তোমার Array তো Variable হয়ে যাইতেসে!
আমি:- দেখো,কথায় কথায় ভাদাইম্মা ডাকবি না। আমি তোর স্বামী হয়। আর স্বামীর পদতলে স্ত্রীর বেহেশত।
সখিনা:- আরে ধুরু। তোমার শিখানি শুরু কর। দেখি এবার কোন ভেড়া ক্যাবল শিখাইবা। কেন যে ওই সাদা চামড়ার ছাগলগুলো তোমারে এই কামগুলোর জন্য নিজেগো ডলার দেয় কে জানে?
আমি:- [মনে মনে, মনে হয় সখিনারে একটু টাইট দেয়া লাগবে] তাইলে সখিনা এবার আমরা একটু হাতে-কলমে প্রোগ্রামিং করব। এজন্য আমরা এবার কোড ইডিটরে যাবো।
সখিনা:- কডের ভিতর?
আমি:- কোড ইডিটর (Code Editor)। বুঝচ্ছস? রান্না করতে যেমন চুলা ছাড়া রান্না হয় না,তেমনি কোড ইডিটর ছাড়া প্রোগ্রামিং হয় না।
বলে আমি আমার মোবাইলে Pydroid 3 চালু করলাম।
[এবার একটু হাতে-কলমে উদাহরণগুলো অনুশীলন করাবো। সবার বোঝার সুবিধার্তে পাইথনে উদাহরণগুলো করব। কয়েকটা প্রশ্ন দেওয়ার ট্রাই করব। আপনার যারা মোবাইল ইউজার তারা Pyrdrid 3 আর যারা পিসি ইউজার তারা Visual Code Editor ব্যবহার করতে পারেন।]
সখিনা:- আল্লা!!!!! তোমার মোবাইলের ইসকিরিন এত্তো কালা কা? মোবাইল দিয়ে কালা জাদু করনি?
আমি:- আরে ধ্যাত।
বিরক্ত হিয়ে ডার্ক মোড বন্ধ করে দিলাম।
আমি:- তুমি টাইপিং পারো মোবাইলে?
সখিনা:- অবশ্যই। ফারবো না কেন। হুহ। আমি হইলাম গিয়ে এসএসসিতে পুরো জেলায় ১০০ তে ৩৩ পাওয়া সখিনা। তুমি আমার শিক্ষায় হাত দেওয়ার সাহস করতাসো মনে অয়?
আমি কথা না বাড়ায় মোবাইলটা ওর হাতে তুলে দিলাম। গতবারের পর আর রিস্ক নিমু না।
আমি:- নাও ধর। প্রথমে আমরা একটা Variable বানাবো। বুঝচ্ছ?
হঠাৎ সখিনা উঠে হাঁটা ধরল।
আমি:- কই যাও?
সখিনা:- তুমি না ভেড়া ক্যাবল বানাইবা? তো আমি হাতুড়ি-পেরাক আনতে যায়। বানাইতে এগুলো লাগব না?
আমি:- ওরে আল্লা! কিসসু লাগবো না। তুমি এইহানে বস। আর আমি যা কই তা কর।
সখিবা:- আইচ্ছা কও
আমি:- প্রথমে একটা Variable বানাবো। কি তথ্য দিয়ে Variable বানাবা?
সখিনা:- আমার কাছে তো শুধু এনআইডির তথ্য আসে! চলো হেইডি দিয়েই বানায়!
আমি:- ওরে!!! দেখো, তথ্য বলতে আমি যেকোন তথ্য বোঝাইসি। যেমন আজকে হইল ২৯ তারিখ। এটা একটা তথ্য। তোমার মোবাইল ব্যালেন্স আজকে শুন্য টাকা। এটাও একটা তথ্য। এরকম যেকোন কিছুই তথ্য।
সখিনা:- তাইলে চলো আমার নাম নিয়ে একটা Variable বানায়।
আমি:- আইচ্ছা। যেহেতু নাম নিয়ে Variable, তাইলে ভ্যারিয়েবলের নাম দাও "Name"।
সখিনা:- কেম্নে?
আমি:- Name শব্দটা ওইখানে লেখো। এরপর একটা সমান চিহ্ন দাও। এরপর তোমার নাম লিখ। নামের দুইপাশে দুইটা কোটেশন মার্ক দিবা।
[বিঃদ্রঃ আমরা আগের পর্বের থেকে জানি Sokhina হবে একটা String টাইপ ডাটা। আর পাইথনে কোন String টাইপ ডাটার দুইপাশে ডবল কোটেশন মার্ক(" ") দিতে হয়।]
সখিনা লিখল:
আমি:- এই বানানো হলো একটা Variable যেটার নাম হলো "Name" আর যেটাতে তথ্য হিসেবে আছে তোমার নাম।
সখিনা:- আল্লা!!!! এত্তো সহজ!!!! এইগুলার জন্যে ওই সাদা চামড়ার ভাদাইম্মাগুলো তোমারে ডলার দেয়!!!! আল্লাহ!!!! তুমি লোক ঠকাইয়া খাও?
আমি:- সখিনা। আমি তোরে জিনিসগুলো বুঝাইবার জন্য সহজ জিনিস দেখাইতেসি। বাস্তবে এরকম কিছুই ওই বিদেশি ক্লায়েন্টগুলো আমারে দেয় না। আমারে যা দেয় তা তোর চিন্তারও বাইরে।
সখিনা:- আচ্ছা আচ্ছা!! মাতা টানডা করেন, তানায় কেচ করেন।
আমি:- কিহ!?!?!?!?!?!?!?
সখিনা:- কিছু না। কন্টুনি করেন।
আমি:- আইচ্ছা। এবার আমরা print ফাংশান দিয়ে print করবো এই Variable এর আউটপুট নিবো।
সখিনা:- কিন্তু আমাগে বাসায় তো পিন্টার নাইক্কা!!!!
আমি:- এই Print সেই প্রিন্ট না। এই Print হলো এক ধরণের ফাংশান। ফাংশান মানে হলো হুকুম। মানে, তুমি যদি কোড ইডিটরে Print ফাংশান টাইপ করো, তাহলে কম্পিউটার বুঝে নিবে তুমি তাকে এখন কোন লেখা দেবে। এই Print ফাংশানের ভিতর তুমি যদি কোন Data লেখ, তাহলে কম্পিউটার সেটা হুবুহু Print করবে স্ক্রিনে। আবার যদি কোন Variable বা Array এ নাম লেখ, তাহলে কম্পিউটার সে Variable বা Array এর মান দেখাবে।
সখিনা:- মানে সোজা কথায়, পিরিন্ট পাংশ্ন হলো আয়নার মতো। সামনে যা আনবে তাই আবার দেখাবে। হ্যাঁ।
ফাংশান হলো বিভিন্ন আদেশের মত যার সাহায্যে প্রোগ্রামিং এ কোড ইডিটরের মাধ্যমে কম্পিউটারে বিভিন্ন কাজ করিয়ে নেওয়া যায়। Print ফাংশান হলো এমন এক ধরণের ফাংশান যা এই ফাংশানের ব্র্যাকেটের ভিতর থাকা Data বা Variable/Array এর ভিতর থাকা Data স্ক্রিনে দেখায় বা Print করে।
আমি:- এবার এই Variable এর Data স্ক্রিনে Print কর।
সখিনা:- কেম্নে?
আমি:- ওইখানে নিচের লাইনে print লেখে তার পরে দুইটা প্রথম ব্র্যাকেটের ভিতরে Variable এর নাম লিখ।
সখিনা লিখল:
আমি:- এবার রান বাটনে ক্লিক কর।
সখিনা:- কোনডা?
আমি:- ওইয়ে কাইত হয়ে আছে একটা ত্রিভুজ। ওইটা।
সখিনা ওই বাটন চাপার পর স্ক্রিনে দেখা গেল:
আমি:- প্রোগ্রামিং এর দুনিয়ায় স্বাগতম সখিনা। তুমি এই মূহূর্তে তোমার প্রথম প্রোগ্রাম রান করিয়েছ।
সখিনা এই বিষয় দেখে খুশিতে আত্মহারা হয়ে আমার জন্য চিকেন দম বিরিয়ানি রান্না করতে চলে গেল।
বিবাহ অতটাও খারাপ না!!!!!
[বাকি পর্ব মধ্যাহ্ন ভোজের পর।]
দুপুরে ভরপেট ভোজনের পর আমার মাথা এবং পেট দুটোই বেশ চনমনে আচ্ছে। বাইরে হালকা হালকা ঠান্ডা পড়ছে বৃষ্টির কারণে। বেশ একটা ঝিমুনী আসছে। হঠাৎ বিকট শব্দে বাজ পড়ার শব্দে আমার তন্দ্রা ছুটে গেল। সামনের দিকে তাকিয়ে হঠাৎ বিরিয়ানিও হজম হইয়ে গেল। সামনে সখিনা আমার দিকে রক্তচক্ষু প্রয়োগ করে তাকিয়ে আছে। ইয়া মাবুদ! এক বইয়ে পড়সিলাম গ্রীসের দেব-দেবীদের চোখে নাকি আগুন থাকত। তাই তারা যার দিকেই রেগে তাকাতো সেই আগুনে পুড়ে ছাই হয়ে যেত। ভাগ্যিস সখিনা বাঙালী! এটা হিন্দি সিরিয়াল হলে নির্ঘাত ব্যাকগ্রাউন্ডে মিউজিক বাজতো:
দুমতানানানানানা দুমতানানানানা দুমতানানানানানা দুম দুম দুম দুম
আমি কোনমতে ঢোক গিলে বললাম
আমি:- কি হয়সে বউ?
সখিনা:- কি হয়সে? ভাদাইম্মার ঘরের ভাদাইম্মা। নিজে ভালো এপ চালাও। আমারে দেও নষ্ট এপ। তোমারে আমি দুপুরে কি সুন্দর বিরিয়ানি রান্দিও খাওয়ায়লাম। এই দিন দেখার লাইগা।
আমি:- এপ আবার নষ্ট হয় কেমনে?
সখিনা:- তো ভ্যাড়া ক্যাবল বানায় চালাইলে এগুলো কি দেখায়?
আমি সখিনার মোবাইল নিয়ে দেখলাম ইন্টারপ্রিটারের টার্মিনালের স্ক্রিনে এই মেসেজ দেওয়া আছে:-
যে কোড ইডিটরে পাইথন প্রোগ্রামিং করে তাকে ইন্টারপ্রিটার বলে। কোড ইডিটরের যে জায়গায় কোড রান হওয়ার পর ফলাফল দেখায় ওইটাকে টার্মিনাল বলে।
আমি ইন্টাপ্রিটার স্ক্রিনে এসে দেখলাম সখিনা প্রোগ্রাম বানাইসে:
প্রোগ্রাম দেখে আমি কয়েক মিনিট টাস্কি খায় বসে ছিলাম। ডিবাগ কি করব!!!!
কম্পিউটারের শুরুর দিকে ক্রমবিকাশের সময় একদিন দেখা যায় Harvard Mark II কম্পিউটার কাজ করছে না। তীক্ষ্ণ অনুসন্ধানের পর দেখা গেল কম্পিউটারের মূল যন্ত্রাংশের ভিতর একটি মথ পোকা ঢুকে গেছে, যার কারণে কম্পিউটার ঠিকঠাক চলছে না। সেইদিনে পর থেকে কোন কম্পিউটারে কোন কিছু করার পর আশানুরূপ ফল না পেলে কম্পিউটারের সে সমস্যাকে Bug বলে। এটা প্রোগ্রামিং এর ক্ষেত্রেও প্রযোজ্য। আর এই সমস্যা সমাধান করাকে বলে Debug করা।
সখিনা:- কীরে?? ভেড়ার মত বইসা আসো কেন? এপ ঠিক কর। ভালো এপ দাও।
আমি:- সখু, এপ ঠিকই আসে। কিন্তু তুমি Variable বানানোর নিয়মে ভুল করসো।
সখিনা:- এ্যাই!!! তুমি না বলসো আমি আমার ইচ্ছামত নাম দিতে পারবো। তাইলে আবার নিয়ম কি?
আমি:- [দীর্ঘশ্বাস ফেলে] দেখ সখিনা, এই যেমন ধর তুমি আজকে আমার লাইগা "দম বিরিয়ানি" বানাইসো। এখন বানানোর তুমি ঠিক করলা তুমি তোমার বানানো এই "দম বিরিয়ানির" নাম দিবা "বড়ইয়ের আচার"। এখন তোমার রান্না, তুমি কি নাম দিবা সেটা তোমার বিষয়। কিন্তু নাম দেওয়ার আগে তোমাকে রান্নাটা সঠিকভাবে করতে হবে। মানে আগে চাউল নিয়ে ধুইতে হবে। এরপর রান্নার বাকি কাজ করতে হবে। তাই না? এখন ধর তুমি আগে রান্না করে ফেললা, এরপর সেটারে ধুইলা, এরপর সেটাতে লবণ দিলা। তাইলে হবে? তাইলে তোমার দম বিরিয়ানিই তো হইল না। তুমি "বড়ইয়ের আচার" নামটা দিবা কেমনে? কথায় ভেজাল আছে?
সখিনা:- নাহ! কথা কিলিয়ার।
আমি:- ঠিক এইভাবে তুমি তোমার ভেড়া ক্যাবলের কি নাম দিবা আর ভেড়া ক্যাবলে কি ডাটা রাখবা এটা তোমার ব্যাপার। কিন্তু নাম দিয়ে ভেড়া ক্যাবল বানানোর একটা নিয়ম আছে। ওই নিয়মে তুমি ভুল করসো।
সখিনা:- তো ভেড়া ক্যাবল বানানের নিয়ম কি?
আমি:- ভেড়া ক্যাবল বানানের নিয়ম হলো..........(এক মিনিট! আমি ভেড়া ক্যাবল কইতাসি ক্যা????)
সখিনা:- কি হইল?
আমি:- কিছু না। তো Variable বানানোর সময় মাঝকানে কুনু whitespace দিতে পারবা না আর নাম a-z আর 0-9 আর আন্ডারস্কোর এইগুলো দিয়ায় বানাইতে হইব।
সখিনা:- হুয়াইট স্পিস আর আন্ডাস্ক কি?
আমি:- তুমি যে Variable টা বানাইসো সেইটা দেখো:- "sundori ️sokhinar ssc number". এইহানে তুমি sundori আর sokhina এটার মাঝখানে একটা খালি জায়গা দিসো। আবার sokhina আর ssc এইটার মাঝখানে একটা খালি জায়গা দিসো। এইযে খালি জায়গাগুলো তুমি লেখার সময় ব্যবহার করো, এইগুলোই হলো "Whitespace"। আর তোমার কি-বোর্ডে দেখো এইরকম একটা চিহ্ন আছে:- _ ওইটাই হলো আন্ডারস্কোর।
দুইটা শব্দের মাঝে ব্যবহৃত খালি জায়গা হলো Whitespace
সখিনা:- আচ্ছা, সব নিয়ম মাইন্না এই ভেড়া ক্যাবলের নাম না পাল্টায়াই কেমনে ঠিক করবাম?
আমি:- নানাভাবে করতে পারো। এই যেমন:
কিলিয়ার? না ভেজাল আছে?
সখিনা:- কিলিয়ার
আমি:- অনেক তো Variable বানালাম। এবার চলো একটু Array বানায়।
সখিনা:- তাইলে বাজারের ব্যাগেরটাই বানাই?
আমি:- হুম। তাইলে শুরু করো। নিয়ম আগের Variable বানানোর মতই। এক্কেবারে একই। শুধু ব্র্যাকেটের ভিতর সব ডাটা কমা দিয়ে দিয়ে লিখবা।
সখিনা বানালো:
আমি মাত্রই মোবাইলটা নিসিলাম। হঠাৎ আবার বিকট শব্দে বাজ পড়ল। একটু পরে বুঝচ্চি ওইটা সখিনা চিক্কুর দিসে। কারণ, ওর প্রোগ্রাম রান করার পর আবার এইটা দেখাচ্ছে:-
আমি মোবাইল নিলাম। দেখলাম।
আমি:- এই যে দেখো, তুমি যে লিখস; sim, alu, potol, moric, lobon এইগুলো কি টাইপ ডাটা?
সখিনা:- ইসটিং।
আমি:- String এর আগে-পরে কি বসাইতে হয়?
সখিনা:- ওই যে মাথার উপর থাকে যে, দুইটা করে কমাগুলো।
আমি:- এগুলো কই?
সখিনা:- তলি। এবার হইসে?
আমি:- চালায় দেখো।
সখিনা চালালো আর আউটপুট আসলো:-
সখিনা:- ইয়েএএএএএএএএএএএএএএএএএ। এই নাও ধর?
আমি:- এটা আমি কিত্তাম?????????
সখিনা:- এটা বাজারের লিস্ট। যাও। বাজার করে আনো। এই বাজারগুলো নাই।
আমি:- এহহহহহহহ!!!!!!
সখিনা:- হ্যাঁ। যাও যাও যাও। দেরি করিও না। যাও।
আমি:- [ব্যাচেলর ভাইদের প্রতি বিবাহ না করার অনুরোধ রহিল]
[বাকি পর্ব পাবেন আমি বাজার করে আসার পর]
তো যাই হউক। বউয়ের আদেশ শিরোধার্য মেনে বাজার করে নিয়ে আসলাম। বাসায় আসার পর দেখলাম বউ খুশিতে গদগদ হয়ে ঘুরছে। আমাকে দেখে বলল,
সখিনা:- এই জানো, আজকে মা আসবে।
আমি:- [মনে মনে, সর্বনাশ]
এবার বাজারে পাঠানোর কারণ পরিষ্কার হলো। সে খুশিতে নাচতে নাচতে ইলিশ রান্না করতে চলে গেল। একটু পর তার মোবাইলে আবার কল আসলো। কথা শেষ করে দেখালাম সে ইলিশ ফ্রিজে ঢোকাচ্ছে।
আমি:- ব্যাপার কি?
সখিনা:- আরে, মায়ের নাকি কি কাজ আছে। তাই কালকে আসবে।
আমি: [মনে মনে, আলহামদুলিল্লাহ] হুম।
সখিনা:- এক কাজ কর। আরেকটু প্রোগ্রামিং শেখাও। জিনিসটা খারাপ না।
আমি:- [মনে মনে, আমি যেভাবে শিখছি সেভাবে যদি শিখত....] আচ্ছা। এবার তাহলে If-else স্টেটমেন্ট বা Conditional Statement নিয়ে কথা বলি।
সখিনা:- উকে।
আমি:- আচ্ছা। If-else কে বলে কন্ডিশনাল স্টেটমেন্ট। মানে, শর্তসাপেক্ষ কাজ। ধর, আমি আজকে মফিজকে কল দিলাম। কল দিয়ে আমি বললাম, মফিজ আমি অমুক জায়গায় যাবো। একা যাইতে ইচ্ছা হচ্ছে না। তুই যাবি? এখন দেখো। আমার কাছে এখানে দুইটা সম্ভাব্য উত্তর বা কন্ডিশান আসছে। একটা কন্ডিশনে মফিজের উত্তর হবে "হ্যাঁ" আর আরেকটা কন্ডিশনে মফিজের উত্তর হবে "না"। এবার, মফিজ যদি "হ্যাঁ" বলে, তাহলে একটা স্টেটমেন্ট রান হবে বা আমাদের ভাষায় একটা কাজ হবে। আর যদি মফিজ "না" বলে তাহলে আরেকটা স্টেটমেন্ট রান হবে বা আমাদের ভাষায় আরেকটা কাজ হবে। তাহলে এই বিষয়টা বাংলায় পাইথনের স্টাইলে হবে:
এইটাকে কোড করলে হবে:
সখিনা:- তোমার মফিজ নামের ওই লুইচা বেডার সাথে এত্তো কিসের ঘসাঘসি। ওর সাথে মিশবা না।
আমি:- আর ধ্যাত। যা পড়াইতিসি পড়। এটা উদাহরণ দিচ্ছি।
সখিনা:- আচ্ছা। কন্টুনি।
আমি:~ এইটা বুচ্ছ?
সখিনা:- হ্যাঁ।
আমি: এবার আরো একটা উদাহরণ দেয়। তাইলে আরো সহজ হবে।
এখানে দেখো দুইটা Variable বানাইসি যাদের নাম হলো a আর b। তো আমি পাইথনে কমান্ড দিলাম যদি a ছোট আর b বড় হয়, তাহলে a প্রিন্ট করবা। নাইলে b প্রিন্ট করবা।
এবার এইসব বাদ দিয়ে আরেকটা উদাহরণ বলি। এখন তো আইপিএল চলতেসে। ধর, "গুজরাট টাইটানস" আর "রাজস্থান রয়েলস" এর খেলা হচ্ছে। খেলায় টস হলো। "গুজরাট" নিলো "হেড" আর "রাজস্থান" নিল "টেইলস"। মানে, যদি হেড আসে তাইলে গুজরাট জিতবে, যদি টেইল আসে তো রাজস্থান জিতবে। তাইলে এটা বাংলায় প্রোগ্রামের স্টাইলে লিখলে হবে:
এবার প্রোগ্রাম লিখি:
অনেকগুলো উদাহরণ দিলাম এবার বুঝচ্ছ?
সখিনা: হ্যাঁ। এবার অনেকটা ক্লিয়ার।
আমি:- যতক্ষণ পর্যন্ত ইন্টারপ্রিটারে কোড করবা না, ততক্ষণ কন্সেপ্ট ক্লিয়ার হবে না কিন্তু।
সখিনা:- আইচ্ছা ধর, টসের কয়েনটা উপ্রে ফেইক্কা মারসে। কয়েনটা উপ্রে উডার পর একটা পাখি আইসা আসমান থেইকা এইডা নিয়ে উড়াল দিসে। তক্ষণ কি হবে?
আমি:- এত্তো উদ্ভট প্রশ্ন তোমার মাথায় কেমনে আসে?
সখিনা:- আরে বল না।
আমি:- তখন আবার টস হবে। আরেকটা নতুন কয়েন দিয়ে।
সখিনা:- এইডা প্রোগ্রাম কেমনে হবে?
আমি:- এখানে, যদি হেড আসে তাইলে গুজরাট জিতবে, আবার যদি টেইল আসে তো রাজস্থান জিতবে। নইলে আবার টস হবে। বাংলায় প্রোগ্রামিং এর স্টাইলে:
তাইলে প্রোগ্রামটা হবে এরকম:
সখিনা:- আলিফ'টা কে?
আমি:- কিহ!!!!!!!!!!
সখিনা:- এইযে এইটা। ( elif)
আমি:- আরে ধ্যাত। এইটা এলিফ(elif)। মানে else আর if মিলে elif হয়সে। elif মানে হচ্ছে উপরের "আবার যদি" এইটা।
সখিনা:- আচ্ছা উপরের তোমার বন্ধু মফিজের উদাহরণটা একটু দেখ। তোমার বন্ধু মফিজ যাবে বললে তুমি যাবে। এখন তোমার বন্ধু যদি বলে আজকে যাইতে তাইলে তুমি আজকে যাবা। আবার তোমার বন্ধু যদি বলে কালকে যাবো, তাইলে কালকে যাবা। এই যে বিষয়টা, এটাকেও কি "আলিফ" দিয়েই করব?
আমি:- করতে পারো। তবে করার জন্য বেস্ট হচ্ছে Nested If-Else।
সখিনা:- এঈডা কি?
আমি:- এটার মানে হলো গিয়ে If-else এর ভিতর If-else বা কন্ডিশনের ভিতর কন্ডিশন। সোজা বাংলায় শর্তের জন্য শর্ত। মফিজেরটা লিখি দেখ:
এইটাকে কোড করলে হবে:
এইটা আশা করি বুঝচ্ছ। এখানে একটা Variable এ মফিজ যাবে কিনা সেই তথ্য এবং কবে যাবো সেই তথ্য আরেকটা Variable এ রাখছি জাস্ট। বাকিটা তো জানোই।
সখিনা: আচ্ছা, Statement এর আগে Indentation না দিলে প্রোগ্রাম রান হয় না কেন?
আমি:- কারণ, Condition এরপর যে যে লাইনের আগে Indentation দাও তুমি, পাইথন বুঝে না যে সেই সেই লাইন লেখা হচ্ছে এই Condition এ ভেতর। মানে তুমি Condition এর ভিতর এই Condition সত্য হলে কি হবে তা নিয়ে প্রোগ্রাম করতোসো। আর যে লাইন থেক তুমি Indentation দাও না, পাইথন ভেবে নেয় তুমি সেই লাইন থেকে Condition এর বাইরে প্রোগ্রাম করা শুরু করস।
সখিনা:- তোমাকে যতটা ভাদাইম্মা ভাবসিলাম তুমি ততটা না দেখি।
আমি:- আমিও।
সখিনা:- মানে?
আমি:- মানে আমি তোমাকে যতটা অশিক্ষিত ভাবসিলাম তুমি ততটা না।
সখিনা:- ভাদাইম্মা আমার শিক্ষায় হাত দেস!!!!!!!!!!!!!! রাখ..........
[ভাই, আমি এখন World War 5 এ আসি। দোয়া করবেন। বেঁচে থাকলে দেখা হবে।]
কোন কারণে যদি একাধিক পরস্পরবিরোধী পরিস্থিতির উদ্ভব ঘটে এবং একটি পরিস্থিতি সত্য হলে যদি বাকি পরিস্থিতিগুলো মিথ্যা হয়ে যায়, তাহলে সেই পরিস্থিতিগুলোকে প্রোগ্রামিং এর ভাষায় বলে Condition। কোন Condition সত্য হলে যে ঘটনা এই Condition সত্য হওয়ার ফলে ঘটেছে তাদেরকে Statement বলে। কোন Conditional Statement এর প্রোগ্রাম লিখতে যে কি-ওয়ার্ড প্রোগ্রামিং এ ব্যবহার হয় তাদেরকে বলে If-else। কোন If-else এর ভিতর যদি আরো If-else থাকে, তখন তাকে Nested If-else বলে। যে শব্দ বা শব্দগুচ্ছ প্রোগ্রামিং এ বিভিন্ন কাজের জন্য আগে থেকেই ব্যবহৃত থাকার কারণে তাদের নতুন কোন কাজ (যেমন: নামকরণ) এর জন্য ব্যবহার করা যায় না, তাদেরকে প্রোগ্রামিং এ ভাষায় বলে Keyword
সখিনা:- আচ্ছা, এক্কান কথা কও তো।
আমি:- কি?
সখিনা:- এই যে, তুমি আমারে প্রোগ্রামিং শিখাচ্ছো, হ্যাঁ। এইগুলো ব্যবহার হয় কোথায়? মানে ধর, তোমারে যে অনলাইনে এই কাজের জন্য টাকা দেয়। ওরা তোমারে কি কাজ দেয়?
আমি:- ওরা বলে যে ওর একটা ওয়েবসাইট বা এপ এর জন্য প্রোগ্রাম লাগবে। এপ এই এই ফিচার থাকবে। এর জন্য প্রোগ্রাম লিখে দিতে হবে।
সখিনা:- ওওওও। তার মানে প্রোগ্রাম দিয়ে এপও বানান যায়! ওয়েবসাইটও বানান যায়! তা প্রোগ্রাম দিয়ে বানানো একটা এপ দেখাও তো।
আমি:- পৃথিবীর সব এপ আর ওয়েবসাইট প্রোগ্রাম দিয়ে বানানো।
সখিনা:- আল্লা তত্তি!!!!!! কিন্তু আমি যেমনে প্রোগ্রাম করি তেমনে তো কুতাও প্রোগ্রাম দেখি না।
আমি:- ধর একটা রেস্টুরেন্টে গেলাম। সেই রেস্টুরেন্টের সব জায়গায় তুমি কিন্তু যেতে পারো না। তোমাকে নির্দিষ্ট এক জায়গায় টেবিলগুলোতে বসতে হয় কাস্টমার হিসেবে। চাইলেই কিন্তু তুমি ক্যাশ কাউন্টারে বসতে পারবে না। রেস্টুরেন্টে গিয়ে তুমি অর্ডার দাও। অর্ডার দেবার পরে রেস্টুরেন্টের পেছনে রান্নাঘরে রান্না হয়। কিন্তু এই প্রসেসটা তুমি দেখো না। এরপর তোমার কাছে খাবার সার্ভ হয়। ঠিক একইভাবে এই ফেসবুক এপ এর উদাহরণ নাও। এটা ঠিক রেস্টুরেন্টের মত ধর। তুমি ফেসবুকে আসো এবং ফেসবুকে তোমার জন্য নির্দিষ্ট জায়গা যেমন: নিউজফিড বা গ্রুপ। তুমি কিন্তু চাইলে কোন গ্রুপের এডমিন প্যানেলে চলে যাইতে পারবে না। এবার তুমি ফেসবুকে কোন বাটনে ক্লিক কর। এই ক্লিক করা মানে তুমি তাকে কমান্ড দাও। যেমন গ্রুপ বাটনে ক্লিক করার মাধ্যমে তুমি তাকে অর্ডার দাও যে তোমাকে গ্রুপ সেকশনে নিয়ে যেতে। তখন পেছনে বিভিন্ন প্রোগ্রাম রান হয় বা চলে। ঠিক যেভাবে রেস্টুরেন্টের পেছনে রান্নাঘরে রান্না চলে। রেস্টুরেন্টের পেছনে যেখানে রান্না চলে সেটাকে যেমন রান্নাঘর বলে ঠিক একইভাবে ফেসবুক'সহ অন্যান্য সব এপ আর ওয়েবের যেখানে কোড প্রসেস হয়, সেটাকে বলে BackEnd। আবার রেস্টুরেন্টে রান্না শেষ হলে অর্ডার তোমার টেবিলে আসে, ঠিক একইভাবে কোড প্রসেস হয়ে রেজাল্ট তোমার সামনে স্ক্রিনে আসে এবং এপের এই অংশকে বলে FrontEnd.
সখিনা:- আইচ্ছা তাইলে তো ধর, আমার কোড রান হয়ে রেজাল্ট যেখানে আমার সামনে আসে সেটাও তো FrontEnd, না?
আমি:- হ্যাঁ।
সখিনা:- কিন্তু সেটা তো এত ডিজাইন করা না।
আমি:- কারণ এপ এর জন্য এইগুলো আলাদা করে ডিজাইন করে যাকে UI/UX Design বলে। UI এর পূর্ণরূপ হলো User Interface.
যেখানে কোন এপ/ওয়েবের প্রোগ্রাম প্রসেস হয়, তাকে বলে Backend. Backend এ প্রসেস হওয়ার পর রেজাল্টে যেই জায়গায় ব্যবহারকারীর সামনে আসে সেটাকে বলে Frontend. যারা Frontend প্রোগ্রাম করে তাদের বলে Frontend Developer. যারা Backend প্রোগ্রাম করে তাদের বলে Backend Developer. Frontend ডিজাইন করার কাজকে বলে UI/UX Design. যারা UI/UX ডিজাইন করে তাদের বলে UI/UX Designer.
সখিনা:- আচ্ছা এই প্রোগ্রামিংটা সবার আগে আবিষ্কার করসে কে?
আমি:- ওইটা অনেক ইতিহাস। সংক্ষেপে বলি, ১৮৫০ সালে কবি লর্ড বায়রন এর কন্যা এডা লাভলেস প্রথমবারের মত তৈরি করেন কম্পিউটার প্রোগ্রাম। তার মৃত্যুর ১০০ বছর পর তার প্রোগ্রামিং এর উপর তার সেই রিসার্স পেপার পুনঃপ্রকাশিত হয়। তাই তাকে প্রোগ্রামিং এর জনক/জননী বলে। ১৯৪৫ থেকে আবিষ্কৃত সকল প্রোগ্রামিং ল্যাঙ্গুয়েজকে ৫টি জেনেরশনে ভাগ করা হয়:
প্রথম প্রজন্ম (১৯৪৫-১৯৫০) - Machine Language
দ্বিতীয় প্রজন্ম (১৯৫০-১৯৬০) - Assembly Language
তৃতীয় প্রজন্ম (১৯৬০-১৯৭০) - High Level Language
চতুর্থ প্রজন্ম (১৯৭০-১৯৮০) - Very High Level Language
পঞ্চম প্রজন্ম (১৯৮০-বর্তমান) - Natural Language
সব প্রোগ্রামিং ভাষাকে আবার চারটি স্তরে ভাগ করা হয়:
নিম্ন স্তরের ভাষা: Machine Language, Assembly Language
মধ্যম স্তরের ভাষা: C, C++, Java, Forth, Dbase, Wordstar ইত্যাদি
উচ্চ স্তরের ভাষা(3GL): Fortran, Basic, Pascal, Cobol, C, C++, C#, Visual basic, Java, Python
অতি উচ্চ স্তরের ভাষা(4GL): Perl, Python, Ruby, SQL, MatLab(MatrixLabratory) ইত্যাদি।
জনপ্রিয় কয়েকটি প্রোগ্রামিং ল্যাংগুয়েজ:
সি প্রোগ্রামিং: ১৯৭০ সালে ডেনিশ রিচি(Denis Ritchie) যুক্তরাষ্ট্রের AT&T বেল ল্যাবরেটরিতে UNIX অপরেটিং সিস্টেম ডেভেলাপ করার জন্য এই ভাষা তৈরি করেন। ১৯৭২ সালে সি ল্যাঙ্গুয়েজ প্রথম প্রকাশ হয়। ১৯৭৮ সাল পর্যন্ত এ ভাষা বেল ল্যাবরেটরিতে ব্যবহার করা হতাে। পরবর্তীতে এ ভাষা সর্বসম্মুখে উন্মুক্ত করা হয়। সি প্রোগ্রামগুলো .c এক্সটেনশন দিয়ে সেভ করতে হয়।
সি++ (C++): C++ একধরণের অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ভাষা। ১৯৮০ সালে বিয়ার্নে স্ট্রোভস্ট্রুপ (Bjiarne Stroustrup) যুক্তরাষ্ট্রের AT&T Bell Laboratory তে এটি তৈরি করেন। এটি সর্বকালের অন্যতম জনপ্রিয় প্রোগ্রামিং ভাষা এবং সফটওয়্যার শিল্পে এটি বহুল ব্যবহৃত হয়।
জাভা (Java): সান মাইক্রোসিস্টেম ৯০ এর দশকের গােড়ার দিকে জাভা ডিজাইন করার পরে এটি অতি দ্রত বিশ্বের সবচেয়ে জনপ্রিয় প্রোগ্রামিং ভাষার একটিতে পরিণত হয়। জাভার এই জনপ্রিয়তার মূল কারণ এর অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ও ওয়েব প্রোগ্রামিং- এর প্রতি পরিপূর্ণ সাপোর্ট । জাভার পূর্বের প্রোগ্রামিং ভাষাগুলােতে সাধারণত এক অপারেটিং সিস্টেমের জন্য লেখা প্রোগ্রাম অন্য অপারেটিং সিস্টেমে চালানাে যেতাে না।
পাইথন (Python): পাইথন একটি অবজেন্ট ওরিয়েন্টেড উচ্চ স্তরের প্রােগ্রামিং ভাষা। ১৯৯১ সালে গুইডো ভ্যান রোসাম (Guido Van Rossum) এটি প্রথম প্রকাশ করেন | পাইথনের কোর সিনট্যাক্স খুবই সংক্ষিপ্ত, তবে ভাষাটির স্ট্যান্ডার্ড লাইব্রেরি অনেক সমৃদ্ধ। ১৯৯৪ সালের জানুয়ারিতে পাইথন 1.0 সংস্করণে প্রবেশ করে।
(৬)
বিষয়টা এমন না যে আমার সবসময় বৃষ্টি ভালো লাগত। মূলত আমার বৃষ্টি তখনই ভালো লাগত যখন সে স্কুলের উদ্দেশ্য বের হওয়ার টাইমে আসত। কিন্তু সে প্রথম জীবনের কথা। সখিনার প্রেমে পড়ার পর আমার মধ্যে কবি সত্তার বিকাশ ঘটতে শুরু করে। প্রেমে পড়ার পর আমি প্রথম বর্ষায় চার লাইনের এই ছড়াটা লিখি সখিনাকে পাঠানোর জন্য:
হ্যাঁ ভাই। আমি জানি আমি অসাধারণ কবিতা লিখি। প্রোগ্রামার না হয়ে কবি হলে অনেক নাম কামাতাম। সে অন্য বিষয়। কবিতা আমাকে না টানলেও আমার এক বন্ধু রফিককে টেনেছিল। সে আমাদের ক্লাসের কবিতা নামের এক মেয়ের প্রেমে পড়েছিল। তাই আমি আমার প্রথম কবিতা তার কাছে ১০ দিয়ে বেঁচে দিয়েছিলাম। ১০,০০০ না ভাই। ১০ টাকা। আমার প্ররোচনায় কবিতাটা দিয়ে সে "কবিতা"কে প্রেম নিবেদন করেছিল। বেচারা জানত না সে হেডস্যারের মেয়ে ছিল। রফিক নাকি আমাকে পরে রাম'দা নিয়ে অনেক খুঁজেছে। মনে হয় আমাকে রাম'দা উপহার দিতে চেয়েছিল; আমার ক্ষুরধার কবি প্রতিভার প্রতীক হিসেবে।
আচ্ছা যাই হোক। এখনও আবার আমার বৃষ্টি ভালো লাগে। কারণ বৃষ্টির দিনে ঘরে ইলিশ-খিচুরি রান্না হয়। আর ভালো খাওয়া-দাওয়ার পর আমার মন-মেজাজ-পেট-মস্তিষ্ক সবই বেশ ঠান্ডা থাকে। পেট শান্তি তো জগৎ শান্তি। সে যাক গে। তো যা দুপুরে ব্যাপক ভুঁড়িভোঁজ হলো। আজকে হবে সখিনার জন্য প্রোগ্রামিং এর লাস্ট ক্লাস। কারণ এই ক্লাসের পর আমি একটা প্রজেক্টের জন্য দেড় মাস ব্যস্ত থাকব। ওকে আর কিছু শিখাতে পারব না। তাই আজকে ওকে যাবতীয় সব বেসিক শিখিয়ে যাওয়ার প্ল্যান আছে।
সখিনা:- হুম। শুরু করেন।
আমি:- আচ্ছা। তো আজকে যে বিষয়টা প্রথমেই জানব তা হলো Algorithm; শব্দটি মুসলিম গণিতবিদ 'আল খারিজমী'র নাম থেকে উৎপত্তি হয়েছে। এটার মানে হলো ধাপে ধাপে কোন সমস্যা সমাধান করা।
সখিনা:- যেমন?
আমি:- যেমন ধর, তুমি যখন আমার মানিব্যাগ থেকে টাকা চুরি ক.....
সখিনা:- মুখ সামলে কথা বলবা। ওইটা চুরি না। তোমার সম্পদের উপর আমার অধিকার আছে। আমি হইলাম গিয়ে তোমার ইস্তিরি।
আমি:- আচ্ছা। যখন তুমি আমার সম্পদের উপর তোমার "অধিকার ফলা"ও তখন তোমাকে কিছু ধাপ অনুসরণ করতে হয়। মানে কাজটা তোমাকে ধাপে ধাপে করতে হয়। প্রথম ধাপে তোমাকে এটা শনাক্ত করতে হয় যে আমি এমন অবস্থানে আছি কিনা যেখান থেকে আমার পক্ষে তোমার এবং আমার সম্পদের উপর নজরদারি সম্ভন না হয়। মানে সোজা কথায় তুমি আগে চেক কর, আমি ওয়াশরুম টাইপ কোন জায়গায় আছি কিনা, যাতে তুমি "অধিকার" ফলালেও আমি না দেখি। তারপরের ধাপে, তোমার খুঁজে বের করতে হয় আমার সম্পদের ভান্ডার কোথায় আছে। তারপরের ধাপে তুমি এমনভাবে "অধিকার ফলাও" যাতে সহজে বোঝা না যায়। তারপরের ধাপে তুমি "অধিকার ফলিয়ে" প্রাপ্ত সম্পদকে এমনভাবে সংরক্ষণ কর যেন আমার চোখে না পরে। এখন ভালোভাবে খেয়াল করলে তুমি লক্ষ্য করবে এই সম্পূর্ণ কাজ করতে তোমাকে কাজটা অনেক ভাগে বিভক্ত করত হয়েছে। আমাদের দৈনন্দিন জীবনে বিভিন্ন ছোটখাটো কাজে এই বিষয়টা চোখে না পড়লেও বিভিন্ন বড় বড় কাজে বা নতুন কিছু শিক্ষার ক্ষেত্রে আমরা এইভাবে শিখি। ধাপে ধাপে। আর প্রোগ্রামিং এ ও সবসময় প্রজেক্টগুলো অনেক বড় আর অনেক ফিচার লোডেড হয়। তখন এইভাবে প্রথমে ধাপ তৈরি হয়। তারপর স্টেপ স্টেপ বাই স্টেপ বিভিন্ন ধাপের মাধ্যমে প্রোগ্রাম লিখে এই বড় বড় প্রোগ্রামগুলো লেখা হয়। আর এই সম্পূর্ণ প্রক্রিয়াক এক বাক্যে বলে: Algorithm। আর Algorithm এ এই ধাপগুলো সাজানোর নানা প্রক্রিয়ার উপর ভিত্তি করে: linear search, binary search, bubble sort, selection sort, insertion sort, merge sort, quick sort, breadth-first search, depth-first search, shortest path algorithms ইত্যাদি নানা ধরণের Algorithm হয়।
সখিনা:- বা বাহ! এত্তোগুলা ধরণ! এইগুলো সবকিছু কি মুখস্ত করতে বা মনে রাখতে হবে?
আমি:- আরেহ না না। জাস্ট কোনটাতে কিভাবে সাজায় আর কখন লাগে এইগুলো জানলে হবে। একদম লাস্টে গিয়ে প্রোগ্রামিং শেখার জন্য একদম পানির মত সহজ কিন্তু অনেক মজার একটা টেকনিক বলবো। আচ্ছা একটা জিনিস জানো?
সখিনা:- জানলে তো তোমাকে আর আমাকে শিখাইতে বসতে হতো না।
আমি:- এইযে বিভিন্ন ধরণে Algorithm এর ধাপ সাজানো হয় এইভাবে কিন্তু ডাটাও সাজানো হয়। অনেকগুলো ডাটাকে যখন কোন নির্দিষ্ট স্ট্রাকচারে সাজানো হয়, তাকে ডাটা স্ট্রাকচার বলে। বিভিন্ন রকম ডাটা স্ট্রাকচারের মধ্যে অন্যতম: Stacks, Queues, Tree হলো এগুলো। নাম শুনে তো আশা করি বুঝতোসো যে কোনটাতে কীভাবে ডাটাগুলো সাজানো হয়। Stack এ একটার উপর একটা ডাটা রেখে অনেকটা খড়ের স্তূপ বা ইটের সাড়ির মত ডাটা সাজানো হয়। Queue তে একটার পর একটা রেখে লাইনের মত সাজানো হয় আর Tree তে গাছের আকারে সাজানো হয়।
সখিনা:- ওওও। আচ্ছা, এই কখন Stack বা কখন Queue লাগে এগুলো কেমনে বুঝবো? মানে সবইতো ডাটা সাজানোর স্ট্রাকচার।
আমি: বৈশিষ্ট্য অনুযায়ী। এই যেমন Stack এর সবচেয়ে বড় বৈশিষ্ট্য হচ্ছে LIFO(Last in first out) মানে সবার আগে যেই ডাটা ইনপুট করা হবে সেটা আউটপুটের সময় সবার পরে বের হবে। মানে চায়ের দোকানে পরোটা বানাইতে দেখলে তো বুঝচ্ছই। যেই পরোটা সবার আগে বানানো হয় সেটা সবার শেষে বিক্রি হয়। আর Queue এর সবচেয়ে বড় বৈশিষ্ট্য হচ্ছে FIFO(First in first out) মানে সবার আগে যেই ডাটা ইনপুট করা হবে সেটা আউটপুটের সময় সবার আগে বের হয়ে যাবে। মানে লাইনে যেরকম হয় আরকি। আগে আইলে আগে পাইবেন। পরে আইলে খালি হাতে যাইবেন।
সখিনা:- আচ্ছা বুঝে পাইলাম।
আমি:- এবার আসি পরের টপিক মানে Loop এ। এটা অনেক গুরুত্বপূর্ণ টপিক। ভালো করে শুনবা। তো ধর আমাদের বাস্তব জীবনে কিছু কাজ আছে একইরকমভাবে বার বার করতে হয় এবং এগুলো অনেক বিরক্তিকরও। এই যেমন ধর তোমাকে যদি আমি বলি যে ১০ বালতি পানি টেনে টেনে ৪ তলা বাড়ির উপরে তুলো। তাহলে তোমাকে প্রথমে একটা খালি বালতি নিয়ে নিচে নামতে হবে, তারপর সেটাকে পানি দিয়ে পূর্ণ করতে হবে। তারপর বালতি নিয়ে উপরে উঠব্লতে হবে। পানিগুলো নির্দিষ্ট স্থানে ঢালতে হবে এবং এইভাবে একই কাজ বার বার করতে হবে। অনেক বোরিং প্রসেস। এইরকম অনেক কাজ প্রোগ্রামিং এ ও করতে হয়। তাই প্রোগ্রামারদের জন্য আছে Loop। এইটা হলো এমন একধরনের প্রোগ্রাম যেটা একই কাজ যতক্ষণ বলা হয় ততক্ষণ বার বার করতেই থাকে। বেশিরভাগে ল্যাংগুয়েজে লুপ দুই ধরণের হয়: Loop আর While Loop। তোমার মনে আছে যে আমি তোমাকে বিয়ের আগে ২ মিনিটে ১০০০০ লাইন: "I Love You, Sokhina" লিখে পাঠায়সিলাম। এটাও লুপ দিয়ে।
সখিনা: সত্যি!!! দেখি আবার লিখে দেখাও তো।
আমি:- ওকেহ! প্রথমে While Loop দিয়ে লিখি:
যেহেতু তুমি if-else লুপ বুঝচ্ছ। সেহেতু আমি ধরে নিচ্ছি তুমি এটাও বুঝচ্ছ। আর এখানে, 10000 লাইনের বদলে 10 লাইন দিয়ে বুঝালাম। আর এই সেইম জিনিস For Loop দিয়ে লিখলে হবে এরকম:
এখানে একটু বোঝার বিষয় আসে। for a in range(0, 10): এখানে, পাইথনকে বলা হয়েছে যে, a এর রেঞ্জ বা মান 0 থেকে 10 এর মধ্যে থাকলে প্রত্যেকবার লাইনটা প্রিন্ট করতে হবে। এবার আসে সবচেয়ে মজার বিষয়। while এর মত মান বাড়ানোর জন্য a = a+1 এইটা লিখতে হয় না এখানে। তার সাথে while এর মত কোন Variable ডিক্লেয়ার করতে হয়নি। কারণ, রেঞ্জ 0 বলার মাধ্যমে For বুঝে নেই যে variable এর মান এখন 0। এটা বোঝার পর সে প্রত্যেকবার কাজের পর Variable এর মান 1 করে বাড়াতে থাকে।
সখিনা:- বাহ! খারাপ না। আচ্ছা, তুমি বলসিলা যে, আমরা যে এপ বা ওয়েবসাইট ব্যবহার করে ওইগুলো সব প্রোগ্রাম দিয়ে তৈরি।
আমি:- হ্যাঁ।
সখিনা:- আর প্রোগ্রাম যে ব্যবহার করে তাকে তো ইউজার বলে। না?
আমি:- হ্যাঁ। তো?
সখিনা:- তো, আমরা এতক্ষণ যা যা প্রোগ্রাম লিখসি, সবেই তো আমরা মানে প্রোগ্রামারই সব ডাটা ইনপুট দিসি। ইউজার থেকে কোন ডাটা ইনপুট নিই নাই। সেটা করে কেমনে?
আমি:- সাধারণত প্রোগ্রামে ইউজার ইনপুট নেওয়ার জন্য একেক প্রোগ্রামে একেক সিনট্যাক্স ব্যবহার হয়। পাইথনে ব্যবহার হয়, "input()" এই ফাংশান। জাস্ট যেখানে যেখানে তোমার ডাটার ইনপুট দরকার সেখানে সেখানে এই ফাংশান বসায় দিবা। যেমন: Variable এ। এই যে নিচের কোডে দেখ:
আবার, কি ধরণের ডাটা ইনপুট দিতে হবে সেটা কিন্তু তুমি ব্র্যাকেটের ভিতর বলে দিতে পারো:
সখিনা:- বাহ!
আমি:- পাইথন কিন্তু কোন ফাংশান "স্ট্রিং" হিসেবে ইনপুট নেয়। তাই তুমি কোন সংখ্যা ইনপুট দিলেও সেট স্ট্রিং হিসেবে রান হবে। তাই এটাকে তোমার প্রয়োজনমত কনভার্ট করে নিবা। যেমন এই উদাহরণ দেখ:
এখানে, প্রথমে a এ ডাটা ইনপুট নিলাম। তারপরের লাইনে আমি পাইথনকে নির্দেশ দিলাম a এর ডাটার টাইপ চেঞ্জ করে int এ কনভার্ট করে আবার a তেই রাখতে। চাইলে এটা আরেকট নতুন variable এ ও রাখা যায়। তবে আমি আপাতত সেটা করলাম না। আর মান চেঞ্জ হয়েছে কিনা এটা পরীক্ষার জন্য a এর সাথে 12 যোগ করলাম। a এর মান যে স্ট্রিং ডাটা টাইপ হিসেবে ইনপুট হয় সেটা তুমি উপরে উদাহরণে ২য় লাইন বাদ দিয়ে রান করালেই বুঝতে পারবে।
সখিনা:- print এর ভিতর কোন কোটেশন দাও নাই কেন?
আমি:- ভালো প্রশ্ন। এটা তোমার জন্য একটা প্রশ্ন থাকল। উপরের উদাহরণ কোটেশন দিয়ে আর কোটেশন ছাড়া রান কর দেখো কি আসে। এরপর নিজেই উত্তর খুঁজে বের করে।
সখিনা:- আচ্ছা, পাইথনে গুন-ভাগ করে কীভাবে?
আমি:- গুণ করে "*" এই চিহ্ন দিয়ে আর ভাগ করে "/" এই চিহ্ন দিয়ে।
সখিনা:- তাইলে এটা রান হয় না কেন?
আমি:- আরে, "/" চিহ্ন দিয়ে ভাগ করে। "\" দিয়ে না।
সখিনা:- ও আইচ্চা। কতায় ভেজাল ছিল।
আমি:- নাচতে না জানলে উঠান বাঁকা।
সখিনা:- কিইইইইইইইইইইই!!!!!
আমি:- কিছু না। এবার একটা জিনিস বলি। জিনিসটা হচ্ছে Comment
সখিনা:- বাহ! ফেসবুকের কমেন্টও কি এটা থেকে ইন্সপায়ারড?
আমি:- নাহ! ফেসবুকের কমেন্ট Web 2.0 এর ফিচার। বাদ দাও। তো বড় বড় প্রজেক্টের ক্ষেত্রে কি হয়, সেখানে অনেক অনেক লাইনের প্রোগ্রাম হয়। প্রোগ্রামদের এটা মনে রাখতে হিমশিম খেতে হয় যে এই অংশ কেন প্রোগ্রাম করসে। তো কমেন্ট এই ক্ষেত্রে প্রোগ্রামারকে একটা কাজ কমায় দেয়। কমেন্টের মাধ্যমে প্রোগ্রামার যা ইচ্ছা তা নোট করে রাখতে পারে প্রোগ্রামের যেকোন জায়গায়। আর কমেন্টের সিন্ট্যাক্স এক এক প্রোগ্রামে এক রকম। পাইথনে কমেন্টে সিনট্যাক্স হলো: "#"
সখিনা:- এ্যাঁ!!!
আমি:- হ্যাঁ। জাস্ট প্রত্যেক লাইন কমেন্টের জন্য একটা করে "#" লাগাবা লাইনের শুরুতে। ব্যাস। আর কমেন্টের সবচেয়ে বড় সুবিধা হচ্ছে কমেন্ট ইন্টারপ্রিটার/কম্পাইলার সম্পূর্ণ ইগ্নোর করে। তাই তুমি "#" এই চিহ্নের পর ওই লাইনে কি লিখসো, কোথায় লিখসো, কেন লিখস সেটা পাইথনের কিছু যাই আসে না। এটা অনেকটা বাজারের লিস্টের মত। লিস্টে কি লিখস, কীভাবে লিখস, কেন লিখস এটাতে দোকানদারের কিছু যায় আসে না। বাজারের লিস্টটা তোমাকে জাস্ট মনে রাখতে হেল্প করে কি কি কিনতে হবে।
সখিনা:- একটু প্রোগ্রাম করে দেখাও।
আমি:- এই দেখ:
এটাকে তুমি কমেন্ট ছাড়াও রান করলে কোন পার্থক্য হবে না।
সখিনা:- জোস'তো জিনিসটা!
আমি: আচ্ছা এবার আসি প্রোগ্রাম লেখার কিছু নিয়মে।
সখিনা: তো এতদিনে কি পড়লাম।
আমি: আরে সেই নিয়ম না। এই প্রোগ্রামটা দেখো:
এই প্রোগ্রামটা তুমিসহ নতুন প্রোগ্রামিং শুরু করা সবাই লেখে এইভাবে:
তুমি আমারটা দেখো আর তোমারটা দেখো। তোমারটা যেমন হিবিজিবি তেমন কমেন্টের অভাবে প্রায় পরিষ্কার হয় না যে এই অংশটা কেন প্রোগ্রাম হয়সিলো। এইটা দুই/তিন লাইনের প্রোগ্রাম বলে কোন সমস্যা হচ্ছে না। কিন্তু যখন তুমি বড় বড় প্রজেক্টে কাজ করব, এক-একটা ধাপই দেখবা যে ১০০/২০০ লাইনের কোড হবে। তখন পুরো কোড লেখার পর আবার কোন একটা অংশে গেলে বা ডিবাগ করতে গেলে তোমার এটা ভাবতে ভাবতেই দিন চলে যাবে এই অংশ কেন প্রোগ্রাম করসিলাম। তাই আমি যেভাবে লিখসি সেভাবে ভেঙ্গে ভেঙ্গে লিখবা। প্রত্যেকটা কাজের পরেই ভাঙ্গবা। আর এটার কোন সুনির্দিষ্ট নিয়ম নাই যে কোথায় ভাঙ্গতে হবে। এটা তোমার প্রোগ্রাম লিখতে লিখতে ধারণা হবে যে কোথায় ভাঙ্গতে হবে।
সখিনা: হুম! বুঝলাম।
আমি: তোহ! এবার কিছু টিপস এন্ড ট্রিক্স যা তোমাকে সারাজীবন ফলো করতে হবে:
প্রত্যেকটা বিষয় খুঁটিনাটি, সিনট্যাক্স এবং উদাহরণসহ নোট করবা। যদি মনে হয় যে না এটা মনে থাকবে। এটা লাগবে না। তাও করবা। শিখার সময়ের নোটের মূল্য কাজের সময়ে বুঝবা।
প্রত্যেকটা কনসেপ্ট ভালোভাবে ক্লিয়ার করবা। সিনট্যাক্সের কোন অংশ কেন আসছে সেটা ভালোভাবে বুঝবা। প্রত্যেকটা সিনট্যাক্স, প্রশ্ন আর কন্সেপ্ট নিয়ে কোড ইডিটরে নিজের মতো ঘাঁটাঘাঁটা করবেন। জাস্ট পড়ে পড়ে গেলে কিছুই লাভ হবে না। প্র্যাকটিস করতেই হবে।
ভুলেও সিনট্যাক্স মুখস্ত করতে যাবা না। সিনট্যাক্স জাস্ট বুঝে নোট করে রাখবা। প্রোগ্রাম করার সময় সিনট্যাক্স নোট থেকে দেখে দেখে লিখে কাজ করবা। একসময় অটো মুখস্ত হয়ে যাবে।
টানা ২৫ মিনিট পড়বা। এরপর ৫ মিনিট হাঁটাহাঁটি করবে/চা-কফি খাবে এবং অন্যকিছু ভাববেন। ৫ মিনিট পর আগের ২৫ মিনিট কি পড়ছেন তা রিভিশন দিবেন ১/২ মিনিট এবং নোট করবে। এরপর পরের টপিকে যাবেন। এইভাবে না করলে বেশি কিছু মাথায় থাকবে না।
প্রোগ্রাম লেখার সময় লাগুক আর না লাগুক, কমেন্ট এড করবে। এটার অভ্যাস হয়ে গেলে পরে বড় বড় প্রজেক্টে কাজে লাগবে।
২৪ ঘন্টার গোল সেট করে পড়বা। মানে আমি আজকে এই এই টপিক শেষ করব আজকে এভাবে গোল সেট করবে। এই সপ্তাহে এই এই টপিক এগুলো শেষ করবো বা এই ১৫ দিনে এই ল্যাংগুয়েজ শেষ করবো এই রকম কোন মনমানসিকতা রাখবে না। আর নির্দিষ্ট সময়ে শেষ করতে পারলে নিজেকে পুরষ্কৃত করবা। তোমার সুবিধা মতো। যেমন:- নিজেকে ১ ঘন্টা বেশি বিশ্রাম দেবেন আজকে নির্দিষ্ট সময়ে টাস্ক শেষ করার পুরষ্কার স্বরূপ।
অতিরিক্ত চাপাচাপি করার দরকার নাই। আস্তে আস্তে ধীরে ধীরে সব ক্লিয়ার করে আগানোটাই বেটার
সখিনা:- যাক! আমার এতোদিন মূল টেনশন ছিল যে সিনট্যাক্স কেমনে মুখস্ত রাখব।
আমি:- এটা সবারই থাকে। সিনট্যাক্স মুখস্ত করা না বোঝার জিনিস। আর এই সিনট্যাক্স মুখস্ত করার ট্রেন্ডই প্রোগ্রামিংকে অনেক কঠিন একটা জিনিস বানায় ফেলসে। আচ্ছা, এবার একটা মজার পদ্ধতি শেয়ার করি প্রোগ্রামিং শেখার। যারা নতুন প্রোগ্রামিং শিখে তাদের প্রথমেই যে অভিযোগ তাকে ঘন্টার পর ঘন্টা বসে বসে এক মানুষের প্যানপ্যানানি শুনতে বিরক্ত লাগে। তাই এটা আমার আবিষ্কৃত একটা মজার টেকনিক। প্রথমেই কোন ল্যাংগুয়েজ শিখবা এটা ঠিক করবা। এরপর ল্যাংগুয়েজের টপিকগুলো নোট করবা। মানে এইখানে কি কি শিখতে হবে। কোন একটা ইউটিউব ভিডিওতে গেলেই টাইমস্ট্যাম্প আকারে বা ভিডিওর শুরুতে দেওয়া থাকে। এবার কয়েকটা প্ল্যাটফর্ম খুঁজে নিবা। যেমন কিছু ওয়েবসাইট, ভিডিও, বই ইত্যাদি। এবার এক একটা জায়গা থেকে থেকে এক এক টপিক শিখবা। মানে, ধর তুমি W3school, Code with Harry আর Programming Hero থেকে পাইথন শিখবা। এখন, W3school থেকে তুমি ধর Variable শিখলা, Code with Harry থেকে তুমি এ্যারে শিখলা আর Programming Hero থেকে ধর তুমি Loop শিখলা। এবার বাকিগুলোতে বাকি টপিক রিভাইস দেওয়ার মত করে দেখবা। মানে তুমি W3school থেকে শিখস Variable, এখন ওইখানে আর বাকি আছে Array আর Loop, তুমি এগুলো রিভিশন দেওয়ার মত করে দেখবা। এইভাবে বাকিগুলোও। এভাবে করলে কি হবে জানো?
সখিনা:- নাহ!
আমি:- তোমার লক্ষ্য স্থির থাকবে কিন্তু নানা পথ ঘুরে যাওয়ার যাত্রা অনেক ইন্টারেস্টিং হবে।
সখিনা:- আচ্ছা।
আমি: তাহলে আজকের মত এখানেই শেখাশিখি শেষ।
অবশেষে ব্যাসিক প্রোগ্রামিং এর জার্নি শেষ! আমার মতে আপনার প্রোগ্রামিং এর বেসিক হিসেবে যা যা দরকার তার প্রায় সব টপিকই কভার করসি। আর হ্যাঁ, আমি এই সম্পূর্ণ সিরিজে মূলত টপিকগুলো বোঝানোর চেষ্টা করসি। মানে টপিক কি সেটা একদম মগজে ঢুকায় খোদাই করে দেওয়ায় মূল উদ্দেশ্য ছিল। আপনি নিজে খুঁজলে আরো খুঁটিনাটি অনেক বেসিক পাবেন। এই বেসিকগুলো খুঁটিনাটিসহ কভার করতে না পারার কারণ লিখে আসলে সব বোঝানো যায় না। আপনাদের যাতে শেখার ভাটা না পড়ে সেজন্য কিছু প্ল্যাটফর্ম উল্লেখ্য করে দিচ্ছি। এখানে আপনারা টিউটোরিয়াল নাহলে ক্র্যাকড কোর্স ও নানা প্রোগ্রামিং রিলেটেড রিসোর্স ফ্রিতে পাবেন।
ইউটিউব চ্যানেল:
Code With Harry
NetworkChuck
Apna College
WS CubeTech
Anisul Haque
Programming Hero
Jhankar Mahbub
Edureka!
Fireship
FreeCodeCampOrg
(কয়েকটা সরাসরি প্রোগ্রামিং রিলেটেড আবার কয়েকটা টেক রিলেটেড। তবে সবারই প্রোগ্রামিং নিয়ে অনেক মানসম্মত কন্টেন্ট আছে। তাদের প্লেলিস্টে সব একদম সাজানো-গোছানো পাবেন)
ওয়েবসাইট:
W3School
এপ:
Programming Hero
