অসামাজিক মহাকবিতা – ডিসেম্বর ২০১৫

হারিয়ে যাই, সময়ের মোড়ে আমি হারিয়ে যাই
স্বঘোষিত কোনো বেদনার আঘাতে মুমূর্ষ
আমি হারিয়ে যাই…
– ১১ ডিসেম্বর, ২০১৫

বিরতিহীন স্বাধীন, স্বপ্ন আমার রঙ্গিন
এপারেতে তাসের বাড়ী
ওপারেতে বন্ধু বিহীন…
– ১২ ডিসেম্বর, ২০১৫

রাতের হাটে ঘুম বেঁচেছি
তারার পানে চোখ
নিভু নিভু স্বপ্নে জোনাকির ঝলক
– ১২ ডিসেম্বর, ২০১৫

ভ্রান্ত পথের মলিন ধুলো
আমার শরীর জুড়ে
হে শতাব্দী, আমি যাচ্ছি
হারানোর ব্যাথা কি তুমি সইবে?
স্বত্বা হারিয়েছি, স্বপ্নও বাকি নেই
নিরাশার এ কোন অস্তিত্ব!
হে শতাব্দী, আমি ক্লান্ত
– ১৩ ডিসেম্বর, ২০১৫

তুমি চাইলেই হয়ে যেত
আধারের মিছিলে আলো যেত
চাঁদটাও তখন স্বত্বা পেতো
……………………………
তুমি জানো, আমি নীরব কেন!
– ১৪ ডিসেম্বর, ২০১৫

ছিলাম যে পথে, আমি নই কেন আজ
হারানটাকে ব্যাথা ভেবে কাটিয়েছি বহু রাত
নির্বোদ্ধ আশায় বুনেছিলাম স্বপ্ন
ঘুনে ধরা সৌন্দর্যে ছিলাম যেন মুগ্ধ
ফিরে এসেছি আমি, আমার হয়ে!
যা কিছু বাকি ছিল আগামীতেও রবে
চাইনা শুধু সুখ, দুঃখ তুমিও রবে…
– ১৮ ডিসেম্বর, ২০১৫

ইস! যদি হয়ে যেতাম তারা
পথটা ঘুরে এসে জড়িযে বলতাম
দাড়া! কেন আমায় দিসনা সাড়া?
ছেড়া কাঁথার স্বপ্ন আমার
চড়িয়েছি পংখিরাজে,
শীতকালের শুস্কমন, ভেজেনা একবুলিতে
– ২০ ডিসেম্বর, ২০১৫

Photo Credit: Matthew Henry

ভেরিয়েবল এবং ডাটা টাইপ [থিওরি]

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

আমি যখনি ভেরিয়েবল দেখি তখনি আমার মনের আকাশে হরলিক্সের বয়াম, মুড়ির টিন, চালের ড্রাম, সিরাপের বোতল, হোমিও-প্যাথির শিশি এসব উড়ে বেরায়। ঘটনা শতভাগ সত্যি, বিশ্বাস করুন (মিমি চকলেটের কসম, আমি মিথ্যা বলিনা) 😉 । কারণ বয়াম, ড্রাম, বোতল, শিশি এদের সাথে ভেরিয়েবলের মনের মিল রয়েছে, তাইতো একজনের টানে আরেকজন ছুটে চলে আসে! আমি ভেরিয়েবল দেখি আমার মনের আকাশে হরলিক্সের বয়াম উড়ে, আমি ভেরিয়েবল দেখি মনের আকাশে শিশি উড়ে। আজকের পর থেকে আপনার মনেও উড়বে। কি, বিশ্বাস হচ্ছে না? না হলে অপেক্ষা করুন, সবুরে মেওয়া ফলে 🙂 ।

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

ডাটা এবং ডাটা টাইপ (Data and Data Type)

কন্টেইনারে রাখা বস্তু যেমন চাল, চিনি, চানাচুর সহ ভিন্ন ভিন্ন রকমের হয়, তেমনি ভেরিয়বলে রাখা ডাটাও কিন্তু ভিন্ন ভিন্ন রকমের হয় যাদের বলে ডাটা টাইপ। চলুন তাহলে বহু পরিচিত কিছু ডাটা টাইপ নিয়ে টুকটাক গল্পস্বল্প করি-

বুলিয়ান (Boolean): সবথেকে সহজবোধ্য এবং সবথেকে বেশি ব্যবহৃত ডাটা টাইপ হল বুলিয়ান। এটি সত্য-মিথ্যা, হ্যা-না, আছে-নাই, Yes-No, ওয়ান (1)-জিরো (0) এসব বুঝায়। এর মাঝে কোন প্যাঁচ নেই, পুরাই স্ট্রেইট। থাকলে থাক, না থাকলে ভাগ টাইপের।

নিউমেরিক (Numeric): নাম দেখে বুঝতেই পারছেন এর কাজ কারবার হল শুধু সংখ্যা (শূন্য থেকে নয় বা জিরো থেকে ওয়ান) নিয়ে। ফোঁটাওয়ালা দশমিক সুন্দরী কিন্তু এর বাইরে নয়, ভিতরেই 😉 । নিউমেরিক টাইপে আছে ইন্টিজার (Integer) যার ব্যাপার স্যাপার শুধু মাত্র পূর্ণ সংখ্যা নিয়ে, যেখানে ফোঁটা সুন্দরী নেই। যেমন- বেলা বোসের ফোন নম্বর 2441139। আবার আছে ফ্লোটিং পয়েন্ট (Floating Point) যেখানে আপনি ফোঁটা সুন্দরীকে খুঁজে পাবেন 😀 । যেমন- পাই এর মান 3.141592653589793238462643383279502884197169399375105820974944592307816406286…

স্ট্রিং (String): ধারাবাহিকভাবে অক্ষর বা বর্ণ থাকলে সেটাই স্ট্রিং। যেমন, আপনি যদি লিখেন “আমারো পরানো যাহা চায় তুমি তাই, তুমি তাই গো” তাহলে নিশ্চিন্তে ধরে নেন আপনি একটি স্ট্রিং লিখেছেন 😀 ।

যেসব ডাটা টাইপ নিয়ে আমরা গল্পস্বল্প করলাম তা প্রিমিটিভ ডাটা টাইপ (Primitive Data type)। আরেক প্রকার ডাটা টাইপ আছে যাকে বলে কম্পোজিট ডাটা টাইপ (Composite Data type)। কম্পোজিট ডাটা টাইপে আছে এ্যারে (Array), অবজেক্ট (Object) সহ আরও অনেক রকমের টাইপ। পিপাসুদের স্বাগতম কম্পোজিট ডাটা টাইপ উদ্ধারে 🙂 ।

ভেরিয়েবল টাইপ (Variable Type)

সব প্রোগ্রামিং ল্যাঙ্গুয়েজে ভেরিয়েবলের টাইপ থাকে না বা ভেরিয়েবলের টাইপ বলে দিতে হয় না। ভেরিয়েবলের টাইপের উপর নির্ভর করে প্রোগ্রামিং ল্যাঙ্গুয়েজে গুলিকে দুইভাগে ভাগ করা হয়। একটি হল স্ট্রংলি টাইপড ল্যাঙ্গুয়েজ (Strongly Typed Language) আরেকটি হল লুজলি বা উইকলি টাইপড ল্যাঙ্গুয়েজ (Loosely/Weakly Typed Language)

Strongly Typed Language এ ভেরিয়েবল ডিক্লেয়ার (Declare) করার সময়ই বলে দিতে হয় সেটি কোন টাইপের ডাটা ধরে রাখবে। যদি ভেরিয়েবল x কে ইন্টিজার হিসেবে ডিক্লেয়ার করা হয় তাহলে x অন্য টাইপের ডাটা গ্রহণ করবে না। জোর করলে রাগ করে এরর ধরাই দিবে। C, Java এসব হল Strongly Typed Language

Loosely/Weakly Typed Language ভেরিয়েবল ডিক্লেয়ার (Declare) করার সময় টাইপ উল্লেখ করতে হয় না কারণ এরা সর্বভুক টাইপের। যখন যা দিবেন তাই খাবে। এখন ইন্টিজার পরে এ্যারে এরপর আবার স্ট্রিং যা দিবেন তাই খাবে। Loosely/Weakly Typed Language গুলি নিজে থেকেই এই টাইপ কনভার্সন (Conversion) এর কাজ করে থাকে। আমাদের সাধের JavaScript, PHP, Python এই গোত্রের।

নোটঃ আজকের লেখার মূল উদ্দেশ্য হল নিজের তাত্ত্বিক জ্ঞান বাড়ানো ও সংশোধন করা এবং এই প্রক্রিয়ায় যেন অন্যরাও উপকৃত হয় সে চেষ্টা অব্যাহত রাখা। ভুলত্রুটি পেলে অবশ্যই জানাবেন 🙂

ধন্যবাদ

পিএইচপি এ্যারে পরিচিতি – প্রথম পর্ব

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

ঠিকাছে ঠিকাছে! আমার জন্য আর সমবেদনা দেখাতে হবে না। আমাকে এ্যারে তাড়া করলেও আমি আর দুঃখিত নই, বুঝলেন! কারণ এ এ্যারে সে এ্যারে নয়, এ এ্যারে পিএইচপি এ্যারে, হি হি 😀 । এবার একটু সিরিয়াস কথা বলি, ওকে? পিএইচপিতে এ্যারে হচ্ছে অনেকটা গিরিগিটি টাইপের! যেমন- বহুরুপে থাকতে পারে, নানান সাজে সাজতে পারে, নানান ঠঙে ঠং করতে পারে। সত্যি বলছি কিন্তু! এ্যারে কখনো কী-ভ্যালু হিসেবে থাকে, কখনোবা ইনডেক্স-ভ্যালু হিসেবে থাকে। কখনো আবার ১টি, ২টি কিংবা n সংখ্যক আকারে নিজেই নিজের ভিতর থাকে 😮 । কী অবাক করা বিষয়, তাই না! তাই আপনি যদি একে নারীর মন হিসেবেও ভাবেন তবুও পারফেক্ট হবে, ১০০ তে পুরোই ১০০। তাই আবারো গানের সুরে বলতে ইচ্ছে করছে “এ্যারেরে বুঝতে পারলে ভালো করে এগিয়ে নিবে আপনারে”।

এসো এ্যারে শিখিঃ

বাংলা বর্ণগুলি যেমন স্বরবর্ণ এবং ব্যঞ্জনবর্ণে ভাগ করা, তেমনি এ্যারে নিউমেরিক (Numeric) এবং এ্যাসোসিয়েটিভে (Associative) ভাগ করা। এর সাথে আরও একটা ভাগ আছে, যাকে বলে এমডি এ্যারে! মানে মাল্টি-ডায়মেনশনাল এ্যারে।

নিউমেরিক এ্যারে (Numeric Array) অনেকটা প্রাইমারি স্কুলের ক্লাস রোলের মত। যেমনঃ ১ => সুরভী, ২ => লিটন, ৩ => মমিন। কি এই তিনজনকে চিনতে পারছেন না? চিনতে না পারলে বীজগনিতের x, y ধরাধরির মত ধরে নিন এই তিনজন ছিল আমার প্রাইমারীর টপার। আমার রোল কত ছিল জানতে চাইবেন না? আচ্ছা জানতে না চাইলেও বলছি, আমি অনেক কষ্টে ২০ এর মধ্যে লাকি ৭ নিয়ে বেঁচে ছিলাম 😛 । যেহেতু এখনো বেঁচে আছি নিউমেরিক এ্যারে এবং ক্লাস রোলের পার্থক্যটা বলেই দেই, কি বলেন? পার্থক্য হল, ক্লাস রোল শুরু হয় ১ থেকে আর নিউমেরিক এ্যারে শুরু হয় শূন্য “0” থেকে। অর্থাৎ আমার প্রাইমারির টপারদের নিউমেরিক এ্যারে বানালে সুরভী হত জিরো আর আমি হতাম হিরো 😛 । থুক্কু, আমি হতাম ৬ আর টপাররা হত ০ => সুরভী, ১ => লিটন, ২ => মমিন। নিউমেরিক এ্যারেতে রোল হল ইনডেক্স (Index) আর নাম হল ভ্যালু (Value)

এ্যাসোসিয়েটিভ এ্যারে (Associative Array) আমাদের মন্ত্রীসভার মত। যেমনঃ প্রধানমন্ত্রী => শেখ হাসিনা, অর্থমন্ত্রী => আবুল মাল, কৃষিমন্ত্রী => মতিয়া চৌধুরী … (মন্ত্রীদের বিশাল লিস্ট, অলসতার খাতিরে এড়িয়ে গেলাম)। মন্ত্রীসভার এ্যাসোসিয়েটিভ এ্যারে বানালে প্রধানমন্ত্রী, অর্থমন্ত্রী, কৃষিমন্ত্রী এসব হবে কী (Key) এবং শেখ হাসিনা, আবুল মাল আর মতিয়া চৌধুরী এসব হবে ভ্যালু (Value)

মনে আছে, শুরুতে বলেছিলাম নিজেই নিজের ভিতর থাকতে পারে; ১টি, ২টি কিংবা n সংখ্যক আকারে। হুম, ঠিক ধরতে পেরেছেন! একটা এ্যারে যখন আরেকটা এ্যারের ভিতর কোন কী বা ইনডেক্স এর ভ্যালু হিসেবে থাকে তখন সেটাকে বলে মাল্টি-ডায়মেনশনাল এ্যারে (Multi-Dimensional Array)। আমরা অনেক এ্যারে শিখেছি এবার লিখার পালা। চলুন তাহলে কিভাবে এ্যারে লিখতে হয় শিখে ফেলি।

এসো এ্যারে লিখিঃ

এ্যারে লিখা ভীষণ সহজ, এর জন্য শুধু মাত্র array() ব্যবহার করলেই হয়। array() হল পিএইচপি ল্যাঙ্গুয়েজ কন্সট্রাক্ট (Language Construct) (আমরা কোন এক ঈদের পর ল্যাঙ্গুয়েজ কন্সট্রাক্ট নিয়ে গল্প স্বল্প করব, সে পর্যন্ত আমার সাথে তাল মিলিয়ে চলুন 😀 )। তবে আমাদের পিএইচপি ভার্সন 5.4 অথবা এর থেকে আপডেট হলে আমরা অলসতা করে [] ব্যবহার করে এ্যারে লিখতে পারি। আমি জন্মের অলস তাই আমাদের সকল উদাহরণে [] ব্যবহার করে লিখব 😀 । চলুন তাহলে একসাথে লিখা শুরু করি-

আমরা খুব সহজেই নীচের মত করে নিউমেরিক এ্যারে লিখতে পারিঃ

$mates = ['Surovi', 'Liton', 'Momin', 'Ishad', 'Farjana', 'Mithila', 'Sithila', 'Shahin', 'Sujon', 'Jahid'];

আপনি পিএইচপি এ্যারাবিয়ান হর্স হয়ে থাকলে অথবা এলোমেলো করে ইনডেক্স লিখতে ইচ্ছে করলে নীচের মত করে লিখতে পারেন। বলে রাখি, সচারচর এভাবে কেউ নিউমেরিক এ্যারে লিখে না।

$mates[1] = 'Liton';
$mates[4] = 'Farjana';
$mates[2] = 'Momin';
$mates[0] = 'Surovi';
$mates[5] = 'Mithila';
$mates[6] = 'Sithila';
$mates[3] = 'Ishad';
$mates[7] = 'Shahin';

// Or this way
$mates = [
    0 => 'Surovi',
    1 => 'Liton',
    2 => 'Momin',
    3 => 'Ishad',
    4 => 'Farjana',
    5 => 'Mithila',
    6 => 'Sithila',
    7 => 'Shahin',
    ];

এখন আমরা লিখব এ্যাসোসিয়েটিভ এ্যারে। হুবহু উদাহরণের মত করে লিখবেন কিন্তু, অন্যথায় জেল জরিমানা হতে পারে (You know, no one messes with Ministers)। এ্যাসোসিয়েটিভ এ্যারের বাদিকে থাকে কী (Key) এবং ডান দিকে থাকে ভ্যালু (Value)। কী (Key) লেখার কিছু নিয়ম কানুন আছে এবং কী (Key) কিছু সুনির্দিষ্ট নিয়ম চলে। পরের পর্বে আমরা সেসব নিয়ম-কানুন নিয়ে খোশ গল্প করব।

$ministers = [
    'prodhanmontri'   => 'Sheikh Hasina',
    'orthomontri'     => 'Abul Mal',
    'krishimontri'    => 'Motia Chowdhury',
    'poribohonmontri' => 'Obaidul Kader',
    ];

এবার আমরা লিখব এমডি বা মাল্টি-ডায়মেনশনাল এ্যারে। যেখানে একজন সত্যিকারের লিভিং, ব্রিদিং এমডি মানে ম্যানেজিং ডিরেক্টর থাকবেন। চলুন দেখে নেই কে সেই এমডি!

$colleagues = [
    [
    'name'     => 'Dulal Khan',
    'role'     => 'MD & Head of Design',
    'vacation' => false,
    ],
    [
    'name'     => 'Mosaddek Hossain',
    'role'     => 'Head of UI/UX',
    'vacation' => false,
    ],
    [
    'name'     => 'Hasin Haydar',
    'role'     => 'MD and Head of Design',
    'vacation' => false,
    ],
    [
    'name'     => 'Nahid Bin Azhar',
    'role'     => 'Laravel Ninja',
    'vacation' => false,
    ],
    [
    'name'     => 'Foysal Zafree',
    'role'     => 'Front End Ninja',
    'vacation' => false,
    ],
    [
    'name'     => 'Arifur Rahaman Naim',
    'role'     => 'WordPress Ninja',
    'vacation' => true,
    ],
    ];

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

পরের পর্বের সুবাস সবার আগে পেতে চাইলে স্বয়ংক্রিয় ভালোবাসায় নিবন্ধন (Email Subscription) করুন 😀

সে পর্যন্ত, হ্যাপি লার্নিং 🙂
ধন্যবাদ