সি প্রোগ্রামিং ভাষা - C Programming Language
সি প্রোগ্রামিং সাধারণ উদ্দেশ্যে(general-purpose) ব্যবহৃত একটি শক্তিশালী(powerfull) প্রোগ্রামিং ভাষা যা দ্রুততর(faster), বহনযোগ্য(portable) এবং সব ধরণের প্লাটফর্মেই উপযোগী।
আপনি যদি প্রোগ্রামিং এ নতুন হোন, তাহলে সি দিয়ে প্রোগ্রামিং এ যাত্রা শুরু হবে আপনার জন্য দারুণ এক পছন্দের বিষয়।
আপনি কিভাবে সি প্রোগ্রামিং ভাষা শেখা শুরু করবেন, কেনই বা সি প্রোগ্রামিং ভাষা শিখবেন এবং কোথায় থেকে শিখবেন পরবর্তী অধ্যায় গুলোতে তারই কিছু তুলনামূলক দিক তুলে ধরার চেষ্টা করেছি।
সি প্রোগ্রামিং ভাষা কি?(what is cprogramming Language) - প্রাথমিক ধারনা
সি প্রোগ্রামিং ভাষা শেখা শুরু করার পূর্বে চলুন সি প্রোগ্রামিং ভাষাটির সঙ্গে পরিচিত হয়ে নিই।
সি সাধারণ উদ্দেশ্যে ব্যবহৃত প্রোগ্রামিং ভাষা। বিভিন্ন অপারেটিং সিস্টেম (যেমন-উইন্ডোজ, আইওএস, লিন্যাক্স ইত্যাদি) থেকে শুরু করে নানা ধরনের সফটওয়্যার নির্মানে সি এর ব্যপক ব্যবহার রয়েছে। এমনকি 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)
- অপারেটিং সিস্টেম - উইন্ডোজ, লিন্যাক্স, ওএস এক্স, এন্ড্রোয়েড, আইওএস
- ডাটাবেজ - মাইএসকিউএল, অরাকল, এমএস এসকিউএল সার্ভার, পোস্টগ্রিএসকিউউএল
- অন্যান্য ব্যবহার -নেটওয়ার্ক ড্রাইভার, কম্পাইলার, প্রিন্ট স্পুলার
সি প্রোগ্রামিং টিউটোরিয়াল লিস্ট
সি বেসিক টিউটোরিয়াল
সি প্রোগ্রামিং কি? সি এর ইতিহাস সি এর বৈশিষ্ট্যসমূহ কেন সি শিখবেন? সি ইন্সটলেশন প্রথম সি প্রোগ্রাম সি প্রোগ্রামের ফ্লো প্রোগ্রামিং শেখার সঠিক পদ্ধতি সি কীওয়ার্ড সি আইডেন্টিফায়ার সি ভ্যারিয়েবল সি কনস্ট্যান্ট সি ডাটা টাইপ সি মোডিফায়ার সি ইনপুট/আউটপুট সি অপারেটর সি কমেন্ট সি অপারেটর অগ্রাধিকার