الرئيسية / جافا / أساسيات في البرمجة بالجافا / تعلم البرمجة من الصفر: الدليل الشامل لوضع المبرمج المبتدئ في المسار

تعلم البرمجة من الصفر: الدليل الشامل لوضع المبرمج المبتدئ في المسار

كيف أتعلم البرمجة؟ سؤال لهُ ألف و ألف إجابة، و لسانُ حال السائل يقول أين أجد مُبتغاي؟!! هل كانت البرمجة ضرباً من الخيال حتى تسمع عنها قصصاً تختلف؟!! أم كانت البرمجة علماً سرياً لا يُتوصل إليه حتى و إن فعلت ما فعلت!

ما ذنبُك إذا أحببت العلم و رغبت بأن تضع أقدامك على أول الطريق و سؤالُك يضعك في ألف طريق.

فكيف إذا ما فرشنا لك الطريق بالعلوم و الخبرات لتبدأ طريقك لتعلم البرمجة من الالف الى الياء؟

بنهاية هذه التدوينة ستستطيع الإجابة على كل الأسئلة الأساسية التي تجول بذهن الراغب بتعلم البرمجة، كما ستستطيع أن تبدأ تعلم البرمجة دون حيرة!

تعلم البرمجة من الصفر بدايتهُ هذه التدوينة.

المفهوم العظيم للغة البرمجة

قبل البدء بالحديث عن البرمجة، فلنضع في بالنا أن هناك فرقاً كبيراً بين المبرمج و المصمم.

هنا نتحدث عن البرمجة، وسنتعرف إلى الفرق بين البرمجة و التصميم بعد قليل.

إليك هذا:

لنفترض أنك وصلتَ إلى أمام البائع لتشتري هاتفاً، كيف تُخبر البائع بالنوع الذي ترغب بشراءه؟

لا بُد و أن تُخاطب البائع لتطلب مبتغاك، أليس كذلك؟ ولكن ماذا إذا كان البائع لا يتحدث لسانك ولا لغتك؟

لن تستطيع أن تحصل على ما ترغب به إلا إذا وجدت شخصاً يستطيع أن يتحدث مع البائع بلغته.

هذا هو حالك مع الحاسب…

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

لغاتُ البرمجة ليست إلا “لغات” 📚 بمعنى الكلمة، ما تؤديه فقط هو ترجمة ما ترغب به إلى ما يستطيع الحاسب تأديته.

ولكن، لماذا لغات البرمجة مختلفة؟

اللغة العربية بها 28 حرفاً، و الإنجليزية 26 حرفاً، إحدى الكلمات العربية تحتاج إلى جملة كاملة بالإنجليزية لترجمتها مثل “أنُلزمُكموها”.

هكذا اللغات تختلف عن بعضها في قدراتها و تكويناتها، مع وجود فروقات طفيفة في لغات البرمجة.

لغات البرمجة مثل اللغات الطبيعية لها ذخيرة لغوية و كلمات، و لكن تتميز أن اللغة بعد تطورها قد تأخذ إسماً آخر.

الجافا مثلاً تطورت من لغة C++ ، سُميّت جافا و أصبحت لغة برمجة مختلفة 🚸 و إضافة إلى لغات البرمجة الكثيرة!

تعلم البرمجة - لغة جافا

خذ هذه المعلومة:

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

هذا التسهيل ضروري لأن الحاسب في الحقيقة يتعامل فقط مع شيئين هما 0 و 1، و من الصعب على المبرمج أن يكتب أوامره بالصفر و الواحد لأن عملية التحويل صعبة و الكتابة كثيرة .. مثل أن يكتب بدل الرقم 3 [11] و بدلاً من الرقم 9 [1001].

إتخاذ قرار: البرمجة أم التصميم؟

سترى لاحقاً كيف أن البرامج حازت على نصيب الأسد من التحكم في حياتنا و تسيير أمورنا و تسهيلها، ولكن من هم منشئو هذه البرامج.

المسمى الوظيفي لمن ينشؤون البرامج من الأمور التي فيها خلطٌ لهذا وجب علينا أن نتطرق إليها.

وظيفتان منتشرتان في عالم البرمجة: مصمم برامج و مبرمج.

الفرق بين المبرمج و المصمم

المهم في الأمر:

هاتان الوظيفتان أو المهمتان (البرمجة و التصميم) مرتبطتان كما الإخوة لا تفترقان بتاتاً، و لكن بينهما فروق جوهرية لا بد ان تعلمها حتى تستطيع أن تحدد مسارك المهني و العملي.

حتى نعرف تلك الفروق لا بد أن نتعرف إلى طريقة عمل البرنامج 👀.

البرامج تتكون من شاشة يراها المستخدم، هذه الشاشة هي التي يتعامل معها المستخدم، يُدخل فيها بياناته و يختار منها ما يرغب باختياره، يعتقد بعض المُستخدمين أن هذا هو البرنامج، و لكن الحقيقة هي أن هذه الشاشة تماثل هيكل للسيارة.

جميعنا يركب السيارات و نعلم أن السيارة تتحرك عند الضغط على دواسة الوقود و تتوقف بالضغط على المكابح، و لكن هل تعمل السيارة إذا امتلكنا دواسة وقود فقط و ظللنا نضغط عليها؟ ☺

بالتأكيد لا بُد من وجود شخص آخر ليقوم بتجهيز العمليات الخلفية التي لا يراها سائق المركبة، فحركة المركبة تعتمد تماماً على ما يحدث عن الضغط على دواسة الوقود، و ليس على الضغط على الدواسة فقط. تتفق معي أليس كذلك؟

إذا ما اتفقت معي فأنت قد ملكت الفرق بين المصمم و المبرمج.

في شاشة تسجيل الدخول مثلاً يكون المصمم هو من يصمم شكل الشاشة التي يراها المستخدم و يضع الصور و يختار الألوان و يُنشئ الأزرار و الأماكن التي سيكتب فيها المستخدم.

أما المبرمج فهو من يُنشئ العمليات الخلفية لشاشة تسجيل الدخول، فعندما يدخل المستخدم إسمه و كلمة المرور فإن البرنامج يتعرف على هذه البيانات هل هي مسجلة مسبقاً أم أنه شخص يحاول سرقة الحسابات.

من يُنشئ عملية التعرف هذه هو المبرمج.

خلاصة الأمر، أي برنامج يخدم المستخدم لا بد فيه من واجهة مستخدم و عمليات خلفية، يقوم بهما المصمم و المبرمج سوياً.

لكل من المبرمج و المصمم صفات شخصية يتسمون بها ليستطيعا التعامل مع مجالهما باحترافية و ينجحا فيه

صفات شخصية المصمم

  • تذوق الألوان 🍻.
  • الإبداع و الإبتكار.

صفات شخصية المبرمج

  • التفكير المنطقي.
  • القدرة على حل المشاكل.

إنتشار البرمجة خارقٌ للعادة

توجد أسباب كثيرة لتتعلم البرمجة، ربما تملك هدفاً مُسبقاً ولكن ربما معرفتك بالآفاق التي وصلتها البرمجة تزيد من فضولك لهذا المجال.

ما يعجبني في هذا المجال أن البرمجة تصب في مجال النظم، و النظم تخدم جميع المجالات البشرية، بل أكثر من ذلك أرى أن البرمجة هي التي صنعت من عصرنا عصرنا…

أوّاهُ لحياتنا بلا برامج 💘

نمو عدد البرامج في قووقل بلي
نمو عدد البرامج في قووقل بلي

من المجالات التي تؤثر فيها البرمجة الآن -وليس جميعها-

  • برمجة الترفيه: من الشائع أن تكون قد لعبت أو أنك تدمنُ اللعب الآن على أحد الألعاب التي لا تعمل إلا على كرت شاشة خاص لجمال رسوماتها، هذه الألعاب فيها قدر عالٍ جداً من البرمجة.
    و لكن يظل الأمر أن الألعاب الحاسوبية ليست الوحيدة في مجال الترفيه، فإدارة الملاهي الكبيرة و الألعاب فيها و البرامج السياحية و إصدار تذاكر الطيران و غيرها من الأمور التي تؤثر فيها البرمجة بقوة.
  • برمجة الطب: ما أدق التشخيص و أنت ترى الطبيب يطلب منك إصدار صورة اشعة مُلائمة لحالك لتذهب -سلمك الله من كل سوء- إلى أخصائي الأشعة ليلعب الأزرار التي تُدار عن طريق برنامج ليُجري لك الأشعة.
    الطب بصورة خاصة وصل إلى درجة أعلى بأن الطب له تخصص يُسمى بنظم المعلومات الطبية!
  • برمجة السياسة: من المرات النادرة التي ربما ترى فيها السياسة في مدونة علوم، و لكنها تتأثر أيضاً بمجال البرمجة بشدة، فإدارة أنظمة الإقتراع و الحكومات الإلكترونية و التطبيقات التي تسهل حياة البشر من أهم ما يمكن أن تفعله الحكومات لمحكوميها.
  • برمجة علوم الفضاء: يجعلني أتعجب جداً ذاك القدر من الدقة الذي يتوفر ببرامج تُدير ماكوكاً فضائياً، أن الجزء من الثانية يعني حياة بشر و جهود سنين عددا! فلغة  HAL/S مثلاً تلعب دوراً دقيقاً في ناسا.
    ولكن حتى تعرف تأثير البرمجة على علوم الفضاء، هل تذكر الصور التي تصاحب إقلاع أو هبوط أحد الصواريخ؟ دوماً تجد عدداً من المهندسين يجلسون أمام عدد كبير من الشاشات و يقفزون فرحاً عند نجاح العملية.
  • برمجة المنازل: ليس هذا الأمر مزحاً، مهما صغرت البرامج تبقى برامجاً، فالمكيف يملك مؤقتاً، و التلفاز يُبرمج لإستقبال القنوات و الغسالة تعمل إلكترونياً بلا تدخل بشري لإحتوائها على برامج مُختلفة.

ما يجب أن تعلمه تماماً أن البرمجة الآن تؤثر على كُل منحى من مناحي حياتنا بلا استثناء، لذا فإن مجال البرمجة ما زال متطوراً و ما زال سوق عمله يتطلب الكثير من المُبرمجين المختصين.

السؤال الأسطوري: تعلم البرمجة سهل أم صعب؟

هل تعلم البرمجة صعب” ، “هل يمكن تعلم البرمجة

هل واجهتك هذه الأسئلة أو جالت بخاطرك في يومٍ ما؟

أتفق معك إبتداءً أن تحديد مدى صعوبة أو سهولة ما ترغب بتعلمه يجب أن لا يكون المعيار الوحيد لمواصلة التعلم، أليس كذلك؟

إليك هذا السر:

وفقاً لتجاربي مع المبتدئين بتعلم البرمجة فإنهم يسألون أنفسهم و غيرهم هذا السؤال ليس لمعرفة درجة صعوبة أو سهولة البرمجة، و إنما للتأكد من قدرتهم على تعلم البرمجة.

في بعض الأحيان أيضاً يُخلط ما بين تعلم البرمجة و تعلم نظام التشغيل، لن نتحدث عن نظام التشغيل في هذه الجزئية ولكن نتحدث عنه في الجزء التالي مباشرة.

إذا ما كُنت ترغب في تعلم أي علم من العلوم فبدايتُه أن تثق أنك ستستطيع تعلمه و أن تبذل أقصى جهدك لتعلمه 💪.

البرمجة ليست بعيدة عن بقية العلوم، لذا سأضع بين يديك إجابة السؤال عن صعوبة و سهولة تعلم البرمجة لتنساه.

النقطة الأولى التي أرى أن تضعها بالإعتبار هي أن تعلم البرمجة يحتاج إلى مجهود. ستقضي ساعات وأيام من القراءة و التعلم حتى تصل إلى درجة المعرفة التي تعينك على إجراء التجارب و الحصول على الخبرات.

النقطة الثانية البرمجة تعتمد على المنطق، لن تجد زقاقاً واحداً في البرمجة لا يعتمد على المنطق، حتى العشوائية فيها منطقية. تأكد أنك ستتعامل مع المنطق بكثرة في تعلمك للبرمجة و إنشاء برامجك.

تعلم البرمجة الوقت مع الخبرة

الإجابة:

البرمجة ليست سهلة ولا صعبة، و إنما تحتاج إلى مجهود لتتعلمها، إذا وثقت أنك تستطيع أن تتعامل مع النقطتان السابقتان فأرى أن تعلم البرمجة سيكون سلسلاً ممتعاً.

ولا شيء يُضاهي رؤية نتاج مجهودك و تعلمك (البرامج) و هي تعمل أمام ناظريك.

نظام التشغيل الحاضن للغة البرمجة

كلنا على الأقل سمع بنظام التشغيل ويندوز Windows. هناك معرفة لازمٌ استصحابها في تعلمك للبرمجة تتعلق به.

إنها معرفة مفهوم و أنواع نظم التشغيل، إذا كُنت تعرف جيداً ما هي نظم التشغيل و أنواعها فاقفز إلى الجزئية التالية.

هيا فلنتعرف على عمل نظام التشغيل.

إن الحاسب الذي تستخدمه أو يستخدمه غيرك يتكون من أجهزة إلكترونية (معالجات و ذواكر و مخازن بيانات..إلخ) لن تعمل دون أن يوجد مدير يتحكم بهذه الأجهزة.

هذا المدير يسمى بنظام التشغيل، لاحظ أن إسمه يدل على وظيفته [تشغيل الحاسب].

لغات البرمجة و نظم التشغيل

حتى تعرف كيف يدير نظام التشغيل الحاسب لنتعرف على كيفية عمل نظام الويندوز بما أنه أكثر النظم انتشاراً.

عند ضغطك على زر تشغيل الحاسب 🔘 يتم تحميل نظام التشغيل (ويندوز) وفقاً لإعدادات بسيطة ليتم تسليم نظام التشغيل دفة إدارة كافة أجهزة الحاسب.

عندها يبدأ الويندوز بإظهار الشاشات المألوفة و القابلة للتعامل معها بالفأرة، مثل الشاشة التي تحتوي على شعار ويندوز و ما يليها من الشاشات، كما يدير الويندوز الذاكرة العشوائية (RAM) و المعالج و كافة أجهزة الحاسب القابلة للإدارة.

ولكن هناك إحتمال آخر:

من الممكن أن يكون مدير النظام الذي يعمل عند الضغط على زر تشغيل الحاسب مختلفاً، و الشاشات التي تراها عند بدء نظام التشغيل مختلفة.

هنا تأتي أنواع أخرى من أنظمة التشغيل، إذا لم تكن تعرفها فهذا لأنها أقل انتشاراً و شعبية.

من أنظمة التشغيل الأقل شهرة من ويندوز لينكس و سولارس و ماكنتوش.

إذا ما كانت هذه الأنظمة منصبة على حاسبك لتدير نظام التشغيل فإنها لن تمثل فرقاً كبيراً في طريقة عمل حاسبك. للبدء دوماً ستضغط على زر تشغيل الحاسب و لكن الأزرار تختلف.

إذا ما تساءلت لماذا يجب أن تتعرف إلى هذه المعلومات عن أنظمة التشغيل، فإن هذا لأن لغات البرمجة ترتبط إرتباطاً مباشراً ولا فكاك منه بأنظمة التشغيل، فالبرنامج الذي تبذل لتطويره أياماً وليالي سيعمل على (أحد أو بعض أو كل) أنظمة التشغيل.

ولإختلاف أنظمة التشغيل و اختلاف طريقة تعاملها مع الأجهزة و إختلاف شاشاتها يجب أن تعلم كيف سيعالج برنامجك هذه الإختلافات.

مصادر الدخل بين (مفتوح المصدر و مغلق المصدر)

ستمر عليك هاتان العبارتان كثيراً في مسيرة تعلمك للبرمجة و عملك فيها.

ما يفعله المبرمج كما تعلم هو أنه يكتب شفراته البرمجية (Source code)، ثم تُترجَم هذه الشفرات إلى لغة الحاسب لتعمل.

حسناً، لنُضيف إضافة مهمة…

بعد ترجمة شفرتك البرمجية فإن مُترجماً افتراضياً يتكفل بتحويل تلك الشفرات إلى ملف آخر قابل للتنفيذ.

مثل أن يحول المترجم شفرتك البرمجية إلى ملف بالإمتداد exe على ويندوز.

جميع البرامج في الكون من الممكن أن تكون مفتوحة المصدر أو مُغلقته.

كيف ذلك؟

البرنامج مفتوح المصدر يعني أنه مع نشر البرنامج  تكون شفرته البرمجية متاحة للجميع مجاناً.

أما البرنامج مغلق المصدر فيعني أن البرنامج فقط تم نشره للجميع ولكن تم الإحتفاظ بشفرتها البرمجية.

مايكروسوفت من الشركات التي تتبنى مفهوم البرامج مغلقة المصدر منذ سنوات، فنظام التشغيل ويندوز هو نظام مغلق المصدر ولم تُنشر شفرته البرمجية بتاتاً منذ بدايته و حتى اليوم.

أما نظام التشغيل لينكس فهو نظام مفتوح المصدر و شفرته البرمجية متاحة للجميع للتطوير و التعديل عليها.

مفاهيم مهمة في تحديد نوع البرنامج (مفتوح أم مغلق المصدر).

  • البرامج مفتوحة المصدر تعني أن الجميع يستطيع التطوير فيها و البدء من حيث انتهى الآخرون.
  • هذا التطوير يعني تطوراً أسرع لهذا البرنامج.
  • مغلق المصدر يعني أن هناك فئة محددة تعتني بتطوير البرنامج.
  • البرامج مغلقة المصدر من السهل التحكم فيها تجارياً، على عكس البرامج مفتوحة المصدر.
  • البرامج مفتوحة المصدر لا تعني أن البرنامج مجاني، بل تعني فقط أن الشفرة ستكون متاحة للجميع.

كيف تختار لغة البرمجة في أول الطريق

بعد أن تقتنع بأنك ترغب بتعلم لغة برمجة، تنتقل إلى مرحلة أعلى و هي اختيار لغة البرمجة التي ستتعلمها.

أعتقد أن اختيار لغة البرمجة ليس صعباً كما يُعتقد.

السبب:

ذلك لسبب بسيط و هو أن لغة البرمجة وسيلة لتحقيق هدف محدد، فإذا عرفت ما هو هدفك فلن تُمثل لغة البرمجة المختارة فارقاً يُذكر.

لذا قبل أن تبدأ تعلم لغة برمجة ما، حدد هدفك الذي تود تحقيقه.

  • إنشاء برنامج معين محاسبي على الجوال.
  • تطبيق للتحكم بالروبوت.
  • موقع تواصل إجتماعي.
  • …إلخ

بعد أن تحدد هدفك حاول البحث عن لغات البرمجة التي تملك المؤهلات لتحقيق أهدافك.

اختيار لغة البرمجة

من أهم المؤهلات التي يجب عليك مراعاتها عند إختيارك للغة البرمجة

  • سهولة تحقيق الهدف: بحيث لا تكون كتابة الشفرات البرمجية لتحقيق الهدف صعبة أو طويلة.
  • الإعتمادية: لغة البرمجة مجربة في مجالك و تعمل بكفاءة مع أهداف مشابهة أو مماثلة.
  • التوثيق: وجود مصادر كافية لتعلم لغة البرمجة و حل المشاكل التي قد تواجهك أثناء تطويرك لنظامك.

توجد العديد من اللغات التي تخدم أهدافاً عامة، مثل إنشاء تطبيقات سطح المكتب و تطبيقات و مواقع الويب و غيرها من الأهداف تناولتها في معرض حديثي عن اختيار لغة البرمجة.

تأثير السوق على اختيار لغة البرمجة

تعلم لغة البرمجة لا يقف عند الهواية فقط، البرمجة مجال عملي و مهني و يتوقع المبرمج أن يحصل على عائد 💰 من أعماله.

و كنتيجة لمجهوداتك المستمرة، فإن برامجك أيضاً كنتيجة طبيعية ستكون جزءاً من مؤسسات و شركات أو مستخدمة من قبل مختلف المستخدمين.

إليك ما يجب أن تفعله:

إهتم بأن تكون أكثر تأثيراً بأن تختار لغة البرمجة المناسبة للسوق الذي تستهدفه.

السوق المُستهدف ربما يعني مكان تواجد مستخدمي برامجك.

من الممكن أن يكون السوق المستهدف حقيقي أو افتراضي.

مثال السوق الحقيقي أن تستهدف بيع برامجك في مدينة الكويت، أما مثال السوق الإفتراضي أن تستهدف مستخدمي ألعاب فيسبوك.

تحديد السوق المستهدف يعتمد على عوامل كثير أغلبها شخصية و عادة ما تكون خياراته قليلة. لذا لا تقلق نفسك كثيراً بمحاولة تغيير السوق المستهدف مالم تكن قابليتك للوصول إليه كاملة.

إنتشار لغة الجافا

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

الوصول لمعلومة أكثر لغات البرمجة المستخدمة له طرق كثيرة، و لكن سؤال أهل الخبرة أهمها. كما من الممكن أن تبحث عن الوظائف المطلوبة لكل لغة برمجة و تقارن بينها، شرحتُ هذه الطريقة في تدوينة عن اختيار لغة البرمجة.

من الطرق أيضاً أن تبحث عن أكثر دورات لغات البرمجة توفراً، فكلما كانت الطلب على لغة البرمجة أعلى توفرت لها دورات أكثر. و لكن أرى أن هذا المعيار ليس دقيقاً تماماً.

المهم في الأمر، بعد اختيار لغة البرمجة التي ترغب بتعلمها يتحتم أن لا تكون على جزيرة منعزلة لا تجد من تتعلم منه ولا من يرغب بتوظيفك ولا من يرغب بأن تطور له البرامج.

التخلص من عقدة اللغة الإنجليزية في البرمجة

عندما بدأ العلم كان العرب و المسلمون هم رُعاتُه = تاريخ.

تتفق معي أننا الآن و في أيامنا هذه أصبحت اللغة الإنجليزية هي عماد العلوم و اللغة العالمية للتخاطب و التعلم.

قبل أن أتحدث عن اللغة الإنجليزية أود أن أعبر عما بخاطري.

أؤمن تماماً بأن اللغة العربية بإمكانها أن تعبر عن العلوم جميعها إذا ما تُرجمت العلوم الموجودة إلى اللغة العربية و كُتبت المؤلفات العلمية باللغة العربية.

فلنعُد.. و بما أن اللغة الإنجليزية هي عماد العلوم في عصرنا و خاصةً في مجال الحاسب الآلي و البرمجة، فهل يجب أن تكون جيداً في اللغة الإنجليزية لتتعلم الحاسب؟

لا أعتقد ذلك.. فالبرمجة بصورة عامة لا تحتوي على قدر كبير من المفردات الإنجليزية، و بالإمكان تعلم مهامها حتى دون معرفة معناها.

التحول الإيجابي:

بالتأكيد إذا ما كنت جيداً في اللغة الإنجليزية فإن هذا سيسهل عليك فهم أمور كثيرة.

كما أن الكُتب الجيدة عن البرمجة عادة ما تكون متوفرة باللغة الإنجليزية. لاحظ قولي عادة وليس دائماً. يوجد بعض الكُتّاب المميزون في مجالات الحاسب و البرمجة في وطننا العربي.

لا تفكر كثيراً في اللغة الإنجليزية فهي لن تقف عائقاً في طريق تعلمك للبرمجة.

ولكن بلا شك.. يبقى تعلمها فائدة كبيرة، و أداة تزيد من سرعتك في تعلم العلوم عامة.

لا يكفي أن تتعلم فقط

البرمجة ليست نظريات… فقط.

في بدايات تعلم البرمجة و طوال تعلمك و عملك تستصحبك نظريات عديدة تسهل من عملك و تطور من مستواك العملي و العلمي.

ولكن إذا ما وجدت أن الحديث عن البرمجة يتوقف على النظريات فقط فاعلم أن هذا هو الطريق الخاطئ.

البرمجة تتحدث عن إنشاء منتج محسوس..

تتحدث عن نتاج مجهود و عمل و تفكير..

تتحدث عن تحويل الأفكار إلى واقع..

هذا يعني أن البرمجة لا تتوقف على تعلم النظريات فقط، لا تضيّع وقتك في تعلم نظريات لن تطبقها.

ما عليك أن تفعله فعلاً هو أن تتعلم النظريات من ناحية لتؤثر في طريقة عملك و مخرجاتك، ما يجب أن تفعله هو أن تطبق هذه النظريات و ترى نتائجها و تعتمدها إن نجحت و تغادرها إن فشلت.

السحر الخفي: التعلم في 24 ساعة و 3 أيام و 7 أيام

أنا و أنت و غيرنا … نرغب بالحصول على أفضل النتائج في أقصر وقت ممكن.

هذا هو السر في النجاحات التي تحققها مثل هذه الكتب.

ولكن المنطق يقول، إذا كانت البرمجة أو غيرها من المواضيع التي تتعلق بالكتب التي تسمى بتعلم البرمجة خلال … (وقت قصير جداً و غير منطقي) فعلاً تحول الشخص إلى مبرمج، فهذا يعني أنه بإمكانك أن تكون محترفاً لـ 10 مجالات خلال 10 أيام لتبدأ العمل باحدى الشركات ثم يأتي غيرك و قد قرأ 11 كتاب خلال 11 يوم ليكون أفضل منك .. و هكذا !!!

طلب تعلم البرمجة السريع

أعجبني تعلم الروحانيات في يوم 😄

من الجلي أن الأمر ليس منطقياً.

ولكن هل من الممكن تعلم لغة البرمجة بسرعة على كل حال؟

نعم، السرعة ممكن إذا حددت هدفك.

إذا ما كان هدفك إنشاء برنامج آلة حاسبة مثلاً، بدأت بتحليل ما يجب عليك أن تفعله حتى تبرمج آلة حاسبة ثم تعلمت ما تحتاجه فقط لا غير و طورت الآلة الحاسبة، هذا من الممكن أن يتم خلال يومان أو ثلاثة.

ولكن إحتراف لغة برمجة تم تطويرها خلال سنوات من العمل المتصل و خبرات مئات أو آلاف الأشخاص الموثقة في آلاف الصفحات يتم إستخلاصها في 20 صُفيحة صغيرة… يا للدهشة!

ستقرأ لاحقاً في هذه التدوينة آراء خبراء في البرمجة عن تعلم البرمجة و كم من الوقت يستلزم تعلم البرمجة و هذا سيضع بعض النقاط فوق الحروف.

حياة المبرمج العملية

بما أنك تقرأ حتى هنا، فهذا يعني أنك ترغب بتعلم البرمجة حتماً، ولكن..

هل تعلم كيف هي حياة المبرمج العملية؟

قبل أن تتعرف إلى حياة المبرمج العملية سنتطرق إلى شيء أهم و هي نماذج تطوير البرمجيات.

من أبسط نماذج تطوير البرمجيات هو نموذج الشلال، هذا النموذج يعتمد على إجراء مرحلة واحدة ثم الإنتقال إلى التالية دون

مراحل التطوير هي:

نموذج الشلال

  1. جمع المتطلبات: يقوم بهذه المرحلة محللو النظم عادة و يجلس فيها محلل النظام مع العميل لفهم احتياجاته و توثيقها.
  2. التحليل: يُكمل محلل النظام عمله بتحويل المتطلبات إلى نماذج و مخططات و هياكل معيارية لتُستخدم في المراحل المقبلة.
  3. التصميم: يشارك في هذه المرحلة الخبراء من المبرمجين و إداريو قواعد البيانات و مصممي البرامج، يتم فيه هذه المرحلة وضع الهيكل الخارجي للبرنامج مفككاً.
  4. البرمجة: في هذه المرحلة يعمل المبرمجون و إداريو قواعد البيانات و المصممين على ربط التصاميم المنشأة وفق نتائج التحليل و الهيكل المعد مسبقاً من قبل الخبراء.
  5. الاختبار: الإختبار يجريه مختبرو النظم، فيه يقارن مختبرو النظم بين النظام الناتج من البرمجة و متطلبات العميل للتأكد من موافقتها لاحتياجاته كما يتأكدون من عدم وجود خلل بالبرنامج.
  6. الصيانة: تثبيت البرنامج لدى العميل و صيانة البرنامج بصورة دورية قد يشارك فيها أي عضو من أعصاء تطوير البرمجيات.

لا تنخدع بهذا العدد:

وفقاً لواقع الحياة، فإن هذا النموذج لا يُطبق إلا في الشركات الكبيرة أو البرامج الكبيرة، أما الشركات المتوسطة قد تدمج أكثر من عملية.

أما المشاريع الفردية و البرامج الصغيرة فيؤدي فيها المبرمج كامل المهام.

هل لاحظت أين هو دور المبرمج في نموذج تطوير البرمجيات؟

إذا ما عملت في بيئة احترافية فإن مهمتك الفعلية هي تسلم التصاميم من المبرمجين الخبراء، و تسلم وثائق متطلبات النظام و تحويل التصميم إلى برنامج حي وفقاً لمتطلبات العميل.

وكلما كانت الشركة أقل احترافية أو كان البرنامج أصغر كثُرت المهام التي تؤديها.

ماذا قال خبراء الحاسب

الإستماع لآراء الخبراء قبل تعلم لغة البرمجة من الأمور المساعدة لاختيار الطريق الصحيح و توفير الكثير من الوقت و العناء.

أحمد معتصم - مطور نظم
أحمد معتصم

أحمد معتصم مطور نظم:

  • أتقن لغة السي شارب.
  • تعلمت السي شارب لأنني علمتُ أن الطلب عليها من قبل الشركات كبير.
  • يحتاج المبتدئ لإنشاء برامج كبيرة بلغة السي الشارب إلى 3 أشهر تقريباً إذا أمضى 4 ساعات يومياً بالتعلم.
  • تطلب لغة السي شارب من قبل شركات تطوير المواقع الالكترونية و بعض الجهات الحكومية وشركات تطوير الألعاب التي تستخدم إطار عمل framework يعتمد على الدوت نت.

محمد علي الطيب مبرمج شيربوينت:

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

خاتمة

تعلم البرمجة مثل غيره من العلوم يحتاج إلى إجتهاد و مواصلة تعلم، وكُل من يعمل لذلك يصل، لا تنسى أن بعض الدول إعتمدت تعليم الأطفال البرمجة و اعتمدت البرمجة كإحدى المواد الأساسية بالمدارس.

التخلص من التشتت الذهني لكثرة المصادر و المعلومات من أهم الخطوات التي يجب على متعلم البرمجة القيام بها قبل البدء بتعلم البرمجة، و قبل ذلك يجب وضع فترة قصيرة لتحديد أفضل المصادر التي بإمكانك الإعتماد عليها.

ليس بالضرورة أن تتعلم كل شيء بسرعة أو أن تكون الأفضل بالمجال، و لكن من المهم أن تحاول أن تتحصل على كل شيء بسرعة و أن تكون الأفضل إطلاقاً.

عندما تجد الفائدة شاركها مع الآخرين، و إذا وجدت الفائدة في هذه التدوينة شاركها مع أصدقائك.

عن مصطفى الطيب

مصطفى الطيب
صديقٌ لنُظمِ المعلُومات و عُلومِ الحَاسِب و مُختصٌ بهما، مُحبٌ للعِلمِ و نَشرِه. أُشاركُ معارفي و تَجاربي و خِبراتي في تَدويناتٍ و دوراتٍ من خلال مُدونةِ عُلوم.

16 تعليق

  1. شكرا جزيلا هذه إحدى أجمل المقالات التي قرأتها قط

  2. شكرا جزيلا يا استاذ مصطفى
    بقالى شهر بحاول ادخل مجال البرمجه وبحاول انى الاقى كتاب او مقالة تبين الفروق العريضه بين المبرمج والمصمم وتقدم نبذه شاملة عن البرمجه بشكل عام
    شكرا ليك مره تانيه ستفدت كتير من المقال

  3. يعطيك العافية اخي الفاضل والله يبارك لك بعلمك ..اعتقد اننا نحتاج الى مركز ترجمة ضخم لتحويل علموهم الينا .. اخي هل تدلنا على اسماء كتب مترجم بعربي أو كتب نجد فيها مصطلحات حاسوبية بالعربي وشكرا لك

    • مصطفى الطيب

      عافاك الله أبا الشيم، صدقت في حوجتنا لذلك و أكثر منه حوجتنا للعلوم بالعربية الأصيلة.

      للأسف لا علم لي بكتب تهتم بالمصطلحات الحاسوبية العربية، و تسعدني مشاركتك لي هكذا كتُب إذا ما وجدتها.

  4. فعلا المقال جميييل جداا يا استاذ
    لكن انا عندي نصيحة للراغبين في تعلم البرمجة
    تختلف لغات البرمجة على حسب نوع المشروع
    فاذا كان لتصميم مواقع تستخدم بي اتش بي و اتش تي ام ال و سي اس اس.
    و اذا كان لمن يريدون تصميم تطبيقات المكتب فتنفع بايثون و سي و جافا و سي شارب
    و اذا كان لتصميم العاب الهاتف فجافا هي الاكثر استخداما.
    و اذا كان لتصميم الالعاب الحاسب ذات الرسوميات العالية فانصح بالسي .
    و اذا كان لتصميم نظم تشغيل للحاسب فانصح بالسي و السي

    • مصطفى الطيب

      تشكر يا محمد، ولكنك قد ضيّقت واسعاً…

      خلاف الأمثلة التي ذكرتها توجد لغات كثيرة جداً تخدم هذه الأهداف، مثل جافاسكربت في التصميم و lua في الألعاب و غيرها.

      إختيار لغة البرمجة المناسبة للتعلم يأتي بعد تحديد أمور عديدة جداً، و ما يناسب شخص قد لا يُناسب الآخر.

      ولكن نستطيعُ القول بأن لغات البرمجة التي ذكرتها تستطيع خدمة الأهداف التي ذكرتها

  5. جزاك الله خيرا

  6. شكراً جزيلاً حقيقة مقال رائع وافادني كثير

  7. يااخي انا مشوش قليلا انا اعرف اختار اي واحدة من هذه افضل :

    .تقني سامي في الاعلام الالي
    .لغات البرمجة

    • مصطفى الطيب

      مرحباً بك أخي،

      اعذرني، فسؤالك غير واضح.
      1- ما هو السبب الذي يدعوك للإختيار؟
      2- ماذا تقصد بـ ” تقني سامي” ؟

      • يقصد بها technicien supérieur en informatique ولم افهم ايهما احسن

      • مصطفى الطيب

        لا يمكن إجراء تفضيل عام، فما يكون حسناً لدى شخص قد يكون عكس ذلك لدى آخر.

        ذكرتُ في تدوينة عن اختيار التخصص (أنصحك بقرائتها) هذه الخطوات للمساعدة على اختيار التخصص، أعتقد أنها مناسبةٌ لحل مشكلتك

        1.تحديد طباعك و ميولك الشخصية و رغباتك.
        2.معرفة الصفات العامة لمجال علوم الحاسب، هل تتفق مع طباعك و ميولك و رغباتك؟.
        3.معرفة صفات كُل قسم من أقسام علوم الحاسب.
        4.تحديد القسم الذي ترغب بدراسته.
        5.البحث عن الجامعات التي يتوفر بها القسم المحدد.
        6.التقديم لهذه الجامعات.

  8. شكرا لك .. مدونة مفيدة جدا

أضف تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *