কম্পিউটার সায়েন্সের সহজ এবং কঠিন

ষাট এর দশকে মার্ভিন মিনস্কি কিছু আন্ডারগ্রেজুয়েট ছাত্রদের একটা প্রজেক্ট করতে দিয়েছিলেন, “একটা কম্পিউটারকে এমনভাবে প্রোগ্রাম করতে হবে যেন প্রোগ্রামটা ক্যামেরা দিয়ে তোলা কোন একটা ছবি দেয়া হলে সেই ছবির বস্তুগুলোকে চিহ্নিত করতে পারে।” তিনি ভেবেছিলেন গ্রীষ্মের ছুটির মধ্যেই তারা এই সমস্যার সমাধান করে ফেলতে পারবে। অর্ধ শতাব্দী পার হয়ে গেছে, কম্পিউটার সায়েন্সের বাঘা বাঘা বিজ্ঞানীরা এখনো এই সমস্যার সমাধানের চেষ্টায় কাজ করে যাচ্ছেন। কম্পিউটার সায়েন্সে কোন সমস্যাটা সহজ আর কোন সমস্যাটা কঠিন এটার কোন সহজ উত্তর নেই। ডেভেলপমেন্ট করতে গিয়ে প্রায় সময়ই একটা ব্যাপারটা ফেস করি যে, একজন কম্পিউটার সায়েন্স ব্যাকগ্রাউন্ডের মানুষ আর একজন সাধারণ মানুষের প্রযুক্তিগত বিষয়ের ধ্যান ধারনায় অনেক বড় একটা গ্যাপ আছে। এমন একটা non obvious গ্যাপ যেটা বাইরে থেকে বোঝা যায়না, বোঝা যায় তাদের সাথে কাজ করতে গিয়ে। সাধারণ মানুষের কাছে অনেক কাজই হয়তো খুবই জটিল মনে হয়, কিন্তু হয়তো সেটা প্রোগ্রামিং এ সমাধান করা খুবই সহজ। আবার একজন সাধারণ মানুষ যে কাজটাকে খুবই সহজ মনে করে, সেই “সহজ” কাজটাই প্রোগ্রামিং এ সমাধান করা হতে পারে অনেক কঠিন, সময় সাপেক্ষ এবং কখনো কখনো অনিশ্চিত, একটা ব্যাপার।  প্রযুক্তির সহজলভ্যটায় এখন কিছু জিনিষ মানুষের কাছে এতই “trivial” হয়ে গেছে যে, মুখে “Okay google, say in german, thank you for helping me” বলার সাথে সাথে স্মার্টফোনের জার্মান ভাষায় “Danke, dass du mir geholfen hast” বলে উঠা আর ফেসবুকে তার ফ্রেন্ডের ছবি অটোমেটিকালি ট্যাগ হয়ে যাওয়া, এই ধরনের অনেক ব্লিডীং এজ প্রযুক্তি এখন অনেকের কাছেই হয়ে গেছে খুবই “সাধারণ”।

অলস আমি এবং আমার দেশপ্রেমের আপাত অভাব নিয়ে কিছু কথা

এই পোস্টের “সংক্ষেপ” পড়তে ক্লিক করুন এখানে। হয়তো আমি মাতৃভাষা দিবস নিয়ে ফেসবুকে স্ট্যাটাস দেইনি, হয়তো আমি এতই অলস যে ছুটির দিনে ভোরবেলা খালি পায়ে গিয়ে ফুল দেইনা,এর মানে এই না যে মাতৃভাষা বাংলার প্রতি, শহীদদের প্রতি, দিনের অর্থটার প্রতি আমার কোন শ্রদ্ধা নেই। আমি মনে করি এই ব্যাপারগুলোর বহিঃ প্রকাশ সম্পুর্নভাবে ব্যাক্তি নির্ভর। তাই আমি কোন কোন জাতীয় দিবসে ফেসবুকে স্ট্যাটাস দেইনি বা প্রোফাইল পিক বদলাইনি সেটা নিয়ে অন্য কোন বিষয়ে আমার বিরুদ্ধে এড হমিনেম অস্ত্র হিসেবে ব্যাবহার করাটা আমার কাছে মোটেও দেশপ্রেম ঠেকে না। কোন এমন আইনের বই নেই যে সেখানে লিখা আছে খালি পায়ে ফুল দিলেই শ্রদ্ধা হবে, বা ফেসবুকে স্ট্যাটাস রচনা করতেই হবে, ইত্যাদি। কে কিভাবে পালন করবে সেটা নিয়ে অতিরিক্ত বাড়াবাড়ি করাটা আমার কাছে অদ্ভুত লাগে। ব্রাউজার সার্ভাইভাল স্ট্রাটেজি নিশেতে নামকরা গেম ছিল “ক্যারাভানিয়ার ২“। গেমটি সারা বিশ্বের মানুষ শুধু কনগ্রিগেটেই খেলেছে প্রায় সাত লক্ষ বার। অন্য সকল সোর্স মিলিয়ে সংখ্যাটা দশ লাখ+। আমার কন্ট্রিবিউশনের জন্য আমাকে কিছু ক্রিয়েটিভ ফ্রিডম দেয়া হয়েছিল, সেই গেমে একটি পুরো শহরের নাম আমি রেখেছিলাম “স্বাধীন-৭১”। বাংলা লেখার রিদমিক কিবোর্ড যখন জনপ্রিয়তার তুঙ্গে, তখন সবাই সেই কিবোর্ডের সুন্দর কোন থিম খুঁজছিলো, তখন সেটির জন্য বানিয়েছিলাম ম্যাটেরিয়েল থিম, নিজের এবং অন্যদের ব্যাবহারের সুবিধার্থে। এখনো মাঝে মাঝে ইমেইল, প্রাইভেট মেসেজ আসে সেই থিমের জন্য, যদিও অনেক আগেই প্লেস্টোরের রিদমিকেই ম্যাটেরিয়াল ডিজাইন দেয়া হয়েছে। Indic Keyboard নামে একটা ওপেন সোর্স মাল্টিলিংগুয়াল কিবোর্ড আছে, বাংলা লিখা যায় এমন কিবোর্ড গুলোর মধ্যে বেশ ভাল এবং আধুনিক, ডাউনলোড সংখ্যা এক লাখের বেশী। সেটির লেয়াউটের একটি ছোট বাগের কারণে বাংলা লিখতে গেলে বেশ ভোগাতো। ছোট্ট একটা ছোট্ট বাগফিক্স এবং ফিচার এডের জন্য সেটির প্লেস্টোরের চেঞ্জলগে এখনো আমার নাম লিখা আছে। কিছুদিন আগে বানালাম বাংলা ভাষার প্রথম টেক্সট সামারাইজেশন ইঞ্জিন সংক্ষেপ। বাংলা যেকোন খবরের লিংক বা খবরটা কপি পেস্ট দিলেই সেটা সংক্ষেপ করে দেয়ার চেষ্টা করে সংক্ষেপ। শুরুতে খুব একটা সাড়া না পেলেও এখন প্রতিদিন আশি নব্বইজন করে ব্যাবহারকারী পাচ্ছি, আশা করি এলগরিদমটার উন্নতির সাথে সাথে সেটা আরও বাড়বে। জানি, এগুলো খুবই ক্ষুদ্র, নগণ্য এবং প্রায় অর্থহীন। এইগুলো লিখে সবাইকে জানানোটা হাস্যকর। কিন্তু তবুও লিখলাম, কারণ আমার এইসব করতেই ভাল লাগে, আর নিজের স্থান থেকে এভাবে যদি কিছু দিতে পারি, যত ক্ষুদ্রই হোক, ভাল লাগে। অনেকদিন ধরে শখ স্মার্টফোনের জন্য একটা বাংলা কিবোর্ড বানানোর যেটাতে ফোনেটিকেও “স্লাইড” করা যাবে। আলাদা আলাদা করে অক্ষর না লিখে অক্ষরগুলোর উপর একটানে আঙ্গুল বুলিয়ে গেলেই লেখা হবে। ফোনে দ্রুত লিখার প্রয়োজন আমার নিজেরও হয় এবং সেখান থেকেই এই ইচ্ছার উৎপত্তি, সাথে যদি অন্য কারও বাংলা লিখা সহজ হয়, দ্রুত হয়, তাই আমার লাভ। শুনতে খুব সহজ মনে হলেও এটা নিয়ে অল্প একটু পড়াশোনার পরেই টেকনিকাল জটিলতার পাহাড় দেখে ভয়ই পেয়েছি বলা যায়, জানিনা পারবো কিনা, কিন্তু চেষ্টা করবো নিশ্চিত। এইসব করে নিজের মনে তৃপ্তি পাই, সেটাই আমার কাছে আসল, কারণ আমার মত ভোরবেলা ঘুম থেকে উঠতে না পারা অলসদের কাছে এইসব অর্থহীন ছোট ছোট কাজ করাই অনেককিছু।

রেডিট আসলে কি? রেডিট ব্যাবহার না করলে আপনি যা যা মিস করছেন।

THIS IS AN INCOMPLETE EARLY DRAFT আমার অত্যন্ত প্রিয় ওয়েবসাইট হলো রেডিট, ইন্টারনেটে নষ্ট করা সময়ের অধিকাংশই আমি ব্যায় করি এই রেডিটে। কি এই রেডিট, কেন আমি এর এত ভক্ত, কেন রেডিট খ্রাপ, কেন ভাল, এইসব নিয়েই মোটামুটি লম্বাচৌড়া এই লেখাটা। কি এই রেডিট? ইন্টারনেটে সময় কাটানো যদি আপনার নিয়মিত এক্টিভিটির মধ্যে পড়ে থাকে তাহলে এটা নিশ্চিতভাবে বলা যায় যে কখনো না কখনো আপনি Reddit নামের ওয়েবসাইটটি দেখছেন। প্রথম দেখায় চোখে পড়ে হিজিবিজি অনেকগুলো নিল নিল লিংক, নিচে কি কি সব লিখা, বামে দুটো উপর-নিচ তিরচিহ্ন, আর কতগুলো সংখ্যা। ইউজার ইন্টারফেসটা যেন সেই ২০০৪-২০০৫ এ পড়ে আছে। সেটাকে আবার লিখে রেখেছে Reddit - The Frontpage of the Internet রেডিট - ইন্টারনেটের প্রথম পাতা

ন্যাশনাল হ্যাকাথন ২০১৬- নুবদের সেকেন্ড রানার্সআপ হবার অভিজ্ঞতা

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

প্রোগ্রামিং শিখা, এবং গুগল সার্চ এর জাদুবিদ্যা

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