সি (প্রোগ্রামিং ভাষা)

উইকিপিডিয়া, মুক্ত বিশ্বকোষ থেকে
সি
C
K&R C.jpg
দ্য সি প্রোগ্রামিং ল্যাঙ্গুয়েজ, ব্রায়ান কার্নিগানডেনিস রিচি-র লেখা মূল সংস্করণের প্রচ্ছদ; এই বইটি সুদীর্ঘ সময় ধরে ভাষাটির একটি অ-প্রমিত বিবরণ হিসেবে ধরা হত।
প্যারাডাইম: নির্দেশমূলক (পদ্ধতিমূলক) সিস্টেম্‌স বাস্তবায়ন ভাষা
যে বছর তৈরি করা হয়: ১৯৭২
যিনি ডিজাইন করেছেন: ডেনিস রিচি
ডেভেলপার: ডেনিস রিচি এবং বেল ল্যাব্‌স
অধুনা প্রকাশ: সি১১ / ডিসেম্বর, ২০১১
টাইপিং ডিসিপ্লিন: স্থির, দুর্বল
প্রধান বাস্তবায়ন সমূহ: ক্ল্যাং, জিসিসি, মাইক্রোসফট ভিজুয়্যাল সি/সি++, বোরল্যান্ড সি, ওয়াটকম সি
যার দ্বারা প্রভাবিত: বি (বিসিপিএল, সিপিএল), অ্যালগল ৬৮, অ্যাসেম্বলি ভাষা
যাকে প্রভাবিত করেছে: অক, সি শেল, সি++, সি শার্প, অবজেক্টিভ সি, বিটসি, ডি, কনকারেন্ট সি, জাভা, জাভাস্ক্রিপ্ট, লিম্বো, পার্ল, পিএইচপি

সি একটি প্রোগ্রামিং ভাষা। সি নির্মাণ করেন ডেনিস রিচি, বেল ল্যাবে ৭০এর দশকে কাজ করার সময়। ভাষাটি তৈরির প্রথম উদ্দেশ্য ছিল ইউনিক্স অপারেটিং সিস্টেম-এর কোড লেখায় এর ব্যবহার, কিন্তু অচিরেই এটি একটি বহুল ব্যবহৃত ভাষায় পরিণত হয়। সি++জাভা সহ পরিবর্তীকালের অনেক প্রোগ্রামিং ভাষার উপর সি'র গভীর প্রভাব পড়েছে। সি এর সবচেয়ে আকর্ষণীয় দিক হচ্ছে এর বহনযোগ্যতা। সি দিয়ে রচিত প্রোগ্রাম যেকোন অপাররেটিং সিস্টেমের কম্পিউটারে চালানো যায়। ৭০ এবং ৮০ দশকের দিকে সি এর জনপ্রিয়তা বাড়ার সাথে সাথে এর অনেকগুলো ভার্সন তৈরি হয়। ১৯৮৩ সালে আমেরিকান মাননিয়ন্ত্রক সংস্থা সি এর ১টি আদর্শ ভার্সন তৈরির জন্য কমিটি গঠন করে। দীর্ঘ ৬ বছর পরে ১৯৮৯ সালে সেই আদর্শ সি ভাষাটি তৈরি হয়, যা আমেরিকান মাননিয়ন্ত্রক সংস্থা সি (আনসি সি (ANSI C)) নামে পরিচিত। পরবর্তিতে আন্তর্জাতিক মাননিয়ন্ত্রক সংস্থা ১৯৯০ সালে সি এর এই আদর্শ ভার্সনটি গ্রহণ করে, যা সি৯০ নামে পরিচিত। মুলত "সি৮৯" এবং "সি৯০" একই ভাষা। যুগের প্রয়োজনে আন্তর্জাতিক মাননিয়ন্ত্রক সংস্থা ১৯৯৫ সালে এই সংস্করণকে বর্ধিত করে এবং পরবর্তিতে ১৯৯৯ সালে সম্পূর্ণ নতুন একটি সংস্করণ প্রকাশ করে যা সি৯৯ নামে পরিচিত। সর্বশেষ ২০১১ সালে সি প্রোগ্রামিং ল্যাঙ্গুয়েজের নবীনতম সংস্করণ সি১১ প্রকাশিত হয়।

উৎপত্তি[সম্পাদনা]

১৯৬০-এর দশকে বেশ কিছু কম্পিউটার প্রোগ্রামিং ভাষা তৈরি করা হয়েছিল। মার্কিন কম্পিউটারবিদ গ্রেস হপার Mathematic, Flowmatic এবং A2 নামে তিনটি প্রোগ্রামিং ভাষা উদ্ভাবন করেন। এরপর জেম্‌স ব্যাকাস তৈরি করেন ForTran। তারও পরে ALGOL, COBOL, Ada ইত্যাদি প্রোগ্রামিং ভাষা উদ্ভাবন করা হয়। মূলত এই ভাষাগুলিই আধুনিক প্রোগ্রামিং ভাষাগুলির পূর্বসূরী। কিন্তু ঐ ভাষাগুলিকে ভিন্ন ভিন্ন কাজে ব্যবহার করা হত। তাই কম্পিউটার বিজ্ঞানীরা এমন একটি প্রোগ্রামিং ভাষার কথা ভাবতে থাকেন যার মাধ্যমে সব ধরনের সফটওয়্যার তৈরি করা সম্ভব হবে। এরই ফলশ্রুতিতে বিজ্ঞানীরা তৈরি করেন ALGOL 60 (Algorithmic Language) এবং এরপর Combined Programming Language (CPL), কিন্তু CPL শেখা এবং ব্যবহার করা ছিল বেশ কঠিন। তাই এটা জনপ্রিয়তা পায়নি।

ক্যামব্রিজ বিশ্ববিদ্যালয় এর মার্টিন রিচার্ড CPL কে ভিত্তি করে ১৯৬৭ সালে তৈরি করেন Basic Combined Programming Language (BCPL) কিন্তু এটি ছিল মূলত Less Powerful to Specific এবং টাইপবিহীন একটি প্রোগ্রামিং ভাষা।

এ সময়েই যুক্তরাষ্ট্রের বেল গবেষণাগারে বিজ্ঞানী টমসন তৈরি করেন বি (B) নামক একটি প্রোগ্রামিং ভাষা; এটি ছিল পূর্বের BCPL-এর একটি উন্নত সংস্করণ। ডেনিস রিচি পরবর্তীতে B এবং BCPL অনুসরণ করেন এবং নিজে থেকে আরো কিছু কৌশল ব্যবহার করে তৈরি করেন "সি" (C)। মূলত B-এর সীমাবদ্ধতা গুলো দূর করার উদ্দেশ্যেই "সি" এর উৎপত্তি।

সিনট্যাক্স[সম্পাদনা]

কীওয়ার্ড[সম্পাদনা]

সি প্রোগ্রামিং ভাষায় কীওয়ার্ড বলতে বোঝায় সেইসব সংরক্ষিত শব্দসমূহকে যেগুলো একটি বিশেষ অর্থ প্রকাশ করে। সি৮৯ এ এরকম ৩২টি কীওয়ার্ড আছে।

auto
break
case
char
const
continue
default
do
double
else
enum
extern
float
for
goto
if
int
long
register
return
short
signed
sizeof
static
struct
switch
typedef
union
unsigned
void
volatile
while

সি৯৯ এ এরকম আরো পাঁচটি কীওয়ার্ড যুক্ত হয়।

_Bool
_Complex
_Imaginary
inline
restrict

সি১১ তে যুক্ত হয় আরো সাতটি কীওয়ার্ড।

_Alignas
_Alignof
_Atomic
_Generic
_Noreturn
_Static_assert
_Thread_local

অপারেটর[সম্পাদনা]

সি এর অপারেটরগুলো হল -

  • অ্যারিথমেটিক: +, -, *, /, %
  • অ্যাসাইনমেন্ট: =
  • অগমেন্টেড অ্যাসাইনমেন্ট: +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=
  • বিটওয়াইজ লজিক: ~, &, |, ^
  • বিটওয়াইজ শিফট্‌: <<, >>
  • বুলিয়ান লজিক: !, &&, ||
  • কন্ডিশনাল ইভালুয়েশন: ? :
  • ইকুয়ালিটি টেস্টিং: ==, !=
  • কলিং ফাংশন: ( )
  • ইনক্রিমেন্ট ও ডিক্রিমেন্ট অপারেটর: ++, --
  • মেম্বার সিলেকশন: ., ->
  • অবজেক্ট সাইজ: sizeof
  • অর্ডার রিলেশন: <, <=, >, >=
  • রেফারেন্স ও ডিরেফারেন্স: &, *, [ ]
  • সিকুয়েন্সিং: ,
  • সাবএক্সপ্রেসন গ্রুপিং: ( )
  • টাইপ কনভার্সন: (typename)