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

آزاد دائرۃ المعارف، ویکیپیڈیا سے
:چھلانگ بطرف رہنمائی، تلاش
سی (C)
Text in light blue serif capital letters on white background and very large light blue sans-serif letter C.
اطار 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، Assembly، PL/I، FORTRAN
موثر Numerous: AMPL، AWK، csh، C++، C--، C#، Objective-C، BitC، D، Go، Rust، Java، جاوا سکرپٹ، Limbo، LPC، Perl، PHP، Pike، Processing، Seed7، Verilog (HDL)
آپریٹنگ سسٹم کراس پلیٹ فارم
توسیع فائل .c, .h

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

تاریخ[ترمیم]

سی پروگرامنگ زبان کو 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. http://www.langpop.com/. Retrieved 16 January 2009.
  2. ^ "TIOBE Programming Community Index". 2009. http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html. Retrieved 6 May 2009.
  3. ^ Ritchie, Dennis M. (January 1993). "The Development of the C Language". http://cm.bell-labs.com/cm/cs/who/dmr/chist.html. Retrieved 1 January 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 — April 12, 2011
  5. ^ Harbison, Samuel P.; Steele, Guy L. (2002). C: A Reference Manual (5th ed.). 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. ^ Kernighan, Brian W.; Ritchie, Dennis M. (1996). The C Programming Language (2nd ed.). Prentice Hall. pp. 192, 259. ISBN 7 302 02412 X.
  8. ^ Klemens, Ben (2013). 21st Century C. O'Reilly Media. ISBN 1-4493-2714-1.