প্রোগ্রামিং শেখা

মাঝে মাঝে এমন প্রশ্ন পাই,

  • ‘প্রোগ্রামিংয়ের A টু Z শিখতে চাই, কোন বইটা কিনব?’।
  • ‘সি শিখে কী লাভ? ডেস্কটপ অ্যাপ্লিকেশন বানাতে পারছি না।’
  • ‘লুপ শেষ করে অ্যারে শুরু করে দিলাম, কিন্তু গেম কীভাবে বানাবো, এখনও তো গেমের কোনো কথাই পড়লাম না।’

এমন আরো অনেক প্রশ্ন। যেগুলোর উত্তর আমি সাধারণত দেই না, কারণ এরকম প্রশ্ন যারা করে, তাদেরকে দুই-এক কথায় কোনো কিছু বোঝানো খুবই ঝামেলার ব্যাপার। তাই প্রোগ্রামিং শিক্ষা বিষয়ক আমার মতামত সংক্ষিপ্ত আকারে লিখে দিচ্ছি।

প্রোগ্রামিং শিক্ষা একটা চলমান কার্যক্রম (continuous process)। একজন প্রোগ্রামারের কতটুকু শেখা উচিত, এই প্রশ্নের কোনো উত্তর নেই। তেমনি সব শিখে তারপরে প্রোগ্রাম বা সফটওয়্যার তৈরি শুরু করবো, এরকম ভাবাটা অযৌক্তিক। প্রোগ্রামিংয়ের A-Z শেখার জন্য কোন বইটা পড়ব? এই প্রশ্নেরও উত্তর নাই একই কারণে। ভাষা শেখার ব্যাপারটাই খেয়াল করো। আমরা যেমন প্রথমে বর্ণ শেখা শুরু করি। তারপরে ওই বর্ণগুলো দিয়ে ছোট ছোট শব্দ। তারপরে আরেকটু বড় শব্দ। বানান ভুল করি, আবার ভুল থেকে শিখি। তারপরে ছোট ছোট বাক্য তৈরি করতে শিখি। সেখানেও ভুল হয়। ভুল করতে করতে একসময় আমরা ঠিকঠাক বাক্য তৈরি করা শিখি। তারপরে প্যারাগ্রাফ লিখতে শিখি। একসময় বড় বড় রচনাও লিখে ফেলি। তারপরে একসময় হয়ত সেই ভাষায় বই লিখে ফেলতেও সমস্যা হয় না।

তেমনি প্রথমে একটা প্রোগ্রামিং ভাষা কিছুদূর শেখার পরে তুমি যদি লিনাক্সের মতো একটা অপারেটিং সিস্টেম, বা ফেসবুকের মতো ওয়েব অ্যাপ্লিকেশন তৈরির কাজ শুরু করতে চাও, তাহলে হবে না। তুমি ভার্সিটিতে যদি কম্পিউটার সায়েন্স পড়, তখন প্রথমে একটু সি শিখলে, সেগুলো দিয়ে বিভিন্ন প্রবলেম সলভ করলে, তারপরে আরেকটু শিখলে, আরো কিছু প্রবলেম সলভ করলে। এভাবে সি ল্যাঙ্গুয়েজের দরকারি জিনিসগুলো শেখার সাথে সাথে প্রোগ্রামিংয়ের লজিক তোমার মাথায় ঢুকে গেলো। এসময় যদি তুমি সি দিয়ে গেম বানাতে চাও, তাহলে হবে না। তারপরে তুমি ডিসক্রিট ম্যাথ শিখলে, ডাটা স্ট্রাকচার শিখলে।  এখন তুমি আগের চেয়ে বড় বড় প্রোগ্রাম লিখতে পারো। প্রোগ্রামগুলোর কোডও আগের চেয়ে ইফিশিয়েন্ট হয়। তারপরে তুমি জাভা (অথবা সি শার্প) শিখলে। সেখানে ল্যাঙ্গুয়েজ শেখার সাথে সাথে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিংয়ের ধারণাটা পাকাপোক্ত করে নিলে। এবারে হয়ত তুমি সুন্দর একটা ডেস্কটপ অ্যাপ্লিকেশন তৈরি করে ফেললে। যেটা হয়ত তুমি সি শেখার সময়ই তৈরি করতে চাইতে… এভাবে সময়ের সাথে সাথে প্রোগ্রামিং করতে করতেই প্রোগ্রামিং শেখা হয়, সেটা কখনও থামানো যায় না। আমার নিজের কথাই বলি। আমি ২০০১ সালে প্রোগ্রামিং শেখা শুরু করি সি ল্যাঙ্গুয়েজ দিয়ে (স্ট্রাকচার্ড প্রোগ্রামিং)। এখন আমি ফাংশনাল প্রোগ্রামিং শিখছি, স্কালা (scala) ল্যাঙ্গুয়েজ শেখার সাথে সাথে (গত সপ্তাহ থেকে শুরু করেছি)। আবার পাইথন শেখার শুরু ২০০৭ সালের শেষ দিকে। কিন্তু আজকেও পাইথনের একটা বইয়ের একটা চ্যাপ্টার পড়ছিলাম, নতুন কিছু শেখার জন্য। এর মধ্যে গত কয়েক বছরে কিন্তু হাজার হাজার লাইন পাইথন কোড লিখে ফেলেছি। আবার আমি যদি বসে থাকতাম যে পাইথন পুরোপুরি শিখে তারপরে পাইথন দিয়ে কাজ করবো, তাহলে হয়ত কখনওই সেটা করা হতো না। এই পোস্টের মূল বক্তব্য আশা করি তোমরা বুঝতে পেরেছ।

Facebook Comments