Lesson পড়তে ৫ মিনিট লাগবে

সি (C) কেন শিখবেন?

অপারেটিং সিস্টেম, এমবেডেড চিপস এবং প্রতিটি ভাষার মূল ভিত্তি

সবকিছুর ভিত্তি যে ভাষা

প্রোগ্রামিং ভাষার জগতকে যদি আমরা একটি শহর ধরি, তবে সি (C) হলো তার ভিত্তিপ্রস্তর (bedrock) — যার ওপর সমস্ত ভবন দাঁড়িয়ে আছে। ১৯৭২ সালে বেল ল্যাবসে ডেনিস রিচি এটি তৈরি করেন। ৫০ বছরেরও বেশি সময় পার হওয়ার পরও এটি এখনও বিশ্বের সবচেয়ে গুরুত্বপূর্ণ ভাষাগুলোর একটি।

সি (C)-এর ওপর যে জিনিসগুলো চলে: লিনাক্স (Linux), উইন্ডোজ (Windows), ম্যাকওএস (macOS), আপনার ফোনের কার্নেল, আপনার গাড়ির ইঞ্জিন কন্ট্রোলার, আপনার ওয়াই-ফাই রাউটারের ফার্মওয়্যার, স্বয়ং পাইথন ইন্টারপ্রেটার এবং ইন্টারনেটের অধিকাংশ পরিকাঠামো। আপনি বর্তমানের যেকোনো মডার্ন প্রোগ্রামিং ভাষা ব্যবহার করলে ধরে নিতে পারেন সি তার গভীরে কোথাও না কোথাও কাজ করছে।

হার্ডওয়্যারের একদম কাছাকাছি

বেশিরভাগ আধুনিক ভাষা সাধারণত ভেতরের ঝামেলাগুলোকে লুকিয়ে রাখে — যেমন মেমরি ম্যানেজমেন্ট, হার্ডওয়্যার এক্সেস বা ডেটা কীভাবে জমা হচ্ছে। কিন্তু সি (C) আপনাকে পুরো দৃশ্যপটটা দেখায়। আপনি নিজে মেমরি বরাদ্দ (allocate) করেন। আবার নিজেই তা মুক্ত (free) করেন। পয়েন্টার ব্যবহার করে আপনি সরাসরি মেমোরি অ্যাড্রেসে কাজ করেন।

প্রাথমিকভাবে এটি ভীতিকর মনে হতে পারে, এবং সত্যি বলতে এটি তেমনই। কিন্তু এটি এমন এক জিনিস দেয় যা অন্য কোনো জনপ্রিয় ভাষা দেয় না: কম্পিউটার আসলে কীভাবে কাজ করে তার একটি গভীর অন্তর্দৃষ্টি। আপনি একবার সি (C) বুঝতে শুরু করলে অন্য যেকোনো ভাষা শেখা অনেক সহজ মনে হবে — কারণ প্রতিটি ভাষাই ওই একই নীতি অনুসরণ করে তৈরি করা হয়েছে যা সি পুরো বিশ্বকে শিখিয়েছে।

হ্যালো ওয়ার্ল্ড — আদি ও অকৃত্রিম

#include <stdio.h>
int main(void) {
printf("Hello, World!\n");
// পাঠ্যবইয়ে "Hello World" এর সূচনা মূলত সি (C) থেকেই
// কার্নিহান ও রিচির ১৯৭৮ সালের বইটি একে বিখ্যাত করে তোলে
return 0;
}
Output
Hello, World!

সি (C) কোথায় ব্যবহার করা হয়?

সি কোনো ওয়েবসাইট বা মোবাইল অ্যাপ তৈরির জন্য নয়। বরং এটি সেইসব সিস্টেম তৈরির জন্য ব্যবহৃত হয় যেগুলো ওয়েবসাইট বা মোবাইল অ্যাপ চলতে সহায়তা করে:

  • অপারেটিং সিস্টেম — লিনাক্স, উইন্ডোজ কার্নেল, ম্যাকওএস কার্নেল (XNU) — সবই সি-তে লেখা।
  • এমবেডেড সিস্টেম — আপনার মাইক্রোওয়েভ, থার্মোস্ট্যাট, গাড়ির ইসিইউ (ECU), পেসমেকার — সবই সি দিয়ে চলে।
  • কম্পাইলার ও ইন্টারপ্রেটার — পাইথন (CPython), রুবি, পিএইচপি, লুয়া — এদের সবার ইন্টারপ্রেটার সি-তে লেখা।
  • ডেটাবেস — পোস্টগ্রেএসকিউএল (PostgreSQL), মাইএসকিউএল (MySQL), এসকিউলাইট (SQLite), রেডিস (Redis) — সবগুলোই সি-তে।
  • নেটওয়ার্কিং — ইন্টারনেট নেটওয়ার্কিংয়ের মূল চাবিকাঠি হিসেবে TCP/IP স্ট্যাক, কার্ল (curl), ওপেনএসএসএল (OpenSSL), এনজিনএক্স (nginx) — এদের সবগুলোতে সি ব্যবহার করা হয়েছে।
  • গেম ইঞ্জিন — লো-লেভেল রেন্ডারিং ইঞ্জিন এবং ফিজিক্স সিমুলেশন।
  • আইওটি (IoT) ও রোবটিক্স — আর্ডুইনো, র্যাস্পবেরি পাই (bare-metal) এবং রিয়েল-টাইম সিস্টেম।

যে গতির ধারেকাছেও কেউ নেই

সি (C) নেটিভ মেশিন কোডে কম্পাইল করা হয় — এর নেপথ্যে কোনো ইন্টারপ্রেটার, ভার্চুয়াল মেশিন অথবা গার্বেজ কালেক্টর (garbage collector) কাজ করে না। সিপিইউ আপনার ইনস্ট্রাকশনগুলো সরাসরি রান করে। আর এই কারণেই সি হলো পৃথিবীর সর্বকালের অন্যতম দ্রুত একটি প্রোগ্রামিং ভাষা, যার সমকক্ষ কেবল অ্যাসেম্বলি এবং রাস্ট (Rust)।

যখন আপনার জন্য প্রতিটা মাইক্রোসেকেন্ড খুবই গুরুত্বপূর্ণ হয়ে দাঁড়ায় — যেমন রিয়েল-টাইম সিস্টেম, হাই-ফ্রিকোয়েন্সি ট্রেডিং, গেম ইঞ্জিন ব অপারেটিং সিস্টেমের কার্নেলের বেলায় — সি-ই তখন সেরা অপশন হিসেবে গণ্য হয়। সাধারণ কম্পিউটেশনে পাইথন প্রায় ১০০ গুণ ধীর এবং জাভা প্রায় ২-৫ গুণ ধীর। সি ততটাই দ্রুততম, হাতের সাহায্য ছাড়া অ্যাসেম্বলি না লিখলে যতটা দ্রুত কাজ করা যায়।

পয়েন্টার — সি এর সবচেয়ে বড় শক্তি

#include <stdio.h>
int main(void) {
int score = 42;
int *ptr = &score; // ptr ভেরিয়েবলটি score-এর মেমরি অ্যাড্রেস ধরে রেখেছে
printf("ভ্যালু: %d\n", score); // আসল ভ্যালু
printf("অ্যাড্রেস: %p\n", (void*)ptr); // মেমরির কোথায় অবস্থিত
printf("পয়েন্টার দিয়ে: %d\n", *ptr); // পয়েন্টার ব্যবহার করে ভ্যালু বের করা
*ptr = 99; // পয়েন্টার ব্যবহার করে ভ্যালু পরিবর্তন করা হলো
printf("নতুন ভ্যালু: %d\n", score); // score এর ভ্যালু পরিবর্তন হয়ে গেছে!
return 0;
}
Output
ভ্যালু: 42
অ্যাড্রেস: 0x7ffd5e8a3b4c
পয়েন্টার দিয়ে: 42
নতুন ভ্যালু: 99
Note: সি (C) আপনাকে সব কিছু করার ক্ষমতা দেয় — এমনকি ভুল করে নিজের পায়ে কুড়াল মারারও। এখানে অ্যারের জন্য কোনো বাউন্স চেকিং নেই, গার্বেজ কালেক্টর নেই, আর নাল (null) পয়েন্টারের হাত থেকে বাঁচার কোনো উপায়ও নেই। বিশাল ক্ষমতার সাথে সাথে বিশাল সব এরর (segfaults) আসারও সুযোগ থাকে। কিন্তু এটাই হলো সি-এর চুক্তি: সি আপনাকে পুরোপুরি বিশ্বাস করে, আর এর বদলে আপনি পান সম্পূর্ণ নিয়ন্ত্রণ।

সি শেখা আপনাকে আরো ভালো প্রোগ্রামার বানায়

আপনি পেশাগতভাবে সি (C) নিয়ে কাজ না করলেও এটি শেখার পর যে জাদুকরী ক্ষমতাটা পাবেন তা অন্য সব প্রোগ্রামিং ভাষাতে কাজে আসবে:

  • মেমরি ম্যানেজমেন্ট — স্ট্যাক (stack) বনাম হিপ (heap), মেমরি লিক (memory leak) কেন হয় এবং গার্বেজ কালেক্টরগুলো আসলেই কী করে, তা আপনি বুঝতে পারবেন।
  • পয়েন্টার ও রেফারেন্স — প্রতিটি ভাষাই পর্দার আড়ালে রেফারেন্স ব্যবহার করে। সি আপনাকে এর আসল কাঠামোটা দেখায়।
  • কীভাবে ডেটা স্টোর করা হয় — অ্যারে, স্ট্রাকট (structs), প্যাডিং, অ্যালাইনমেন্ট — মেমরির ভেতরে আপনার ডেটাগুলো কেমন দেখায় তা আপনি জানতে পারবেন।
  • পারফরমেন্সের ধারণা — যেকোনো প্রোগ্রামের গতি বোঝা এবং কোথায় সময় নষ্ট হচ্ছে তা অনুধাবন করার ক্ষেত্রে আপনার অন্তর্দৃষ্টি কাজ করবে।
  • ডিবাগিং স্কিলস — আপনি যদি সি-তে একটি সেগফল্ট (segfault) কে ঠিক করতে পারেন, তবে আপনি যেকোনো এররই সমাধান করতে পারবেন।

কারা সি ব্যবহার করে?

  • লিনাক্স / লিনাস টরভ্যাল্ডস — লিনাক্স কার্নেল পুরোটাই সি-তে লেখা। এটি কোটি কোটি ডিভাইসে চলে।
  • অ্যাপল (Apple) — ম্যাকওএস এবং আইওএস কার্নেল (XNU/Darwin) সি দিয়ে লেখা।
  • মাইক্রোসফট (Microsoft) — উইন্ডোজের কার্নেল সি এবং সি++ এর তৈরি।
  • যেকোনো ডেটাবেস — পোস্টগ্রেএসকিউএল, মাইএসকিউএল, এসকিউলাইট, রেডিস — সবই সি-তে কাজ করে।
  • দ্য পাইথন ফাউন্ডেশন — সি-পাইথন (CPython), যা স্টান্ডার্ড পাইথনের ইন্টারপ্রেটার, তা মূলত সি তেই লেখা।
  • এমবেডেড ইন্ডাস্ট্রি — অটোমোটিভ, মেডিকেল ডিভাইস, অ্যারোস্পেস, আইওটি — এগুলোতে সি হলো স্ট্যান্ডার্ড।

ছোট কুইজ

সি (C) কে কেন আধুনিক প্রোগ্রামিংয়ের "ভিত্তিপ্রস্তর" হিসেবে বিবেচনা করা হয়?

পড়া চালিয়ে যান

Variables & Data Types