Friday, November 27, 2015

প্রোগ্রামিং যাঁদের দুনিয়া

মো. সাইফুল্লাহ | আপডেট: | প্রিন্ট সংস্করণ
জাহাঙ্গীরনগর বিশ্ববিদ্যালয়ের বিজয়ী দলের তিন প্রোগ্রামার,শাবিপ্রবির প্রোগ্রামারদের দল ‘ডাউন টু দ্য ওয়্যার’, দ্বিতীয় রানার্সআপ—নর্থ সাউথ বিশ্ববিদ্যালয়ের তিন ছাত্রনিলয় দত্তের সঙ্গে গল্প করতে করতে একটা কৌতুক মনে পড়ে গেল।
একবার নদীতে ডুবে যাচ্ছিলেন একজন কম্পিউটার প্রোগ্রামার। পানিতে হাবুডুবু খেয়ে তিনি চিৎকার করে বলছিলেন, ‘এফ ওয়ান! এফ ওয়ান!’
মাইক্রোসফট উইন্ডোজে প্রোগ্রাম চালানোর সময় কোনো ‘সাহায্যের’ প্রয়োজন হলে কী-বোর্ডের এফ ওয়ান (F1) বোতাম চাপতে হয়—এই তথ্য আপনার জানা না-ও থাকতে পারে। নিলয়েরা নিশ্চয়ই জানেন। নিলয় দত্ত, রাইহাত জামান ও সাদিক মো. নাফিস—জাহাঙ্গীরনগর বিশ্ববিদ্যালয়ের এই তিন ছাত্রের দল এবার ঢাকা পর্বের ‘এসিএম ইন্টারন্যাশনাল কলেজিয়েট প্রোগ্রামিং’ প্রতিযোগিতায় (এসিএম আইসিপিসি) প্রথম হয়েছেন। কম্পিউটার নামক জটিল যন্ত্রের সঙ্গে তাঁদের গভীর প্রেম! প্রোগ্রামিংয়ে এতটাই বুঁদ হয়ে থাকেন, সত্যিই হয়তো কী-বোর্ডের এফ ওয়ান বোতাম আর বাস্তব দুনিয়ায় সাহায্যে আবেদন তাঁদের কাছে মিলেমিশে এক হয়ে যায়!
আগামী বছর থাইল্যান্ডে বসবে এসিএম আইসিপিসির বিশ্ব আসর। সবকিছু ঠিক থাকলে জাহাঙ্গীরনগর বিশ্ববিদ্যালয়ের তিন শিক্ষার্থীর দল ‘অর্ডার অব এন কিউব’ সেখানে বিশ্বের নানা প্রান্ত থেকে আসা প্রোগ্রামারদের সঙ্গে প্রতিযোগিতায় অংশ নেবে। ১৪ নভেম্বর নর্থ সাউথ বিশ্ববিদ্যালয়ে হয়ে গেল ঢাকা পর্বের প্রতিযোগিতা। এই আয়োজনের সহযোগী ছিল প্রথম আলো। ১২২টি দলের সঙ্গে প্রতিযোগিতায় চ্যাম্পিয়ন হয়ে তবেই জাহাঙ্গীরনগর বিশ্ববিদ্যালয়ের প্রোগামারদের দল থাইল্যান্ডের টিকিট নিশ্চিত করেছেন। প্রথম রানার্সআপ হয়েছেন শাহজালাল বিজ্ঞান ও প্রযুক্তি বিশ্ববিদ্যালয়ের ছাত্র সাকিবুল মাওলা, ধনঞ্জয় বিশ্বাস ও আবদুল্লাহ আল মারুফ। দ্বিতীয় রানার্সআপ, নর্থ সাউথ বিশ্ববিদ্যালয়ের ফাইয়াজ আহমদ, হাছিব আল মুহাইমেন ও মোহাম্মদ সামিউল ইসলাম। ১৭ নভেম্বর মুঠোফোনে কথা হলো তিন দলের প্রোগ্রামারদের সঙ্গে।
মেডেল চাই
গতবার এসিএম আইসিপিসির বিশ্ব আসর বসেছিল মরক্কোতে। সেবারও অংশ নিয়েছিল অর্ডার অব এন কিউব। ১২০টি দলের মধ্যে তাঁদের অবস্থান ছিল ৫৯তম। এবার লক্ষ্য কী? সাদিক মো. নাফিস এককথায় উত্তর দিলেন, ‘মেডেলের জন্য চেষ্টা করব।’
দলের অন্য সদস্য রাইহাত জামানেরও একই কথা। বলছিলেন, ‘শেষ বর্ষে পড়ছি। দেশের জন্য, নিজের বিশ্ববিদ্যালয়ের সুনামের জন্য একটা কিছু করেই বিদায় নিতে চাই।’ জাহাঙ্গীরনগর বিশ্ববিদ্যালয়ে প্রতি সপ্তাহে তিন দিন আইসিপিসির আদলে প্রোগ্রামিং প্রতিযোগিতার আয়োজন করা হয়। অর্ডার অব এন কিউব দলের বিশ্বাস, এই চর্চাই তাঁদের বিজয়ী হওয়ার রসদ জুগিয়েছে। তিনজনই বিশ্ববিদ্যালয়ের হলে থাকেন। গভীর রাত পর্যন্ত কোডিংয়ে ডুবে থাকতেও তাই বাধা নেই কোনো। শুরুতেই যার কথা বলছিলাম, সেই নিলয় দত্ত তো এমনটাও বললেন, ‘দুই-একদিন কোডিং করতে না পারলে অস্বস্তি লাগে। মনে হয় কী যেন একটা করা হয়নি!’ প্রোগ্রামিংয়ের নেশা যাঁদের এতটাই প্রবল, একটা মেডেল তাঁরা প্রত্যাশা করতেই পারেন।
এখনই কোনো মন্তব্য নয়
শাহজালাল বিজ্ঞান ও প্রযুক্তি বিশ্ববিদ্যালয়ের দলটির নাম ডাউন টু দ্য ওয়্যার। নামের পেছনের রহস্যটা জানার ইচ্ছে ছিল। দলের সদস্য ধনঞ্জয় বিশ্বাস অবশ্য শুরুতেই বলে দিলেন, ‘কিছু মনে করবেন না। আমরা এখন কিছুই বলতে চাচ্ছি না।’ দলের আরেক সদস্য সাকিবুল মাওলা জানালেন, হিসেবের মারপ্যাঁচে তাঁদের মূলপর্বে অংশগ্রহণ করাটা এখনো নিশ্চিত হয়নি। তাই ধনঞ্জয়দের চোখ এখন ভারতের অমৃতাপুরি অঞ্চলের প্রতিযোগিতার দিকে। সেখানে এসিএম আইসিপিসির আসর বসবে আগামী মাসে। এশিয়ার বিভিন্ন দেশ থেকে প্রোগ্রামাররা প্রতিযোগিতায় অংশ নেবেন। এই সুযোগ হাতছাড়া করতে চান না বলে এখন প্রোগ্রামিংয়ের দিকেই ডাউন টু দ্য ওয়্যার দলের পূর্ণ মনোযোগ।
আমরাই শুরু করেছিলাম
ভারতের প্রতিযোগিতার দিকে তাকিয়ে আছেন নর্থ সাউথ বিশ্ববিদ্যালয়ের দল, এনএসইউ বাগলাভারসও। দলের সদস্য ফাইয়াজ আহমেদ বলছিলেন, ‘বাংলাদেশে এসিএম আইসিপিসি আমাদের বিশ্ববিদ্যালয় থেকেই শুরু হয়েছিল। নর্থ সাউথ থেকে শুরু হলেও এর আগে কখনো আমরা সেরা তিনে উঠে আসতে পারিনি। এবার যেহেতু পেরেছি, তাই আমরা সবাই বেশ রোমাঞ্চিত। আমাদের দলের কোচ, বড় ভাইয়ারাও অনুপ্রেরণা দিচ্ছেন। ফাইনালে যেতে পারলে আশা করি ভালো কিছু করতে পারব।’
এত অংশগ্রহণ বিস্ময়কর
আবুল এল হক
এসিএম আইসিপিসি ঢাকা পর্বের পরিচালক ও নর্থ সাউথ বিশ্ববিদ্যালয়ের অধ্যাপক
৯৭ সালে যখন প্রথমবার আমরা এসিএম আইসিপিসির আয়োজন করলাম, তখন অংশ নিয়েছিল ১৭টা দল। মনে আছে সেবার বুয়েট চ্যাম্পিয়ন হয়েছিল। এবার প্রাথমিক পর্যায়েই সম্ভবত ৯৮৫টা দল অংশ নিয়েছে। দিনাজপুর, খুলনা, পটুয়াখালী থেকেও প্রোগ্রামাররা এসেছে। ছেলেমেয়েদের এত আগ্রহ দেখে আমি সত্যি একটু অবাকই হয়েছি। এতটা আশা করিনি। সারা দেশেই এখন ঘন ঘন প্রোগ্রামিংয়ের প্রতিযোগিতা হচ্ছে। এটা খুবই আশার কথা। আমরা যত বেশি চর্চা করতে পারব, ততই এগিয়ে যাব। গত বছর এসিএম আইসিপিসির ফাইনালে এশিয়ার মধ্যে বাংলাদেশ আর ইরানের দলগুলোর ফলাফলই সবচেয়ে ভালো ছিল। এবারও আমি খুবই আশাবাদী।

Friday, November 20, 2015

কম্পিউটার প্রোগ্রামিং বেসিক

কম্পিউটার তো আসলে গণনা করার যন্ত্র, তাই না? যদিও আমরা এটি দিয়ে গান শুনি, ভিডিও দেখি, গেমস খেলি, আরও নানা কাজ করি। আসলে শেষ পর্যন্ত কম্পিউটার বোঝে শূন্য (0) আর একের (1) হিসাব। তাই ব্যবহারকারী (user) যা-ই করুক না কেন, কম্পিউটার কিন্তু সব কাজ গণনার মাধ্যমেই করে। কম্পিউটারের ব্যবহার এত ব্যাপক হওয়ার পেছনে অন্যতম কারণ হচ্ছে নানা রকম সফটওয়্যার দিয়ে নানা ধরনের কাজ করা যায় কম্পিউটারে। এসব সফটওয়্যার তৈরি করতে হয় প্রোগ্রাম লিখে অর্থাৎ কী হলে কী করবে এটি প্রোগ্রামের সাহায্যে কম্পিউটারকে বোঝাতে হয়।
একসময় কিন্তু কেবল 0 আর 1 ব্যবহার করেই কম্পিউটারের প্রোগ্রাম লিখতে হতো। কারণ কম্পিউটার তো 0, 1 ছাড়া আর কিছু বোঝে না, আর কম্পিউটারকে দিয়ে কোনো কাজ করাতে চাইলে তো তার ভাষাতেই কাজের নির্দেশ দিতে হবে। 0, 1 ব্যবহার করে যে প্রোগ্রামিং করা হতো, তার জন্য যে ভাষা ব্যবহৃত হতো, তাকে বলা হয় মেশিন ল্যাঙ্গুয়েজ। তারপর এল অ্যাসেম্বলি ল্যাঙ্গুয়েজ। এতে প্রোগ্রামাররা কিছু ইনস্ট্রাকশন যেমন ADD (যোগ), MUL (গুণ) ইত্যাদি ব্যবহারের সুযোগ পেল। আর এই ভাষাকে 0, 1-এর ভাষায় নিয়ে কাজ করাবার দায়িত্ব পড়ল অ্যাসেম্বলারের ওপর, প্রোগ্রামারদের সে বিষয়ে ভাবতে হতো না। কিন্তু মানুষের চাহিদার তো শেষ নেই। নতুন নতুন চাহিদার ফলে নতুন নতুন জিনিসের উদ্ভব হয়। একসময় দেখা গেল যে অ্যাসেম্বলি ল্যাঙ্গুয়েজ দিয়েও কাজ করা ঝামেলা হয়ে যাচ্ছে। তাই বড় বড় প্রোগ্রাম লিখার জন্য আরও সহজ ও উন্নত নানা রকম প্রোগ্রামিং ভাষা তৈরি হলো। যেমন - ফরট্রান (Fortran), বেসিক (Basic), প্যাসকেল (Pascal), সি (C)। তবে এখানেই শেষ নয়, এরপর এল আরও অনেক ল্যাঙ্গুয়েজ, যার মধ্যে অন্যতম হচ্ছে, সি প্লাস প্লাস (C++), ভিজ্যুয়াল বেসিক (Visual Basic), জাভা (Java), সি শার্প (C#), পার্ল (Perl), পিএইচপি (PHP), পাইথন (Python), রুবি (Ruby)। এখনো কম্পিউটার বিজ্ঞানীরা নিত্যনতুন প্রোগ্রামিং ভাষা তৈরি করে যাচ্ছেন। প্রোগ্রামাররা এসব ভাষা ব্যবহার করে প্রোগ্রাম লেখেন আর প্রতিটি ভাষার রয়েছে আলাদা কম্পাইলার, যার কাজ হচ্ছে ওই প্রোগ্রামকে কম্পিউটারের বোধগম্য ভাষায় রূপান্তর করা, তাই এটি নিয়ে প্রোগ্রামারদের ভাবতে হয় না।
প্রোগ্রাম লিখার সময় প্রোগ্রামারকে তিনটি প্রধান কাজ করতে হয়। প্রথমে তার বুঝতে হয় যে সে আসলে কী করতে যাচ্ছে, মানে তার প্রোগ্রামটি আসলে কী কাজ করবে। তারপর চিন্তাভাবনা করে এবং যুক্তি (logic) ব্যবহার করে অ্যালগরিদম দাঁড় করাতে হয়। মানে, লজিকগুলো ধাপে ধাপে সাজাতে হয়। এর পরের কাজটি হচ্ছে অ্যালগরিদমটাকে কোনো একটি প্রোগ্রামিং ভাষায় রূপান্তর করা, যাকে আমরা বলি কোডিং করা। একেক ধরনের কাজের জন্য একেক ল্যাংগুয়েজ বেশি উপযোগী।
পরবর্তি পোস্ট গুলোতে আমরা প্রোগ্রামিং ল্যাংগুয়েজ সি নিয়ে আলোচনা করব ।