در سال گذشته سه بخش (با عرض پوزش بهطور نامنظم) از آموزشهای برنامهنویسی در دو برنامهنویسی منتشر کردیم (کردم!). دو بخش اول به شکل پادکست و بخش سوم به شکل ودکست.
حالا میخوام نطرتون رو در مورشون بدونم. و همینطور این که به نظر شما آموزش به شکل نوشته مناسبتر (حداقل برای بخش مبانی) نیست؟
نیک اکنون ۱۷ سال دارد، و اتفاق جالب تری برایش افتاده است.
یاهو، این شرکت را به قیمت ۳۰ میلیون دلار خریداری کرد!
نیک بسیار هیجان زده شده بود!
اپلیکیشن Summly از اپ استور حذف خواهد شد، و کارکنان آن شرکت در یاهو مشغول به کار خواهند شد.
خود نیک هم در یاهو مشغول به کار خواهد شد. او منصب خاصی در یاهو ندارد، ولی از خانه اش در لندن با گروه موبایل یاهو به عنوان یک کارمند تمام وقت کار خواهد کرد، آن هم در حالی که هنوز یک سال از دبیرستانش باقی مانده است…
او می گوید:
من به خاطر پول این کار را انجام ندادم. این کار به دلیل فرصتی است که در اختیار من قرار گرفته است تا بتوانم یک پلتفرم بزرگ ایجاد کنم. به عنوان مؤسس یک شرکت، دوست دارم دید و نگاه رهبری خود را همچنان داشته باشم. این خیلی خوب است که وارد این شرکت شوم، در حالی که شرکت در تلاش است پیشرفت کند.
نیک اکنون یک جوان خلاق و میلیونر (به پول ما می شود میلیاردر!) است که آرزوهای بزرگی در سر دارد.
داشتم فکر می کردم چه چیزی نیک را به اینجا رسانده… واقعیت این است که دو چیز بیشترین تأثیر را در این موفقیت گذاشته اند: خلاقیت و شجاعت.
شاید عوامل دیگری مثل شرایط و حتا شانس در موفقیت زودهنگام او بی تأثیر نبوده باشند. ولی کسی که خلاق باشد و کمی هم شجاع باشد، بالاخره مسیر خود را پیدا خواهد کرد.
شرایط شاید برای ما مناسب نباشد، یا حتا حس کنیم که در مدرسه ی جادوگری هری پاتر تحصیل کرده یا می کنیم! ولی واقعیت این است که ما به خود باورانده ایم که نمی توانیم.
بیایید کمی هم فکر کنیم می توانیم!
فکر می کنم این جمله از مرحوم استیو جابز باشد: تنها کسانی می توانند دنیا را تغییر دهند که آنقدر دیوانه باشند که فکر کنند می توانند دنیا را تغییر دهند.
به این ها کمی فکر کنید…
پی نوشت: همه ی این پست را با گوشی و در جاده نوشته ام. هیجان انگیز ولی طاقت فرسا بود!
چندی پیش، مایکروسافت هستهی ویندوز را برای پردازندههای ARM پورت کرد، تا بتواند یک اکوسیستم بزرگ ایجاد کند. (که البته هنوز هم جای کار دارد)
حاصل این کار، سه محصول بود: Windows 8، Windows RT و Windows Phone 8.
ویندوز ۸، نسل بعدی ویندوز ۷ است؛ هر چند حرف و حدیثها پشت سرش زیاد است…
ویندوز فون ۸ هم، یک سیستمعامل عالی و سبک، ولی کمی ناقص، برای گوشیهاست. من یک گوشی ویندوز فونی خریدم و به شدت دوستش دارم، و از اینکه یک گوشی آندرویدی نخریدم، ناراحت نیستم!
اما ویندوز RT، ظاهری شبیه به ویندوز ۸ دارد، اما یک تفاوت اساسی هم با آن دارد: بنا به دلایل فنی، تنها نرمافزارهای محیط مدرن روی این ویندوز کار میکنند، نه نرمافزارهای سنتی ویندوز!
مشکل بزرگ، نبود اپلیکیشنهای کافی برای این سیستمعامل است. حتا ویندوز فون چندین برابر آن اپلیکیشن دارد!
اقبال عمومی به ویندوز RT خوب نبود. انویدیا ناامید شد. سامسونگ برنامههای تبلت ویندوز RT خود را لغو کرد، و همه چیز عدم موفقیت آن را نشان میدهد. (هر چند موج بعدی مایکروسافت، که احتمالاً Windows Blue نام دارد در راه است، و شاید بازی دستکم کمی به نفع مایکروسافت تغییر جهت دهد)
اما، انگار در این میان کسی به کرومبوکها حتا فکر هم نمیکند!
Chrome OS و Windows RT، هر دو سیستمعاملهای بسیار جوانی هستند که برای صفحههای نمایش با اندازهی متوسط (۱۰-۱۵ اینچ) طراحی شدهاند.
دیجیتایمز گزارش میدهد که شمار فروش کرومبوکها در دو سال اخیر حدود ۵۰۰.۰۰۰ بوده است. در حالی که تبلت Surface RT مایکروسافت، در چندماهی که از عرضهاش گذشته است، به تنهایی ۱.۱ میلیون فروش داشته است. چیزی نزدیک به دو برابر! هر چند، ایسر معتقد است که کرومبوکها چندان هم بد عمل نمیکنند.
به نظر میرسد که هر دو سیستمعامل یاد شده، برای کاربران کاربرد چندانی ندارند. به خصوص وقتی تبلت-اولترابوک قدرتمندی مانند Surface Pro در میان باشد!
البته، دستکم RT، برنامههایی که اجرا میکند در ویندوز ۸ هم اجرا میشوند، ولی Chrome OS …
شما در این مورد چه فکر میکنید؟ کدامیک از این دو سیستمعامل شانس بیشتری برای موفقیت دارند؟ Windows RT یا Chrome OS؟ اصلاً به نظر شما، این دو سیستمعامل شانسی برای موفقیت دارند؟!
سلام. پس از یه تاخیر دو هفتهای با آموزشها برنامهنویسی در خدمتتون هستیم. آموزش این هفته رو به دو بخش تقسیم کردیم؛ بخش اول (شماره ۳) در مورد محیطهای برنامهنویسی و آموزش ساخت پروژهی جدید تو هرکدوم از اونها حرف میزنیم (و میبینید!) و توی بخش دوم (شماره ۳.۵) سیپلاسپلاس رو شروع کردیم. چون آموزش ویدیویی بود متن درست و حسابی نداشت پس منم چیزی ندارم که اینجا اضافه کنم. فقط لینکهایی که قول دادهبودم رو میزارم. لینکها: سایت DevCppسایت CodeBlocksسایت Visual Studio و اینم صفحهای که کارکترهای ویزه رو توی جدول آورده
و چون دوتا فیلمه ما هم به صورت جداگانه دوتا موسیقی بهصورت جدا براتون میزاریم
موسیقی اول : Rain Rain Windy Windy (حجم ۵.۱ مگابایت) از موسیقی متنهای بازی World of GOO
موسیقی دوم: Guilty Of Being Innocent Of Being Jack Sparrow (حجم ۱.۷ مگابایت) و Remix آن (حجم ۲.۶ مگابایت) کاری از هانس زیمر (موسیقی متن دزدان دریایی کارائیب ۴)
پیشنوشت: مدتها پیش در مورد رعایت قوانین کپیرایت در دو برنامهنویس نوشتم و پس از آن هم سعی کردیم نرمافزارهای رایگان و مناسب را جایگزین نرمافزارهای پولیمان کنیم و نرمافزارهای جایگزین Nero و CloneCD و DUMeter را نیز معرفی کردیم. در ایننوشته میخواهیم جایگزینی مناسب کاربران معمولی فتوشاپ (و نه کاربران حرفهای) معرفی کنیم (البته امتحان آن برای کاربران حرفهای نیز بد نیست. سبک و سریع است و مناسب کارهای روزمرهشان هست!)
خیلی وقتها تنها استفادهای که از فتوشاپ میکنیم این است که آن را Resize کنیم (که البته قبلا سرویس آنلاین Picresize را برای این کار معرفی کردهبودم ولی حالا از Paint.Net استفاده میکنم!) گوشههای یک عکس را ببریم، عکس را روشنتر کنیم و کارهایی معمولی که عملا از قدرت فتوشاپ استفادهای نمیشود. (بازهم میگویم که مخاطب من کاربران معمولی هستند نه حرفهای) نرمافزار Paint.Net برای همین کارها ساخته شده است. به کمک این نرمافزار شما میتوانید تصویر را بهصورت نیمهحرفهای ویرایش کنید. این نرمافزار ابزارهای زیادی در اختیار شما قرار میدهد و در عین حال حجم کمی هم دارد (و سبک است). فایل نصبی این نرمافزار تنها ۳ مگابایت حجم دارد (در مقایسه با فتوشاپ خیلی کمتر است!) و محیط زیبای و خلاقانهای دارد.
نکتهی جالب در مورد سازندهی این نرمافزار این است که پس از انتشار این نرمافزار مایکروسافت از او درخواست کرده که به مایکروسافت بپیوندد (جملهبندی مناسبتری پیدا نکردم!) و خوب این به نوبهی خودش جالب است!
البته وبگاه این نرمافزار به زیبایی خود نرمافزار نیست ولی محیط زیبای برنامه آن را جبران میکند. در زیر میتوانید تصویری از محیط برنامه مشاهده کنید.
پینوشت: خوب حرفی برای گفتن باقی نمیمونه. فقط اگر از این نرمافزار استفاده کردهاید یا نرمافزار جایگزین مناسبتری میشناسید در دیدگاه بیان کنید!
پینوشت۲: همین الان که این نوشته داره منتشر میشه، آموزش برنامهنویسی هم داره آماده میشه!
پیشنوشت: این متنی که توی پادکست میگم (و البته چیزی که تو پادکست گفته شده کمی متفاوته چون موقع خوندن عوض میشه!). دلیل برای اضافهکردن جزئیات نمیبینم. حدود ۱۴ دقیقهست که البته ۶ دقیقهی آخرش هم آهنگه (Rango Suit کاری از هانس زیمر!) و شما هم میتونید پادکست رو با حجم ۱۲ مگابایت از مدیافایر یا از مگا (مگا از مدیافایر خوشگل تره!) دانلود کنید(بازم ببخشید که چندتا کیفیت نزاشتیم. از دفعهی بعد جبران میکنیم!).
میتونید همهی پادکستهای آموزش برنامهنویسی ما رو توی مدیافایر ببینید. خوب بریم سراغ پادکست:
سلام.
توی بخش قبل در مورد الگوریتمها حرف زدیم. امیدوارم متوجه شده باشید که الگوریتمها چیهستند. توی این بخش قراره در مورد الگوریتمها تو برنامهنویسی حرف بزنیم. البته ایندفعه من تقریبا حرف نمیزنم بلکه یه یکسری از حرفهای جادی رو براتون پخش میکنم؛ اجازهش رو هم از جادی گرفتم.
خوب این چیزی که میخوام براتون پخش کنم توضیحات کاملش توی سایت جادی به آدرس جادی.نت یا جادی۲.آندو.ایت هست و من توضیحات جادی رو هم باهاش پخش میکنم. اینها توی پادکست دوم رادیو گیک پخش شده و من توصیه میکنم کلا برید همهی پادکستهای جادی رو گوش کنید. توی نوشتهای که تو دو برنامهنویس منتشر میشه لینکهاش رو هم براتون میزارم.
-خب مطمئنا می تونم سعی کنم. برنامه نویسی کامپیوتر تا حد زیادی شبیه نوشتن دستور آشپزیه. اگر برنامه آشپزی رو خونده باشین ساختارش رو می دونین. موارد لازم بالا نوشته شدن و پایینش روش استفاده از اونها است. در برنامه کامپیوتری هم اتفاق مشابهی می افته. اول چیزهای مختلفی که قراره باهاش کار کنین رو دارین و بعد دستورات رو مثلا اینکه باید با اون مواد چیکار کنین. پس اگر دستور آشپزی رو می فهمین و می تونین ازش استفاده کنین تو آشپزخونه، پس برنامه نویسی رو هم می فهمین در همون سطح اما می تونین جلوتر هم برین. مثلا مطمئن هستم که برنامه آشپز آهنین رو دیدین بخصوص مواقعی که بهشون مواد اولیه عجیبی داده می شه و یکی از اتفاقاتی که اونجا می افته اینه که آشپز همه کار رو نمی کنه بلکه یکسری دستیار آشپزی داره که می تونه کار رو به اونها بده و اونها کارهای وقت گیر رو می کنن. برنامه نویسی هم تقریبا همینطوره. شما سرآشپز هستین و اون بیرون کامپیوترهایی هستن که بخشی از کارها رو بر عهده می گیرن. البته دقیقا شبیه برنامه آشپز آهنین نیست چون اونجا کمک آشپزها بسیار باهوش هستن و بلدن چطوری باید تخم مرغ رو هم بزنن یا ماهی رو خورد کنن ولی کامپیوتر بیشتر شبیه یکسری ربات خیلی موثر اما خیلی خنگ هستن که فقط یک زبون رو می فهمن پس شما در سطحی باید به اونها دقیقا بگین چیکار کنن و چیزی که به اونها گفتین رو دقیقا می تونن هی تکرار کنن و دقیقا مشابه دفعات قبل.
کامپیوترها از همین نظر خوب هستن و دقیقا همینه که باعث شده دنیا رو بر دارن. بعد می تونین یک مرحله هم جلوتر برین و به جای فکر کردن به خودتون مثل یک سرآشپز و مراحل آشپزی به این فکر کنین که غذا واقعا چطوری به غذا تبدیل می شه . شاید بهتره به یک کارخونه غذا فکر کنین که مواد خام توش وارد می شه و از مسیرهای مختلف جلو می ره و خورد می شه توی ماشین ها و یک مسیری هست که مواد توش حرکت می کنن و در نهایت در یک محصول کنار هم جمع می شن که ما بهش می گیم غذا. پس زبون هایی هستن که بیشتر اینطوری کار می کنن یعنی می گن که داده ها چطوری بچرخن. برای مثلا صفحه گسترده اینجوری کار می کنه که شما یکسری سلول دارین که توش اطلاعات می ریزین و بعد شروع می کنین به گفتن اینکه محتویات فلان سلول رو بردار و جمع بزن با محتویات این یکی سلول و بذارشون فلان جا. در اصل دارین برنامه نویسی می کنین و ماکرو می نویسین اما انگار توی یک کارخونه روی دسکتاپتون.
از اینهم که جلوتر بریم، روش های مختلفی هست که می تونین به سراغ یک جور چیز سطح بالاتر برین مثل چیزهایی که اگر مدرک کامپیوتر ساینس بگیرین یاد می گیرن. ایده اینجا اینه که شما یکسری چیز انتزاعی می گین و این حرف یک سری چیز دیگه رو کنترل می کنه. پس قدم بعدی که اتفاق می افته اینه که به جای فکر کردن فقط به دیتا به عنوان اجزایی که باهاش کار می کنین (مثلا استرینگ ها یا شماره تلفن ها) شروع می کنین به اجزای اون دستور آشپزی به عنوان دیتا فکر می کنن که می شه خودشون رو روی نوارنقاله های اون کارخونه اینطرف و اونطرف فرستاد. پس این مثل اینه که اگر یک کافه می خواین یک دستور می دین که کافه درست می شه پس اگر شروع کنین به فکر کردن به کارها به عنوان داده، می تونین اونها رو توی حلقه بندازین که تکرار بشن و این عمل ممکنه یک عمل دیگه رو شروع کنه که اون عمل خودش یک عمل دیگه رو استارت بزنه که این آخری به عمل اول برگرده و به یک طرح فراکتالی یا برخالی ریکرسیو (بازگشتی) می رسین پس اینها پایه های ریاضی برنامه نویسی هستن اما .. می دونین… از اول لازم نیست همه اینکارها رو بکنین. کافیه با همون دستور آشپزی شروع کنین و جلو برین و چیزها رو اضافه کنین و یاد بگیرین و همه چیز خوب پیش می ره.
خوب دیگه حرفی برای گفتن باقی نمیمونه فقط اینکه از بخش بعدی آموزشها به صورت ودکست (یعنی بهصورت ویدیویی) خواهد بود و آموزش سیپلاسپلاس رو شروع میکنیم. در ضمن چون برنامهی رایگان گیر نیاوردم از برنامهی کمتسیا استودیو یا همونطور که خودشون میگن کمتیژیا استودبو برای ضبط استفاده میکنم. اما شما تا هر وقت که آموزشهای ما ادامه پیدا کنه وقت دارید که یه برنامهی رایگان و اگر آزاد هم بود چه بهتر! به ما معرفی کنید.
تا قسمت بعد (که همین الانش تقریبا آماده شده!) خدانگهدار!
قرار شد آموزشها برنامهنویسی به شیوهی پادکست + نوشته منتشر شوند و امشب هم یک پادکست ۵ دقیقهای در مورد الگوریتمها داریم که متن کاملنشدهی آن را هم در زیر مشاهده میکنید. دلیل کاملنشدهبودن متن نیز این بوده که بخشهایی را در حین ضبط اضافه یا حذف کردم مثلا فلوچارت!
بخش اول را از میتوانید از اینجا دانلود کنید. همینطور همهی پادکستهای آموزش برنامهنویسی (که در آینده منتشر خواهند شد) در مدیافایر موجودند.
این هم نوشتهی کاملنشده:
سلام
قراره اولین بخش از آموزش برنامهنویسی رو دوباره شروع کنیم و امروز جمعه چهارم اسفند ۹۱ هستش و الان هم یه تیکه از بخش اول موسیقی Jack Sparrow از آلبوم موسیقی متن دزدان دریایی کارائیب ۳ (که اسم اصلیش گنجینهی مرد مرده یا Dead Man’s Chest هستش) پخش شد براتون.
خوب بریم سراع آموزش.
رسمه که آموزش الگوریتم رو از درستکردن شیرکاکائو شروع کنن که چون شیرکاکائو کپیرایت داره و کپیرایتش مال یکی از معلمهای ماست ما از شیرقهوه استفاده میکنیم
باید بدونید که در سلوک برنامهنویس ها واحبه همیشه یه لیوان شیرقهوه (یا قهوه) کنار دستتون باشه!
خوب ما برای درستکردن شیر قهوه اول از همه یه قاشق چایخوری (که هیشکی تاحالا باهاش چایی نخورده) قهوه و دو تا سه قاشق چایی خوری شکر بر میداریم و توی آب جوش به مقدار لازم میریزیم و هم میزنیم تا خوب حل بشه و بعد هم شیر میریزیم روش و میزاریم کنار دستمون تا هروقت لازم شد یه ذره ازش بخوریم.
به مراحلی که ما طی کردیم تا شیرقهوه درست بشه میگن الگوریتم درستکردن شیرقهوه.
خوب امیدوارم تعریف الگوریتم رو خوب فهمیده باشید.
اما قبول دارید که فهموندن این الگوریتم به کامپیوتر تقریبا غیرممکنه؟ حداقل الان که غیر ممکنه.
برای همین هم باید الگوریتم رو سادهتر کنیم. حالا فرض کنیم که یه روبات خیلی پیچیده با قابلیت پذیرش دستورات زیاد داشته باشیم که دستورات ما رو تا حدودی بفهمه ولی خوب چون اون هم کامپیوتره بازهم نمیتونه معنی «خوب حلشدن» رو بفهمه پس لازمه که متغیرهای کیفیمون رو کمّی کنیم.
پس الگوریتممون میشه این
یک قاشق قهوه رو بریز توی لیوان
سه قاشق شکر بریز توی لیوان
(مثلا) ۱۰۰میلیلیتر آب جوش بریز توی لیوان
تا وقتی که هیچ دونهی قهوهای توی لیوان نمونه محتویات لیوان رو پر کن
تا وقتی که لیوان پر نشده توش شیر بریز
لیوان رو بده به برنامهنویست که قهوهش رو بخوره و برو به کارات برس (:D)
خوب حالا این شد یه الگوریتم که مناسبه برای یه روبات که زبون ما رو میفهمن.
اما مطمئنا کامپیوتر شما نمیتونه معنی «برو» یا «لیوان» یا حتی قهوه و شکر رو بفهمه و خوب فعلا ما چنین روباتی نداریم. شما اگر دارید خیلی سرمایهدارید با این قیمت دلار!
ولی ما برای هرکاری توی زندگیمون الگوریتم داریم. مثلا از خیابون رد شدن که شعرش رو روی همهی ایستگاههای اتوبوس دیدید و لازم به تکرار نیست!
خوب بیاید یهذره به واقعیت نزدیکتر بشیم. اگر روباتی سادهتر ولی بازم پیچیده داشته باشیم که بشه بهش گفت که راه بره و دستهاش رو تکون بده و مثلا برنامهای برای تشخیص رنگ هم براش بنویسم میشه الگوریتم درستکردن قهوه رو بازم به واقعیت نزدیک کرد. اینجوری که در کابینت رو باز کنه و مادهی قهوهای رو پیدا کنه و مادهی سفید رو هم (با این امید که نمک توی اون کابینت نباشه یا مثلا مرگ موش!) و اونا رو توی آب بیرنگ باهم قاطی کنه (بازهم با این امید که فقط به اندازهی یک قاشق قهوه و سه قاشق شکر داشته باشیم) و مثلا بگیم تا وقتی همهی مقادیر مشکی رنگ شد و رنگ قهوهای توی لیوان نمونده باشه و بعدش هم آب سفید رو بریزه توش تا لیوان پر بشه.
و خوب اگر روباتمون اینا رو هم نفهمه یعنی یه روبات بازم سادهتر ولی بازم پیچیده مجبوریم الگوریتم رو به صورت موتور-موتور تجزیه کنیم. یعنی برای هر حرکت یک موتور باید به کار بیوفته و شاید هم چندتا و این خیلی موتور میشه!
خوب فکر کنم برای بخش اول کافی باشه.
برای تمرین هم الگوریتم درستکردن خامهعسل، باقالی پلو با گوشت و زرشکپلو با مرغ رو اول خودتون سعی کنید بنویسید و بعدش هم از کتاب آشپزی کمک بگیرید. و خوب در مرحلهی بعدی سعی کنید الگوریتم رو برای روباتهای سادهتر شرح بدید.
به این میگن آموزش چندمظوره! هم برنامهنویسی و هم آشپری!
برای اینکه هیجان قضیه زیاد بشه میگم که در بخش بعدی آموزشمون درمورد الگوریتمها توی برنامهنویسیه و البته این بستگی داره به میزان علاقهی شما
خوب امیدوارم تا قسمت بعدی شاداب و سلامت باشید.
پینوشت: در پادکست فراموش کردم که بگم آهنگ کار هانس زیمره.
پینوشت۲: هر مشکلی که دیدید لطفا اطلاع بدید مثلا اگر صدا بد بود یا نوشته (و صدا) کامل نبود یا هر چیز دیگه.
شنبهی این هفته در هتل آزادی پارسیان تهران، مراسمی برگزار شد که اگر اشتباه نکنم، بزرگترین مسابقهی برنامهنویسی بینالمللی است که تا کنون توسط یک شرکت یا سازمان ایرانی برگزار شده (طبیعی است که مسابقاتی مانند ACM که متولیانی خارجی دارند، را به حساب نیاوردهام).
از آنجا که بنده هم فرصت شرکت در این مسابقهی برنامهنویسی (کانتست) را داشتم، تصمیم گرفتیم که در اینجا گزارشی از نحوه برگزاری و رویدادهای شنبه را بنویسم.
شرکت خصوصی بیان سال گذشته کانتستی را برگزار کرد، که در دو قسمت دانشآموزی و آزاد برگزار میشد. شرکت در قسمت آزاد محدودیتی نداشت، ولی بخش دانشآموزی (همانگونه که از اسم آن برمیآید!) ویژهی دانشآموزان بود. این کانتست سه مرحله داشت که دو مرحلهی نخست آن به شکل آنلاین برگزار شدند و برگزیدگان مرحلهی دوم به مرحلهی حضوری راه یافتند، که در شرکت بیان برگزار شد. من دربارهی روند برگزاری نخستین کانتست بیان اطلاع چندانی ندارم؛ بنابراین از ذکر جزئیات بیشتر خودداری میکنم.
امسال نیز دومین کانتست بیان طبق برنامه برگزار شد. وجه تمایز این کانتست، که سبب بازتاب گستردهی داخلی آن شد، بینالمللی بودن آن است. امسال شرکت بیان با همکاری سایت Codeforces مرحلهی گزینش این کانتست را به زبان انگلیسی و برای شرکتکنندگان خارجی نیز برگزار کرد. سایت Codeforces یکی از معتبرترین و مشهورترین سایتهای برگزارکنندهی کانتستهای آنلاین است، که پیش از این هم مسابقاتی مانند VKCup را برگزارکردهاست.
نتیجه این که برخی از برترین برنامهنویسان جهان در زمینه کانتست برای شرکت در مرحلهی حضوری برگزیدهشدند. برخی از آنها عبارتند از:
گنادی کوروتکویچ (tourist) از بلاروس، دارندهی 6 مدال طلای المپیاد جهانی کامپیوتر که دوتای آنها را با حدّاکثر نمرهی ممکن کسب کرده است. همچنین نفر اوّل جهان در سایت Codeforces
میخاییل کِوِر (cerealguy)، نفر 24ام جهان در سایت Codeforces (مطمئن نیستم، ولی احتمالاً در ACM هم مقام آوردهاست)
ماکوتو سوجیما (rng_58) از ژاپن، نفر دوم جهان در سایت Codeforces
پیتر شیه (peter50216) از تایوان، نفر ششم جهان در سایت Codeforces
ایگور کولیکو (Egor) از روسیه، نفر پنجم جهان در سایت Codeforces
همچنین برنامهنویسان دیگری از چین، لهستان، ایالات متّحده و اوکراین نیز برگزیدهشدند که در نهایت، برخی از آنها در مرحلهی حضوری شرکتکردند.
فهرست شرکتکنندگان کانتست بینالمللی و رتبههایشان را در اینجا و فهرست شرکتکنندگان ایرانی و رتبههای آنها را در اینجا میتوانید ببینید.
پس از برگزاری مراحل آنلاین و گزینش شرکتکنندگان مرحلهی حضوری، اعلام شد که مرحلهی حضوری در تاریخ 27 بهمن و در دانشگاه شریف برگزار خواهد شد، که در نهایت تاریخ به شنبه 28ام تغییر یافت و مکان نیز به هتل آزادی پارسیان تهران منتقل شد.
امّا پس از این مقدمهی طولانی، به اصل ماجرا و مرحلهی بینالمللی مسابقه میرسیم.
شنبه صبح که وارد هتل شدم، علاوه بر شماری از شرکتکنندگان ایرانی، شرکتکنندگان خارجی نیز در لابی مستقر بودند. متأسّفانه تصویر مناسبی از شرکتکنندگان خارجی در لابی پیدا نکردم، امّا ایوان رومانوف تصاویر خوب (و زیادی!) تهیه کرده که میتوانید آنها را در بلاگ او در Codeforces ببینید. بر اساس آنچه که رومانوف در بلاگش نوشته، شرکتکنندگان خارجی از پنجشنبه تا یکشنبه در ایران بودهاند.
افرادی که در عکس بالا دیده میشوند (از راست به چپ):
فرزاد عبدالحسینی (مدال طلای کشوری المپیاد کامپیوتر) – سیّد حامد ولیزاده (مدال طلای جهانی المپیاد کامپیوتر و نفر سوم مسابقه بیان در ایران) – نمیشناسم – حامد صالح (مدال طلای کشوری المپیاد کامپیوتر) – علیزضا فرهادی (مدال نقرهی جهانی المپیاد کامپیوتر) – نمیشناسم
در سمت راست تصویر، شرکتکنندگان خارجی قرار دارند. (آنهایی که تیشرت زرد پوشیدهاند)
در میان ایرانیها، همهی اعضای تیم المپیاد جهانی کامپیوتر ایران (که امسال در ایتالیا برگزار شد) حضور داشتند (سعید ایلچی و حامد ولیزاده که مدال طلا گرفتند و علیرضا فرهادی و محمدرضا ملکی که نقره شدند). علاوه بر آن، بسیاری از شرکتکنندگان دیگر نیز مدالآوران کشوری و جهانی امسال و سالهای گذشته بودند. در میان شرکتکنندگان خارجی نیز افراد زیر حضور داشتند (البته برخی از آنها در لابی هتل شناسایی نشدند!):
ویرایش: از آنجا که در کانتست گزینشی بیان، نام ایوان رومانوف در بیست نفر برتر دیده نمیشود، احتمال میرود که او تنها برای تهیهی گزارش به ایران آمدهباشد.
ایوان رومانوف در تمام این مدت وقایع را به شکل زنده پوشش میداد که حاصل آن را میتوانید در بلاگ او در Codeforces ببینید. نکته فرعی جالب هم این که، علیرغم اسمش، او از کشور سوییس به ایران آمدهبود.
در این مسابقه، شرکت بیان رایانهای را به شرکتکنندگان ارائه نمیداد و همه با لپتاپ شرکت میکردند. به همین دلیل، برای تنظیم سیستمها نیز زمانی در نظر گرفتهشدهبود. بر اساس برنامه، مسابقه باید در ساعت 10 صبح آغاز میشد؛ اما با تأخیر روبهرو شد و (پس از تحویل تیشرتها و تنظیم سیستمها) ساعت 12:32 دقیقه آغاز شد.
در این مسابقه، 7 سوال برای 3 ساعت درنظرگرفتهشدهبودند که یک ربع پیش از پایان این زمان، کانتست به مدّت نیمساعت تمدید شد و در نهایت سهساعت و نیمه برگزار شد. سوالها سخت بودند، به گونهای که بسیاری از شرکتکنندگان 0 تا 1 سوال حل کردند! طبق آماری که بعداً اعلام شد، نفر نخست جهان 4 سوال و نفر نخست ایران 2 سوال حل کردهاند. سوالات مسابقه هنوز در سایت بیان قرار نگرفتهاند، ولی احتمالاً به زودی در آنجا قرار خواهند گرفت.
یکی از حواشی مسابقهی اصلی این بود که صورت سؤالها تنها به زبان انگلیسی موجود بود و ترجمهی فارسی ارائه نشد. با وجود این که این مسئله مشکلساز نشد، ولی از مسابقهای که یک شرکت ایرانی در ایران برگزار میکند، انتظار میرود که سؤالات به زبان فارسی هم موجود باشند.
ویرایش: حاشیهی جالب دیگر این بود که به ازای هر مسئلهای که یک نفر حل میکرد، بادکنکی با رنگی خاص (ویژهی آن مسئله) جایزه میگرفت. این رسم مربوط به مسابقات ACM است. نویسندگان 2برنامهنویس قبلاً این رسم را در H2PL (لیگ برنامهنویسی راهنمایی حلّی 2)، KPL (همان لیگ که بعداً نامش تغییر کرد) و حلّینت (مسابقهی برنامهنویسی دبیرستان علّامهحلّی که سال گذشته پس از تأخیری چندین ساله برگزار شد و امسال برگزار نمیشود) دیدهاند.
پس از این مسابقه و صرف نهار، چالش Funkoders (با k!) قرار بود برگزارشود که ماهیت آن را هنوز اعلام نکردهبودند، ولی شایعاتی وجود داشت مبنی بر آن که قرار است در این مسابقه، ایرانیان هم بتوانند در برابر رقبای خارجی قد علم کنند. در اصل، این برنامه هم یک کانتست با شیوهی قضاوتی مشابه کانتست اصلی بود، ولی با این تفاوت که 15 سوال آسان و 42 دقیقه وقت داشت. البته در برنامهی اصلی قرار بوده که این کانتست 2 ساعت به طول بینجامد؛ ولی به دلیل تأخیر در آغاز برنامهی اصلی، زمان آن کاهش یافت.
ویرایش: یکی از حواشی مسابقهی Funkoders حضور دو بازیگر بود که نقش مجسمه را ایفا میکردند و البته هر چند دقیقه یک بار هم تغییر وضعیت میدادند.
این مجسمهها واقعاً به خوبی از پس نقششان برآمدند؛ چراکه با وجود خندهها و تلاشهای مجدّانهی بنده و دوستان، مرتکب هیچ اشتباهی نشدند!
پس از آن، نوبت به صرف چای و کیک و استراحت در لابی رسید. بعد هم مراسم اختتامیه آغاز شد.
در مراسم اختتامیه، پس از پخش چند قطعه موسیقی زنده و غیرزنده و سرود ملی و تلاوت سورهی حمد و سخنرانی مدیرعامل شرکت بیان، نوبت به اعلام برندگان رسید:
پیتر شیه از تایوان نفر اوّل جهان شد و به او مدال طلا، سه سکّهی تمام بهار آزادی و صنایع دستی ایرانی (یک کوزه که فکر میکنم میناکاری شدهبود) تعلّق گرفت.
میخاییل کِوِر نفر دوم جهان شد و مدال نقره، دو سکّهی تمام بهار آزادی و صنایع دستی ایرانی برد.
بر خلاف انتظارات، ایگور کولیکو اوّل نشد و سوم شد و مدال برنز، یک سکّهی تمام بهار آزادی و صنایع دستی ایرانی هدیه گرفت.
از راست به چپ: پیتر شیه، میخاییل کِوِر، ایگور کولیکو
علاوه بر آن، به نفرات برگزیدهی ایران نیز جوایزی اهدا شد:
سهیل احسانی نفر نخست ایران شد. به او مدال طلا و یک و نیم میلیون تومان وجه نقد تعلّق گرفت.
علی فیوج نوملی نفر دوم ایران شد و مدال نقره و یک میلیون تومان وجه نقد برد.
سید حامد ولیزاده نفر سوم ایران شد و مدال برنز و پانصدهزار تومان وجه نقد جایزه گرفت.
نتایج نهایی را در این نشانی میتوانید ببینید. البته برخی شرکتکنندگان در این جدول حضور ندارند که احتمالاً هیچ سوالی حل نکردهاند. (من هم در این جدول حضور ندارم!) نکته جالب این که تمامی 5 نفر نخست ایران، 2 سوال حل کردهبودند! و تفاوت میان نفر سوم و چهارم ایران کمتر از یک نمره بود!
پس از مراسم اختتامیه نیز طبق برنامه ضیافت شام برگزار شد که واقعاً جای تقدیر داشت.
سخن پایانی
فکر میکنم که این مسابقه، نخستین تجربهی اینچنینی در ایران بودهباشد. کیفیت برگزاری مسابقه واقعاً عالی بود. با این وجود، سختبودن بیش از حدّ سوالهای کانتست اصلی، باعث نارضایتی برخی از شرکتکنندگان شد. با این وجود، چنین رویدادهایی واقعاً جای تقدیر و تشکّر دارند و برگزارشدن آنها در ایران واقعاً مایهی افتخار است. امیدوارم که هزینهی سنگین و برخی مشکلات دیگر جلوی تکرار چنین رویدادهایی را نگیرد. به هر کسی که دستی در برنامهنویسی دارد، توصیه میکنم که مسابقهی سال بعد بیان را از دست ندهد.
مسئلهای که بیش از همه جای تأمّل داشت، این بود که در میان پنج نفر برتر جهان، خبری از ایرانیان نبود که با توجه به شرایط، این یک باخت در خانه به حساب میآید. البته با توجه به این که شرکتکنندگان خارجی از میان برترین برنامهنویسان جهان انتخاب شدهبودند، واقعاً این پدیده قابل پیشبینی بود؛ ولی باز هم باید تلاش کنیم و امیدوار باشیم که در مسابقههای بعدی، بدون درنظرگرفتن سهمیه برای ایرانیان، سه نفر از آنها رتبههای برتر را تصاحب کنند.
منبع: در نوشتن این مطلب، علاوه بر مشاهدات شخصی، از تصاویر و مطالب وبلاگ رسمی شرکت بیان و وبلاگ و سایت کانتست بیان نیز استفاده کردم. علاوه بر آن، از برخی مطالب موچود در سایت Codeforces، به ویژه بلاگ ایوان رومانوف، نیز استفاده کردم. برای عکسها، علاوه بر این منابع، از سایت نردبان نیز استفادهشدهاست.
شما از چنین کانتستی چه انتظاری دارید؟ آیا مسابقهی امسال به نظر شما رضایتبخش بود؟
پینوشت: فردا گالری عکس هم افزوده خواهد شد. افزوده شد. البته به دلیل کمتجربگی نویسنده، عکس اختصاصی مناسبی در دسترس نیست و عکسها از منابع دیگر جمعآوری شدهاند.
گاهی اوقات آدم نیاز پیدا میکند که کارکتر یا کارکترهایی را از تعداد زیادی فایل حذف کند یا با کارکتر دیگری جایگزین کند. مثلا کارکتر ـ که در فایلهای دانلودشده معمولا بهجای فاصله استفاده میشود. یا مثلا اسم سایتها که در انتهای فایل دانلودشده میبینیم مثل softgozar.com یا downloadha.com که حال آدم را به هم میزند (حرکت خزی است. قبول ندارید؟!؟)
در این مواقع آدم پیر میشود اگر بخواهد همهی این کارها را دستی انجام دهد و من هم برنامهای برای این کار نیافتم. پس دست به کار شدم و برنامهی سادهای برای این نوشتم. البته این برنامه مدتها پیش (حدود ۱ سال) نوشته شده ولی هنوز هم گاهی اوقات کار راهانداز است. البته قرار بود این برنامه در تابستان به برنامهی جامعتری با نام FAssist تبدیل شود که به دلایلی نشد پس خود برنامه را به تنهایی منتشر میکنیم برود پی کارش!
شما هم میتوانید برنامه را از همین جا دانلود کنید.
برنامه را باید Run as administrator کنید و همینطور .Net Framework 2 روی سیستم خود نصب داشته باشید.
پس از اجرای برنامه در بخش اول باید آدرس فولدری که میخواهید محتویات فایلها (و فولدرها)ی آن تغییر نام دهند را انتخاب کنید و سپس در کادر بعدی چیزی که باید تغییر کند (مثلا ـ) و در کادر بعد هم جایگزین آن (مثلا فاصله) را بنویسید و اگر میخواهید که تغییرات فقط در فایل یا فولدر صورت پذیرد تیک گزینهها را به دلخواه انتخاب کنید.
فکر نمیکنم توضیح بیشتری نیاز باشد. در هر صورت اگر مشکلی دارید یا هر چیز دیگر دیدگاهتان را بیان کنید!
Visual Studio Update 2 در وبنوشت موجود است. ایننوشته دیگر معتبر نیست. لینکهای دانلود غیرفعال شدند.
برای یک برنامهنویس محیط برنامهنویسی یکی از چیزهایی است که لازم دارد و کارایی این محیط به برنامهنویس کمک زیادی میکند. قدرت محیط برنامهنویسی حتی میتواند روی کیفیت و کارایی برنامه نیز تاثیر بگذارد.
به جرئت میتوانم بگویم که ویژوال استودیو بهترین و قویترین محیط برنامهنویسی موجود است و با ابزارهای فراوان خود به برنامهنویسان کمک بسیاری میکند مثلا (برای من) ابزار مرتب کردن کد آن پراستفادهترین ابزار است و ابزارهای قدرتمند دیگر.
بر خلاف چیزی که اینجا گفتم آپدیت بودن حداقل برای محیط برنامهنویسی همیشه لازم است و اگر آپدیتها حجم زیادی داشته باشند برای برنامهنویسان ایرانی دردسر زیادی خواهد داشت (مخصوصا اگر مثل من رکورد ۳ بار عوض کردن ویندوز در یک روز را داشته باشند!) و با توجه به امکانات موجود نمیتوان (در واقع قبلا امکانپذیر نبود!) یک بار برای همیشه آپدیت را دانلود کرد و همیشه از آن استفاده کرد.
آخرین آپدیت ویژوال استودیو ۱۲ به نام Visual Studio Update 1 حدود ۱ گیگابایت حجم داشت و من بیخبر هربار آن را دانلود میکردم و سر همین قضیه هم حجم اینترنتم را تمام کرده و چند روزی از اینترنت محروم بودم (:() اما چند روز پیش در وبسایتی خواندم که میتوان آپدیتهای ویژوال استودیو را بهصورت آفلاین دانلود کرد (برای همهی نسخههای این نرمافزار) و همیشه داشت و خوب روش جالبی هم داشت و آن این بود که از پارامتر /layout در cmd برای اجرا کردن فایل اجرایی آپدیتکننده استفاده کنیم. یعنی اگر اسم فایل vsupd.exe باشد در cmd دستور vsupd.exe /layoutt را استفاده کنیم.
خوب من هم به جای انجام این کار در خانه در سرور دو برنامهنویس یک بار این دستور را زدم و پس از اتمام دانلود با یک پوشتهی ۱ گیگابایتی مواجه شدم! و خوب تصمیم گرفتم که آن را برای شما هم قرار دهم تا شاید به درد برنامهنویسانی که در کشوری زندگی میکنند که اینترنت نامحدود میگیرد و به با پهنای باند محدود به مردمش میدهد! زندگی میکنند بخورد.
پس میتوانید آن را از سرور دو برنامهنویس، سرور دانلود دو برنامهنویس یا از مدیافایر با حجم حدود ۷۶۰ مگابات با فرمت 7z دانلود کنید. (اگر نمیدانید 7z چیست یا میخواهید با فشردهسازی بیشتر آشنا شوید این نوشته را بخوانید)
و در آخر هم تصویر شاخص پست رو میزارم چون قشنگ بود!
پینوشت: اگر نوشته مشکل نگارشی داشت ببخشید. یه ذره طول میکشه تا دوباره راه بیوفتم.
پینوشت۲: هنوز بخش اول فایل توی مدیافایر آپلود نشده (در زمانی که این نوشته رو مینویسم) در واقع آپلود شده قبلا من اشتباها پاکش کردم. ولی بقیهی لینکها سالماند.