Thursday 25 February 2016

প্রোগ্রামিং-প্যাঁচালি ০১

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

প্রোগ্রামিং কী, কিভাবে, কোথায়, কেন - এসব প্রশ্নের উত্তর খোঁজার আগে প্রোগ্রামিংটা আসলে "কখন" - তা  নিয়ে বরং একটু গল্প জমানোর চেষ্টা করা যাক। ভূমিকা শুধুই সময় নষ্ট। সরাসরি কাজে নেমে পড়ছি।

প্রথমে খুব সাধারণ একটা প্রবলেমের কথা ভাবব। ক্লাস নাইনের ফিজিক্স বই-এ সারাক্ষণই দ্যাখা যায় - এরকম একটা প্রবলেম।

  • একটা গাড়ি 15 ms-1 আদিবেগ নিয়ে চলছে। তার ত্বরণ 10 ms-2 । গাড়িটি 20 সেকেন্ডে কতটুকু দূরত্ব অতিক্রম করবে? 

এই প্রশ্ন হাতে আসলে প্রথমেই যেটা হবে, সেটা হল, খুশিতে সব দাঁত বেরিয়ে পড়বে। পরিষ্কার দ্যাখা যাচ্ছে প্রশ্নের মধ্যেঃ u = 15, a = 10, t = 20. বের করতে হবে s এর মান। এ আর এমন কী কঠিন?  s = ut + 1/2 at সূত্রে মানগুলো বসিয়ে দিলেই তো হয়ে গেল, তাইনা?

নিশ্চয়ই তাই! এবার প্রবলেমটাকে একটু বদলে দেওয়াযাকঃ


  • একটা গাড়ি 15 ms-1 আদিবেগ নিয়ে চলছে। তার ত্বরণ 10 ms-2 । 20s থেকে 40s এর মধ্যে প্রতি সেকেন্ড পর পর গাড়িটির অবস্থান নির্ণয় কর। 




এরকম প্রবলেম দেখলে হাসি মিলিয়ে যাবেনা নিশ্চিত, কিন্তু খানিকটা বিরক্তিও লাগবে। কারন আমাদেরকে এখন t = 20s, t = 21s, t = 22s, t = 23s, t = 24s, ... ... t = 38s, t = 39s, এবং t = 40s -প্রত্যেক মুহুর্তের জন্যই s এর মান ক্যালকুলেট করতে হবে।

প্রবলেমটাকে আরেকটু বিরক্তিকর করা যাকঃ
  • বিশটি গাড়ির রেস শুরু হয়েছে। ঠিক বিকাল তিনটায় গাড়ি গুলোর বেগ (u) যথাক্রমেঃ 65, 59, 44, 80, 74, 82, 43, 66, 50, 55, 79, 51, 66, 53, 84, 82, 47, 85, 77 এবং 76 ms-1 , এবং ত্বরণ (a) যথাক্রমেঃ 17, 20, 11, 16, 17, 13, 18, 10, 20, 19, 10, 10, 13, 12, 12, 20, 14, 15, 17 এবং 17 ms-2 , ঘড়িতে তিনটা বেজে বিশ সেকেন্ড থেকে তিনটা বেজে চল্লিশ সেকেন্ডের মধ্যে - এই প্রতি সেকেন্ড পর পর গাড়ি গুলির অবস্থান নির্নয় কর।

এবার আর মুখে হাসি থাকবেনা। মেজাজ বিগড়ে যাবে। কারন এবার  t = 20s ধরে তার জন্য বিশটি গাড়ির প্রত্যেকের আলাদা আলাদা u এবং a নিয়ে বিশবার সূত্র থেকে s ক্যালকুলেট করতে হবে। তারপর t = 21s ধরে আবারও বিশবার একই জিনিস ক্যালকুলেট করতে হবে। তারপর আবার t = 22s ধরে...

 ... এরকম চলতেই থাকবে! একই ক্যালকুলেশন বার বার! প্রচন্ড বিরক্তিকর। কিন্তু এত জিনিস পত্র কি হাতে বা ক্যালকুলেটর চেপে করা চারটিখানি কথা? সম্ভব তো অবশ্যই, কিন্তু এই সময় খরচ করার কোন মানে হয়? কোনই মানে হয়না! কিন্তু উত্তর গুলোও তো দরকার। কাওকে না কাওকে তো ক্যালকুলেট করতে হবে। কে করবে? 

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

গাড়ির ছোটাছুটির প্রবলেমটা আমরা খুব সাধারন একটা প্রোগ্রাম লিখেই সমাধান করে ফেলতে পারি। এমন একটা প্রোগ্রাম, যেটা ইনপুট হিসেবে u, t আর a এর মান নেবে, এবং s = ut + 1/2 at2 সূত্রটাকে কাজে লাগিয়ে আউটপুট হিসেবে s এর মান বের করে দেবে।

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


সময় t = সেকেন্ড,
আদিবেগ u = ms-1
ত্বরণ a = ms-2

 

অতিক্রান্ত দূরত্ব = ?


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





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

এখন প্রশ্ন হল, আমি প্রোগ্রামটা লিখলাম কোথায়? কী ভাষাতেই বা লিখলাম? কী কী নিয়মনীতি মেনে লিখলাম?

লম্বা যাত্রার প্রারম্ভটা হতে হয় ধীর লয়ে। প্রথম দিনের লেখায় প্রশ্ন গুলো রহস্যই থাকুক। সামনে অনেকদূর পথ হাঁটতে হবে।

"The woods are lovely, dark and deep,
But I have promises to keep,
And, miles to go before I sleep,
And, miles to go before I sleep."

শুভ কামনা।
: -)





No comments:

Post a Comment