Competitive programming
مسابقتی پروگرامنگ ایک دماغی کھیل ہے جس میں شرکاء فراہم کردہ وضاحتیں کے مطابق پروگرام کرنے کی کوشش کرتے ہیں۔ مقابلے عام طور پر انٹرنیٹ یا مقامی نیٹ ورک پر منعقد ہوتے ہیں۔ مقابلہ کرنے والوں کو اسپورٹس پروگرامر کہا جاتا ہے۔ مسابقتی پروگرامنگ کو کئی کثیر القومی سافٹ ویئر اور انٹرنیٹ کمپنیوں، جیسے گوگل اور فیس بک نے تسلیم کیا ہے اور اس کی حمایت کی ہے۔ پروگرامنگ مقابلے میں عام طور پر میزبان شامل ہوتا ہے جو منطقی یا ریاضیاتی مسائل کا ایک مجموعہ پیش کرتا ہے، جسے پہیلیاں یا چیلنجز بھی کہا جاتا ہے، مقابلہ کرنے والوں کے سامنے (جو تعداد میں دسیوں یا سینکڑوں سے لے کر کئی ہزار تک مختلف ہو سکتے ہیں)۔ مقابلہ کرنے والوں کو ان مسائل کو حل کرنے کے قابل کمپیوٹر پروگرام لکھنے کی ضرورت ہے۔ فیصلہ زیادہ تر حل شدہ مسائل کی تعداد اور کامیاب حل لکھنے میں گزارے گئے وقت پر مبنی ہوتا ہے، لیکن اس میں دیگر عوامل بھی شامل ہو سکتے ہیں (پیدا شدہ آؤٹ پٹ کا معیار، عمل درآمد کا وقت، میموری کا استعمال، پروگرام کا سائز وغیرہ)۔ تاریخ معروف قدیم ترین مقابلوں میں سے ایک انٹرنیشنل کالجئیٹ پروگرامنگ مقابلہ (آئی سی پی سی) ہے جس کی ابتدا 1970 کی دہائی میں ہوئی تھی اور اس کے 2011 کے ایڈیشن میں 88 ممالک کو شامل کیا گیا ہے۔ 1990 سے 1994 تک، اوون استراچن، وویک کھیرا اور ڈیوڈ کوٹز نے آئی سی پی سی سے متاثر پہلے تقسیم شدہ، انٹرنیٹ پر مبنی پروگرامنگ مقابلوں میں سے ایک چلایا۔ مسابقتی پروگرامنگ میں دلچسپی 2000 کے بعد سے بڑے پیمانے پر بڑھ کر دسیوں ہزار شرکاء تک پہنچ گئی ہے (قابل ذکر مقابلے دیکھیں)، اور انٹرنیٹ کی ترقی سے مضبوطی سے جڑی ہوئی ہے، جو جغرافیائی مسائل کو ختم کرتے ہوئے آن لائن بین الاقوامی مقابلوں کے انعقاد میں سہولت فراہم کرتی ہے۔ جائزہ مسابقتی پروگرامنگ کا مقصد کمپیوٹر پروگراموں کا سورس کوڈ لکھنا ہے جو دیئے گئے مسائل کو حل کرنے کے قابل ہیں۔ پروگرامنگ مقابلوں میں ظاہر ہونے والے مسائل کی اکثریت ریاضیاتی یا منطقی نوعیت کی ہوتی ہے۔ عام طور پر اس طرح کے کاموں کا تعلق درج ذیل زمروں میں سے کسی ایک سے ہوتا ہے: امتزاج، نمبر تھیوری، گراف تھیوری، الگورتھمک گیم تھیوری، کمپیوٹیشنل جیومیٹری، سٹرنگ تجزیہ اور ڈیٹا ڈھانچے۔ بعض مقابلوں میں رکاوٹ پروگرامنگ اور مصنوعی ذہانت سے متعلق مسائل بھی مقبول ہیں۔ مسئلہ کے زمرے سے قطع نظر، کسی مسئلے کو حل کرنے کے عمل کو دو وسیع مراحل میں تقسیم کیا جا سکتا ہے: ایک موثر الگورتھم کی تعمیر، اور الگورتھم کو مناسب پروگرامنگ زبان میں نافذ کرنا (اجازت شدہ پروگرامنگ زبانوں کا مجموعہ مقابلہ سے مقابلہ میں مختلف ہوتا ہے)۔ پروگرامنگ مقابلوں میں یہ دو سب سے زیادہ جانچ کی جانے والی مہارتیں ہیں۔ زیادہ تر مقابلوں میں فیصلہ خود بخود میزبان مشینوں کے ذریعے کیا جاتا ہے، جنہیں عام طور پر جج کہا جاتا ہے۔ ایک مدمقابل کی طرف سے پیش کردہ ہر حل جج پر (عام طور پر خفیہ) ٹیسٹ کے مقدمات کے ایک سیٹ کے خلاف چلایا جاتا ہے۔ عام طور پر، مقابلہ کے مسائل میں تمام یا کوئی نہیں مارکنگ کا نظام ہوتا ہے، جس کا مطلب ہے کہ حل صرف اس صورت میں "قبول" کیا جاتا ہے جب وہ جج کے زیر انتظام تمام ٹیسٹ کے معاملات پر تسلی بخش نتائج پیش کرتا ہے، اور بصورت دیگر اسے مسترد کر دیا جاتا ہے۔ تاہم، کچھ مقابلے کے مسائل جزوی اسکورنگ کی اجازت دے سکتے ہیں، جو ٹیسٹ کے پاس ہونے والے کیسوں کی تعداد، نتائج کے معیار، یا کچھ دیگر مخصوص معیار پر منحصر ہے۔ کچھ دوسرے مقابلوں میں صرف یہ ضروری ہوتا ہے کہ مدمقابل دیئے گئے ان پٹ ڈیٹا کے مطابق آؤٹ پٹ جمع کرے، ایسی صورت میں جج کو صرف جمع کردہ آؤٹ پٹ ڈیٹا کا تجزیہ کرنا ہوتا ہے۔ آن لائن جج آن لائن ماحول ہوتے ہیں جن میں جانچ ہوتی ہے۔ آن لائن ججوں کے پاس رینک کی فہرستیں ہوتی ہیں جن میں صارفین کو قبول شدہ حل کی سب سے بڑی تعداد اور/یا کسی خاص مسئلے کے لیے عمل درآمد کا سب سے کم وقت دکھایا جاتا ہے۔ نمایاں مقابلے الگورتھم مقابلے مذکورہ بالا زیادہ تر مقابلوں میں، مقابلے عام طور پر کئی راؤنڈز میں منعقد کیے جاتے ہیں۔ وہ عام طور پر آن لائن راؤنڈز سے شروع ہوتے ہیں، جو آن سائٹ فائنل راؤنڈ میں ختم ہوتے ہیں۔ آئی او آئی اور آئی سی پی سی میں اعلی کارکردگی کا مظاہرہ کرنے والوں کو سونے، چاندی اور کانسی کے تمغے ملتے ہیں۔ دوسرے مقابلوں میں ٹاپ فائنشروں کو نقد انعامات دیے جاتے ہیں۔ یہ مقابلے متعدد سافٹ ویئر اور انٹرنیٹ کمپنیوں کے بھرتی کرنے والوں کی دلچسپی کو بھی اپنی طرف متوجہ کرتے ہیں، جو اکثر ممکنہ ملازمت کی پیشکش کے ساتھ حریفوں تک پہنچتے ہیں۔ مصنوعی ذہانت اور مشین لرننگ کیگل-ڈیٹا سائنس اور مشین لرننگ مقابلے۔ کوڈ کپ-بورڈ گیم اے آئی مقابلہ 2003 سے ہر سال منعقد ہوتا ہے۔ گیم کے قواعد ستمبر میں شائع ہوتے ہیں اور فائنل ٹورنامنٹ جنوری میں منعقد ہوتا ہے۔ گوگل اے آئی چیلنج-2009 سے 2011 تک چلنے والے طلباء کے لیے دو سالہ مقابلے۔ ہیلائٹ-ٹو سگما، کارنیل ٹیک، اور گوگل کے زیر اہتمام ایک اے آئی پروگرامنگ چیلنج۔ روسی اے آئی کپ-اوپن آرٹیفیشل انٹیلی جنس پروگرامنگ مقابلہ۔ کوڈن گیم-موسمی بوٹ پروگرامنگ مقابلوں کی میزبانی کرتا ہے۔ اوپن سورس ٹیکنالوجیز کی فہرست پر توجہ مرکوز کرنے والے مقابلے نامکمل آن لائن پلیٹ فارم ہو سکتے ہیں۔ دنیا بھر میں پروگرامنگ کمیونٹی نے مسابقتی پروگرامنگ کے لیے وقف کئی انٹرنیٹ وسائل بنائے اور برقرار رکھے ہیں۔ وہ معمولی انعامات کے ساتھ یا اس کے بغیر الگ الگ مقابلے پیش کرتے ہیں۔ نیز مسائل کے ماضی کے آرکائیوز مسابقتی پروگرامنگ میں تربیت کے لیے ایک مقبول وسیلہ ہیں۔ ایسی کئی تنظیمیں ہیں جو باقاعدگی سے پروگرامنگ مقابلوں کی میزبانی کرتی ہیں۔ ان میں شامل ہیں: فوائد اور تنقید پروگرامنگ مقابلوں میں شرکت کمپیوٹر سائنس کی تعلیم کے لیے طلباء کے جوش و خروش میں اضافہ کر سکتی ہے۔ آئی سی پی سی جیسے پروگرامنگ مقابلوں میں حاصل کردہ مہارتیں بھی کیریئر کے امکانات کو بہتر بناتی ہیں، کیونکہ وہ "تکنیکی انٹرویوز" کو پاس کرنے میں مدد کرتی ہیں، جس میں اکثر امیدواروں کو پیچیدہ پروگرامنگ اور الگورتھمک مسائل کو موقع پر ہی حل کرنے کی ضرورت ہوتی ہے۔ مسابقتی پروگرامنگ پر بھی تنقید کی گئی ہے، خاص طور پر پیشہ ور سافٹ ویئر ڈویلپرز کی طرف سے۔ ایک اہم نکتہ یہ ہے کہ بہت سے تیز رفتار پروگرامنگ مقابلے حریفوں کو پروگرامنگ کی خراب عادات اور کوڈ اسٹائل سکھاتے ہیں (جیسے میکرو کا غیر ضروری استعمال، او او پی تجریدی اور تبصروں کی کمی، مختصر متغیر ناموں کا استعمال وغیرہ)۔ نیز، نسبتا مختصر حل کے ساتھ صرف چھوٹے الگورتھمک پہیلیاں پیش کرنے سے، آئی سی پی سی اور آئی او آئی جیسے پروگرامنگ مقابلے ضروری نہیں کہ سافٹ ویئر انجینئرنگ کی اچھی مہارتیں اور طریق کار سکھائیں، کیونکہ حقیقی سافٹ ویئر پروجیکٹس میں عام طور پر کوڈ کی ہزاروں لائنیں ہوتی ہیں اور طویل عرصے میں بڑی ٹیموں کے ذریعہ تیار کی جاتی ہیں۔ پیٹر نوروگ نے کہا کہ دستیاب اعداد و شمار کی بنیاد پر، پروگرامنگ مقابلوں کے فاتح ہونے کا تعلق گوگل میں اپنے کام میں پروگرامر کی کارکردگی سے منفی طور پر ہے (حالانکہ مقابلہ جیتنے والوں کی خدمات حاصل کرنے کے زیادہ امکانات تھے)۔ نوروگ نے بعد میں کہا کہ یہ ارتباط ایک چھوٹے ڈیٹا سیٹ پر مشاہدہ کیا گیا تھا، لیکن بڑے ڈیٹا سیٹ کی جانچ پڑتال کے بعد اس کی تصدیق نہیں کی جا سکی۔ پھر بھی ایک اور جذبات یہ ہے کہ معروف حل کے ساتھ مسائل کو حل کرکے ضرورت سے زیادہ مسابقت پر اپنا وقت ضائع کرنے کے بجائے، ہائی پروفائل پروگرامرز کو حقیقی دنیا کے مسائل کو حل کرنے میں اپنا وقت لگانا چاہیے۔ ادب حلیم، ایس۔ حلیم، ایف۔ (2013)۔ مسابقتی پروگرامنگ 3: پروگرامنگ مقابلوں کی نئی نچلی حد۔ لولو۔ لاکسونن، اے۔ (2017)۔ گائیڈ ٹو کمپٹیٹیو پروگرامنگ (کمپیوٹر سائنس میں انڈرگریجویٹ موضوعات)۔ چام: سپرنگر انٹرنیشنل پبلشنگ۔ زو، ایکس۔ (2020) انفارمیٹکس میں اولمپک کی ترقی، خوشحالی اور زوال۔ آن لائن شائع ہوا۔ کوسٹکا، بی۔ (2021)۔ عملی طور پر اسپورٹس پروگرامنگ۔ یونیورسٹی آف وروکلا۔ یہ بھی دیکھیں: زمرہ: کمپیوٹر سائنس کے مقابلے کوڈ گولف ہیکاتھون حوالہ جات بیرونی روابط مقابلہ چلانے کے لیے اوپن سورس پروجیکٹ مقابلہ مینجمنٹ سسٹم سرور IOI 2012 اور IOI 2013 پر پروگرامنگ مقابلہ چلانے اور اس کا انتظام کرنے کے لیے ازگر میں اوپن سورس ٹول۔ کمپیوٹر سائنس کے مقابلے