Google Code Jam 2010 is in Dublin!

وصلتنى هذه المسابقة عبر الميل منذ لحظات

http://code.google.com/codejam

Do you enjoy solving tough problems and grappling with technical challenges? Then enter Google Code Jam!

Google Code Jam is a programming competition in which professional and student programmers are asked to solve complex algorithmic challenges in a limited amount of time. The contest is all-inclusive: Google Code Jam lets you compete in the programming language and development environment of your choice.

If this is your first time competing in Code Jam, take a look at our Quick-Start Guide to learn the basics of how to compete.

The competition consists of four online rounds, culminating in the on-site finals in Dublin, Ireland!

Advertisements

الحمد لله

لما أوذى الرسول صلى الله عليه وسلم في الطائف  وأغروا به سفهاءهم  وصبيانهم فرموه حتى أدموا عقبه الشريف فلم يزد على أن قال:

” اللهم إليك أشكو ضعف قوتي  وقلة حيلتي  وهواني على الناس أنت ارحم الراحمين  ورب المستضعفين  وأنت ربي إلى من تكلني إلى بعيد يتجهمني أم إلى عدو ملكته أمري إن لم يكن بك غضب علي فلا أبالي غير أن عافيتك أوسع لي أعوذ بنور وجهك الذي أشرقت له الظلمات  وصلح عليه أمر الدنيا  والآخرة من أن تنزل بي غضبك أو يحل علي سخطك لك العتبى حتى ترضى  ولا حول  ولا قوة إلا بك” (أخرجه ابن إسحاق)

القاعدة رقم واحد : الكسل!

بسم االله الرحمن الرحيم

الكسل هو الحل !!

هل تريد أن تكون مبرمج جيد ؟؟ إذا فعليك بالكسل؛ ولكن ليس أى كسل!

الكسل البرمجى البناء !!!

هذه المقولة مستوحاة من مقالة Eric Steven Raymond بعنوان The Cathedral and the Bazaar أو الكاتدرائية والسوق/البزار. فالصفة الثانية لأى مبرمج هى:

2- المبرمج الجيد يعرف ماذا يكتب، ولكن المبرمج العظيم هو الذي يعرف ما يحتاج أن تعاد كتابته (أو يعاد استخدامه)

ولو ركزنا فى العبارة ستجدها صحيحة مائة بالمائة؛ فلم على أن أبدء من الصفر ولدى منصة قوية (أو ضعيفة) أنطلق منها، وهى إما أن المشكلة التى على وشك حلها هى محلولة بالفعل أو أن هناك من حلها ولكن لم يغطيها بالكامل. فى الحالة الأولى فلن أحرك ساكنا لأن لا ناتج من تحركى لحل مشكلة غير موجودة، والثانية فمن الغباء أن أبدء من الصفر وأعيد إختراع العجلة؛ بل يكفى أن أبحث فى الحلول الموجودة وأبدء بإختيار أقربها لما أريد وأعدل عليه لأصل لمرادى فى النهاية.

وهنا تظهر قيمة الحكمة الشهيرة The problem should be never solved twice  أو المشكلة يجب ألا تحل مرتين.

هناك تفسيرات أخرى للكسل البرمجى فمثلا على المبرمج أن يبقى برنامجه well commented  حتى يستطيع مراجعته دون عناء عند إصلاح علة فيه. يجب على المبرمج أن يبقى برنامجه Simple & Stupid والتى هى قمة العبقرية وهدف الجميع وإحدى فوائد هذا إمكانية تعديل الكود بسهولة (وغيرها الكثير والأهم لكن ليس موضوعنا الأن) منه أو من غيره.

وأيضا الـ functionality (وهى أن تكون كل عمليه موجودة داخل دالة واحدة فقط بحيث لا يضتر المطور إلى التعديل فى طول البرنامج وعرضه لحل مشكلة بسيطة فى العملية معينة) تعتبر من أهم اشكال الكسل، فهذه الطريقة تضمن توفير الكثير من وجع الرأس على المطور ومن يخلفه فى البرنامج (والعديد من المزايا الأخرى)

والعديد من الأشياء الأخرى التى هدفها فى البداية تسهيل الأمور على المبرمج بالإضافة إلى بعض المزايا أثناء تنفيذ البرنامج وتوفير الموارد

إذا فعلى جميع المطورين أن يرفعوا راية:

الكسل .. الكسل .. الكسل ..