کدخبر :196925 پرینت
03 اسفند 1395 - 14:17

برگزاری مسابقه کدنویسی مبهم (Spaghetti contest)

مسابقه کدنویسی مبهم (Spaghetti contest) همزمان با بیست و دومین کنفرانس ملی کامپیوتر ایران به عنوان معتبرترین کنفرانس علمی کشور در حوزه کامپیوتر و فناوری اطلاعات، در تاریخ 23 اسفندماه 1395 در دانشگاه صنعتی شریف برگزار می شود.

متن خبر

به گزارش گروه دریافت خبر سیتنا، در طول تاریخ برنامه نویسی، سبک های مختلفی برای برنامه نویسی ابداع شدند. روشهای برنامه نویسی ساخت یافته، پیمانه ای و شی گرا از معروفترین سبک های برنامه نویسی بشمار می آیند، اما پیش از همه آنها نخستین سبک برنامه نویسی، برنامه نویسی اسپاگتی نامیده می شد. دورانی که دستور Go to رواج داشت و برنامه ها به شدت ناخوانا بودند. زیرا ترتیب اجرای سطرهای برنامه، به دلیل استفاده مکرر از دستور Go to همچون رشته های اسپاگتی تو درتو و سردرگم بود. به همین دلیل برنامه ها عموما کم حجم و پر از خطا بودند. هنگامی که برنامه نویسان برای نجات از این وضع، دستور Go to را منع کردند و سعی کردند بجای آن از حلقه های for و while  و  متغیرهای منطقی (Boolean) استفاده کنند دوران این سبک برنامه نویسی به پایان رسید و سبک برنامهن ویسی ساخت یافته آغاز شد.

اما این مسابقه. هدف از آن، تخمین مهارت شرکت کنندگان در نوشتن کدهای ناخوانا یا در اصطلاح برنامه نویسان همان کد کثیف ( Dirty Code) است. یک برنامه را هنگامی ناخوانا می نامیم که اگر کد برنامه در اختیار برنامه- نویس دیگر قرار دهیم و او معنای تک تک دستورات برنامه را بداند، شیوه کنار هم چیده شدن دستورات و پرش های تو در توی میان آنها بحدی پیچیده و گیج کننده باشد که برنامه نویس بدون اجرای این برنامه، نتواند سردر آورد که خروجی برنامه چیست؟

سوال مسابقه
هر تیم برای شرکت در مسابقه باید به ناخواناترین شکل ممکن، برنامه ای به زبان ++c بنویسد که با هر بار اجرا شدن، رشتهای معین به طول حداقل یک و حداکثر سه کاراکتر را روی صفحه نمایش چاپ کند.
توجه: این رشته می بایست همواره ثابت باشد، نه آنکه در هر بار اجرا رشته ای متفاوت چاپ کند، و یا اینکه با انتقال به کامپیوتری دیگر، خروجی متفاوتی بدهد.

روند اجرایی و مراحل مسابقه
تیم ها آخرین نسخه برنامه هایشان را باید تا پایان وقت اداری تاریخ اعلام شده به داوران تحویل دهند. تیمها می توانند در طول مدت پیاده سازی کد، برنامه ها را به داوران ارائه دهند و توضیحات لازم را دریافت کنند، اما پس از اتمام مهلت ارسال کد، این برنامه ها از نظر داوران غیراستاندارد باشند تیم از دور مسابقه حذف میشود. مسابقه طی دو مرحله در صبح و عصر برگزار می شود.

مرحله مقدماتی: در مرحله نخست، کلیه تیم های شرکت کننده با قرعه کشی در چند گروه تقسیم میشوند. در این مرحله هر تیم، برنامه سایر تیم های هم گروهش را در اختیار می گیرد تا در فرصت مسابقه، خروجی این برنامه ها را حدس بزند. در پایان این مرحله، تیمی که خروجی برنامه اش توسط تیم های کمتری کشف شود تیم برنده گروه است. در بین تیم هایی که برنامه هایشان از این نظر امتیاز مساوی دارند تیمی برنده است که تعداد کد بیشتری را شکافته باشد! و در صورت مساوی بودن تعداد مسائل حل شده، تیمی برنده است که مجموع زمان حل مسائلش کمتر باشد. در مدت مسابقه، هر تیمی که خروجی یک برنامه را حدس بزند باید حدسش را با داور گروه در میان بگذارد تا داور درستی یا نادرستی حدس را اعلام کند.

در پایان مرحله نخست مسابقه، تیمهای دارای بیشترین امتیاز از هر گروه به مرحله نهایی راه می یابند. به همین دلیل تیم ها بهتر است در هنگام اعلام خروجی یک برنامه دقت کنند زیرا به ازای هر حدس نادرست، مجموع زمان حل مسائلشان ده دقیقه افزوده می شود!

پس از پایان زمان یک ساعته صرف غذا، نتایج مسابقات صبح اعلام می شود و تیم های برگزیده هر گروه برای شرکت در دور نهایی مسابقه به سالن مسابقه باز میگردند.

مرحله نهایی: پس از صرف ناهار و استراحتی کوتاه، مرحله نهایی مسابقه بین تیم های برگزیده گروه ها آغاز می گردد. در این مرحله هم مانند مرحله نخست به هر تیم، کد برنامه های تیم های دیگر داده می شود تا در پایان این مرحله، تیم برنده مسابقه تعیین شود. بخاطر داشته باشید که اعضای هر تیم در حین مسابقه حق مشورت با یکدیگر یا استفاده از انواع کتاب، جزوه، ماشین حساب و خط کش و ... را دارند اما استفاده از هرگونه کامپیوتر یا موبایل در حین مسابقه ممنوع میباشد. البته جدول کدهای اسکی معادل کاراکترها در اختیار هر تیم قرار میگیرد. همچنین از آنجایی که مسابقه برای کشف کدهایی است که با دستورات آشنا به طرز مبهمی نوشته شده اند می باشد، بنابراین اگر دستوری نا آشنا در کد و جود دارد، می توانید از داوران بپرسید، تا پاسخ آن را به شما ارائه دهند.

انتهای پیام

نظرات خود را با ما درمیان بگذارید

افزودن دیدگاه جدید

کپچا
CAPTCHA ی تصویری
کاراکترهای نمایش داده شده در تصویر را وارد کنید.