مسابقه کدنویسی مبهم (Spaghetti contest) همزمان با بیستودومین کنفرانس ملی کامپیوتر ایران بعنوان معتبرترین کنفرانس علمی کشور در حوزه کامپیوتر و فناوری اطلاعات، 23 اسفند ماه جاری در دانشگاه صنعتی شریف برگزار میشود.
در طول تاریخ برنامهنویسی، سبکهای مختلفی برای برنامهنویسی ابداع شدند. روشهای برنامهنویسی ساختیافته، پیمانهای و شیءگرا از معروفترین سبکهای برنامهنویسی بشمار میآیند. اما پیش از همه آنها نخستین سبک برنامهنویسی، برنامهنویسی اسپاگتی نامیده میشد. دورانی که دستور Goto رواج داشت و برنامهها به شدت ناخوانا بودند. زیرا ترتیب اجرای سطرهای برنامه، به دلیل استفاده مکرر از دستور Goto همچون رشتههای اسپاگتی تودرتو و سردرگم بود. به همین دلیل برنامهها عموما کم حجم و پر از خطا بودند. هنگامی که برنامهنویسان برای نجات از این وضع، دستور Goto را منع کردند و سعی کردند بجای آن از حلقههای for وwhile و متغیرهای منطقی (Boolean)استفاده کنند، دوران این سبک برنامهنویسی به پایان رسید و سبک برنامهنویسی ساخت یافته آغاز شد.
هدف از برگزاری مسابقه کدنویسی مبهم، تخمین مهارت شرکتکنندگان در نوشتن کدهای ناخوانا یا در اصطلاح برنامهنویسان همان کد کثیف (Dirty Code) است. یک برنامه را هنگامی ناخوانا مینامیم که اگر کد برنامه را در اختیار برنامهنویس دیگر قرار دهیم و او معنای تک تک دستورات برنامه را بداند، شیوه کنار هم چیده شدن دستورات و پرشهای تودرتوی میان آنها بحدی پیچیده و گیجکننده باشد که برنامهنویس بدون اجرای این برنامه، نتواند سردر آورد که خروجی برنامه چیست؟
هر تیم برای شرکت در مسابقه باید به ناخواناترین شکل ممکن، برنامهای به زبان ++c بنویسد که با هر بار اجرا شدن، رشتهای معین به طول حداقل یک و حداکثر سه کاراکتر را روی صفحه نمایش چاپ کند. این رشته باید همواره ثابت باشد، نه آنکه در هر بار اجرا رشتهای متفاوت چاپ کند و یا اینکه با انتقال به کامپیوتری دیگر، خروجی متفاوتی بدهد.
بر اساس اعلام دبیرخانه مسابقه، تیمها آخرین نسخه برنامههایشان را باید تا پایان وقت اداری تاریخ اعلام شده به داوران تحویل دهند. تیمها میتوانند در طول مدت پیاده سازی کد، برنامهها را به داوران ارائه دهند و توضیحات لازم را دریافت کنند؛ اما اگر پس از اتمام مهلت ارسال کد، این برنامهها از نظر داوران غیراستاندارد باشند، تیم از دور مسابقه حذف میشود. مسابقه طی دو مرحله در صبح و عصر برگزار میشود.
در روز برگزاری مسابقه، در مرحله نخست، تمام تیمهای شرکت کننده با قرعهکشی در چند گروه تقسیم میشوند. در این مرحله هر تیم، برنامه سایر تیمهای هم گروهش را در اختیار میگیرد تا در فرصت مسابقه، خروجی این برنامهها را حدس بزند. در پایان این مرحله، تیمی که خروجی برنامهاش توسط تیمهای کمتری کشف شود، تیم برنده گروه است. در بین تیمهایی که برنامههایشان از این نظر امتیاز مساوی دارند، تیمی برنده است که تعداد کد بیشتری را شکافته باشد و در صورت مساوی بودن تعداد مسائل حل شده، تیمی برنده است که مجموع زمان حل مسائلش کمتر باشد. در مدت مسابقه، هر تیمی که خروجی یک برنامه را حدس بزند، باید حدسش را با داور گروه در میان بگذارد تا داور درستی یا نادرستی حدس را اعلام کند.
در پایان مرحله نخست مسابقه، تیمهای دارای بیشترین امتیاز از هر گروه به مرحله نهایی راه مییابند.
در مرحله نهایی، مسابقه بین تیمهای برگزیده گروهها آغاز میشود. در این مرحله هم مانند مرحله نخست به هر تیم، کد برنامههای تیمهای دیگر داده میشود تا در پایان این مرحله، تیم برنده مسابقه تعیین شود.
علاقهمندان میتوانند جهت کسب اطلاعات بیشتر و ثبتنام به وبسایت https://csicc2017.ir/match مراجعه کرده و یا با شماره تلفنهای 16-66083015 و 5-66028963 تماس بگیرند.