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

**সি** একটি প্রোগ্রামিং ভাষা। সি নির্মাণ করেন ডেনিস রিচি, বেল ল্যাবে '৭০এর দশকে কাজ করার সময়। ভাষাটি তৈরির প্রথম উদ্দেশ্য ছিল ইউনিক্স অপারেটিং সিস্টেম এর কোড লেখা, কিন্তু অচিরেই এটি একটি বহুলব্যবহৃত ভাষায় পরিণত হয়। সি++ ও জাভাসহ পরবর্তীকালের অনেক প্রোগ্রামিং ভাষার উপর সি'র গভীর প্রভাব পড়েছে। সি'র সবচেয়ে আকর্ষণীয় দিক হচ্ছে এর বহনযোগ্যতা (portability)। সি'তে রচিত প্রোগ্রাম যেকোনো অপারেটিং সিস্টেমের কম্পিউটারে চালানো যায়। ৭০ এবং ৮০র দশকের দিকে সি এর জনপ্রিয়তা বৃদ্ধি পাবার সাথে সাথে এর অনেকগুলো সংস্করণ তৈরি হয়। ১৯৮৩ সালে মার্কিন মাননিয়ন্ত্রক সংস্থা সি এর একটি আদর্শ সংস্করণ তৈরির জন্য কমিটি গঠন করে। দীর্ঘ ৬ বছর পরে ১৯৮৯ সালে সেই আদর্শ সি ভাষাটি তৈরি হয়, যা আমেরিকান মাননিয়ন্ত্রক সংস্থার সি (**আনসি সি** (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-এর সীমাবদ্ধতা গুলো দূর করার উদ্দেশ্যেই "সি" এর উৎপত্তি।

## ইতিহাস
### প্রারম্ভিক উন্নয়ন

সি-এর উৎপত্তি, উনিক্স অপারেটিং সিস্টেমের বিকাশের সাথে অতোপ্রতোভাবে জড়িত, যা মূলত ডেনিস রিচি এবং কেন থম্পসন ও তাদের সহকর্মীদের বিভিন্ন ধারণাকে কাজে কাজে লাগিয়ে PDP-7-এ প্রয়োগ করা হয়। অবশেষে, তারা অপারেটিং সিস্টেমটিকে PDP-11-এ পোর্ট করার সিদ্ধান্ত নেয়। ইউনিক্সের আসল PDP-11 সংস্করণটিও অ্যাসেম্বল ভাষায় তৈরি করা হয়েছিল।

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

#### নতুন বি এবং প্রথম সি রিলিজ
১৯৭১ সালে, রিচি আরও শক্তিশালী পিডিপি-১১-এর বৈশিষ্ট্যগুলিকে কাজে লাগানোর জন্য বি-এর উন্নয়ন করতে শুরু করেন। একটি উল্লেখযোগ্য সংযোজন ছিল ক্যরেক্টার টাইপ নামক ডাটা টাইপ সংযোজন। তিনি এটিকে *নতুন বি* বলে ডাকতেন। থম্পসন ইউনিক্স কার্নেল লিখতে এনবি ব্যবহার করা শুরু করেন এবং এর প্রয়োজনীয়তা প্রোগ্রামিং ভাষার বিকাশের জন্য অপরিহার্য হয়ে ওঠে। ১৯৭২ সাল পর্যন্ত এনবি ভাষায় আরও সমৃদ্ধ ধরনের ডাটা টাইপ যোগ করা হয়েছিল। এনবি-এর `int` এবং `char` এর অ্যারে ছিল; কিন্তু তারপর পয়েন্টার যোগ করা হয়েছে, অন্যান্য ধরনের পয়েন্টার তৈরি করার ক্ষমতা, এই সবগুলির অ্যারে, ফাংশন থেকে ফলফল ফেরত দেওয়ার ধরন (`return`)। এক্সপ্রেশন মধ্যেকার অ্যারে পয়েন্টার হিসাবে কাজ করা শুরু করে। এর মাধ্যমে একটি নতুন কম্পাইলার লেখা হয়, এবং ভাষাটির নাম পরিবর্তন করে C করা হয়।

সি কম্পাইলার এবং এটির সাথে তৈরি কিছু ইউটিলিটি ইউনিক্স সংস্করণ ২এ অন্তর্ভুক্ত ছিল।

### কে অ্যান্ড আর সি

১৯৭৮ সালে, ব্রায়ান কার্নিঘান এবং ডেনিস রিচি দ্যা সি প্রোগ্রামিং ল্যাঙ্গুয়েজ এর প্রথম সংস্করণ প্রকাশ করেন। এই বইটি, যা সি প্রোগ্রামারদের কাছে *K&R* নামে পরিচিত, বহু বছর ধরে এই ভাষার একটি অনানুষ্ঠানিক নির্দেশিকা হিসেবে কাজ করেছে। এটিকে অনেকেই ***K&R C*** নামে চেনে।  এই বইটির দ্বিতীয় সংস্করণটি, সি ভাষার ANSI C মান্দন্ডকে মেনে চলে, যা নীচে বর্ণিত হয়েছে।

*K&R* সি ভাষায় বেশ কিছু নতুন বৈশিষ্ট্য চালু করেছে:
* আদর্শ I/O লাইব্রেরি
* `long int` ডেটা টাইপ
* `unsigned int`  ডেটা টাইপ
* কম্পাউন্ড (যৌগিক) অ্যাসাইনমেন্ট অপারেটর `=''op''` (যেমন `=-`) কে পরিবর্তন করে এরূপ (`''op''=`) করা

এমনিকি, ১৯৮৯ সালে ANSI মানদন্ড প্রকাশের পরও অনেক দিন ধরেই *K&R C* নির্দেশবলী হালনাগাদ করা হয়নি। ফলে, এটি কম্পাইল করতে এখনো অনেক পুরোনো কম্পাইলার ব্যবহৃত হয়।

সি-এর প্রথম দিকের সংস্করণগুলোতে , যে ফাংশনগুলি শুধুমাত্র  `int` ব্যতীত অন্য কোনো টাইপের ডাটা প্রত্যাবর্তন(`return`) করে তা ঘোষণা করা আবশ্যক, যদি তা ফাংশন লেখার আগে ব্যবহার করা হয়। পূর্বে ডাটা টাইপ ্না বলে দেওয়া হলে, ফাংশন টাইপ ও রিটার্ন টাইপ কম্পাইলার ডিফল্ট হিসাবে `int` ধরে নেয়। উদাহরণস্বরূপ:


```c
long some_function();
/* int */ other_function();

/* int */ calling_function()
{
    long test1;
    register /* int */ test2;

    test1 = some_function();
    if (test1 > 1)
          test2 = 0;
    else
          test2 = other_function();
    return test2;
}
```


যে `int` গুলি কমেন্ট ব্লকের মধ্যে যুক্ত করা হয়েছে তা K&R C-তে বাদ দেওয়া যেতে পারে, কিন্তু পরবর্তীতে এগুলো প্রয়োজন হতে পারে।

K&R C প্রকাশের পরের বছরগুলিতে, AT&T (বিশেষ করে পিসিসি) এবং কিছু অন্যান্য ভেন্ডার। এর অন্তর্ভুক্ত হলো:

* `void`ফাংশন (অর্থাৎ, কোন রিটার্ন ছাড়া ফাংশন)
* ফাংশন রিটার্নিং `struct`বা `union`টাইপ (পয়েন্টারের পরিবর্তে)
* `struct`ডেটা টাইপের জন্য অ্যাসাইনমেন্ট
* গণনা করার টাইপ

বিপুল সংখ্যক এক্সটেনশন এবং একটি স্ট্যান্ডার্ড লাইব্রেরি-এর শর্তের অভাব, সি ভাষার জনপ্রিয়তা এবং এটাও সত্য যে ইউনিক্স কম্পাইলাররাও K&R স্পেসিফিকেশন সঠিকভাবে প্রয়োগ করেনি, যা সংশোধনের প্রয়োজন।

### সি৯৯

 
১৯৯০-এর দশকের শেষদিকে সি কে আরও সংশোধিত আকারে প্রকাশ করা হয়। ফলে ১৯৯৯ সালে ISO/IEC 9899:1999 প্রকাশ করা হয়, যাকে সাধারণত "সি৯৯" বলা হয়। টেকনিক্যাল করিজেন্ডা দ্বারা এটি তিনবার সংশোধন করা হয়েছে।

সি৯৯-এ বেশ কিছু নতুন বৈশিষ্ট্য যুক্ত হয়েছে, যার মধ্যে রয়েছে ইনলাইন ফাংশন, বেশ কয়েকটি নতুন ডেটা টাইপ (যেমন : `long int`) এব জটিল সংখ্যার জন্য (`complex`),পরিবর্তনশীল-দৈর্ঘ্যের অ্যারে এবং নমনীয় অ্যারের সদস্য, IEEE 754 ফ্লোটিং পয়েন্টের জন্য উন্নত ভ্যরিয়াবেল,  (ভেরিয়েবলের ম্যাক্রো), এবং `//` দিয়ে শুরু হওয়া এক-লাইনের মন্তব্য ইত্যাদি। BCPL বা সি++ এর মতো অনেক প্রোগ্রামিং ভাষা ইতিমধ্যেই বেশ কয়েকটি সি কম্পাইলারে এটি এক্সটেনশন হিসাবে ব্যবহার করা হয়েছে।

সি৯৯ অধিকাংশ  যায়গায় সি৯০ এর সাথে  মিলে যায়, কিন্তু কিছু বিষয়ে নিয়মগুলো আরো কঠোর করা হয়। বিশেষ করে, একটি  ভ্যরিয়েবল যেখানে ডাটা টাইপ নির্দিষ্ট করা বলা নেই, সেটিকে আর `int` হিসাবে ধরে নেওয়া. সি৯৯ সমর্থন উপলব্ধ রয়েছে তা নির্দেশ করার জন্য একটি কোড ম্যাক্রো `__STDC_VERSION__` মান `199901L` দিয়ে সংজ্ঞায়িত করা হয়েছে।জিসিসি, সোলারিস স্টুডিও, এবং অন্যান্য সি কম্পাইলার এখন সি৯৯ এর অধিকাংশ বা সমস্ত নতুন বৈশিষ্ট্য সমর্থন করে।মাইক্রোসফট ভিজুয়াল সি++-এর সি কম্পাইলার, তবে, C89 স্ট্যান্ডার্ড এবং সি৯৯-এর সেই  নিয়মগুলো মেনে চলে যেগুলো সি++11-এর সাথে সামঞ্জস্যপূর্ণ।

### সি১১

২০০৭ সালে, সি স্ট্যান্ডার্ডের আরেকটি সংশোধনের কাজ শুরু হয়, যাকে অনানুষ্ঠানিকভাবে "সি১এক্স" বলা হয়। ২০১১-১২-০৮ তারিখে ISO/IEC 9899:2011 এর আনুষ্ঠানিক প্রকাশনা প্রকাশের পূর্ব পর্যন্ত এটি একটি স্ট্যান্ডার্ড ছিলো। সি স্ট্যান্ডার্ড কমিটি নতুন বৈশিষ্ট্য সংযোজন সীমিত করার জন্য নির্দেশিকা গ্রহণ করেছে যা বিদ্যমান বাস্তবায়ন দ্বারা পরীক্ষা করা হয়নি।

C11 স্ট্যান্ডার্ড C এবং লাইব্রেরিতে অসংখ্য নতুন বৈশিষ্ট্য যোগ করে, যার মধ্যে রয়েছে টাইপ জেনেরিক ম্যাক্রো, নামহীন কাঠামো, উন্নত ইউনিকোড, পারমাণবিক অপারেশন, মাল্টি-থ্রেডিং এবং বাউন্ড-চেকড ফাংশন। এটি বিদ্যমান C99 লাইব্রেরির কিছু অংশকে ঐচ্ছিক করে তোলে এবং C++ এর সাথে সম্পৃক্ততা বাড়ায়। সি১১ এ স্ট্যান্ডার্ড ম্যাক্রো `__STDC_VERSION__` কে `201112L` হিসাবে সংজ্ঞায়িত করা হয়েছে।

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

:`auto`
:`break`
:`case`
:`char`
:`const`
:`continue`
:`default`
:`do`

:`double`
:`else`
:`enum`
:<code>extern</code>
:`float`
:`for`
:`goto`
:`if`

:`int`
:`long`
:`register`
:`return`
:`short`
:`signed`
:`sizeof`
:<code>static</code>

:`struct`
:`switch`
:`typedef`
:`union`
:`unsigned`
:`void`
:`volatile`
:`while`

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

:`_Bool`
:`_Complex`

:`_Imaginary`
:`inline`

:`restrict`

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

:`_Alignas`
:`_Alignof`

:`_Atomic`
:`_Generic`

:`_Noreturn`
:`_Static_assert`

:`_Thread_local`

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

## উদাহরণ কোড
সি #প্রোগ্রামিং ভাষার উদাহরণ :
**Hello World** হল একটি সাধারণ প্রোগ্রামিং হলো।


```c#
uning System;
namespase Hellw_Wold
  {
   class Program
    {
      static Void Main(string [] args)
      {
      Console.WriteLine("Hello World);
      }   
    }
  }
```

সি প্রোগ্রামিং কোডের আদর্শ উদাহরণ 

```c
#include <stdio.h>
int main(void)
{
    printf("Hello World\n");
    return 0;
}
```

* এখানে #include  লিখার মাধ্যমে কম্পেইলার কে stdio.h নামের হেডার ফাইল পড়তে বলা হয়েছে । 
* int main(void) মানে মূল ফাংশন ইন্টেজার (গাণিতিক পূর্ণ সংখ্যা) প্রদান করবে । আর (void) লিখার কারণে মূল ফাংশনে কোন কিছু ইনপুট করতে হবে না ।
* printf("Hello World\n") এখানে printf হল একটি ফাংশন যার বিস্তারিত stdio.h হেডার ফাইলের মধ্যে লিখা আছে । সাধারণত printf এর মাধ্যমে স্ট্রিং উপাত্ত কম্পিউটারের পর্দায় দৃশ্যমান করার জন্য ব্যবহার হয় । এর মানে *Hello World* লিখাটি কম্পিউটারের পর্দায় দৃশ্যমান হবে।

## উপাত্তের ধরন
সি তে উপাত্তের ধরন মুলত তিন প্রকারঃ
# ব্যবহারকারী সংজ্ঞায়িত উপাত্তের ধরন
# অন্তর্নির্মিত বা বিল্ট ইন উপাত্তের ধরন
# উদ্ভূত উপাত্তের ধরন

### অন্তর্নির্মিত উপাত্তের ধরন

ANSI কর্তৃক নির্ধারিত উপাত্তের ধরন সমুহ কে অন্তর্নির্মিত বা বিল্ট ইন উপাত্তের ধরন বা অপরিহার্য উপাত্তের ধরন বলে।

অন্তর্নির্মিত উপাত্তের ধরন সাধারনত ৪ প্রকারঃ
* ক্যারেক্টার ধরনের উপাত্ত - সাধারনত ক্যারেক্টার বা স্ট্রিং জাতীয় কোন উপাত্ত ঘোষণার জন্য ক্যারেক্টার ধরনের উপাত্ত ব্যবহার করা হয় । ক্যারেক্টার ধরনের উপাত্ত মেমোরিতে ১ বাইট জায়গা দখল করে । কোন উপাত্তকে ক্যারেক্টার হিসাবে ঘোষণা করার জন্য `'char' `  কীওয়ার্ড  ব্যবহৃত হয় যেমনঃ ` char abc;` ` char xya;`। এর বিন্যাস নির্দিষ্টকারী হিসেবে `'%c' ` ব্যবহার করা হয় । 
* ইন্টিজার ধরনের উপাত্ত - পূর্ণসংখ্যা জাতীয় কোন উপাত্ত ঘোষণার জন্য এই উপাত্তের ধরন ব্যবহার করা হয় । এই উপাত্তের ধরন মেমোরিতে ২ বাইট জায়গা দখল করে । এর কীওয়ার্ড হচ্ছেঃ `'int' `। যেমনঃ ` int abc; ` `int xyz; ` । বিন্যাস নির্দিষ্টকারী হিসেবে `'%d'` ব্যবহার করা হয়।
* ফ্লোটিং পয়েন্ট ধরনের উপাত্ত
* দ্বৈত ধরনের উপাত্ত

## অ্যারে
**একই ধরনের বা সমপ্রকৃতির ডেটা টাইপের গুচ্ছকে ''অ্যারে'' বলা হয়। ** 
অ্যারের একটি নির্দিষ্ট নাম থাকে। '[ ]' তৃতীয় বন্ধনীর সাহায্যে অ্যারের নামের সাথে অ্যারে সাইজ লেখা হয়, যা অ্যারে ভেরিয়েবলের(Variable) সর্বোচ্চ ডেটার সংখ্যা নির্দেশ করে। এই সংখ্যাকে অ্যারের ইনডেক্স(Index) বলা হয়। যেমন, একটি অ্যারে— ` int num[4]; ` এখানে ` [4] ` দ্বারা অ্যারের ইনডেক্স প্রকাশ করে। ` int num[4]; ` অ্যারেটিতে মোট পাঁচটি চলক(Variable) আছে। যেমন, ১ম— ` num[0] `, ২য়— ` num[1] `, ৩য়— ` num[2] `, ৪র্থ— ` num[3] `, ৫ম— ` num[4] ` 

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

## ব্যবহার

### ওয়েব ডেভেলাপমেন্টে পূর্বের ব্যবহার

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

### অন্যান্য ভাষা উন্নয়নে ব্যবহার

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

## তথ্যসূত্র

বিষয়শ্রেণী:সি (প্রোগ্রামিং ভাষা)
বিষয়শ্রেণী:মার্কিন উদ্ভাবন
বিষয়শ্রেণী:সি প্রোগ্রামিং ভাষা পরিবার
বিষয়শ্রেণী:ক্রস-প্ল্যাটফর্ম সফটওয়্যার
বিষয়শ্রেণী:উচ্চস্তরের প্রোগ্রামিং ভাষা
বিষয়শ্রেণী:পদ্ধতিমূলক প্রোগ্রামিং ভাষা
বিষয়শ্রেণী:কাঠামোগত প্রোগ্রামিং ভাষা
বিষয়শ্রেণী:১৯৭২-এ নির্মিত প্রোগ্রামিং ভাষা
বিষয়শ্রেণী:সিস্টেম প্রোগ্রামিং ভাষা