لعل البعض يهرب عندما يقرأ كلمة "البرمجة" في أي مكان، البعض يظن أن البرمجة عالم معقد صعب لا يمكن فك أسراره إلا من قبل أناس لديهم ذكاء خارق، وهذا أمر غير صحيح، والبعض يظن أن البرمجة ما هي إلا أن تتعلم بعض الأوامر للغات برمجة مشهورة ثم تصبح مبرمجاً، وهذا أيضاً غير صحيح، في الحقيقة من الصعب تعريف البرمجة لأنها شيء بين الفن والعلم.
البرمجة في أبسط صورها هي أن تخبر الحاسوب بما يجب عليه أن يفعله، البرامج تقول للحاسوب: إطبع هذه الوثيقة، قم بإنجاز هذه العملية الحسابية، استعرض هذه الصور، إلخ، لكن الحاسوب ليس ذكياً كفاية لفعل ذلك بنفسه إذ يجب أن تخبره عن كل صغيرة وكبيرة، عن كل التفاصيل وعن تفاصيل التفاصيل.
الجانب الإبداعي من البرمجة هو كيفية كتابة أفضل البرامج بأقل عدد من الأوامر والأسطر وبأذكى الأساليب، هذه المهارة تكتسب مع ممارسة البرمجة والاحتكاك بالمبرمجين المحترفين.
قبل أن أبدأ بوضع الروابط، أنا لست مبرمجاً - حتى الآن على الأقل - ومعرفتي بهذا الجانب نظرية أكثر مما هي عملية، مجرد تنبيه صغير لمن يظن أنني مبرمج، وأخيراً أحب أن أنوه إلى أنني لم أضع روابط لكتب غير مجانية، الكتب التي وضعت روابطها هنا كلها مجانية، لا عذر هنا لمن يعرف اللغة الإنجليزية ويريد تعلم البرمجة، المصادر المتوفرة في الشبكة أكثر من كافية لكي تبدأ.
تحدثت في موقعي عن البرمجة في مواضيع مختلفة، في المقالات الثلاثة الأولى ستجد المزيد من الروابط مع ملخصات سريعة:
- ملخص مقالات في البرمجة - 1
- ملخص مقالات في البرمجة - 2
- ملخص مقالات في البرمجة - 3
- علم نفسك البرمجة في عشرة أعوام
- نصائح صغيرة لمن يريد أن يكون مبرمجاً
الروابط
- مواقع شخصية:
- PragDave
- Donald E. Knuth، احفظ عنوان هذا الموقع حتى لو لم تجد فيها ما يفيدك الآن، لأنك ستقرأ اسم هذا الرجل في الكثير من مواقع البرمجة وستعود لموقعه.
- defmacro.org
- Steve Yegge، ولديه أيضاً مدونة
- armstrong on software، هل سمعت بلغة برمجة تسمى Erlang؟
- Joel on Software
- The Old New Thing
- Coding Horror
- Paul Graham
- PragDave
- مقالات:
- Stiff asks, great programmers answer، عشرة أسئلة بسيطة لمجموعة من المبرمجين، وإجابات مفيدة.
- The road to become an alpha programmer
- How to be a Programmer: A Short, Comprehensive, and Personal Summary، مقالة طويلة ومفصلة.
- Computer Languages History
- What books should be on my "personal CS degree" reading list?
- 15 Exercises for Learning a new Programming Language
- Stiff asks, great programmers answer، عشرة أسئلة بسيطة لمجموعة من المبرمجين، وإجابات مفيدة.
- مواقع
- Free Programming Resources
- Food for Thought
- Programming.Reddit.com، عشرات الروابط حول البرمجة كل يوم.
- CodeKata
- Free Programming Resources
- كتب
- SICP، أحد أهم كتب البرمجة، هذه نسخة إلكترونية مجانية ويمكنك أن تشتريه مطبوعاً لكنه ليس بكتاب رخيص.
- How to Design Programs
- PC Assembly Language
- The Art of Unix Programming
- SICP، أحد أهم كتب البرمجة، هذه نسخة إلكترونية مجانية ويمكنك أن تشتريه مطبوعاً لكنه ليس بكتاب رخيص.
- أدوات
- Hackety Hack، إذا كنت مبتدئاً تماماً في البرمجة فبدأ بهذا البرنامج.
- Basic-256، أداة أخرى لتعلم البرمجة، تناسب الصغار والكبار.
- DrScheme، بيئة برمجة تفاعلية وتعليمية، كتاب SICP يعتمد على لغة Scheme.
- Hackety Hack، إذا كنت مبتدئاً تماماً في البرمجة فبدأ بهذا البرنامج.
رسالة للمبرمجين العرب
أعلم أن هناك الكثير منكم، وأعلم أن بعضكم متفوق مبدع ويتقن عمله، لكن أين أنتم؟ لا أرى أي وجود لكم على الشبكة، لا أري أي مدونات ولا أي مواقع شخصية تنشرون فيها دروسكم وأبحاثكم - إن كان لديكم أبحاث - وبرامجكم.
هناك العشرات من المواقع الأجنبية الشخصية لمبرمجين يعملون في شركات أو جامعات مختلفة وبعضهم طلبة في الجامعات، هؤلاء يستخدمون مواقعم للحديث عن البرمجة وللنقاش والجدال حول لغات البرمجة وأدواتها، لماذا لا أرى أي موقع لمبرمجين عرب؟
نشر المعرفة التي تملكونها ليس مجرد خطوة ضرورية لكي نتطور بل هو واجب، فأين أنتم؟ إن كان أحدكم يقرأ كلامي هذا ولديه موقع ينشر فيه المعرفة فليخبرنا عن نفسه.