C--
سی-(تلفظ سی مائنس مائنس) ایک سی جیسی پروگرامنگ زبان ہے، جسے بنیادی طور پر انسانی پروگرامرز کے ذریعے لکھے جانے کے بجائے اعلی سطح کی زبانوں کے لیے مرتب کرنے والوں کے ذریعے تیار کیا گیا ہے۔ اسے فنکشنل پروگرامنگ کے محققین سائمن پیٹن جونز اور نارمن رمسی نے بنایا تھا۔ بہت سی دوسری انٹرمیڈیٹ زبانوں کے برعکس، اس کی نمائندگی سادہ ASCII متن میں کی جاتی ہے، نہ کہ بائٹ کوڈ یا کسی اور بائنری فارمیٹ میں۔ دو اہم شاخیں ہیں: سی -، اصل شاخ، حتمی ورژن 2 کے ساتھ مئی 2005 میں جاری کیا گیا سی ایم ایم، کانٹا جو گلاسگو ہاسکل مرتب (جی ایچ سی) ڈیزائن سی میں انٹرمیڈیٹ نمائندگی (آئی آر) کے طور پر فعال طور پر استعمال ہوتا ہے-ایک "پورٹیبل اسمبلی زبان" ہے، جو اعلی معیار کے مشین کوڈ تیار کرنے والے مرتب کرنے والوں کے نفاذ کو آسان بنانے کے لیے ڈیزائن کیا گیا ہے۔ یہ کم سطح کے کوڈ جنریشن اور پروگرام کی اصلاح کو سی مرتب کرنے والے کو تفویض کرکے کیا جاتا ہے۔ زبان کا نحو سی سے بہت زیادہ ادھار لیتا ہے جبکہ معیاری سی خصوصیات جیسے متغیر افعال، پوائنٹر نحو، اور سی کے ٹائپ سسٹم کے پہلوؤں کو خارج یا تبدیل کرتا ہے، کیونکہ وہ سی کی ضروری خصوصیات اور کوڈ بنانے میں آسانی میں رکاوٹ ڈالتے ہیں۔ زبان کا نام ایک مذاق ہے، جس سے یہ ظاہر ہوتا ہے کہ سی-- سی کی ایک کم شدہ شکل ہے، اسی طرح جیسے "سی + +" کو سی کے بہتر ورژن کو ظاہر کرنے کے لیے منتخب کیا گیا تھا۔ (سی میں،-- اور + + کا مطلب بالترتیب "کمی" اور "اضافہ" ہے۔) سی-پر کام 1990 کی دہائی کے آخر میں شروع ہوا۔ چونکہ کسٹم کوڈ جنریٹر لکھنا اپنے آپ میں ایک چیلنج ہے، اور اس وقت محققین کے لیے دستیاب کمپائلر بیک اینڈ پیچیدہ اور ناقص طور پر دستاویزی تھے، اس لیے کئی پروجیکٹوں میں مرتب کرنے والے لکھے گئے تھے جو سی کوڈ تیار کرتے تھے (مثال کے طور پر، اصل ماڈیولا-3 مرتب کرنے والا)۔ تاہم، فنکشنل زبانوں کے لیے سی ایک ناقص انتخاب ہے: یہ ٹیل کال کو بہتر بنانے کی ضمانت نہیں دیتا، یا کچرا جمع کرنے یا مستثنی ہینڈلنگ کی درست حمایت نہیں کرتا ہے۔ سی-- سی کا ایک سخت وضاحت شدہ آسان متبادل ہے جو ان سب کی حمایت کرتا ہے۔ اس کی سب سے جدید خصوصیت ایک رن ٹائم انٹرفیس ہے جو پورٹیبل کچرا جمع کرنے والوں، مستثنی ہینڈلنگ سسٹم اور دیگر رن ٹائم خصوصیات کو لکھنے کی اجازت دیتا ہے جو کسی بھی سی مرتب کے ساتھ کام کرتے ہیں۔ سی-کا پہلا ورژن اپریل 1998 میں ایم ایس آر اے پیپر کے طور پر جاری کیا گیا تھا، جس کے ساتھ جنوری 1999 میں کچرا اکٹھا کرنے پر ایک پیپر بھی تھا۔ مئی 1999 میں ایچ ٹی ایم ایل کی شکل میں ایک نظر ثانی شدہ دستی پوسٹ کیا گیا تھا۔ 2000 میں نارمن رمسی ("مجوزہ تبدیلیاں") اور کرسچن لنڈگ ("ایک نیا گرامر") کی طرف سے تجویز کردہ بڑی تبدیلیوں کے دو سیٹ سی-ورژن 2 کا باعث بنے، جسے 2004 کے آس پاس حتمی شکل دی گئی اور 2005 میں باضابطہ طور پر جاری کیا گیا۔ ٹائپ سسٹم سی-ٹائپ سسٹم اعلی سطح کی زبانوں کے ذریعہ عائد کردہ کنونشنوں کے بجائے ہارڈ ویئر کے ذریعہ عائد کردہ رکاوٹوں کی عکاسی کرنے کے لیے ڈیزائن کیا گیا ہے۔ رجسٹر یا میموری میں محفوظ کردہ قدر کی صرف ایک قسم ہو سکتی ہے: بٹ ویکٹر۔ تاہم، بٹ ویکٹر ایک پولیمرفک قسم ہے جو کئی چوڑائیوں میں آتی ہے، جیسے۔ ،، یا۔ فلوٹنگ پوائنٹ اقسام کے ایک علیحدہ 32 یا 64 بٹ خاندان کی حمایت کی جاتی ہے۔ بٹ ویکٹر ٹائپ کے علاوہ، سی-ایک بولین ٹائپ فراہم کرتا ہے، جس کا حساب تاثرات کے ذریعے لگایا جا سکتا ہے اور کنٹرول فلو کے لیے استعمال کیا جا سکتا ہے لیکن اسے رجسٹر یا میموری میں محفوظ نہیں کیا جا سکتا۔ جیسا کہ اسمبلی زبان میں، کوئی بھی اعلی قسم کا نظم و ضبط، جیسے دستخط شدہ، غیر دستخط شدہ، فلوٹ، اور پوائنٹر کے درمیان فرق، سی-آپریٹرز یا دیگر نحو تعمیرات کے ذریعہ عائد کیا جاتا ہے۔ سی-ٹائپ چیک نہیں کیا جاتا ہے، اور نہ ہی یہ کالنگ کنونشن کو نافذ یا چیک کرتا ہے۔ سی-ورژن 2 بٹ ویکٹر اور فلوٹنگ پوائنٹ کی اقسام کے درمیان فرق کو دور کرتا ہے۔ ان اقسام کو دیگر چیزوں کے علاوہ، متغیر کے عدد بمقابلہ فلوٹ ٹائپنگ اور اس کے اسٹوریج رویے (عالمی یا مقامی) میں فرق کرنے کے لیے سٹرنگ "قسم" ٹیگ کے ساتھ تشریح کی جا سکتی ہے۔ سابقہ ان اہداف پر مفید ہے جن میں انٹیجر اور فلوٹنگ پوائنٹ ویلیوز کے لیے الگ الگ رجسٹر ہوتے ہیں۔ پوائنٹرز اور مقامی لفظ کے لیے خصوصی اقسام متعارف کرائی گئیں، حالانکہ انہیں ہدف پر منحصر لمبائی کے ساتھ بٹ ویکٹر پر نقشہ بنایا گیا ہے۔ مثال کوڈ مندرجہ ذیل C-کوڈ 1 سے n تک کے انٹیجرز کے مجموعے اور پروڈکٹ کا حساب لگاتا ہے (n ایک دلیل کے طور پر موصول ہوتا ہے)۔ یہ زبان کی دو خصوصیات کو ظاہر کرتا ہے: طریقہ کار متعدد نتائج دے سکتے ہیں۔ "جمپ" کلیدی لفظ کے ساتھ دم کی تکرار کی واضح طور پر درخواست کی جاتی ہے۔ / * ٹیل ریکرشن */ایکسپورٹ ایس پی 2 ؛ ایس پی 2 (بٹس 32 این) {جمپ ایس پی 2 _ ہیلپ (این، 1، 1) ؛} ایس پی 2 _ ہیلپ (بٹس 32 این، بٹس 32 ایس، بٹس 32 پی) {اگر این = = 1 {ریٹرن (ایس، پی) ؛} بصورت دیگر {جمپ ایس پی 2 _ ہیلپ (این-1، ایس + این، پی * این) ؛} نفاذ سی کے تفصیلات کے صفحے میں سی-کے کچھ نفاذ کی فہرست دی گئی ہے۔ "سب سے زیادہ فعال طور پر تیار کردہ" مرتب، فوری سی--، کو 2013 میں ترک کر دیا گیا تھا۔ ہاسکل سی کے کچھ ڈویلپرز، بشمول سائمن پیٹن جونز، جواؤ ڈیاس، اور نارمن رمسی، کام کرتے ہیں یا جی ایچ سی پر کام کیا ہے، جس کی ترقی سی-زبان میں توسیع کا باعث بنی ہے، جس سے سی ایم ایم بولی بنتی ہے جو ایرگونومکس کے لیے سی پری پروسیسر کا استعمال کرتی ہے۔ جی ایچ سی بیک اینڈ سی کو مزید قابل عمل کوڈ میں تبدیل کرنے کے لیے ذمہ دار ہیں، ایل ایل وی ایم آئی آر، سلو سی، یا براہ راست بلٹ ان نیٹو بیک اینڈ کے ذریعے۔ اصل ارادے کے باوجود، جی ایچ سی سی-- پر اپنی بہت سی عام اصلاحات انجام دیتا ہے۔ دوسرے مرتب کرنے والے آئی آر کی طرح، سی-نمائندگی کو ڈیبگنگ کے لیے ڈمپ کیا جا سکتا ہے۔ ہدف کے لیے مخصوص اصلاحات بعد میں بیک اینڈ کے ذریعے انجام دی جاتی ہیں۔ بی سی پی ایل ایل ایل وی ایم حوالہ جات بیرونی روابط پرانی سرکاری ویب سائٹ کا آرکائیو (cminusminus.org) فوری سی-کوڈ آرکائیو (حوالہ عمل درآمد) سی پروگرامنگ زبان فیملی مرتب بھی دیکھیں۔