প্রোগ্রামিং ল্যাঙ্গুয়েজ

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

আমি যখন কলেজে পড়তাম, তখন কিউ-বেসিক (Q Basic) নামে একটা প্রোগ্রামিং ল্যাঙ্গুয়েজ শেখার ব্যর্থ চেষ্টা করেছিলাম। কিউ-বেসিক ল্যাঙ্গুয়েজটা আমাদের সিলেবাসে ছিল আর কী। এইচএসসি পরীক্ষার পরে কম্পিউটার কিনি, তখন এইচটিএমএল (HTML) শিখলাম কিছুটা, যদিও এটা ঠিক প্রোগ্রামিং ল্যাঙ্গুয়েজ না। তারপরে ২০০১ সালের শুরু থেকে সি (C) শেখা শুরু করি। আমাদের ভার্সিটির ক্লাস শুরু হয় ২০০১ সালের মে মাসে, আর ততদিনে সি এর বেসিক কিছুটা শেখা হয়েছে। আমি আমার বাকী ভার্সিটি-জীবন এর সুবিধা ভোগ করি। আমার যদি ভার্সিটির সি কোর্সের ক্লাশ থেকে সি শেখা লাগতো, তাহলে একটু অসুবিধাই হতো হয়ত, যেটা আমার অনেক ক্লাসমেটকে দেখে বুঝতে পেরেছি। সি শেখার সময় প্রথম বছরে ৩-৪টা বই কিনেছিলাম, যদিও সবগুলো বই শুরু থেকে শেষ পর্যন্ত পড়ি নাই। এক বছর সি শেখার পরে আমি হার্বার্ট শিল্ডের টিচ ইয়োরসেল্ফ সি প্লাস প্লাস বইটা পড়ি। কিন্তু এরপরে আর আমার সি প্লাস প্লাস (C++) চর্চা করা হয় নাই।

ভার্সিটির ফার্স্ট ইয়ারে একটা ছোট প্রজেক্ট করতে হয়েছিল, যেখানে এইচটিএমএল-এর পাশাপাশি একটু জাভাস্ক্রিপ্টও (Javascript) ব্যবহার করতে হয়েছিল। সেই ২০০২ সালের শুরুর দিকের ঘটনা। অল্প একটু জাভাস্ক্রিপ্ট শিখেছিলাম। আমার ইচ্ছা ছিল আমার এক বন্ধুকে দিয়ে প্রজেক্টটা করিয়ে ফেলবো। তো ব্যাটা রাত ২টার দিকে ঘুমিয়ে গেল, আমি চারটা পর্যন্ত অপেক্ষা করলাম। কারণ ওইদিনই প্রজেক্ট জমা দিতে হবে। চারটার পরে আমি আর কোনো উপায় না দেখে নিজেই কাজ করতে বসে গেলাম এবং শেষ পর্যন্ত কাজটা করেও ফেললাম। এরপরেও মাঝে মাঝে জাভাস্ক্রিপ্ট ব্যবহার করতে হয়েছিল, কিন্তু তেমন ভালোভাবে শেখা হয় নাই। আর গত চার-পাঁচ বছরে জাভাস্ক্রিপ্টে কিছুই করি নাই।

ভার্সিটির সেকেন্ড ইয়ারে অবজেক্ট ওরিয়েন্টেড কোর্স ছিল। সেই কোর্সে জাভা (Java) শিখি। আর তারপরের সেমিস্টারে একটা প্রজেক্টও করি জাভা ব্যবহার করে। তারপরে ২০০৬-২০০৭ সালে কিছু টুকটাক কাজ করতে জাভা ব্যবহার করেছিলাম।

সম্ভবত ফোর্থ ইয়ারে আমাদের মাইক্রোপ্রসেস কোর্স ছিল, সেই কোর্সের ল্যাবের জন্য এসেম্বলি ল্যাঙ্গুয়েজ (Assembly Language) শিখতে হয়েছিল।

আমার প্রথম প্রফেশনাল চাকরি ছিল টাইগার আইটি-তে, ২০০৭ সালের মাঝামাঝি। সেখানে আমি যেই প্রজেক্টে জয়েন করলাম, সেই প্রজেক্টে পার্ল (Perl) প্রোগ্রামিং ল্যাঙ্গুয়েজ ব্যবহার করতে হয়। কিন্তু আমি আগে কখনও এই ল্যাঙ্গুয়েজের নাম শুনি নাই। তাই বলে আমার কিন্তু চাকরি পেতে সমস্যা হয় নাই। কারণ ভালো কোম্পানীগুলো বেশি গুরুত্ব দেয় প্রবলেম সলভিং স্কিলের ওপর, প্রোগ্রামিং ল্যাঙ্গুয়েজ শেখার ওপর নয়।

আমার দ্বিতীয় সফটওয়্যার ইঞ্জিনিয়ারিং চাকরি ছিল ট্রিপার্ট ল্যাবসে (যেটা পরে প্লেডম কিনে নেয়, আবার প্লেডমকে ডিজনী কিনে নেয়)। সেখানে ব্যাকএন্ডের কাজ হতো পিএইচপি (PHP) প্রোগ্রামিং ল্যাঙ্গুয়েজে। আর মাঝেমধ্যে অল্পস্বল্প জাভাস্ক্রিপ্ট। তো সেই চাকরির ইন্টারভিউতে আমাকে জিজ্ঞাসা করল যে পিএইচপি পারি কী না। আমি সোজা বলে দিলাম যে পারি না, কারণ এর আগে ২-৩ দিন পিএইচপি নিয়ে গুতাগুতি করলেও সেটা বলার মতো কিছু না। কিন্তু সেজন্য আমার চাকরি পাওয়া আটকায় নাই। সেখানে এক বছর কাজ করার পরে একটা নতুন প্রজেক্টে কাজ করতে হয়, আর সেই প্রজেক্ট হচ্ছে অ্যাকশন স্ক্রিপ্ট (Actionscript)-এ। তো সেটাও দুই-তিন দিন শিখে কাজ শুরু করে দেই।

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

২০১৫ সালের মাঝামাঝি আমি সিঙ্গাপুরের গ্র্যাব নামক কোম্পানীতে ইন্টারভিউ দেই। বেশ কয়েকটা ইন্টারভিউ হয় এবং সেখানে আমি সি ব্যবহার করি, প্রবলেম সলভ করার জন্য। ইন্টারভিউ শেষে অফার পেয়ে জয়েন করি। জয়েন করার পরে জানতে পারলাম যে এখানে গো (Go বা Golang) ব্যবহার করা হয়, তাই প্রথম কিছুদিন গো শিখি। লক্ষ্য করার বিষয় হচ্ছে এত বড় কোম্পানী এত বেতন দিয়ে অন্য দেশ থেকে ইঞ্জিনিয়ার হায়ার করছে, ওরা কিন্তু এই বিষয় নিয়ে মাথা ঘামায় নাই যে আমি গো পারি কী না। সুতরাং বোঝাই যাচ্ছে যে কয়টা প্রোগ্রামিং ল্যাঙ্গুয়েজ পারি, এটা আসলে বিবেচ্য বিষয় নয়। কম্পিউটার সায়েন্সের বেসিক জ্ঞান (ডাটা স্ট্রাকচার, অ্যালগরিদম, অপারেটিং সিস্টেম, ডাটাবেজ, অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং, নেটওয়ার্কিং ইত্যাদি) এবং প্রবলেম সলভিং স্কিল-ই একজন ভালো সফটওয়্যার ইঞ্জিনিয়ার হওয়ার পূর্বশর্ত। আর কাজ করতে করতে সফটওয়্যার ইঞ্জিনিয়ারিংটাও শেখা হয়ে যায়, তবে তার জন্য ভালো কোম্পানীতে কাজ করাটা জরুরী।

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

আন্তর্জাতিক ইনফরমেটিক্স অলিম্পিয়াডের লোগো

ইনফরমেটিক্স অলিম্পিয়াড এক ধরণের প্রোগ্রামিং প্রতিযোগিতা। এই প্রতিযোগিতায় স্কুল ও কলেজের শিক্ষার্থীরা অংশগ্রহন করতে পারে। ১৯৮৯ সালে বুলগেরিয়াতে প্রথমবারের মতো আন্তর্জাতিক ইনফরমেটিক্স অলিম্পিয়াড অনুষ্ঠিত হয়। তারপর থেকে প্রতি বছর এই প্রতিযোগিতা অনুষ্ঠিত হচ্ছে। বাংলাদেশও বিগত কয়েক বছর ধরে এই প্রতিযোগিতায় অংশ নিচ্ছে।

আন্তর্জাতিক ইনফরমেটিক্স অলিম্পিয়াডে দল গঠনের লক্ষ্যে প্রথমে জাতীয় ইনফরমেটিক্স অলিম্পিয়াড নামে প্রতিযোগিতা অনুষ্ঠিত হয়, তারপর সেখানে যারা ভালো করে, তাদেরকে নিয়ে বেশ কিছু বাছাই প্রতিযোগিতা করার পরে চূড়ান্ত দল গঠন করা হয়। আর জাতীয় প্রতিযোগিতায় আসতে হলে প্রথমে পাড়ি দিতে হবে বিভাগীয় অলিম্পিয়াড। বাংলাদেশ ইনফরমেটিক্স অলিম্পিয়াডের কোনো অফিশিয়াল ওয়েবসাইট নেই। তাই খবরাখবর পাওয়ার জন্য চোখ রাখতে হবে এই ফেসবুক গ্রুপে : https://www.facebook.com/groups/bdoifamily/

বাংলাদেশে বিভাগীয় ইনফরমেটিক্স অলিম্পিয়াড প্রতিযোগিতায় সাধারণত প্রোগ্রামিং সমস্যা দেওয়া হয় না। বরং গাণিতিক যুক্তি-বুদ্ধি যাচাই করার জন্য প্রশ্ন দেওয়া হয়। তবে জাতীয় ইনফরমেটিক্স অলিম্পিয়াডে প্রোগ্রামিং করেই সমস্যা সমাধান করতে হয়। সেখানে সি ও সি প্লাস প্লাস প্রোগ্রামিং ল্যাঙ্গুয়েজ ব্যবহার করা যায়।

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

জাতীয় ইনফরমেটিক্স অলিম্পিয়াডে যেহেতু প্রোগ্রামিং করে সমস্যার সমাধান করতে হবে, তাই প্রোগ্রামিং জানতে হবে। প্রোগ্রামিং শেখার জন্য অনলাইনে একটি ফ্রি কোর্স আছে : http://programming-course.appspot.com/। একটি জিমেইল একাউন্ট থাকলেই রেজিস্ট্রেশন করা যায়। কোর্সের ভিডিওগুলো নিয়ে ‘প্রোগ্রামিংয়ে হাতে খড়ি’ নামক একটি ডিভিডিও তৈরি করা হয়েছে, যেটি পাওয়া যায় ঢাকার নীলক্ষেতের হক লাইব্রেরিতে। আর ঘরে বসেও কেনা যায়, রকমারি ডট কম থেকে। ভিডিও লেকচারের পাশাপাশি বই পড়তে হবে। প্রোগ্রামিং শেখা শুরুর করার জন্য বাংলায় ‘কম্পিউটার প্রোগ্রামিং ১ম খণ্ড (লেখক: তামিম শাহরিয়ার সুবিন, প্রকাশক: অন্যরকম প্রকাশনী)’ বইটি পড়া যেতে পারে। বইয়ের ওয়েবসাইটে বইটি বিনামূল্যে পড়া যায় : http://cpbook.subeen.com। এছাড়া ওয়েবসাইটে কিছু সমস্যা আছে, যেগুলো সমাধানের চেষ্টা করলে প্রোগ্রামিং স্কিল বাড়বে।

ইনফরমেটিক্স অলিম্পিয়াডের জন্য গাণিতিক জ্ঞান ও দক্ষতা বাড়াতে দ্বিমিক কম্পিউটিং স্কুল আয়োজিত, হাম্মাদ আলী স্যারের ডিসক্রিট ম্যাথ নামক অনলাইন কোর্সটি করা যেতে পারে এখান থেকে : http://discrete-math.appspot.com/। এটিও সবার জন্য ফ্রি। লেকচার ভিডিওগুলোর ডিভিডি কিনতে পাওয়া যায় ঢাকার নীলক্ষেতের হক লাইব্রেরি ও রকমারি ডট কম-এ।

প্রোগ্রামিং চর্চা করার জন্য আরো কিছু গুরুত্বপূর্ণ ওয়েবসাইটের লিঙ্ক পাওয়া যাবে এখানে : http://cpbook.subeen.com/2011/08/blog-post_854.html

সবার জন্য শুভকামনা।