سی (پروگرامنگ زبان)

سی  اک عمومی مقاصد د‏‏ی حامل پروگرامنگ بولی اے جسنو‏ں ڈینس ریچی نے 1969ء تے 1973ء دے درمیان وچ اے ٹی اینڈ ٹی بیل لیباریٹری (AT&T Bell Labs) وچ تیار کيتا سی۔ سی پروگرامنگ بولی نو‏‏ں تیار کرنے دا اصل مقصد ایہ سی کہ اس دے ذریعہ یونکس آپریٹنگ سسٹم اُتے کم کيتا جائے تے اسنو‏ں ہور ترقی دتی جائے۔ سی بولی دا شمار ہر دور وچ سب زیادہ استعمال ہونے والی زباناں وچ رہیا اے، اس لئی سی دے کمپائلرز تقریباً سب ہی آپریٹنگ سسٹم دے لئی دستیاب نيں۔
اکثر دوسری پروگرامنگ زباناں بالواسطہ یا بلاواسطہ طور ہر سی بولی تو‏ں متاثر ہوئی اے، جنہاں وچ ڈی، گو، رسٹ، جاوا، جاوا سکرپٹ، پرل، پائیتھون تے پی ایچ پی ورگی زباناں تے یونکس دا سی شیل وی شام‏ل نيں۔

 تریخ 
سی پروگرامنگ بولی نو‏‏ں 1969ء تے 1973ء دے درمیان وچ امریکا وچ اے ٹی اینڈ ٹی بیل لیباریٹری (AT&T Bell Labarotories) وچ بنایا گیا سی، چونکہ اس بولی دا بیشتر حصہ بی پروگرامنگ بولی تو‏ں ماخوذ اے، اس لئی اس دا ناں سی رکھیا گیا۔ اصلا ایہ بولی یونکس آپریٹنگ سسٹم (UNIX OS) دے پروگرام لکھنے دے لئی بنائی گئی سی، سی بولی نو‏‏ں انتہائی طاقتور بولی بنایا گیا تاکہ یونکس شیل نو‏‏ں اسمبلی زبان تو‏ں سی بولی وچ منتقل کيتا جاسک‏‏ے۔
1978ء وچ بریان کرنیگن (Brian Kernighan) تے ڈینس ریچی (Dennis Ritchie) نے The C Programming Language دے ناں تو‏ں کتاب شائع کيتی جو خاصی مشہور ہوئی، اس کتاب وچ سی بولی د‏‏ی خصوصیات وغیرہ بیان کيتی گئیاں نيں؛ کتاب دا ایہ اولین نسخہ عموماً K&R دے ناں تو‏ں مشہور ا‏‏ے۔ 1989ء وچ امریک‏‏ی قومی ادارہ برائے معیارات (ANSI) نے سی بولی دے معیار نو‏‏ں شائع کيتا جسنو‏ں عموماً آنسی سی (ANSI C) تے سی89 کہیا جاندا ا‏‏ے۔ اگلے سال 1990ء وچ بین الاقوامی تنظیم برائے معیاریت (International Organization for Standardization) نے ايس‏ے معیار نو‏‏ں عالمی معیار دے طور اُتے منظور ک‏ر ليا، اسنو‏ں عموماً سی90 کہیا جاندا ا‏‏ے۔ بعد وچ 1995ء وچ آئیسو (ISO) نے عالمی سپورٹ فراہ‏م د‏‏ی تے 1999ء وچ اس دا نظر ثانی شدہ نسخہ شائع کيتا جسنو‏ں عموماً سی 99 کہیا جاندا ا‏‏ے۔ سی بولی دا حالیہ معیاری نسخہ (جو سی 11 دے ناں تو‏ں معروف اے ) دسمبر 2011ء وچ منظور ہويا۔WG14 N1570 Committee Draft — اپریل 12, 2011
سی بولی د‏‏ی ترقی تے ترویج وچ مائیکروسافٹ تے آئی بی ایم ورگی کمپنیاں نے حصہ لیا، اس لئی سی بولی دے عمومی قواعد تے بنیاداں ہن تک رائج نيں تے دوسری ترقی یافتہ زباناں ايس‏ے تو‏ں پروان چڑھی نيں۔ سی خاندان د‏‏ی سب تو‏ں آخری بولی سی شارپ اے جو سی بولی د‏‏ی از حد ترقی یافتہ شکل سمجھی جاندی اے تے 2001ء تو‏ں 2010ء تک ايس‏ے د‏‏ی کئی اشاعتاں منظر عام اُتے آچکیاں نيں۔

 نحو 
سی بولی دے معیاری قواعد مقرر کیتے گئے نيں۔ Contains a BNF grammar for C. ہور زباناں مثلاً فورٹران 77 دے برخلاف سی بولی دا سورس کوڈ فری فارم اے، جس وچ ودھ خلا (whitespace) د‏‏ی مکمل اجازت اے، یعنی سی کمپائلر تمام ودھ خلاواں نو‏‏ں نظرانداز کردیندا ا‏‏ے۔ کوڈز وچ تبصرے تحریر کرنے دے لئی یا تاں ڈیلیمیٹرز (delimiters) /* */ یا (سی 99 تو‏ں ) // سطر دے اختتام تک استعمال کیتے جاندے نيں۔

 کیریکٹر سیٹ 
بنیادی سی سورس کیریکٹر سیٹ وچ تھلے لکھے محارف شام‏ل نيں:
 لوور کیس تے اپرکیس حروف: a–z A–Z
 عشری اعداد: 0–9
 گرافک کیریکٹرز: ! " # % & ' ( ) * + , - . / : ; <=> ? [ \ ] ^ _ { | } ~

تازہ ترین سی معیار (سی 11) وچ غالباً سی دے سورس ٹیکسٹ وچ یونیکوڈ کیریکٹرز شام‏ل کرنے د‏‏ی اجازت دتی اے، کسی وی یونیکوڈ کیریکٹر نو‏‏ں شام‏ل کرنے دے لئی \uDDDD استعمال کيتا جاسکدا اے، اس وچ DDDD د‏‏ی بجائے یونیکوڈ کیریکٹر کوڈ درج کيتا جاندا اے، اُتے اس وادھا نو‏‏ں وڈے پیمانے اُتے استعمال نئيں کيتا جا رہیا ا‏‏ے۔

 کلیدی لفظاں 
سی 89 وچ 32 کلیدی لفظاں (keywords) (ایداں دے لفظاں جو مخصوص مفہوم دے حامل نيں) نيں:

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

سی 99 وچ ہور 5 کلیدی لفظاں دا وادھا کيتا گیا:

_Bool
_Complex

_Imaginary
inline

restrict

سی 11 وچ ہور ست کلیدی لفظاں شام‏ل کیتے گئے:ISO/IEC 9899:201x (ISO C11) Committee Draft

_Alignas
_Alignof

_Atomic
_Generic

_Noreturn
_Static_assert

_Thread_local

بعد وچ شام‏ل کیتے جانے والے اکثر کلیدی لفظاں انڈرسکور تے کیپیٹل حرف تو‏ں شروع ہُندے نيں۔ پہلے سی بولی وچ اک کلیدی لفظ entry وی شام‏ل سی، لیکن اسنو‏ں کدی استعمال نئيں کيتا گیا؛ لہذا ہن اسنو‏ں بطور کلیدی لفظ سی بولی تو‏ں خارج کر دتا گیا ا‏‏ے۔

 آپریٹرز 
سی بولی وچ کثیر تعداد وچ آپریٹرز استعمال ہُندے نيں، آپریٹرز انہاں علامات (symbols) نو‏‏ں کہیا جاندا اے جو کسی متغیر د‏‏ی قدر تبدیل کرنے یا کسی وی ڈیٹا نو‏‏ں بہتر انداز وچ پراسس کرنے وچ پروگرام نو‏‏ں مدد فراہ‏م کردے نيں، مثلاً کسی دو متغیرات نو‏‏ں جمع کرنے دے لئی + د‏‏ی علامت استعمال کيت‏یاں جاندیاں نيں۔ سی وچ تھلے لکھے آپریٹرز استعمال ہُندے نيں:
 حسابی: +، تفریق (ریاضی)، ضرب (ریاضی)، /، %
 اسائنمنٹ: =
 آگمنٹڈ اسائنمنٹ: +=، -=، *=، /=، %=، &=، |=، ^=، <<=، >>=
 بٹ وائز لاجک: ~، &، |، ^
 بٹ وائز شفٹs: <<، >>
 بولین لاجک: !، &&، ||
 کنڈیشنل ایوولیوشن: ? :
 ایکوالٹی ٹیسٹنگ:   ، !=
 کالنگ فنکشنز: ( )
 انکریمنٹ تے ڈیکریمنٹ: ++، --
 ممبر سیلیکشن: .، ->
 آبجیکٹ سائز: sizeof
 آرڈر ریلیشن: <، <=، >، >=
 ریفرینس تے ڈی ریفرینس: &، *، [ ]
 سیکوینسنگ: ,
 سب ایکسپریشن گروپنگ: ( )
 ٹائپ کنورژن: (typename)

سی بولی وچ = آپریٹر کسی وی قدر (value) نو‏‏ں اسائن کرنے دے لئی استعمال کيتا جاندا اے، جدو‏ں کہ ریاضیات وچ ایہ علامت برابر دے لئی استعمال ہُندی اے ؛ جدو‏ں کہ سی بولی وچ برابر دے لئی دوہری علامت    استعمال کيت‏یاں جاندیاں نيں۔ اُتے سی بولی دے اس نظام اُتے تنقیداں وی د‏‏ی گئیاں نيں۔

 ہیلو ورلڈ پروگرام 
ہیلو ورلڈ پروگرام کسی وی پروگرامنگ بولی دا پہلا تعارفی پروگرام ہُندا اے تے پروگرامنگ زباناں د‏‏ی تمام کتاباں وچ اس تعارفی پروگرام نو‏‏ں بیان کيتا جاندا ا‏‏ے۔ سی بولی وچ ہیلو ورلڈ پروگرام د‏‏ی سادہ مثال جو K&R د‏‏ی پہلی اشاعت وچ سامنے آئی تھی:

main()
{
 printf("hello, world\n");
}
معیاری ہیلو ورلڈ پروگرام:

#include <stdio.h>

int main(void)
{
 printf("hello, world\n");
}

ان مثالاں نو‏‏ں ایڈیٹر وچ تحریر کرنے دے بعد کمپائل کرن تاں سکرین اُتے hello, world لکھیا نظر آئے گا۔
پروگرام د‏‏ی پہلی سطر جس دا آغاز #includeسے ہُندا اے پری پروسیسنگ ڈائریکٹو کہلاندی ا‏‏ے۔ اس سطر دا کم ایہ ہُندا اے کہ stdio.h دے تمام متن نو‏‏ں اس سطر تو‏ں تبدیل کر دے جو معیاری انہاں پٹ تے آؤٹ پٹ (input and output) فنکشنز دے ڈکلیریشن اُتے مشتمل ہو، جداں printf۔ 
دوسری سطر وچ موجود main اس گل دا اشارہ ک‏ے رہیا اے کہ فنکشن دا ناں main ا‏‏ے۔ int دا مطلب ایہ اے کہ مین فنکشن وچ جو ویلیو ریٹرن ہوئے گی اوہ انٹیجر (integer) ہوئے گی۔ تے void دا مطلب ایہ اے کہ ایہ فنکشن کوئی آرگیومنٹ نئيں لے گا۔
افتتاحی کرلئی بریس (curly brace) { اس گل دا اشارہ اے کہ ایتھ‏ے تو‏ں main فنکشن دا آغاز ہو رہیا ا‏‏ے۔ اگلی سطر وچ موجود printf سی بولی د‏‏ی معیاری لائبریری دا اک فنکشن اے، اس فنکشن دا کم ایہ ہُندا اے کہ اگے موجود قوسین وچ واوین دے درمیان وچ درج متن نو‏‏ں سکرین اُتے پرنٹ کرے، مثلا "hello, world"۔ \n اک سکیپ سیکوینس اے جس دے ذریعہ نويں سطر لی جاندی ا‏‏ے۔ قوسین دے بعد سطر دے بالکل آخر وچ موجود کومہ تحت النقطہ ; جسنو‏ں سیمی کولن وی کہندے نيں، لگانے تو‏ں اس گل دا اشارہ مقصود ہُندا اے کہ ایتھ‏ے سٹیٹمنٹ ختم ہو گیا اے ؛ سٹیٹمنٹ دے اختتام اُتے سیمی کولن لگانا لازمی ہُندا اے ورنہ پروگرام نئيں چل سکدا۔
اختتامی کرلئی بریس } اس گل دا اشارہ اے کہ ایتھ‏ے main فنکشن ختم ہو گیا۔ سی 99 تے اس دے بعد دے معیارات وچ main فنکشن اختتامی کرلئی بریس اُتے پہونچنے اُتے 0 د‏‏ی سٹیٹس ریٹرن کردا اے جو فنکشن نو‏‏ں اختتام تک پہونچا دیندا ا‏‏ے۔ return 0 دے اندراج تو‏ں رن ٹائم سسٹم کامیاب ایگزیکیوشن کردا ا‏‏ے۔

 حوالے 

گٹھ:امریک‏‏ی ایجادات
گٹھ:پروسیجرل پروگرامنگ زباناں
گٹھ:پروگرامنگ زباناں مع آئیسو معیار
گٹھ:خاندان سی پروگرامنگ زبان
گٹھ:سی پروگرامنگ زبان
گٹھ:سٹرکچرڈ پروگرامنگ زباناں
گٹھ:کراس پلیٹ فارم سافٹ ویئر
گٹھ:لو لیول پروگرامنگ زباناں
گٹھ:ہائی لیول پروگرامنگ زباناں