কেন একজন প্রোগ্রামার হিসেবে আপনার সি শেখা উচিত?(Reuploaded)
21 ডিসেম্বর 2021
সি! পৃথিবীর অন্যতম পুরোনো এবং এখন পর্যন্ত সবচেয়ে শক্তিশালী প্রোগ্রামিং ল্যাঙ্গুয়েজ গুলোর মধ্যে অন্যতম। ১৯৬৯ থেকে ১৯৭৩ এর মধ্যে ডেনিস রিচি এই ল্যাঙ্গুয়েজ টাকে আবিষ্কার করেন। এটাকে বানানো হয় প্রধানত একটি সিস্টেম প্রোগ্রামিং ল্যাঙ্গুয়েজ হিসেবে যা দিয়ে অপারেটিং সিস্টেম ডেভেলপ করা যাবে। এই ল্যাঙ্গুয়েজ এর কিছু ফিচার হলো সরাসরি মেশিনের মেমোরি অ্যাক্সেস করা, সিম্পল কিওয়ার্ড এবং ক্লিন স্টাইল। অপারেটিং সিস্টেম,এম্বেডেড সিস্টেম,গ্রাফিকাল ইউজার ইন্টারফেজ,কম্পাইলার ডিজাইন থেকে অনেক কিছুই করা যায় সি দিয়ে যা আজকালকার অনেক মডার্ণ ল্যাঙ্গুয়েজ দিয়েও করা যায় না।
সি ল্যাঙ্গুয়েজ কি মৃত?
কেন সি শেখা উচিত তার আগে বলে নেই যে এই ল্যাঙ্গুয়েজ টা এখন প্রোগ্রামিং কমিউনিটিতে কেমন চলছে। অনেকে বলে বসেন যে সি একটা মৃত ল্যাঙ্গুয়েজ,এটা অনেক পুরোনো ল্যাঙ্গুয়েজ ,এখন এটা কেউ ইউজ করে না ইত্যাদি। একটা উদাহরণ দেই। আমাদের মা-বাবা কিন্তু আজীবন একই বয়সের থাকবেন না।তাদের আস্তে আস্তে বয়স হবে। তাই বলে কি তাদের গুরুত্ব আমাদের কাছে কমে যাবে? কখনওই না। এমনিভাবে সি ল্যাঙ্গুয়েজ অনেক পুরনো এবং এর যথেষ্ট বয়স হয়েছে। তাই বলে এর গুরুত্ব কিন্তু কমে নি। এখনো বিভিন্ন অপারেটিং সিস্টেম,কম্পাইলার তৈরিতে সি ইউজ করা হয়। উইন্ডোজ,লিনাক্স এর মত জনপ্রিয় সিস্টেম তৈরিতে সি ইউজ করা হয়েছে।ভবিষ্যতে আরো যত অপারেটিং সিস্টেম আসবে তাতেও সি ইউজ করা হবে বলে আমার ধারণা। যদিও সময়ের সাথে সবকিছুই পাল্টায়, তবুও সি ল্যাঙ্গুয়েজ আরো অনেক সময় প্রোগ্রামিং কমিউনিটিতে রাজত্ব করবে।
কেন আপনি সি শিখবেন?
এবার আসি এই পোস্টের মেইন টপিকে । কেন শিখবেন সি? কি এর গুরত্ব। নতুন প্রোগ্রামার হিসেবে সি শেখা কি আবশ্যক? তো চলুন জেনে আসি। ধরুন একজন ব্যক্তি গাড়ী চালানো শিখবে। এখন এই বর্তমান মডার্ন যুগে অটো ড্রাইভিং মোড,অটো গিয়ার চেঞ্জ ইত্যাদি ফিচার সংবলিত গাড়ি পাওয়া যায়। ধরুন সেই ব্যক্তি অটো গিয়ার চেঞ্জের গাড়ীটি কিনলো। এরপর সে সেই অটো গিয়ার চেঞ্জ গাড়িটি দিয়েই ড্রাইভিং শিখলো। এখন তার দরকার একটা ড্রাইভিং লাইসেন্স। সে যখন ড্রাইভিং লাইসেন্সের জন্য পরীক্ষা দিতে যাবে তখন কিন্তু তাকে পরীক্ষা দিতে হবে সাধারণ গাড়ির উপর। সে তখন কোনো অটো গিয়ার চেঞ্জ গাড়ি পাবে না। এক্ষেত্রে তার যদি সাধারণ গাড়ী তথা বেসিক জিনিস গুলো সম্পর্কে জ্ঞান না থাকে তাহলে সে এগুলোর উত্তর দিতে পারবে না। তার শেখাটাও সম্পুর্ণ হবে না। সি শেখারও এরকম বেনিফিট আছে।যদি সেই ব্যক্তিটি সাধারণ গাড়ি চালানো শিখত তাহলে অটো গিয়ারের গাড়ি চালানো তার জন্য আরো সহজ হয়ে যেতো। এমনিভাবে একজন মানুষ যদি সি প্রোগ্রামিং প্রথমে শিখে তাহলে সে মডার্ণ ল্যাঙ্গুয়েজ গুলোও সহজে আয়ত্ব করতে পারবে। একটি অপারেটীং সিস্টেমের বিভিন্ন গঠন যেমন পয়েন্টার,মেমোরি নিয়ে জানা যায় এই সি ল্যাঙ্গুয়েজ এর মাধ্যমে যা অন্য সব মডার্ণ ল্যাঙ্গুয়েজে জানা যায় না।
এবার বিস্তারিত ভাবে বলি যে কেন শিখবেন সি প্রোগ্রামিং-
- সি একটি মিডিল লেভেল ল্যাংগুয়েজ । মিডিল লেভেল ল্যাঙ্গুয়েজ হলো সেই ল্যাঙ্গুয়েজ গুলো যেগুলো লো লেভেল মেশিন বুঝে এবং অ্যাসেম্বলি ল্যাঙ্গুয়েজ এর মত হাই লেভেল ল্যাঙ্গুয়েজের জন্যও ইউজার ফ্রেন্ডলি। একটি মিডিল লেভেল ল্যাংগুয়েজ হওয়াতে সি হাই লেভেল আর লো লেভেল এর শুন্যস্থান গুলো পূরন করে। এটা অপারেটিং সিস্টেম বানানো থেকে শুরু করে অ্যাপ্লিকেশন প্রোগ্রামিং এর কাজেও ব্যবহৃত হয়।এটি মেশিনের খুব কাছের ল্যাঙ্গুয়েজ যার কারণে এই ল্যাঙ্গুয়েজ নিয়ে কাজ করলে মেশিন সম্পর্কিত অনেক কিছুই জানা হয়ে যায়।
- সি ল্যাঙ্গুয়েজ কম্পিউটার সাইন্সের বিভিন্ন মৌলিক বিষয় বুঝতে সাহায্য করে। এই বিষয়গুলো কম্পিউটার নেটওয়ার্ক,কম্পাইলার ডিজাইনিং,কম্পিউটারের গঠন,অপারেটিং সিস্টেম এর সাথে সম্পর্কিত।বিভিন্ন হাই লেভেল ল্যাঙ্গুয়েজ এ মেশিনের তথ্য গুলো ইউজারের কাছ থেকে লুকানো থাকে তাই সিপিইউ ক্যাচ,মেমোরি,নেটওয়ার্ক অ্যাডাপ্টার সম্পর্কে জানার জন্য সি শেখা আবশ্যক।এই ল্যাঙ্গুয়েজে বিভিন্ন ধরণের ডাটা টাইপ আছে কিন্ত কম্পিউটার শুধুমাত্র ইন্টিজার ডাটাই ধারণ করতে পারে। তাহলে বাকী ডাটাগুলো কম্পিউটার কিভাবে স্টোর করে? কি ঘটে একটা ভ্যারিয়েবল ডিক্লেয়ার করলে? কিভাবে এত এত ডাটা স্টোর করা হয়? অন্যান্য ভাষার এগুলো স্কিপ করে যাওয়া যায়, কিন্তু সি তে এগুলো শিখতে হবে।
- সি ল্যাঙ্গুয়েজে অনেক কম লাইব্রেরী আছে। অন্যান্য হাই লেভেল ল্যাঙ্গুয়েজে অনেক লাইব্রেরী আছে কিন্তু সি তে তার পরিমাণ কম। তাই সি শিখলে প্রোগ্রামিং এর কন্সেপ্ট গুলো ক্লিয়ার হয় এবং কিভাবে জিনিসগুলো কাজ করছে তারও ধারনা পাওয়া যায়। যা করতে চাইবেন তা আপনাকে নিজে থেকে করতে হবে। যা আপনার স্কিল ডেভেলপ করতে অনেক সাহায্য করবে।
- সি অনেক তাড়াতাড়ি এক্সিকিউট হয়। সি তে লেখা প্রোগ্রাম গুলো খুব তাড়াতাড়ি এক্সিকিউট ও কম্পাইল হয় অন্য ল্যাঙ্গুয়েজ গুলোর তুলনায়।এর কোণো অতিরিক্ট প্রসেসিং হয় না, যেমন গারবেজ কালেকশন অথবা মেমোরি লিক হওয়া। প্রোগ্রামারদের নিজেদেরই এগুলোর খেয়াল রাখতে হয়।
- এম্বেডেড প্রোগ্রামিং এর কাজেও সি ইউজ করা হয়। এম্বেডেড প্রোগ্রামিং হলো মাইক্রো-কন্ট্রোলার প্রোগ্রামিং। আর সি ব্যবহার করা হয় মাইক্রো কন্ট্রোলার কন্ট্রোল করতে। অর্থাৎ বিভিন্ন অটো-মোটিভস,রোবোটিক্স,হার্ডয়্যার এর কাজেও সি ব্যবহার করা হয় প্রোগ্রামিং এর কাজে।
- পয়েন্টার ও অ্যারে একে অন্যের সাথে সম্পৃক্ত একটি বিষয়। অন্য ল্যাঙ্গুয়েজ গুলোতে অ্যারে কিভাবে কাজ করে তা না বুঝেও আমরা কাজ করতে পারি। কিন্তু এখানে অ্যারে কিভাবে কাজ করে,কিভাবে প্রতিটা অ্যালিমেন্ট মেমোরি অ্যালোকেট করে,কিভাবে আমরা অ্যালোকেটেড মেমোরি থেকে ডাটা তুলে আনতে পারি তা সবই জানতে হয়। যা আমাদের ডাটা স্ট্রাকচার সম্পর্কে একটা ভালো ধারণা তৈরি করে দেয়।
- প্রোগ্রামিং এ স্ট্রিং খুবই গুরুত্বপূর্ণ জিনিস। এটা এত গুরুত্বপূর্ণ যে অন্যান্য বেশিরভাগ ল্যাঙ্গুয়েজে এটা আলাদা একটা ডাটা ট আইপ হিসেবে ধরা হয়। কিন্তু সি ল্যাঙ্গুয়েজে এটা একটা ক্যারেক্টার টাইপের অ্যারে। স্ট্রিং নিয়ে কাজ করা এই ল্যাংগুয়েজে তুলনামূলক কঠিন, তবে এটা আমাদের শিক্ষা কে পূর্ণতা দেয়।
সব ল্যাঙ্গুয়েজই সমান গুরুত্বপূর্ণ, কিন্তু সি একটু বেশি গুরুত্বপূর্ণ। সি থেকে যদি প্রোগ্রামিং এ হাতেখড়ি করা যায় তাহলে অন্য সব ল্যাঙ্গুয়েজ গুলো শেখা আপনার কাছে খুব সহজ মনে হবে। আমি বলছি না যে, আপনি অন্য কোনো ল্যাঙ্গুয়েজ দিয়ে প্রোগ্রামিং শেখা শুরু করতে পারবেন না, আমি বলছি সেটাই যেটা আমাদের ভালোভাবে ভিত্তি গড়তে সাহায্য করবে। আর একটা ভিত্তি যদি ভালো হয় তাহলে বাকি জিনিস সেখা তার জন্য একদম ইজি। তাই হাইলি রেকোমেন্ড থাকবে সি শিখুন। সি না শিখলে আপনি প্রোগ্রামার হতে পারবেন না, জীবনে কিছু করতে পারবেন না,আমি এটা বলছি না। বরং বলছি সি শিখলে আপনার শেখাটা সম্পূর্ণ হবে এবং একটা শক্তিশালী ভিত্তি তৈরি হবে।
সি দিয়ে যদি প্রোগ্রামিং শুরু করতে পারেন, তাহলে খুবই ভালো। আর না পারলে এক না এক সময় আপনি নিজের প্রয়োজনেই সি শিখবেন বলে আমার প্রত্যাশা।
বিঃদ্রঃ আমি এখানে সি এর গুণগাণ করতে এসে অন্য ল্যাঙ্গুয়েজ গুলো কে অপমান করি নি। আমার ফার্স্ট ল্যাঙ্গুয়েজও সি ছিল না। এখন বুঝি যে, যদি হত তাহলে খুবই ভালো হত। আপনার যেটা ভালো লাগে সেটা শিখুন। আর সম্ভব হলে সি শিখুন। :)
কোনো ভুল তথ্য বা ভুল হলে ক্ষমা সুন্দর দৃষ্টিতে দেখবেন এবং অবশ্যাই জানাবেন। তথ্যসূত্রঃ Wikipedia GeeksforGeeks StackKotha