দুই রকেট বিজ্ঞানী আর Git এর গল্প - পর্ব ০

June 22, 2016

অদিতি ও রায়হান - বাংলাদেশ ন্যাশনাল স্পেস এজেন্সি (বিএনএসএ) এর দুইজন হাই-প্রোফাইল বিজ্ঞানী। বাংলাদেশের নিজস্ব স্যাটেলাইট সিস্টেমের যাবতীয় চিন্তাভাবনা, প্ল্যানিং ও প্রোগ্রামিং - এ জড়িত ছিলেন এই দুইজন প্রখর মেধাবী। রকেটে করে বাংলাদেশের প্রথম স্যাটেলাইট উৎক্ষেপণের ঠিক আগের দিন; সবকিছু চেক করা হয়েছে - সকল প্রোগ্রাম ঠিকমত কাজ করছে। উড্ডয়নের জন্য রেডি! কিন্তু, ওইদিন দুপুরে রায়হান একটু নড়েচড়ে বসে অদিতিকে বলল, “আচ্ছা, আমার মনে হয় পৃথিবীর সাথে সময় বজার রাখার অ্যালগোরিদমটা আরেকটু ইফিশিয়েন্ট করা যায়।”

গেম অফ থ্রোন্সের পাগলা ফ্যান অদিতি তখন নভেলটা পড়ছিল; আনমনে বলল, “হ্যাঁ”। রায়হান সঙ্গে সঙ্গে কাজে লেগে গেল, হোয়াইট বোর্ডে ব্ল্যাক মার্কার দিয়ে বিশাল বিশাল সমীকরণ লিখে অ্যালগোরিদম ইফিশিয়েন্ট করার চেষ্টায় লেগে গেল। রায়হানের হাতের লেখায় একটু ঝামেলা থাকায় ও 1 কে 7 মনে করে গোটা সমীকরণ সমাধান করে ফেলল - আর ওই অনুযায়ী প্রোগ্রাম লিখল; সেভ করে বলল, “করে ফেলেছি! এইবার প্রোগ্রামটার ১০ কিলোবাইট মেমরি কম খাওয়ার কথা।” পেছনে ফিরে রায়হান দেখল অদিতি নেই, গোটা রুম ফাঁকা।

রায়হানের “অপটিমাইজেশন”

অদিতি লাঞ্চ করে ফিরে এসে ওর কম্পিউটারে বসল, ওর আর মাথায় নেই রায়হান টাইমের ব্যাপারে কিছু বলেছিল ওকে। অদিতি সবসময়ই খুঁঁতখুঁতে, লঞ্চ যেহেতু আর মাত্র ৮ ঘন্টা পরেই, তাই ও এমনিতেই টেস্টিং করতে বসল। যখনই প্রোগ্রামে ইনপুট দিল, 12:00 AM সঙ্গে সঙ্গে গোটা প্রোগ্রাম ক্র্যাশ করল

“হায় হায়! রায়হান টাইমিং সিস্টেম ক্র্যাশ করছে কেন!”

“ইয়ে মানে ওইটা তো ঠিকই ছিল মনে হয়, আমি তো ইফিশিয়েন্ট মানে… ক্যামনে কি…”

অদিতি মাথায় হাত দিয়ে বসে পড়ল; তখনই অদিতির মনে পড়ল, ওরা তো শুরুর থেকেই Git ভার্সন কন্ট্রোল ব্যবহার করে গোটা প্রজেক্ট বানিয়েছে! Git সফটওয়্যারটা অনেকটা টাইম মেশিনের মত, এইটা কোডের প্রতি লাইন পরিবর্তনের হিসাব নিকাশ রাখতে পারে। ও দৌড়ে গিয়ে কমান্ড দিল git log

রায়হানের নাম চকচকে অক্ষরে ভেসে উঠল স্ক্রিনে।

“আমি যখন খেতে গিয়েছিলাম, তখন কি করেছ তুমি রায়হান?”

“ওই যে, বললাম না তখন, টাইমারের মেমরি ১০ কিলোবাইট কমিয়েছি!”

“রায়হান! তুই ভার্সিটির ফিশন রিঅ্যাক্টরটাকে প্রায় মেল্টডাউনে নিয়ে গিয়েছিলি, এখন বিএনএসএতেও…”

“আসলে, তারিফ ভাইয়ের এসিএম ক্লাসের ট্রমা…

“আর বলতে হবে না। উনার ক্লাস আমিও করেছি।”

গিট তো টাইম মেশিনের মত, অদিতি রায়হানের commit এর আগের commit এর id টা কপি করল, করে কমান্ড দিল,

git checkout c870c8c33e2dbc704206c31e335a783c5552786b

সঙ্গে সঙ্গে রায়হানের করা কোডের পরিবর্তনটা undo হয়ে গেল, আর বাংলাদেশের প্রথম স্যাটেলাইটের উড্ডয়নে আর কোন বাঁঁধা থাকল না! অদিতি স্বস্তির নিঃশ্বাস ফেলল; Git ব্যবহার না করলে আজ কি হত, সেটা ভাবতেই শিউরে উঠল। অদিতি বা রায়হান, কেউই সেদিন রাতে বাসায় গেল না। কয়েক বছরের পরিশ্রমের ফলাফল পাওয়ার আশায় উদ্গ্রীব থাকাটাই স্বাভাবিক।

ইতিকথা

স্যাটেলাইট কক্ষপথে রাখার প্রোগ্রাম হোক কিংবা হোক ইউনিভার্সিটির ক্যাপস্টোন প্রজেক্ট - কোডের ট্র্যাক রাখার জন্য ভার্সন কন্ট্রোল সিস্টেমের ব্যবহার বাঞ্ছনীয়। অদিতি-রায়হানের মত এমন পরিস্থিতির শিকার বিশ্বের প্রতিটা প্রোগ্রামিং প্রজেক্টের টিমের হতে হয়েছে। এই পরিস্থিতি সামাল দিতে পারার জন্য আমরা এই সিরিজে শিখব Git এর সাহায্যে ভার্সন কন্ট্রোল।

আগামী পর্বগুলো পেতে চোখ রাখুন আমার ফেসবুক পেইজে

comments powered by Disqus