Home / Bangla (বাংলা) / সি-প্রোগ্রামিং (পর্ব ০১) – প্রাথমিক ধারনা

সি-প্রোগ্রামিং (পর্ব ০১) – প্রাথমিক ধারনা

সি সাধারণ উদ্দেশ্যে(general-purpose) ব্যবহৃত একটি শক্তিশালী(powerfull) প্রোগ্রামিং ভাষা যা দ্রুততর(faster), বহনযোগ্য(portable) এবং সব ধরণের প্লাটফর্মেই উপযোগী।

আপনি যদি প্রোগ্রামিং এ নতুন হোন, তাহলে সি দিয়ে প্রোগ্রামিং এ যাত্রা শুরু হবে আপনার জন্য দারুণ এক পছন্দের বিষয়।

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

সি প্রোগ্রামিং কি?

সি প্রোগ্রামিং শেখা শুরু করার পূর্বে চলুন সি প্রোগ্রামিং ভাষাটির সঙ্গে পরিচিত হয়ে নিই।

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

সি একটি অত্যন্ত কার্যকরী(highly efficient) প্রোগ্রামিং ভাষা । প্রায় ৪৪ বছরেরও বেশি সময় ধরে জনপ্রিয় থাকার এটাই হয়ত মূল কারণ।

স্টান্ডার্ড সি প্রোগ্রাম বহনযোগ্য(portable)। একটি সিস্টেমের জন্য লিখিত কোড কোনো ধরণের পরিবর্তন ছাড়াই অন্য অপারেটিং সিস্টেমে কাজ করে।

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

সি প্রোগ্রামিং এর ইতিহাস

ইউনিক্স অপারেটিং সিস্টেমের সাথে সি প্রোগ্রামিং অত্যন্ত সম্পর্কযুক্ত।

ইউনিক্স সিস্টেম ডেভেলপমেন্ট

ইউনিক্স সিস্টেমের ভার্সন-PDP-11 এসেম্বলি ল্যাঙ্গুয়েজ দিয়ে লেখা। এসেম্বলি ল্যাঙ্গুয়েজ হলো লো-লেভেল(low-level) প্রোগ্রামিং ল্যাঙ্গুয়েজ। যা শুধু নির্দিষ্ট কোনো প্লাটফর্মের জন্য লেখা হয়। ইহা লেখা এবং বুঝাও অনেক কঠিন।

ইউনিক্স অপারেটিং সিস্টেমের ডেভেলপার ডেনিশ রিচি এবং স্টেফেন সি. জনশন সিস্টেমকে পূনরায় বি ল্যাঙ্গুয়েজে লেখার সিদ্ধান্ত নিলেন। যাইহোক, PDP-11 এর কিছু বৈশিষ্ট্য বি এর জন্য পর্যাপ্ত ছিলনা, যা তাদেরকে সি ল্যাঙ্গুয়েজ ডেভেলপমেন্টের জন্য পরিচালিত করেছিল।

১৯৭২ সালে ইউনিক্স সিস্টেম PDP-11-এ সি এর ডেভেলপমেন্ট শুরু হয়। তখন উনিক্স এর বিশাল অংশ পূনরায় সি দিয়ে লেখা হয়েছিল। ১৯৭৩ সালে ইউনিক্স কার্নেলে সি যথেষ্ট শক্তিশালি ভাষা হিসাবে ব্যবহৃত হয়েছিল। ডেনিশ রিচি এবং স্টেফেন সি. জনশন ভাষাটিকে ইউনিক্স অপারেটিং সিস্টেমে বহনযোগ্য করে তোলার জন্য কয়েক বছর ধরে ইহাতে আরোও কিছু পরিবর্তন এনেছিলেন।

সি প্রোগ্রামিং এর প্রথম বই

১৯৭৮ সালে সি প্রোগ্রামিং এর প্রথম বই “The C Programming Language” প্রকাশিত হয়েছিল। বইটির প্রথম সংস্করণ প্রোগ্রামারদের কাছে অনেক বছর যাবৎ ভাষাটির সাধারণ বর্ণনা সর্বরাহ করেছিল। ব্রায়ান কার্নিংহাম এবং ডেনিশ রিচি কর্তৃক লেখা এই বইটি “K&R” নামে অনেক জনপ্রিয়।

আনসি(ANSI) সি

সি ল্যাঙ্গুয়েজ কয়েক বছরের মধ্যেই দ্রুত বৃদ্ধি পাওয়ায় ভাষাটির জন্য কিছু নিয়ম(standard) ঠিক করে দেওয়ার প্রয়োজন হয়েছিল।

C89: ১৯৮৯ সালে আমেরিকান ন্যাশন্যাল স্টান্ডার্ড ইন্সটিটিউট(ANSI) কর্তৃক সি এর প্রথম স্টান্ডার্ড প্রকাশিত হয়েছিল। সি এর এই ভার্সনটি প্রোগ্রামারদের কাছে C89 নামে জনপ্রিয় ছিল।

C99:   ১৯৯৯ সালে সি স্টান্ডার্ডে আরো নতুন কিছু বৈশিষ্ট্য যেমন- নতুন ইনলাইন ফাংশন, নতুন ডাটাটাইপ ইত্যাদি সংযুক্ত করা হয়েছিল। ইহা প্রোগ্রামারদের কাছে C99 নামে পরিচিত ছিল।

C11: C11 এ নতুন কিছু বৈশিষ্ট্য যেমন- টাইপ জেনেরিক ম্যাক্রো,অটোমিক অপারেশন এবং এনোনিমাস স্ট্রাকচার যোগ করা হয়েছে যেগুলো C99 এ ছিল না।

এই সবগুলো স্টান্ডার্ড আনসি সি নামেও পরিচিত।

“স্টান্ডার্ড সি প্রোগ্রাম বহযোগ্য”. ইহার অর্থ হচ্ছে, আনসি সি অনুসরণ করে লেখা প্রোগ্রাম অপারেটিং সিস্টেম গুলোর মধ্যে স্থানান্তরযোগ্য।

আপনি যদি সি প্রোগ্রামিং এ নতুন হয়ে থাকেন তাহলে আমদের পরামর্শ হলো আনসি সি অনুসরণ করে প্রোগ্রামিং লেখার যা সকল ক্ষেত্রেই গ্রহণযোগ্য। ইহা আপনাকে ভাষাটি লেখার উদ্দ্যেশ্য বুঝতে সহায়তা করবে।

সি প্রোগ্রামিং ল্যাঙ্গুয়েজের বৈশিষ্ট্যসমুহ

একটি প্রোসিডিউরাল ল্যাঙ্গুয়েজ

সি এর মত প্রোসিডিউরাল(procedural) ল্যাঙ্গুয়েজে পূর্বনির্ধারিত কিছু ইন্সট্রাকশন ধাপে ধাপে সম্পন্ন হয়। একটি কাজ সম্পন্ন করার জন্য একটি আদর্শ সি প্রোগ্রামে এক বা একের অধিক প্রোসিডিউর বা ফাংশন থাকতে পারে। আপনি যদি প্রোগ্রামিং এ নতুন হয়ে থাকেন, তাহলে আপনি ভাবতে পারেন যে, এটাই একমাত্র পদ্ধতি যে পদ্ধতিতে সকল প্রোগ্রামিং ল্যাঙ্গুয়েজ কাজ করে।

যাইহোক, এছাড়া প্রোগ্রামিং এর অন্যান্য কৌশলও(paradigm) রয়েছে। এদের মধ্যে সচারচর ব্যবহৃত একটি কৌশল হলো অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং(OOP) যা কোনো কার্য সম্পাদনের জন্য ডেভেলপারদেরকে অবজেক্ট তৈরিতে অনুমতি দেয়।

সি প্রোগ্রাম দ্রুততর

সি এর তুলনায় নতুন ল্যাঙ্গুয়েজ জাভা এবং পাইথন অনেক ধরণের বৈশিষ্ট্য যেমন- গার্বেজ কালেকশন(garbage collection) এবং ডাইনামিক টাইপিং(dynamic typing) অফার করে। ইহা প্রোগ্রামারদের জন্য প্রোগ্রাম লেখাও সহজ করে দেয়। যাইহোক, অতিরিক্ত প্রোসেসিং এর কারণে সি এর তুলনায় এদের পারফর্মেন্স কম।

সি ল্যাঙ্গুয়েজ প্রোগ্রামারদেরকে বিশ্বাস করে এবং সরাসরি কম্পিউটার হার্ডওয়ারের মাধ্যমে প্রোগ্রাম সম্পাদনে সম্মতি দেয়। কিন্তু অধিকাংশ হাই-লেভেল প্রোগ্রামিং ল্যাঙ্গুয়েজের ক্ষেত্রে ইহা সম্ভব নয়। সি প্রোগ্রামিং শেখা শুরু করার ইহা অন্যতম কারণ।

স্টান্ডার্ড সি প্রোগ্রাম বহনযোগ্য

“একবার লিখে সকল প্লাটফর্মে কম্পাইল করা যায়”। আনসি স্টান্ডার্ডে ভালভাবে লেখা সি প্রোগ্রাম বহনযোগ্য(portable), এই কথার অর্থ হলো, এক সিস্টেম(যেমন- উইন্ডোজ)-এর জন্য লেখা প্রোগ্রাম কোনো ধরণের পরিবর্তন ছাড়াই অন্য প্লাটফর্ম(যেমন- লিন্যাক্স)-এ কম্পাইল করা যায়।

মডিউলার(Modular)-এর ব্যবহার

আপনি সি প্রোগ্রামকে ভিন্ন ভিন্ন সেকশন বা ফাংশনে ভাগ করে লাইব্রেরীর মধ্যে রাখতে পারেন। প্রোগ্রামিং এর এই ধারনা মডিউলারিটি(modularity) নামে পরিচিত।

সি নিজে নিজে খুবই ছোট্ট একটি ভাষা। কিন্তু সি এর আসল শক্তি হলো এর বিশাল লাইব্রেরী আছে। সি এর কিছু স্টান্ডার্ড লাইব্রেরী আছে যা দিয়ে সাধারণ সমস্যাসমূহ সমাধান করা যায়। ধরুন, আপনি স্ক্রিনে কিছু প্রদর্শন করাতে চাচ্ছেন, তাহলে আপনি আপনার প্রোগ্রামে “stdio.h” লাইব্রেরী সংযোগ করতে পারেন যা আপনাকে স্ক্রিনে কিছু প্রদর্শনের জন্য printf() ফাংশন ব্যবহারের অনুমতি দেয়।

স্টাটিক্যালি টাইপ ল্যাঙ্গুয়েজ

সি একটি স্টাটিক্যালি টাইপ ল্যাঙ্গুয়েজ(statically typed language)। এর অর্থ হলো, ভ্যারিয়েবলের টাইপ রান টাইমে নয় বরং কম্পাইল টাইমে চেক হয়। ইহা সফটওয়্যার ডেভেলপমেন্ট সাইকেলের সময় error খুঁজতে সহায়তা করে। এছাড়া ডাইনামিক্যালি টাইপ ল্যাঙ্গুয়েজের তুলনায় স্টাটিক্যালি টাইপ ল্যাঙ্গুয়েজ সাধারণত দ্রুততর হয়।

সাধারণ উদ্দেশ্যে(General purpose)

পূর্ববর্তী বিষয়সমূহ ছাড়াও বিভিন্ন ধরণের এপ্লিকেশন যেমন- সিস্টেম সফটওয়্যার থেকে শুরু করে ফটো এডিটিং সফটওয়ারেও সি ল্যাঙ্গুয়েজ ব্যবহৃত হয়। সি ল্যাঙ্গুয়েজ ব্যবহৃত কিছু এপ্লিকেশন নিম্নে তুলে ধরা হলোঃ

  • এমবেডেড সিস্টেম(Embedded System)
  • অপারেটিং সিস্টেম – উইন্ডোজ, লিন্যাক্স, ওএস এক্স, এন্ড্রোয়েড, আইওএস
  • ডাটাবেজ – মাইএসকিউএল, অরাকল, এমএস এসকিউএল সার্ভার, পোস্টগ্রিএসকিউউএল
  • অন্যান্য ব্যবহার -নেটওয়ার্ক ড্রাইভার, কম্পাইলার, প্রিন্ট স্পুলার

কেন সি প্রোগ্রামিং শিখবেন?

যদি শুধুমাত্র হ্যাঁ অথবা না দ্বারা এই প্রশ্নের উত্তর দেওয়া সম্ভব হত! দুর্ভাগ্যবশত, এই প্রশ্নের উত্তর দেওয়া খুব সহজ নয় কারণ ইহা ব্যক্তি থেকে ব্যক্তিতে ভিন্ন হয়।

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

সি শেখার মাধ্যমে আপনি কি অর্জন করবেন?

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

(*s++ = *p++);

স্ট্রিং কপি করে, তাহলে আপনি অন্ধবিশ্বাসে প্রোগ্রামিং করেন।

১ । কম্পিউটার কিভাবে কাজ করে আপনি তা জানবেন

আপনি যদি সি জানেন, তাহলে আপনি শুধুমাত্র প্রোগ্রাম কিভাবে কাজ করে তাই জানবেন না। বরং আপনি মেমোরি ম্যানেজমেন্ট এবং বরাদ্দ(allotment)সহ কম্পিউটার কিভাবে কাজ করে তার একটি মানসিক মডেল তৈরি করতে পারবেন। প্রোগ্রামিং এ সি যে স্বাধীনতা দিয়ে থাকে আপনি তার তারিফ করবেন। কেননা অন্যান্য প্রোগ্রামিং ল্যাঙ্গুয়েজ যেমন- পাইথন এবং জাভা এই সুবিধা দেয় না।

আপনি যদি একবার সি বুঝতে পারেন, তাহলে আপনি এমন এমন প্রোগ্রাম লিখতে পারবেন যে, আপনি ভেবেছিলেন কখনোই ইহা আপনার দ্বারা সম্ভব না । অথবা অন্ততপক্ষে, আপনি কম্পিউটার আর্কিটেকচার এবং প্রোগ্রামিং এর উপর বৃহত্তর ধারনা পাবেন।

২। সি হলো প্রোগ্রামিং এর মিশ্র ভাষা(lingua franca)

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

৩। ওপেন সোর্স প্রোজেক্টে কাজ করার সুযোগ পাবেন যা লক্ষ লক্ষ মানুষকে প্রভাবিত করে।

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

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

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

অন্য আরেকটি ভাষা আছে যা বড় বড় ওপেন সোর্স প্রোজেক্টে ব্যবহৃত হয় তা হলো সি++। আপনি যদি সি এবং সি++ জানেন, তাহলে আপনি অনেক ওপেন সোর্স প্রোজেক্টে অবদান রাখতে পারবেন যা লক্ষ লক্ষ মানুষকে প্রভাবিত করবে।

৪। আপনি সেরা প্রোগ্রাম লিখতে পারবেন

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

৫। অন্যান্য প্রোগ্রামিং ল্যাঙ্গুয়েজ শেখা সহজ হয়ে যাবে।

অনেক জনপ্রিয় প্রোগ্রামিং ল্যাঙ্গুয়েজ আছে যেগুলো সি এর উপর ভিত্তি করে তৈরি। যেমন- সি++ অবজেক্ট ওরিয়েন্টেড বৈশিষ্ট্যসহ সি এর সুপার সেট হিসাবে বিবেচনা করা হয়। আপনি যদি সি জানেন, তাহলে সি++ শেখাও আপনার জন্য অনেক সহজ হবে।

সি# এবং জাভা প্রোগ্রামিং সি এবং সি++ এর সাথে সম্পর্কযুক্ত। জাভাস্ক্রিপ্ট এবং পিএইচপি এর সিনট্যাক্স সি এর মতই।

আপনি যদি সি এবং সি++ প্রোগ্রামিং জানেন তাহলে অন্যন্য ভাষায় স্যুইচ করতে আপনাকে কোনো ধরণের বেগ পেতে হবে না।

সি প্রোগ্রামিং না শেখার কারণ

আপনি সি প্রোগ্রামিং না শিখেই অসাধারণ অসাধারণ সফটওয়্যার তৈরি করতে পারবেন। Stackoverflow.com এর প্রতিষ্ঠাতা জেফ আটওয়ার্ড মোটেও সি প্রোগ্রামিং জানতেন না। কিন্তু স্টেক অভারফ্লো নিঃসন্দেহে অনেক ভাল একটি ওয়েব এপ্লিকেশন।

আপনি যদি ব্যস্ত মানুষ হোন এবং ঐ সকল ক্ষেত্রে আপনি সময় বিনিয়োগ করতে না চান যার মাধ্যমে আপনার দৈনন্দিন কাজে প্রত্যক্ষ্য কোনো প্রভাব নেই। তাহলে সি প্রোগ্রামিং আপনার জন্য নয়।

আপনি যদি প্রোগ্রামিং এ একেবারেই নতুন হয়ে থাকেন এবং প্রোগ্রামিং শেখার জন্য খুব সহজ ভাষা খুঁজছেন তাহলে সি আপনার জন্য খুব সহজ হবে না। বরং আপনি পাইথন দিয়ে শুরু করতে পারেন।

সি প্রোগ্রামিং শিখবেন কি না সিদ্ধান্ত নিন!!

নতুনদের জন্যঃ

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

অভিজ্ঞ প্রোগ্রামারদের জন্যঃ

সি প্রোগ্রামিং শেখার অত্যন্ত প্রয়োজন নাই কিন্তু সি শেখার কিছু ভাল দিকও রয়েছে।

সি শেখার জন্য আপনি আপনার চলমান প্রোজেক্ট বন্ধ করে দিয়েন না। আমার বিশ্বাস, আপনি এটা করবেনও না। যদি আপনার ফ্রি সময় থাকে এবং প্রোগ্রামিং দক্ষতাকে সমৃদ্ধ করতে চান তাহলে আপনি সি শিখতে পারেন।

আমি বিশ্বাস করি, তাৎক্ষনিকভেবে এটা শেখার প্রয়োজন নাই। তবে কোনো না কোনোভাবে এটা আপনার শেখা উচিৎ।

ধন্যবাদ 🙂

About Rasel Khan

This is Rasel Khan, I’ve been working with the computers since I was pretty young. Right now, I’ve completed graduation for B.Sc(Engg) in Computer Science & Engineering (CSE) in 2014 at Jatiya Kabi Kazi Nazrul Islam University, Trishal, Bangladesh. For almost a decade now, I’ve been playing around with over a dozen programming languages on several different platforms, from JavaScript to PHP, from Python to Django. My favourite has always been PHP.

Check Also

পাইথন(Python) ইনপুট, আউটপুট এবং ইম্পোর্ট

এই অধ্যায়ে আপনি জানবেন পাইথন বিল্ট-ইন(নিজস্ব) ফাংশন print() এবং input() ব্যবহার করে কিভাবে ইনপুট এবং …

Leave a Reply

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