যারা কম্পিউটার প্রোগ্রামিং শিখছেন তাদের জন্য কিছু কথা ...

প্রোগ্রামিং এর জগতে আপনাকে একটু ডেডিকেটেড হতে হবে। অর্থাৎ প্রোগ্রামিংটাকে কোন আম-জাম-কলা-কাঁঠাল ভাববেন না। 

এই কথাটা বলার একটা বিশেষ কারণ আছে। অনেকেই এমন করে প্রোগ্রামিং শিখতে চান যে নিজের এই ৫-৬ বছরের কষ্ট করে শিখতে থাকার বিষয়টা যেনো অনেক হালকা মনে হয়। যাই হোক, প্রোগ্রামিং শিখতে হলে আপনাকে অনেক বেশি ডেডিকেটেড হতে হবে। প্র্যাকটিস থামানোই যাবে না।

অনেকেই প্রোগ্রাম করার জন্য প্রবলেম খুঁজে পান না। আসলে প্রবলেমের কোন শেষই নাই। এত প্রবলেম যে ২৪ ঘন্টা প্রোগ্রামিং করেও শেষ করতে পারবেন না। তো যাই হোক, অনলাইনে অনেক সাইট আছে যেগুলোতে আপনি বিভিন্ন লেভেলের প্রবলেম পাবেন। আগ্রহ সহকারে সেগুলো সলভ করুন। যখন দেখবেন যে একটা প্রবলেম যতক্ষণ সলভ না করতে পারছেন ততক্ষণ শান্তি পাচ্ছেন না, খেতে বসলে, হাঁটতে চলতে সবসময় মনের মধ্যে খুঁতখুঁত করছে যে "প্রবলেমটা তো ... ক্যামনে কী..."... তখন বুঝবেন আপনি প্রোগ্রামিং প্র্যাকটিসের লাইনে পুরাই ঢুকে গেছেন।

ওকে, যারা অলরেডী ডেডীকেটেড হয়ে প্রোগ্রামিং নিয়ে কাজ করছেন এবার তাদের জন্য কিছু কথা।

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

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

যাই হো্ক, ফাংশন নিয়ে সব সময় কাজ করবেন।

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

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

যেমন ধরুন, একটি সংখ্যা (যেমন ১৩) প্রাইম কিনা তা যাচাই করার একটি প্রোগ্রাম আপনি কিভাবে করবেন। নিশ্চয় ২ থেকে ১২ পর্যন্ত সব সংখ্যা দিয়ে ১৩ কে ভাগ করে দেখবেন যে কোন একটি সংখ্যা দিয়ে ১৩ পূর্ণ সংখ্যায় নিঃশেষে ভাগ যায় কিনা, যদি যায় তাহলে এটা প্রাইম না, আর কোনটা দিয়েই যদি না যায় তাহলে ১৩ প্রাইম।

এটা ঠিক আছে কিন্তু আপনি মোট ১৩-২=১১ টা ভাগ করছেন। কোটির ঘরের সংখ্যা হলে কতগুলো ভাগ আপনাকে করতে হবে চিন্তা করুন তো !!!

তাহলে কি করা যেতে পারে? ওকে, লক্ষ্য করুন, কোন নাম্বারকেই তার অর্ধেকের চেয়ে বড় নাম্বার দিয়ে পূর্ণ সংখ্যায় নিঃশেষে ভাগ করা যায় না। অর্থাৎ, ১৩ এর অর্ধেক ৬.৫=>৭, আপনি ১৩ কে ৭ এর চেয়ে বড় আর কোন সংখ্যা দিয়েই ১৩ কে পূর্ণ সংখ্যায় ভাগ দিতে পারবেন না। এ ব্যাপারে আপনি নিশ্চিত থাকুন।

তাহলে আমাদের ভাগের সংখ্যা কমে আসলো। অর্থাৎ ১৩ প্রাইম কিনা তা জানার জন্য আমরা এখন ১৩ কে ২,৩,৪,৫,৬,৭ এই সংখ্যা গুলো দিয়েই শুধু ভাগ দিবো।

এবার এটাও জেনে রাখুন, কোন সংখ্যাকে তার বর্গমূলের চেয়ে বড় কোন সংখ্যা দিয়েও পূর্ণ সংখ্যায় নিঃশেষে ভাগ করা যায় না। ১৩ এর বর্গমূল হচ্ছে ৩.৬০৫৫৫ => ৪. অর্থাৎ ১৩ প্রাইম কিনা তা জানার জন্য আমরা এখন ১৩ কে ২,৩,৪ এই ৩ টি সংখ্যা দিয়ে ভাগ করে বলে দিতে পারি।

এতগুলো কথা এই জন্য বললাম কারণ যখন প্রথম আমাকে এই প্রবলেমটা করতে দেওয়া হয়েছিলো তখন নিজের মাথা খাটিয়ে আমি এ পর্যন্ত এসেছিলাম যে কোন সংখ্যাকে তার অর্ধেকের বড় সংখ্যা দিয়ে ভাগ করার দরকার নাই। কিন্তু একটা প্রোগ্রামিং সাইটে যখন একটা ১২ ডিজিটের সংখ্যা দেওয়া হলো তখন এই মেথডেও হয় নাই। তখন খোঁজাখুঁজি করে এই উপায়টা পেয়েছিলাম যে কোন সংখ্যাকে তার বর্গমূলের বড় সংখ্যা দিয়ে ভাগ দেবার দরকার নাই প্রাইম কিনা তা জানার জন্য।


যাই হোক, আজ এ পর্যন্তই, যারা এই কথাগুলোর জন্য উপযুক্ত কথা গুলো তাদের জন্যই। আমি জানি অনেক ভালো এবং উঁচু মাণের প্রোগ্রামার আছেন, আমি তাদের মতো নই। শুধু যারা আমাদের এই পথে পথচলা শুরু করেছেন তাদের জন্যই লেখা।

Author: Tanmay Chakrabarty

Tanmay Chakrabarty is a former CSE student, currently working as a Senior Software Engineer with 5+ years of experience in the field of Web Application development in PHP+MySQL platform with strong skills in Javascript, JQuery, JQuery UI and CSS. He tries to write notes every week but fails due to heavy loads of duty.

Recommended Recommends

Comments

Contact Us