সি প্রোগ্রামিং/কেন সি শিখবেন?
সি হল অপারেটিং সিস্টেম লেখার জন্য সবচেয়ে বেশি ব্যবহৃত প্রোগ্রামিং ভাষা। প্রথম সি ভাষায় লেখা অপারেটিং সিস্টেম হলো ইউনিক্স। মাইক্রোসফট উইন্ডোজ, ম্যাক ও এস এক্স, গ্নু/লিনাক্স সবগুলোই সি প্রোগ্রামিং ভাষায় লেখা। সি শুধু অপারেটিং সিস্টেমের ভাষাই নয়, বর্তমানকালে জনপ্রিয় প্রায় সকল প্রোগ্রমিং ভাষার প্রেরণা সি প্রোগ্রমিং ভাষা। প্রকৃতপক্ষে পার্ল, পিএইচপি, পাইথন, রুবি সহ অনেক প্রোগ্রামিং ভাষাই সি ব্যবহার করে লেখা।
ধরা যাক আপনি স্পেনিশ, ইটালিয়ান, ফ্রেঞ্চ বা পর্তুগিজ ভাষা শিখতে চাচ্ছেন। এই ভাষা গুলো শেখার আগে আপনি ল্যাটিন ভাষা শিখে নিলে আপনার কাছে এসকল ভাষা বোঝা সহজ হবে। কারন ল্যাটিন ভাষা থেকেই এসকল ভাষার উৎপত্তি। সি শেখার মাধ্যমে আপনি সি ভাষার তৈরি পুরো প্রোগ্রমিং ভাষার পরিবারকে সহজে বুঝতে পারবেন। সি প্রোগ্রামিং এর জ্ঞান আপনাকে দেবে প্রোগ্রামিং এর স্বাধীনতা।
সি কেন এসেম্বলি ভাষা নয়?
সম্পাদনাএসেম্বলি ভাষা আপনাকে গতি এবং সিস্টেমের উপর সর্বোচ্চ নিয়ন্ত্রণ প্রদান করলেও সার্বজনিন ভাষা নয়। কিন্তু সি যেমন সিস্টেমের উপর যথেষ্ট নিয়ন্ত্রন দেয়, তেমনি একটি সার্বজনিন ভাষা।
আলাদা আলাদা প্রসেসর আলাদা আলাদা এসেম্বলি ভাষায় কাজ করে, তাই তাদের মধ্যে যেকোন একটি প্রসেসর নির্ধারণ করা এবং শুধু সেটার উপযোগী এসেম্বলি ভাষা শেখা অযৌক্তিক। প্রকৃতপক্ষে সি এর প্রধান ক্ষমতাই হচ্ছে এসেম্বলি ভাষার উপর সর্বোচ্চ নিয়ন্ত্রণ রেখেও সার্বজনিনতা এবং বিভিন্ন আর্কিটেকচারের কম্পিউটারে ব্যবহারের সক্ষমতা।
উদাহরনস্বরুপ, HP 50g calculator (ARM processor), TI-89 calculator (68000 processor), Palm OS Cobalt smartphones (ARM processor), iMac (PowerPC), Arduino (Atmel AVR) এবং Intel iMac (Intel Core 2 Duo) এ সবকটিতেই আপনি সি প্রোগ্রাম কম্পাইল এবং ব্যবহার করতে পারবেন। এই সবকটি ডিভাইসের প্রত্যেকটির আলাদা আলাদা এসেম্বলি ভাষা আছে এবং কোনটাই অন্যকোনটার সাথে সামন্জস্যপূর্ন না।
এসেম্বলি ভাষা যদিও খুবই শক্তিশালী কিন্তু বড় ধরণের কাজে ব্যবহারের জন্য প্রোগ্রাম লিখা খুবই কঠিন। সাথে সাথে এটি পড়া কিংবা যুক্তিপূর্ণ ভাষায় উপস্থাপন করাটাও অনেক কঠিন। সি একটি কম্পাইল করা ভাষা যা দ্রুত এবং কার্যকর এক্সিকিউটেবল (.exe) ফাইল তৈরি করে। সাথে সাথে এটি একটি ছোট "What you see is all you get." (যা দেখবেন হুবহু তাই পাবেন) ভাষ। একেকটি সি স্টেটমেন্ট আসলে অনেকগুলো এসেম্বলি স্টেটমেন্ট কে প্রকাশ করে, আর বাকি সব সরবরাহ করে লাইব্রেরি ফাংশন।
সি প্রোগ্রামিং ভাষার এই তুমুল জনপ্রিয়তা কী আপনার কাছে বিষ্ময়কর লাগছে?
সিড়ির উপরের ধাপটি যেমন নীচের ধাপের উপর দাড়িয়ে থাকে তেমনই উত্তর প্রজন্মের প্রোগ্রমিং ভাষা তার পূর্বের প্রজন্মের ভাষার উপরেই ভিত্তি করে গড়ে উঠে। সি তে ডিজাইন করা অপারেটিং সিস্টেমের সিস্টেম লাইব্রেরীও সি তে ডিজাইন করা হয়। এই সকল সিস্টেম লাইব্রেরি পরবর্তিতে উচ্চতর লাইব্রেরি ডিজাইন করতে ব্যবহার করা হয় (যেমন OpenGL কিংবা GTK) এবং এই সকল উচ্চতর লাইব্রেরীর ডিজাইনাররাও সাধারণত সেই প্রোগ্রমিং ল্যাংগুয়েজই ব্যবহার করেন যে ভাষায় সিস্টেম লাইব্রেরি লেখা হয়েছে। এপ্লিকেশন ডেভেলপাররা উচ্চতর লাইব্রেরি ব্যবহার করে গেমস, ওয়ার্ড প্রোসেসর, মিডিয়া প্লেয়ার এসব তৈরি করতে। তাদের মধ্যে অনেকে উচ্চতর লাইব্রেরি যে ভাষায় লেখা সেই প্রোগ্রমিং ভাষা ব্যবহার করতে পছন্দ করেন। এভাবেই সি এর জনপ্রিয়তা বাড়ছেই।
প্রথমেই কেন সি শিখবেন এবং কেন অন্য কোন উচ্চতর প্রোগামিং ভাষা নয়?
সম্পাদনাসি ল্যাংগুয়েজের প্রাথমিক লক্ষ্য হল ন্যূনতম ফুটপ্রিন্ট (প্রক্রিয়ার সময়, মেমরি, ডিস্ক, ইত্যাদি।) এবং সর্বোচ্চ পারফরম্যান্স বজায় রেখে বহনযোগ্য কোড লেখা। উল্লেখ্য যে অপারেটিং সিস্টেম বা অন্য কোন প্রোগ্রামের ক্ষেত্রে উচ্চতর ভাষা আপনাকে উল্লেখযোগ্য পারফরম্যান্স নাও দিতে পারে। সি বহুদিন যাবৎ ব্যবহৃত একটি পরিণত ভাষা, এবং মোটামুটি সকল প্লাটফরমেই একে ব্যবহার যোগ্য করা হয়েছে। সি প্রোগ্রমিং ভাষা ব্যবহারের অন্যতম একটা কারণ মেমরি ব্যবস্থাপনা, এটি একজন প্রোগ্রমারকে সরাসরি একটা মেমরি এড্রেসে লিখতে দেয়। structs, pointers এবং arrays এর মত কী কন্সট্রাক্ট গুলো মেমরিকে মেশিন অনির্ভর করে ব্যবহারের জন্যই মূলত ডিজাইন করা হয়েছে।