Thursday 5 December 2013

কৈশরের প্রেম আমার C


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

কিন্তু তার আগে কিছু কথা বলা দরকার মনে হচ্ছে...
আমি শুরু করেছিলাম  C দিয়ে। JAVA বা Python দিয়েও শুরু করে এমন অনেকেই আছে। যেই কদু সেই লাউ। কথাটা বেশি খাটে বিশেষ করে তাদের জন্য যারা কনটেস্টের জন্য নিজেকে রেডি করছে। ল্যাঙ্গুয়েজ যেটাই হোক লজিক নিয়েই আসল কাজ এখানে। এই একটা বিষয় নিয়ে অনলাইনে মেলা ব্লগ আছে। সাজেশন, কনটেন্ট ছড়িয়ে ছিটিয়ে আছে। এতো কিছুকে একাঠ্ঠা করার জন্য আমি বসিনি। বসলাম তাদের জন্য যারা স্বপ্ন ঠিকই দেখে ফেলেছে, কাজ শুরু করতে পারছে না অথবা চারদিকে দৌড়াচ্ছে আর টাইম নষ্ট করছে, যেই সময়টা দিতে পারতো প্রাকটিস করার পিছে। ভার্সিটির একটা ছেলেকে একদিন ACM  ক্লাসের পর কোচ জেমি ভাইয়া কে জিজ্ঞাস করতে শুনেছিলাম নাকি কোনো কোডেই AC ( accept ) পাচ্ছে না। একই কোড নাকি ১০-১২ বার সাবমিট করেও কাজ হচ্ছে না। সে জানতে চাচ্ছিলো তার ভুলটা কোথায়? সম্ভবত execution কোনো একটা গন্ডগোল করে ফেলছিলো। 

কিন্তু সমস্যাটা আসলে শুধু সেটাই? আমরা আসলে প্রোগ্রামিংকে কেন জানি সর্টকাট ভাবে শিখতেই বেশি আগ্রহী!! টাইম কোথায়? সব ২১ দিন না হয় ৩০ দিনের পিছে ছুটছি। প্রোগ্রামারদের পরিচয় কি তাদের কলেজ বা ভার্সিটি গ্রাজুয়েসনের সিজিপিএ? উত্তরে SUST এর এক ভাইয়া তামিম শাহরিয়ার সুবিন এর C শেখার বই থেকে একটা লাইন তুলে দিচ্ছিঃ

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

আমি নিজেই এখনো দৌড়ানোর বৃত্ত থেকে ঠিক মত বের হতে পারিনি, কিন্তু যে এক/দুই আনা প্রোগ্রামিং শিখেছি সেটা কম্পাইলারে বসে নিজের মত উলটাপালটা লিখতে লিখতে। আমি বিশ্বাস করি ভুল না করে কোনো কিছু শেখা যায় না, আর ভুল যখন করতেই হবে, সে ভুল গুলা যেন এমন জায়গায় হয় যেখানে ভুলের জন্য সম্ভাব্য সবচেয়ে কম মাশুল গুনতে হয়। নিজের বাসার যে কম্পিউটার সবচেয়ে আপন তার থেকে ভাল জায়গা আর কি থাকতে পারে। ভুল করতে করতে কেউ যদি এক হাজারটা ভুল করে ফেলতে পারে, তাহলে সে একদিন মনে সাহস নিয়ে বলতে পারবে “আমি এক হাজারটা ভুল কে শুধরাতে পারি”।শুরুতে সেটাই বা কম কি? এই ভুল খুজতে গিয়ে শিখেছি কিভাবে “Hello world” লেখার পর নিজের মত করে কোডকে কথা বলা শিখাতে হয়। যখন দেখি এক্সিকিওটেড রেজাল্ট, আমি যেটা চাচ্ছি সেটা হচ্ছে না, গুগলে গিয়ে সময় গিয়েছি। আস্তে আস্তে আরো নতুন লাইব্রেরি ওয়ার্ড শিখছি। এদের ব্যবহার শিখছি। বই অথবা ভিডিও টিওটোরিয়াল একটা ল্যাঙ্গুয়েজের পরিচিতি দিতে পারে ঠিকই কিন্তু আসল কাজটা হচ্ছে এরপর কতক্ষণ লেগে থাকা যায় এটার পিছে। একভাবে বলা যায় প্রোগ্রামিং শেখাটা সেকেন্ড বা থার্ড কোনো কথা বলার ভাষা শেখার মত। paragraph  আর essay মুখস্থ(!) করে পাস করার পর কিন্তু আসল শেখার কাজটা হয় প্রাকটিকাল ইমপ্লিমেন্টের সময়।মানে হল যত প্রাকটিস তত ভাল পারফর্মেন্স। এই প্রাকটিসের টাইমলাইন নিয়ে গুগলের ডিরেক্ট অফ রিসার্চ পিটার নরভিগ একটা অসাধারণ আর্টিকেল লিখেছেন, Programming in ten years চাইলে পড়ে ফেলতে পারো।


ভূমিকাটা এই পর্যন্তই থাক। পরে কিছু মনে আসলে আবার লিখবো। আর যারা এই পর্যন্ত পরলেন, দোয়া করবেন এই দেশের জন্য আর পারলে আমার আর আমার টিমমেটদের জন্যও :)


#keepcoding

2 comments: