সি প্রোগ্রামিং দিয়েই শুরু হোক প্রোগ্রামিং ক্যারিয়ার

একদম বিগিনিং লেভেল এ যদি আপনি কারোর কাছে প্রোগ্রামিং শিখার জন্য পরামর্শ চান তাহলে হয়ত এই কথাটায় সবচেয়ে বেশী শুনে থাকবেন যে, “ সি প্রোগ্রামিং দিয়েই শুরুটা কর”

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

কারন C হল এমনি এক ল্যাংগুয়েজ , আপনি যদি একবার এই ল্যাংগুয়েজ টা ভাল ভাবে এডাপ্ট করে ফেলতে পারেন এবং C Programming দিয়ে ১-২ বছর শুধু মাত্র প্রব্লেম সল্ভিং ,ডাটা স্ট্রাকচার এলগোরিদম , লজিক ডেভেলোপমেন্ট এগুলোই কন্টিনিউওয়াসলী করতে থাকেন ,তাহলে আপনি নিজের অজান্তেই সফটওয়্যার ডেভেলোপমেন্ট সেক্টরে অন্য একজন ডেভেলোপার যিনি কিনা C ভাল মত না শিখেই বা প্রবলেম সল্ভিং না করেই  এখন PHP/ASP.NET/JAVA SCRIPT এধরনের টেকনোলোজি গুলো দিয়ে সরাসরি ডেভেলোপমেন্ট এর কাজ করতেসে তার চেয়ে আপনি ১০ গুন আগিয়ে গেলেন। কারন আপনি একজন প্রব্লেম সল্ভার , যেখানে আপনি শুধু মাত্র প্রব্লেম সল্ভ করার পিছনেই ২ বছর টাইম দিয়েছেন, তো স্বাভাবিকভাবেই যখন আপনি পরবর্তীতে ডেভেলোপার হিসেবে কোন টিমে কাজ করবেন তখন কোন প্রব্লেম আপনার সামনে আসলে সেটা সল্ভ করা আপনার জন্য এক তুড়ির ব্যাপার। আর তখনই কেবল আপনি ফিল করতে পারবেন আপনার সেই দুই বছরের C এর এখপেরিয়েন্স। আর শুধু কোম্পানী নয় ,গ্লোবালী পুরো এই সেক্টরেই আপনার ডিমান্ড  টা তখন কেমন হতে পারে, সেটা এখন হয়ত আপনি কল্পনা ও করতে পারছেন না।

C কে পৃথীবির সমস্ত মডার্ন ল্যাংগুয়েজ এর Mother Language হিসেবে বিবেচনা করা হয়। গত প্রায় ৩০ বছর ধরে এই ল্যাংগুয়েজ ডোমিনেটেড করে আসছে মার্কেটে । C কে আমরা বলতে পারি মিড লেভেল ল্যাংগুয়েজ। Mid Level Language হওয়ায় সবচেয়ে বড় সুবিধা হল এটি একই সাথে Assembly Language

( যেটা বলতে আমরা বুঝি Machine Understandable Low-Level Language) এবং  High Level Language (যেটা বলতে বুঝায় Closer to human languages or  Programmer Friendly Language )  এর মাঝামাঝি স্তরের একটা ল্যাংগুয়েজ যেটির মাধ্যমে যেমন বিভিন্ন অপারেটিং সিস্টেম যেমন  (ইউনিক্স,উইন্ডোজ, আইওএস, লিন্যাক্স) ডেভেলোপ  করা যায় , ঠিক তেমনি একই সাথে এপ্লিকেশন ডেভেলোপমেন্ট এর কাজ ও করা যায়।

কিছু বড় বড় ওপেন সোর্স প্রোজেক্ট (যেমন- এসকিউলাইট ডাটাবেজ, লিনাক্স কার্নেল, পাইথন ইন্টারপ্রেটার) রয়েছে যেগুলোতে সি প্রোগ্রামিং ব্যবহৃত হয়।

এছাড়াও যখনি আমরা কোন  Embedded system (ইন্ডাস্ট্রিয়াল পারপাসে এ ব্যাবহৃত যযন্ত্রপাতিঃ  হতে পারে সেটি ক্যাল্কুলেটর, মোবাইল, ড্রোন, ক্যামেরা, স্মার্ট ওয়াচ ইত্যাদি) ডেভেলপমেন্ট এর কথা চিন্তা করি তখন Embedded C language  ই হয় প্রোগ্রামার এবং ম্যাকানিক্যাল ইঞ্জিনিয়ার দের ফার্স্ট চয়েজ। কারন Embedded system এ সাধারণত থাকে একটি মাইক্রোপ্রসেসর বোর্ড এবং সুনির্দিষ্ট কাজের জন্য প্রোগ্রামিং সম্বলিত একটি রম থাকে, যেখানে মেমোরী থাকে খুবই কম, প্রসেসিং পাওয়ার ও থাকে খুবই সল্প কিন্তু এই  সিস্টেমের প্রোগ্রামটা আবার এক্সিকিউট করতে হবে খুবই দ্রুত সময়ে। যেমন ছোট্ট একটা উধাহরন দেইঃ HP 50g ক্যালকুলেটর যার প্রসেসর হল  ARM, TI-89 calculator যার প্রসেসর হল Motorola 68000 যাদের প্রসেসিং ক্ষমতা খুবই সল্প, তাসত্তেও বিশাল বিশাল ক্যাল্কুলেশন মাত্র কয়েক মিলি সেকেন্ডের মধ্যে চোখের পলকে সল্ভ করে ফেলে। এইধরনের ক্ষুদ্র ডিভাইস গুলার প্রোগ্রাম গুলোও কিন্তু Embedded C তে লেখা।

কারন  সি তে লেখা কোন কোড কম্পাইল করলে সেটা Raw Binary executable কোডে পরিনত হয়ে ডিরেক্টলী মেমরীতে লোড হয় এবং খুবই দ্রুত সময়ে এক্সিকিউশন শুরু হয় এবং এই এক্সিকিউশন টাইম কিন্তু তুলনামুলক অনেক ফাস্ট অন্যান্য হাই লেভেল ল্যাঙ্গুয়েজ গুলোর তুলনায়, এই ফাস্ট হওয়ার পিছনেও কিছু আবার কিছু কারন রয়েছে যেমন সি তে অন্যান্য প্রোগ্রামিং ল্যাংগুয়েজ (java) এর মত মেমরী লিক চেকিং,গারবেজ কালেকশন ,এক্সসেপশন হ্যান্ডেলিং, রান টাইম চেকিং ইত্যাদি বিল্ট ইন সার্ভিস না থাকার কারনে খুব অল্প মেমরী এবং লো স্টোরেজ স্পেস ই একটা এমবেডেড সিস্টেম স্মুথলী রান করতে পারে। এবং প্রোগ্রামার নিজেই এসব কিছু হান্ডেল করতে পারে নিজের মত করে। এতে করে পারফরমেন্স ও যেমন ফাস্ট হয় তেমনি খরচ ও অনেক কম পরে ,সেই কারণেই Embedded প্রোগ্রামিং এর ক্ষেত্রে এখন পর্যন্ত বিশ্বের স্পবচেয়ে বহুল ব্যাবহৃত ল্যাংগুয়েজ হল C . এই কারণে সি কে আমরা Machine Friendly Micro-Controller Programming  ও বলতে পারি ।

আপনার যদি ফিউচারে WEB Application Development , Mobile Application (Apps & Games) Development, Full Stack (MERN) developer , Artificial Intelligence, Machine Learning এ ধরনের ডীমান্ডেবল সেক্টরে নিজের ক্যারিয়ার বিল্ড আপ করতে চান এবং স্ট্রং পজিশন ধরে রাখতে চান, তাহলে সবার ফাস্টেই আপনার কাজ হবে সি প্রোগ্রামিং শিখে এবং এর মাধ্যমে অনলাইন জ্যাজ গুলোতে (codeforce, hackerrank, codechef, UVA online) প্রবলেম সল্ভিং করার মাধ্যমে নিজের প্রোগ্রামিং বেজ টাকে স্ট্রং করা। কারণ মাল্টিন্যাশনাল কোন সফটওয়ার কোম্পানীতে  কিংবা দেশীয় ভাল কোন কোম্পানীতে আপনি (MERN/DOT NET/ PHP/ Android/iOS)  ডেভেলোপার হিসেবে ভাইভা দিতে গেলে আপনাকে ফার্স্টে কখনই বলবে না যে , একটা প্রোজেক্ট বানায় দেখাও তো এখনই। ফার্স্ট এই আপনাকে কয়েক টা ক্রিটিক্যাল প্রবলেম দিয়ে সল্ভ করতে বলবে , সেটা হতে পারে হাতে কলমে ফিজিক্যালী কিংবা অনলাইনে লাইভে Google Docs এ। এই ধাপে আপনি কেবল উত্তীর্ণ হলেই আপনাকে পোর্টফোলিও বা আপনার প্রজেক্ট গুলো দেখবে।

 আপনি এই প্রবলেম সল্ভ করতে পারলেই মোটামুটি ৯০% নিশ্চিত যে আপনার জব কনফার্ম। কারণ কয়েকদিন চেষ্টা করলেই আপনি  যে কোন প্রোগ্রামিং ল্যাংগুয়েজ শিখে ফেলতে পারবেন। তবে ভাল প্রোগ্রামার হতে গেলে শুধুমাত্র প্রোগ্রামিং ল্যাঙ্গুয়েজে শিখলেই হবে না বরং লজিক ডেভেলপ করে প্রবলেম সল্ভ করাও জানতে হবে।

প্রোগ্রামিং ল্যাঙ্গুয়েজ পারা কিংবা সফটওয়্যার/এপ্লিকেশন ডেল্ভেলোপমেন্ট পারাটাই আসলে তাদের বিবেচ্য বিষয় নয়। প্রবলেম সলভিং স্কিল-ই একজন ভালো সফটওয়্যার ইঞ্জিনিয়ার হওয়ার পূর্বশর্ত।

অনেক সিনিওর ডেভেলোপার ৪-৫ বছর পরেও C তে প্রবলেম সল্ভ করে শুধুমাত্র লজিক ইমপ্লিমেন্টেশনে নিজের ব্রেইন এর লজিক্যাল পার্ট কে আরো বেশী শার্প এবং স্ট্রং করার জন্য। তো  ইনিশিয়াল লেভেলই এ আপনি যদি আপনার প্রোগ্রামিং বেজকে একদম স্ট্রং করে ডেভেলোপমেন্ট সেক্টরে মুভ করেন ,তাহলে পরবর্তীতে আপনাকে আর পিছন ফিরে তাকাতে হবে না।

আপনার প্রবলেম সল্ভিং এক্সপেরিয়েন্স এবং এই স্কীল্ডই আপনাকে এই সেক্টরের একদম সুইচ্চ শিখরে নিজেই নিয়ে যাবে ইন শাহ্ আল্লাহ্।

তো এই সব কথা চিন্তা করেই এই কোর্সের মডিউলকে আমি এমন ভাবে ডিজাইন করেছি যাতে করে আমরা একদম বিগিনিং লেভেল থেকে C Programming শেখার সাথে সাথে এই ল্যাঙ্গুয়েজের মাধ্যমে ছোট ছোট প্রবলেম সল্ভ করার মাধ্যমে আমাদের ব্রেইন এর লজিক কে স্ট্রং করার পাশাপাশি প্রবলেম সল্ভিং মাইন্ড বিল্ড আপ করা।

Related Articles

Responses

Your email address will not be published. Required fields are marked *