প্রোগ্রামিংয়ের আশ্চর্য জগতে স্বাগত

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

অ্যাডা লাভলেস, পৃথিবীর প্রথম প্রোগ্রামার
অ্যাডা লাভলেস, পৃথিবীর প্রথম প্রোগ্রামার

 প্রোগ্রামিং কী

 তোমরা জানো, কম্পিউটারকে মোটা দাগে দুটি অংশে পৃথক করা হয়, হার্ডওয়্যার ও সফটওয়্যার। হার্ডওয়্যার হচ্ছে বিভিন্ন যন্ত্রাংশ আর সফটওয়্যার হচ্ছে সেসব যন্ত্রাংশ চালানোর জন্য লেখা নির্দিষ্ট সংকেত বা কোড। হার্ডওয়্যার কীভাবে কী করবে, সেটি নির্ধারণ করে সফটওয়্যার, যাকে আমরা কম্পিউটার প্রোগ্রামও বলে থাকি।

এনিয়াক, পৃথিবীর প্রথম ইলেক্ট্রনিক কম্পিউটার
এনিয়াক, পৃথিবীর প্রথম ইলেক্ট্রনিক কম্পিউটার

কম্পিউটার প্রোগ্রাম হচ্ছে এক বিশেষ ধরনের ভাষায় লেখা সংকেত, যেগুলো সাজানো থাকে এমনভাবে, যাতে করে কম্পিউটারের হার্ডওয়্যার সহজেই বুঝতে পারে, তাকে ঠিক কোন কাজটা কীভাবে করতে হবে। পৃথিবীতে মানুষের সঙ্গে মানুষের যোগাযোগের জন্য যেমন অনেক ভাষা আছে, তেমনি কম্পিউটারের জগতেও অনেক ভাষা আছে, যেগুলোকে বলে প্রোগ্রামিং ল্যাঙ্গুয়েজ। যেমন: সি, সি প্লাস প্লাস, জাভা, পাইথন, পিএইচপি ইত্যাদি। এসব ভাষার কোনো একটি বেছে নিয়ে সেই ভাষার নিয়মকানুন মেনে ঠিকমতো কোড লিখলে তৈরি হয়ে যাবে কম্পিউটার প্রোগ্রাম বা সফটওয়্যার। তবে ভাষার নিয়মকানুন ঠিক রেখে শুধু কোড লিখে গেলেই সেটি প্রোগ্রাম হবে না, যেমনটি বাংলা ভাষায় নিয়মকানুন মেনে হাবিজাবি লিখলেই সেটি কবিতা হবে না। হ্যাঁ, কম্পিউটার প্রোগ্রামিংয়ে ভালো হতে হলে কবিদের মতো সৃজনশীল হওয়া চাই। সঙ্গে অবশ্য আরেকটি জিনিস চাই—যুক্তি বা লজিক।

 প্রোগ্রামারের কাজ কী

 প্রোগ্রামারের কাজ হচ্ছে প্রোগ্রাম লেখা। প্রোগ্রামগুলো বিভিন্ন ধরনের সফটওয়্যার হতে পারে। যেমন গেমস, মোবাইল অ্যাপ্লিকেশন, সাধারণ কোনো ওয়েবসাইট কিংবা ফেসবুকের মতো বিশাল ওয়েব অ্যাপ্লিকেশন, গুগলের মতো সার্চ ইঞ্জিন, কম্পিউটার ভাইরাস, অপারেটিং সিস্টেম বা পরীক্ষার রুটিন তৈরি করার মতো সফটওয়্যার। দুনিয়ায় যে কত রকমের সফটওয়্যার আর কত কাজে যে সেগুলো ব্যবহৃত হচ্ছে, তার কোনো হিসাব নেই।

প্রোগ্রামাররা নিত্যনতুন সফটওয়্যার তৈরি করে চলেছে। এত এত সফটওয়্যার, তাহলে পৃথিবীর সব সফটওয়্যার তো বানানো হয়ে যাবে একদিন, এমন ভাবনা কি তোমার মনে আসছে? মানুষ তো কত-শত বছর ধরে গান গাইছে-লিখছে। তাই বলে কি পৃথিবীর সব গান লেখা হয়ে গেছে?

মাইক্রোসফট করপোরেশনের প্রতিষ্ঠাতা বিল গেটস ১৩ বছর বয়সে তাঁর প্রথম কম্পিউটার প্রোগ্রাম তৈরি করেন
মাইক্রোসফট করপোরেশনের প্রতিষ্ঠাতা বিল গেটস ১৩ বছর বয়সে তাঁর প্রথম কম্পিউটার প্রোগ্রাম তৈরি করেন

 প্রোগ্রামিং ক্যারিয়ার

 বিভিন্ন ধরনের প্রতিষ্ঠানে কমবেশি কাজের সুযোগ থাকলেও অধিকাংশ প্রোগ্রামার কাজ করতে চায় সফটওয়্যার তৈরির প্রতিষ্ঠানে। একজন ভালো প্রোগ্রামারের জন্য দেশে-বিদেশে কাজ করার সুযোগ রয়েছে ঢের। দেশের সীমারেখা কখনো কাজের প্রতি বাধা হয়ে দাঁড়ায় না। প্রতিবছরই বাংলাদেশের শীর্ষ কয়েকজন প্রোগ্রামার চাকরি নিয়ে চলে যাচ্ছে গুগল, মাইক্রোসফট, ফেসবুকের মতো বিশ্বখ্যাত প্রতিষ্ঠানে। এ ছাড়া দেশের ভেতরেও কাজের সুযোগ ক্রমাগতই বাড়ছে। একজন ভালো প্রোগ্রামারের কাছে প্রোগ্রামিং হচ্ছে নেশার মতো। নেশাকে পেশা হিসেবে নেওয়ার সৌভাগ্য পৃথিবীর খুব কমসংখ্যক মানুষ লাভ করে, আর সেই স্বল্পসংখ্যক মানুষের মধ্যে প্রোগ্রামাররা অন্যতম।

ফেসবুকের সহ-প্রতিষ্ঠাতা মার্ক জাকারবার্গও স্কুলে পড়ার সময় প্রোগ্রামিং শেখা শুরু করেন
ফেসবুকের সহ-প্রতিষ্ঠাতা মার্ক জাকারবার্গও স্কুলে পড়ার সময় প্রোগ্রামিং শেখা শুরু করেন

 উচ্চশিক্ষায় প্রোগ্রামিং

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

স্কুলপড়ুয়া মার্ক জাকারবার্গ
স্কুলপড়ুয়া মার্ক জাকারবার্গ

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

 প্রোগ্রামিং কীভাবে শিখব

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

প্রোগ্রামিং শেখার জন্য শুরুতে প্রয়োজন একটি বই, যা তোমাকে প্রোগ্রামিংয়ের শুরুটা দেখিয়ে দেবে, প্রয়োজন একটি কম্পিউটার, সঙ্গে ইন্টারনেট থাকলে ভালো হয়। তবে সবচেয়ে বেশি প্রয়োজন সপ্তাহে গড়ে দশ-বারো ঘণ্টা সময়। অবশ্যই পরীক্ষা চলার সময়টা ছাড়া। প্রোগ্রামিংয়ের বই কোথায় পাবে? দেশের বড় শহরগুলোর বইয়ের দোকানে প্রোগ্রামিংয়ের বই পাওয়া যায়, তবে সেগুলো বেশির ভাগই ইংরেজিতে। ইংরেজি বই পড়া অবশ্য তেমন কঠিন কোনো ব্যাপার নয়, একটু সাহস করে শুরু করে দিলেই হয়। আর বাংলা বই পড়তে চাইলে তোমরা  http://cpbook.subeen.com ওয়েবসাইটে ঢুঁ মারতে পারো। এখানে বাংলা ভাষায় প্রোগ্রামিংয়ের ওপর একটি বই ফ্রি দেওয়া আছে, যেটি কিনা স্কুল-কলেজের ছাত্রছাত্রীদের কথা ভেবেই লেখা হয়েছে। আর বইয়ের দোকানে যেতে না চাইলে কিংবা আশপাশে ভালো বইয়ের দোকান না থাকলে রকমারি ডটকম থেকে বই কিনতে পারো। বই তো কেনা হলো, তাহলে আর দেরি কেন? শুরু করে দাও।

 প্রোগ্রামিং শেখার অনলাইন স্কুল

 ছেলেবেলায় গান শেখার জন্য গানের স্কুল থাকে, নাচ শেখার জন্য নাচের স্কুল। ক্রিকেট খেলা শেখার জন্য ক্রিকেট একাডেমি। কী চমৎকারই না হতো বাংলাদেশে যদি প্রোগ্রামিং শেখার জন্য কোনো প্রোগ্রামিং স্কুল থাকত! কিন্তু সমস্যা হচ্ছে কী, খুব ভালো প্রোগ্রামার না হলে অন্যকে প্রোগ্রামিং শেখানো যায় না। আর আমাদের দেশে খুব ভালো প্রোগ্রামাররা অনেক ব্যস্ত থাকেন বলে প্রোগ্রামিং শেখানোর বিষয়টি তাঁরা ভাবেন না। এই সমস্যার একটি সমাধান অবশ্য বের হয়েছে। প্রোগ্রামিং ও অন্যান্য বিষয় শেখার কিছু ওয়েবসাইট আছে, যেখানে অনলাইন কোর্স করা যায়। বেশির ভাগ কোর্সই বিনা মূল্যে করা যায়। এ রকম ওয়েবসাইগুলোর মধ্যে অন্যতম হচ্ছে  coursera.org, edx.org I udacity.com।

কোথাও আটকে গেলে সাহায্য নিতে পারো বড়দের
কোথাও আটকে গেলে সাহায্য নিতে পারো বড়দের

তবে বাংলা ভাষায়ও প্রোগ্রামিং, সফটওয়্যার ডেভেলপমেন্ট, ওয়েব ও মোবাইল অ্যাপ্লিকেশন ডেভেলপমেন্ট শেখার জন্য অনলাইনে ভিডিও ও কোর্স পাওয়া যায়। এ রকম একটি ওয়েবসাইট হচ্ছে দ্বিমিক কম্পিউটিং স্কুল:  http://dimikcomputing.com। এর কোর্সগুলো ফ্রি কিন্তু তার জন্য তোমাদের থাকা চাই উচ্চ গতির ইন্টারনেট। আশার কথা এই যে, আমাদের দেশে ইন্টারনেট দিন দিন সহজলভ্য হচ্ছে। আর প্রতিটি কোর্স শেষেই ডিভিডি বের করছে দ্বিমিক কম্পিউটিং স্কুল (ফেসবুক পেজ:  https://www.facebook.com/DimikComputing), যাতে করে যাদের ভালো ইন্টারনেট নেই, তারা ডিভিডি থেকে ভিডিও লেকচার দেখে শিখতে পারে। শিক্ষক ডটকম ( http://shikkhok.com)-এও প্রোগ্রামিংয়ের কিছু কোর্স রয়েছে, যেগুলো বিনা মূল্যে করা যায়। এ ছাড়া ইন্টারনেটে নানান ফোরাম ও ফেসবুকে বিভিন্ন গ্রুপ রয়েছে, যেখানে তুমি যোগ দিতে পারো এবং প্রোগ্রামিং নিয়ে আলাপ করতে পারো।

 অনলাইন বিচারক

 প্রোগ্রামিং শেখার শুরুটা তো হলো। চর্চাটা হবে কীভাবে? ইন্টারনেটে হাজার হাজার প্রোগ্রামিং সমস্যা পাওয়া যায়, যেগুলো সমাধান করে তোমার প্রোগ্রাম সেখানে জমা দিলে তুমি কিছুক্ষণের মধ্যেই জানতে পারবে যে তোমার সমাধানটি সঠিক হয়েছে কি না। যেসব ওয়েবসাইটে এই সুবিধাটা আছে, সেগুলোকে বলে অনলাইন জাজ বা সংক্ষেপে ওজে ( OJ)। লাইটওজে ( lightoj.com) একটি চমৎকার অনলাইন জাজ, যেখানে তুমি প্রোগ্রামিং চর্চা শুরু করতে পারো। আর বাংলা ভাষায় প্রোগ্রামিং সমস্যা পেতে চাইলে তোমাদের যেতে হবে কম্পিউটার প্রোগ্রামিং বইয়ের ওয়েবসাইটে।

 ইনফরমেটিকস অলিম্পিয়াড

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

 চর্চা করার আরও কিছু উপায়

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

 কম্পিউটার সায়েন্স

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

 এখনই সময় শুরু করার

 আমি ছোট, আমি কি প্রোগ্রামিং শিখতে পারব? বিল গেটসের নাম তোমরা নিশ্চয়ই শুনেছ, বিশ্ববিখ্যাত কোম্পানি মাইক্রোসফট করপোরেশনের প্রতিষ্ঠাতা। ১৩ বছর বয়সে বিল গেটস তাঁর প্রথম কম্পিউটার প্রোগ্রাম তৈরি করেন, যেটি ছিল টিক-ট্যাক-টো গেম। তারপর তিনি যেই স্কুলে পড়তেন, সেখানে ক্লাস শিডিউল তৈরির সফটওয়্যারও বানিয়ে দেন। ফেসবুকের সহ-প্রতিষ্ঠাতা মার্ক জাকারবার্গও স্কুলে পড়ার সময় প্রোগ্রামিং শেখা শুরু করেন। প্রথমে তাঁর বাবাই ছিলেন তাঁর প্রোগ্রামিং শিক্ষক। স্কুলে যখন তাঁর বন্ধুরা গেম খেলতে ব্যস্ত, সেই সময়টা জাকারবার্গ ব্যস্ত থাকতেন গেম বানানোর কাজে! এ রকম আরও অনেক উদাহরণ আছে, আমি কেবল তোমাদের পরিচিত দুজন মানুষের কথা বললাম। বিল গেটস যদি সফটওয়্যার তৈরি করেই পৃথিবীর সেরা ধনী হতে পারেন, মার্ক জাকারবার্গ যদি ফেসবুক তৈরি করে বিশ্বের কোটি কোটি মানুষকে যুক্ত করতে পারেন, স্টিভ জবস যদি আইফোন তৈরি করে সারা পৃথিবীর মানুষকে তাক লাগিয়ে দিতে পারেন, তুমি কেন পারবে না? তোমাদের এখন কাজ হবে বাবা-মাকে বুঝিয়ে-সুঝিয়ে তাঁদের কাছ থেকে অনুমতি বের করা, যেন তুমি সপ্তাহে ১০-১২ ঘণ্টা প্রোগ্রামিং করতে পারো। তাহলে আর তোমাকে ঠেকায়—এমন সাধ্য কার?

 কোন ল্যাঙ্গুয়েজ দিয়ে শুরু করব

তুমি যদি ক্লাস থ্রি, ফোর কিংবা ফাইভের শিক্ষার্থী হও, তাহলে এমআইটির তৈরি স্ক্র্যাচ দিয়ে প্রোগ্রামিং শেখা শুরু করতে পারো। আর তুমি যদি ক্লাস সিক্স বা তার ওপরের ক্লাসের শিক্ষার্থী হও, তাহলে পাইথন ( Python) প্রোগ্রামিং ভাষা দিয়ে শুরু করাটা ভালো হবে। কারণ, পাইথন শেখাটা তুলনামূলক সহজ। তবে তুমি যদি ইনফরমেটিকস অলিম্পিয়াডে অংশ নিতে চাও, তাহলে তোমার সি শিখতে হবে।

গুরুত্বপূর্ণ কয়েকটি ওয়েবসাইটের ঠিকানা তোমাদের দিয়ে রাখছি। প্রোগ্রামিং নিয়ে একটু হলেও আগ্রহ থাকলে এসবে ঢুঁ মারতে পারো। দেখবে কী মজার এক জগৎ তোমার জন্য অপেক্ষা করছে। 

tynker.com, scratch.mit.edu, code.org, edx.org, coursera.org, udacity.com, dimikcomputing.com, stackoverflow.com, shikkhok.com, khanacademy.org

মডেলঃ বুশরা, সুজানা, আরিয়ান ও অনিক

ছবিঃ কবির হোসেন