كيف تصبح مبرمجًا؟

نوفمبر 30, 2010
السلام عليكم ورحمة الله وبركاته
هذا سؤال مهم يطرحه كل من يبدء في طريق البرمجة، وإجابة هذا السؤال تعطى على هيئة نصائح تعطى للأشخاص، فلا تعتمد على مجموعة من النقاط تعمل على تحصيلها ودراستها أو كتب تقرئها أو لغة معينة تتقنها لتصبح مبرمجًا بعد ذلك؛ وإنما تعتمد على مجموعة من المهارات يجب عليك تعلمها وإتقانها، وطريقة تفكير معينة تفكر بها عند كتابة البرمجيات وذلك قبل إطلاق كلمة مبرمج على نفسك. هذه العملية تأخذ وقتًا ليس بسيطًا لتتقنها، إنما يحتاج منك هذا إلى مجهود وصبر يصل لعدة سنوات لتحصل على هذا اللقب.
وكتجربة شخصية أذكر انه في مرة كنت بداخل غرفة الروبي ببرنامج الـ IRC وسئلت هذا السؤال لأحد المتواجدين : ” كيف أصبح مبرمج؟ “، فكان رد أحد الموجودين بأنه قال لي أنه مبرمج منذ 12 عامًا ولكنه لا يستطيع أن يجيبني على هذا السؤال، ولكن ما يستطيع أن يقدمه لي نصيحتان :
1- أكتب الشفرة البرمجية
2- أقرء الشفرة البرمجية
كذلك كانت الإجابة من معظم من راسلتهم من المبرمجين المشهورين، فكلهم كانوا يقولون لي بأن كثرة كتابة الشفرات وقراءة شفرات الغير هي التي ستجعلك مبرمجًا محترفًا.
لغات البرمجة تتشابه في كثير من الأساسيات، وتعلمك للغة الأولى وتعمقك بها هي التي ستأخذ منك وقتًا، أما أي لغة أخرى ستعمل على تعلمها لن تأخذ منك هذا الوقت، ولغات البرمجة مثلها مثل اللغات الحية في كثير من الجوانب، فكل منها له قواعد كتابية خاصة به أو ما يعرف باسم الـ Syntax – أو الـ Grammar في اللغات الحية – الخاص باللغة، فأنت تكتب الجمل الألمانية بطريقة تختلف عن الجمل العربية من حيث التركيب النحوي، وكل منهما يعطي نفس المعنى، نضرب مثالًا لهذا
في العربية أقول :
أنا أحب لعب كرة القدم
أما في الألمانية أقول :
Ich spiele gerne Fußball
الجملتان يعطيان نفس المعنى، ويتشابهان في وجود نفس الاسماء و الأفعال في كل منها، ولكن تركيبة الجملتان بهما إختلاف من حيث ترتيب الأفعال، نطبق هذه القاعدة على لغات البرمجة، هم يختلفوا في شكل كتابة الأوامر والرموز بينهم، ولكن يتشابهان في وجود ما يسمى بالمتغيرات والثوابت والدوال والكلاسات. مثال:
require 'fileutils'

ARGV[0].each do |dir|
  FileUtils.rmtree(dir)
end
import shutil
shutil.rmtree(path)

import os, sys
def DeleteDir(dir):
    for name in os.listdir(dir):
        file = os.path.join(dir, name)
        unless os.path.islink(file) && os.path.isdir(file):
            DeleteDir(file)
        else:
            os.remove(file)
    os.rmdir(dir)
المثال الأول بالروبي والثاني بالبايثون، والإثنان يقومان بنفس المهمة وهي حذف دليل بما يحتويه من ملفات، فنلاحظ تشابه بين سطور الشفرة في الروبي والبايثون من حيث كتابة الأوامر فالسطر الأول في المثالان يعملان على إستدعاء مكتبة برمجية ( المكتبة هي مجموعة من الأوامر موجودة في ملفات يتم إستدعائها لتطوير برمجيات أو القيام بعمل معين ) بها دوال ( الدالة هي مجموعة من الأوامر بداخل البرنامج يتم إستدعائها لتُنفذ دفعة واحدة ) تُستخدم في حذف الأدلة والملفات، في روبي تسمى FileUtils وفي البايثون تسمى shutil كذلك السطر الثاني من سكربت الروبي به دالة تعمل على جمع ما يحتوي الدليل الذي أدخلته من اسماء ثم بعد ذلك نستخدم الدالة rmtree من المكتبة FileUtils والقيام بحذف كل هذه الأسماء، وآلية العمل هي هي تعمل في سكربت البايثون فنحن نقوم بتعريف الدالة DeleteDir والقيام بجلب كل ما يحتويه المسار الذي أدخلته للإسكربت من أسماء وحذفها كلها ومن ثم حذف الدليل بعد ذلك.
نضرب مثال آخر على التشابه بين لغات البرمجة : أنت في بداية تعلمك الإنگليزية مثلًا قد يكون الأمر صعب عليك، ولكن مع مرور الوقت ستصبح اللغة بالنسبة لك سهلة، وإن أردت الإنتقال إلى الفرنسية بعد ذلك، ستجد كثيرًا من الكلمات التي تتشابه بين اللغتان علمًا بأن حوالي 30% من كلمات الإنگليزية ذات أصل فرنسي، كذلك الحال بين العربية و الإسپانية فأنت إن كنت تعلم العربية فسيسهل عليك تعلم الإسپانية؛ نظرًا للتركيب الجملي الذي يتشابه بين الإثنان، كذلك وجود ما يقرب من 6000 الآف كلمة عربية بداخل اللغة الإسپانية.
التشابه أيضًا بين اللغات يمكن تشبيهه بذلك، فهناك دوال تتشابه بين اللغات بينهم البعض، وكلمات محجوزة (الكلمات المحجوزة هي عبارة عن كلمات ثابتة تستخدم في حالات معينة لفعل أمر معين) في اللغات تتشابه فيما بينها، فلغات مثل الروبي والبايثون أخذت عن لغات أخرى مثل الـ Perl والـ Smalltalk والـ Lisp والـ Scheme بعض الطرق لكتابة الأوامر.

بعض النصائح المفيدة :

1- أنت في بداية تعلمك للغة تختار مصدرًا جيدًا يبسط لك اللغة وتتعلم منه أوامر اللغة وكيف تُكتب، وكن حريصًا في البداية على الإلمام بأوامر اللغة العامة ومعرفتها بصورة كاملة حتي يسهل عليك قراءة الشفرات الأخرى للمبرمجين (أنا لا أطلب منك حفظ اسماء الدوال كلها وماذا تفعل ولكن معرفة الكلمات المحجوزة والعبارات الشرطية وكيفية الإعلان عن دوال وما إلى ذلك من أساسيات اللغة).
2- احرص على تعلم لغات متعددة ولا تقتصر على لغة أو أثنتان أو ثلاثة، فلكل لغة نكهة خاصة بها، وتستخدم في بناء تطبيقات ذات طابع معين.
3- قم بعمل بحث عن حلول للمشاكل التي تواجهك، وعندما تجد الحل قم بتخزينه بصيغة تقوم أنت بكتابتها شارحًا فيها لنفسك هذا الحل وأحفظه في ملف خارجي، ومع الوقت ستجد مجموعة كبيرة من الحلول لمشاكل مستقبلية قد تواجهك.
4- اعمل على حفظ الدوال المشهورة التي تستخدم بكثرة بداخل البرامج، فستسهل عليك عملية كتابة البرامج.
5- قم بالإطلاع على مشاريع برمجية بلغات مستعينًا بموقع Github.
الآن نعرض لمجموعة من المقالات المهمة، التي تعطيك النصائح في بداية المشوار البرمجي، وهي مفيدة والأخذ بها سيساعدك بإذن الله.
كيف تصبح هاكر للمبرمج إيريك رايموند، مقالة بها مجموعة من النصائح الجيدة عامة و في الجزء البرمجي، المقالة العربية هي الترجمة للإنجليزية وقد ترجمت في 2005 وتفتقر إلى بعض النقاط الموجودة في المقالة الإنجليزية المحدثة. بعض النقاط الغير موجودة في النسخة العربية والتي من الممكن أن تأخذها بعين الإعتبار :
* من الممكن أن تبدء بالروبي بدلًا من البايثون، فالإثنتان عالميتان وتتوفر بكثرة الكتب والمصادر التي تستطيع بواسطتهما تعلم اللغتان بصورة سهلة.
* العمل في بيئة اللينوكس، ويمكنك البدء بتثبيت توزيعة أوبونتو، وستجد الدعم اللازم لكل مبتدء من البداية في مجتمع لينوكس العربي.
مقالة علم نفسك البرمجة في عشرة أعوام، أيضًا هذه المقالة بها نصائح هامة للمبرمج، وتوجد نسخة مترمجة منها للعربية ولكن وقت كتابة هذه السطور كان رابط النسخة العربية للمقالة لا يعمل.
مقالة TipsForReadingCode أيضًا ممتازة بها نصائح لتسهيل عملية قراءة الشفرة .
كتاب How to be a Programmar هو كتاب حصلت عليه أثناء قرائتي لتدوينات التويتر الخاصة بالأصدقاء الموجودون لدي في القائمة، وجدت حساب الأخ محمد زاهر غيبة به رابط لمدونة بها موضوع يخص ثتبيث الروبي في بيئة الويندوز، فقمت بإلقاء نظرة عليها ووجدت موضوعًا بها يتحدث عن كيف تصبح مبرمج، وهو ملف PDF لشخص يدعى Robert L.Read يعرض فيه ملخص لتجربته مع البرمجة وما هي المهارات التي يجب عليك تعلمها. قم بتحميله من هنـا
كتاب آخر يحمل اسم How to Become a Programmer يعرض فيه الكاتب لمجموعة من النصائح بجانب إخبارك ما هو الطريق الذي تسلكه للحصول على المال من البرمجة. حمله من هنـا
نختم بكتاب كبير هو كتاب How To Program Using Java، كتاب ممتاز أنصح كل فرد في بداية الطريق بقرائته فيه نصائح جميلة، هو ليس مجاني ولكن هناك نسخة PDF منه على الشبكة تستطيع بالبحث الحصول عليها.
في والنهاية أذكرك بأنه كلما بذلت مجهود أكبر كلما أصبحت مبرمج أكثر إحترافًا. وفقك الله

4 تعليقات to “كيف تصبح مبرمجًا؟”

  1. aatkco Says:

    الله يحفظك , مقالة رائعة جدا

  2. الطفرة Says:

    شاكر لك أحمد

  3. أحمد Says:

    جزاك الله خيرا
    مقال رائع
    ملف التجربة الشخصية ممتاز

  4. الطفرة Says:

    جزانا وإياكم أحمد.


أضف تعليقاً

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s

%d مدونون معجبون بهذه: