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

سی (C)
Text in light blue serif capital letters on white background and very large light blue sans-serif letter C.
دی سی پروگرامنگ زبان (کتاب)(جو "K&R سے مشہور ہے)، سی زبان پر پہلی کتاب۔
پیراڈائمImperative (proceduralstructured
اشاعت1972
ڈیزائنرڈینس ریچی
ترقی دہندہDennis Ritchie & Bell Labs (creators); ANSI X3J11 (ANSI C); ISO/IEC JTC1/SC22/WG14 (ISO C)
مستحکم اشاعتسی 11 (دسمبر 2011)
شعبہ تحریرStatic، weak، manifest، nominal
اہم اطلاقاتGCC، Clang، Intel C، MSVC ، Pelles C، Watcom C
بولیاںCyclone، Unified Parallel C، Split-C، Cilk، C*
متاثربی (BCPL، CPLALGOL 68، اسمبلی زبان، PL/I، FORTRAN
موثرNumerous: AMPL، AWK، csh، سی++، C--، C#، Objective-C، BitC، D، Go، Rust، Java، جاوا سکرپٹ، Limbo، LPC، پرل، پی ایچ پی، Pike، Processing، Seed7، Verilog (HDL)
آپریٹنگ سسٹمکراس پلیٹ فارم
فائل کی توسیع۔c, ۔h

تاریخ

ترمیم

سی پروگرامنگ زبان کو 1969ء اور 1973ء[3] کے درمیان میں امریکا میں اے ٹی اینڈ ٹی بیل لیباریٹری (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ء میں منظور ہوا۔[4]
سی زبان کی ترقی اور ترویج میں مائیکروسافٹ اور آئی بی ایم جیسی کمپنیوں نے حصہ لیا، اس لیے سی زبان کے عمومی قواعد اور بنیادیں اب تک رائج ہیں اور دوسری ترقی یافتہ زبانیں اسی سے پروان چڑھی ہیں۔ سی خاندان کی سب سے آخری زبان سی شارپ ہے جو سی زبان کی از حد ترقی یافتہ شکل سمجھی جاتی ہے اور 2001ء سے 2010ء تک اسی کی کئی اشاعتیں منظر عام پر آچکی ہیں۔

سی زبان کے معیاری قواعد مقرر کیے گئے ہیں۔[5] دیگر زبانوں مثلاً فورٹران 77 کے برخلاف سی زبان کا سورس کوڈ فری فارم ہے، جس میں زائد خلا (whitespace) کی مکمل اجازت ہے، یعنی سی کمپائلر تمام زائد خلاؤں کو نظر انداز کردیتا ہے۔ کوڈز میں تبصرے تحریر کرنے کے لیے یا تو ڈیلیمیٹرز (delimiters) /* */ یا (سی 99 سے ) // سطر کے اختتام تک استعمال کیے جاتے ہیں۔

کیریکٹر سیٹ

ترمیم

بنیادی سی سورس کیریکٹر سیٹ میں درج ذیل محارف شامل ہیں:

  • لوور کیس اور اپرکیس حروف: az AZ
  • عشری اعداد: 09
  • گرافک کیریکٹرز: ! " # % & ' ( ) * + , - . / : ; <=> ? [ \ ] ^ _ { | } ~

تازہ ترین سی معیار (سی 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 میں مزید سات کلیدی الفاظ شامل کیے گئے:[6]

_Alignas
_Alignof
_Atomic
_Generic
_Noreturn
_Static_assert
_Thread_local

بعد میں شامل کیے جانے والے اکثر کلیدی الفاظ انڈرسکور اور کیپیٹل حرف سے شروع ہوتے ہیں۔ پہلے سی زبان میں ایک کلیدی لفظ entry بھی شامل تھا، لیکن اسے کبھی استعمال نہیں کیا گیا؛ لہذا اب اسے بطور کلیدی لفظ سی زبان سے خارج کر دیا گیا ہے۔[7]

آپریٹرز

ترمیم

سی زبان میں کثیر تعداد میں آپریٹرز استعمال ہوتے ہیں، آپریٹرز ان علامات (symbols) کو کہا جاتا ہے جو کسی متغیر کی قدر تبدیل کرنے یا کسی بھی ڈیٹا کو بہتر انداز میں پراسس کرنے میں پروگرام کو مدد فراہم کرتے ہیں، مثلاً کسی دو متغیرات کو جمع کرنے کے لیے + کی علامت استعمال کی جاتی ہیں۔ سی میں درج ذیل آپریٹرز استعمال ہوتے ہیں:

سی زبان میں = آپریٹر کسی بھی قدر (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 کے اندراج سے رن ٹائم سسٹم کامیاب ایگزیکیوشن کرتا ہے۔[8]

حوالہ جات

ترمیم
  1. "Programming Language Popularity"۔ 2009۔ 16 جنوری 2009 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 16 جنوری 2009 
  2. "TIOBE Programming Community Index"۔ 2009۔ 25 دسمبر 2018 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 6 مئی 2009 
  3. Dennis M. Ritchie (جنوری 1993)۔ "The Development of the C Language"۔ 22 جون 2013 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 1 جنوری 2008۔ The scheme of type composition adopted by C owes considerable debt to Algol 68, although it did not, perhaps, emerge in a form that Algol's adherents would approve of. 
  4. WG14 N1570 Committee Draft — اپریل 12, 2011
  5. Samuel P. Harbison، Guy L. Steele (2002)۔ C: A Reference Manual (5th ایڈیشن)۔ Englewood Cliffs, NJ: Prentice Hall۔ ISBN 0-13-089592-X  Contains a BNF grammar for C.
  6. ISO/IEC 9899:201x (ISO C11) Committee Draft
  7. Brian W. Kernighan، Dennis M. Ritchie (1996)۔ The C Programming Language (2nd ایڈیشن)۔ Prentice Hall۔ صفحہ: 192, 259۔ ISBN 7 302 02412 X 
  8. Ben Klemens (2013)۔ 21st Century C۔ O'Reilly Media۔ ISBN 1-4493-2714-1