كيف أتعلم البرمجة؟
سؤال لهُ الكثير من الاجوبة، و لسانُ حال السائل يقول أين أجد طلبي؟!! هل كانت البرمجة مجرد اوهام حتى تسمع عنها قصصاً مختلفه؟!! أم كانت البرمجة سراً علمياً لا يُتوصل إليه حتى و إن فعلت ما فعلت!
إذا أحببت العلم و رغبت بأن تضع أقدامك على أول الطريق و سؤالُك يضعك في ألف طريق.
اذا ها هنا سنفرش لك الطريق بالعلوم و الخبرات لتبدأ طريقك لتعلم البرمجة من الالف الى الياء.
تعلم البرمجة من الصفر بدايتهُ هذه التدوينة.
1. المفهوم العظيم للغة البرمجة
هنا نتحدث عن البرمجة، وسنتعرف إلى الفرق بين البرمجة و التصميم بعد قليل. والفرق كبير
إليك هذا:
لنفترض أنك وصلتَ إلى البائع لتشتري هاتفاً، كيف تُخبر البائع بالنوع الذي ترغب بشراءه؟
يجب أن تُخاطب البائع لتطلب مبتغاك، أليس كذلك؟ ولكن ماذا إذا كان البائع لا يتحدث لغتك؟
لن تستطيع أن تحصل على ما ترغب به إلا إذا تعلمت لغه البائع
هذا هو حالك مع الحاسب…
أنت المشتري و الحاسب هو البائع، أنت يا صديقي تحتاج إلى هذا البائع لما يملكه من مميزات و قدرات لا تملكها أنت، لذا يجب عليك أنت أن تتعلم كيف يتحدث هذا البائع (الحاسب) و كيف تستطيع أن تحصل على ما ترغب به.
لغاتُ البرمجة ليست إلا “لغات” ? بمعنى الكلمة، ما تؤديه فقط هو ترجمة ما ترغب به إلى ما يستطيع الحاسب تأديته.
ولكن، لماذا لغات البرمجة مختلفة؟
اللغة العربية بها 28 حرفاً، و الإنجليزية 26 حرفاً، إحدى الكلمات العربية تحتاج إلى جملة كاملة بالإنجليزية لترجمتها مثل “أنُلزمُكموها”.
هكذا اللغات تختلف عن بعضها في قدراتها و تكويناتها، مع وجود فروقات طفيفة في لغات البرمجة.
لغات البرمجة مثل اللغات الطبيعية لها ذخيرة لغوية و كلمات، و لكن تتميز أن اللغة بعد تطورها قد تأخذ إسماً آخر.
الجافا مثلاً تطورت من لغة C++ ، سُميّت جافا و أصبحت لغة برمجة مختلفة ? و إضافة إلى لغات البرمجة الكثيرة!
خذ هذه المعلومة:
مهما اختلفت لغات البرمجة، فجميعها في نهاية الأمر تتحول إلى شيء وحيد، و هو الصفر واحد، فمهما اختلفت لغات البرمجة تظل هي لغات عليا تسهل على المتحدث (المبرمج) أن يتخاطب مع الحاسب.
هذا التسهيل ضروري لأن الحاسب في الحقيقة يتعامل فقط مع شيئين هما 0 و 1، و من الصعب على المبرمج أن يكتب أوامره بالصفر و الواحد لأن عملية التحويل صعبة و الكتابة كثيرة .. مثل أن يكتب بدل الرقم 3 [11] و بدلاً من الرقم 9 [1001].
2. إتخاذ قرار: البرمجة أم التصميم؟
سترى لاحقاً كيف أن البرامج حازت على نصيب الأسد من التحكم في حياتنا و تسيير أمورنا و تسهيلها، ولكن من هم منشئو هذه البرامج.
يوجد خلط كبير بين المسميات الوظيفية لمن يعملون في المجالات البرمجية، لذا سنتطرق لأهم وأشهر وظيفيتين برمجيتين في الأسطر التالية.
وظيفتان منتشرتان في عالم البرمجة: مصمم برامج و مبرمج.
المهم في الأمر:
هاتين الوظيفتين أو المهمتين (البرمجة و التصميم) مرتبطيتن معاً كما الإخوة لا تفترقان بتاتاً، و لكن بينهما فروق جوهرية لا بد ان تعلمها حتى تستطيع أن تحدد مسارك المهني و العملي.
حتى نعرف تلك الفروق لا بد أن نتعرف إلى طريقة عمل البرنامج ?.
البرامج تتكون من شاشة يراها المستخدم، هذه الشاشة هي التي يتعامل معها المستخدم، يُدخل فيها بياناته و يختار منها ما يرغب باختياره، يعتقد بعض المُستخدمين أن هذا هو البرنامج، و لكن الحقيقة هي أن هذه الشاشة تماثل هيكل للسيارة.
جميعنا يستقل السيارات و نعلم أن السيارة تتحرك عند الضغط على دواسة الوقود و تتوقف بالضغط على المكابح، و لكن هل تعمل السيارة إذا امتلكنا دواسة وقود فقط و ظللنا نضغط عليها؟ ☺
بالتأكيد لا بُد من وجود شخص آخر ليقوم بتجهيز العمليات الخلفية التي لا يراها سائق المركبة، فحركة المركبة تعتمد تماماً على ما يحدث عن الضغط على دواسة الوقود، و ليس على الضغط على الدواسة فقط. تتفق معي أليس كذلك؟
إذا ما اتفقت معي فأنت قد ملكت الفرق بين المصمم و المبرمج.
في شاشة تسجيل الدخول مثلاً يكون المصمم هو من يصمم شكل الشاشة التي يراها المستخدم و يضع الصور و يختار الألوان و يُنشئ الأزرار و الأماكن التي سيكتب فيها المستخدم.
أما المبرمج فهو من يُنشئ العمليات الخلفية لشاشة تسجيل الدخول، فعندما يدخل المستخدم إسمه و كلمة المرور فإن البرنامج يتعرف على هذه البيانات هل هي مسجلة مسبقاً أم أنه شخص يحاول سرقة الحسابات.
من يُنشئ عملية التعرف هذه هو المبرمج.
خلاصة الأمر، أي برنامج يخدم المستخدم لا بد فيه من واجهة مستخدم و عمليات خلفية، يقوم بهما المصمم و المبرمج سوياً.
لكل من المبرمج و المصمم صفات شخصية يتسمون بها ليستطيعا التعامل مع مجالهما باحترافية و ينجحا فيه
صفات شخصية المصمم
- تذوق الألوان ?.
- الإبداع و الإبتكار.
صفات شخصية المبرمج
- التفكير المنطقي.
- القدرة على حل المشاكل.
3. إنتشار البرمجة خارقٌ للعادة
توجد أسباب كثيرة لتتعلم البرمجة، ربما تملك هدفاً مُسبقاً ولكن ربما معرفتك بالآفاق التي وصلتها البرمجة تزيد من فضولك لهذا المجال.
ما يعجبني في هذا المجال أن البرمجة تصب في مجال النظم، و النظم تخدم جميع المجالات البشرية، بل أكثر من ذلك أرى أن البرمجة هي التي صنعت من عصرنا عصرنا…
أوّاهُ لحياتنا بلا برامج ?
من المجالات التي تؤثر فيها البرمجة الآن -وليس جميعها-
- برمجة الترفيه: من الشائع أن تكون قد لعبت أو أنك تدمنُ اللعب الآن على أحد الألعاب التي لا تعمل إلا على كرت شاشة خاص لجمال رسوماتها، هذه الألعاب فيها قدر عالٍ جداً من البرمجة.
و لكن يظل الأمر أن الألعاب الحاسوبية ليست الوحيدة في مجال الترفيه، فإدارة الملاهي الكبيرة و الألعاب فيها و البرامج السياحية و إصدار تذاكر الطيران و غيرها من الأمور التي تؤثر فيها البرمجة بقوة. - برمجة الطب: ما أدق التشخيص و أنت ترى الطبيب يطلب منك إصدار صورة اشعة مُلائمة لحالك لتذهب -سلمك الله من كل سوء- إلى أخصائي الأشعة ليلعب الأزرار التي تُدار عن طريق برنامج ليُجري لك الأشعة.
الطب بصورة خاصة وصل إلى درجة أعلى بأن الطب له تخصص يُسمى بنظم المعلومات الطبية! - برمجة السياسة: من المرات النادرة التي ربما ترى فيها السياسة في مدونة علوم، و لكنها تتأثر أيضاً بمجال البرمجة بشدة، فإدارة أنظمة الإقتراع و الحكومات الإلكترونية و التطبيقات التي تسهل حياة البشر من أهم ما يمكن أن تفعله الحكومات لمحكوميها.
- برمجة علوم الفضاء: يجعلني أتعجب جداً ذاك القدر من الدقة الذي يتوفر ببرامج تُدير ماكوكاً فضائياً، أن الجزء من الثانية يعني حياة بشر و جهود سنين عددا! فلغة HAL/S مثلاً تلعب دوراً دقيقاً في ناسا.
ولكن حتى تعرف تأثير البرمجة على علوم الفضاء، هل تذكر الصور التي تصاحب إقلاع أو هبوط أحد الصواريخ؟ دوماً تجد عدداً من المهندسين يجلسون أمام عدد كبير من الشاشات و يقفزون فرحاً عند نجاح العملية. - برمجة المنازل: ليس هذا الأمر مزحاً، مهما صغرت البرامج تبقى برامجاً، فالمكيف يملك مؤقتاً، و التلفاز يُبرمج لإستقبال القنوات و الغسالة تعمل إلكترونياً بلا تدخل بشري لإحتوائها على برامج مُختلفة.
ما يجب أن تعلمه تماماً أن البرمجة الآن تؤثر على كُل منحى من مناحي حياتنا بلا استثناء، لذا فإن مجال البرمجة ما زال متطوراً و ما زال سوق عمله يتطلب الكثير من المُبرمجين المختصين.
4. السؤال الأسطوري: تعلم البرمجة سهل أم صعب؟
4. السؤال الأسطوري: تعلم البرمجة سهل أم صعب؟
“هل تعلم البرمجة صعب” ، “هل يمكن تعلم البرمجة“
هل واجهتك هذه الأسئلة أو جالت بخاطرك في يومٍ ما؟
أتفق معك إبتداءً أن تحديد مدى صعوبة أو سهولة ما ترغب بتعلمه يجب أن لا يكون المعيار الوحيد لمواصلة التعلم، أليس كذلك؟
إليك هذا السر:
وفقاً لتجاربي مع المبتدئين بتعلم البرمجة فإنهم يسألون أنفسهم و غيرهم هذا السؤال ليس لمعرفة درجة صعوبة أو سهولة البرمجة، و إنما للتأكد من قدرتهم على تعلم البرمجة.
في بعض الأحيان أيضاً يُخلط ما بين تعلم البرمجة و تعلم نظام التشغيل، لن نتحدث عن نظام التشغيل في هذه الجزئية ولكن نتحدث عنه في الجزء التالي مباشرة.
إذا ما كُنت ترغب في تعلم أي علم من العلوم فبدايتُه أن تثق أنك ستستطيع تعلمه و أن تبذل أقصى جهدك لتعلمه ?.
البرمجة ليست بعيدة عن بقية العلوم، لذا سأضع بين يديك إجابة السؤال عن صعوبة و سهولة تعلم البرمجة لتنساه.
النقطة الأولى التي أرى أن تضعها بالإعتبار هي أن تعلم البرمجة يحتاج إلى مجهود. ستقضيساعات وأيام من القراءة و التعلم حتى تصل إلى درجة المعرفة التي تعينك على إجراء التجارب و الحصول على الخبرات.
النقطة الثانية البرمجة تعتمد على المنطق، لن تجد زقاقاً واحداً في البرمجة لا يعتمد على المنطق، حتى العشوائية فيها منطقية. تأكد أنك ستتعامل مع المنطق بكثرة في تعلمك للبرمجة و إنشاء برامجك.
الإجابة:
البرمجة ليست سهلة ولا صعبة، و إنما تحتاج إلى مجهود لتتعلمها، إذا وثقت أنك تستطيع أن تتعامل مع النقطتين السابقتين فأرى أن تعلم البرمجة سيكون سلسلاً ممتعاً.
ولا شيء يُضاهي رؤية نتاج مجهودك و تعلمك (البرامج) و هي تعمل أمام ناظريك.
5. نظام التشغيل الحاضن للغة البرمجة
كلنا على الأقل سمع بنظام التشغيل ويندوز Windows. هناك معرفة لازمٌ استصحابها في تعلمك للبرمجة تتعلق به.
إنها معرفة مفهوم و أنواع نظم التشغيل، إذا كُنت تعرف جيداً ما هي نظم التشغيل و أنواعها فاقفز إلى الجزئية التالية.
هيا فلنتعرف على عمل نظام التشغيل.
إن الحاسب الذي تستخدمه أو يستخدمه غيرك يتكون من أجهزة إلكترونية (معالجات و ذواكر و مخازن بيانات..إلخ) لن تعمل دون أن يوجد مدير يتحكم بهذه الأجهزة.
هذا المدير يسمى بنظام التشغيل، لاحظ أن إسمه يدل على وظيفته [تشغيل الحاسب].
حتى تعرف كيف يدير نظام التشغيل الحاسب لنتعرف على كيفية عمل نظام الويندوز بما أنه أكثر النظم انتشاراً.
عند ضغطك على زر تشغيل الحاسب ? يتم تحميل نظام التشغيل (ويندوز) وفقاً لإعدادات بسيطة ليتم تسليم نظام التشغيل دفة إدارة كافة أجهزة الحاسب.
عندها يبدأ الويندوز بإظهار الشاشات المألوفة و القابلة للتعامل معها بالفأرة، مثل الشاشة التي تحتوي على شعار ويندوز و ما يليها من الشاشات، كما يدير الويندوز الذاكرة العشوائية (RAM) و المعالج و كافة أجهزة الحاسب القابلة للإدارة.
ولكن هناك إحتمال آخر:
من الممكن أن يكون مدير النظام الذي يعمل عند الضغط على زر تشغيل الحاسب مختلفاً، و الشاشات التي تراها عند بدء نظام التشغيل مختلفة.
هنا تأتي أنواع أخرى من أنظمة التشغيل، إذا لم تكن تعرفها فهذا لأنها أقل انتشاراً و شعبية.
من أنظمة التشغيل الأقل شهرة من ويندوز لينكس و سولارس و ماكنتوش.
إذا ما كانت هذه الأنظمة منصبة على حاسبك لتدير نظام التشغيل فإنها لن تمثل فرقاً كبيراً في طريقة عمل حاسبك. للبدء دوماً ستضغط على زر تشغيل الحاسب و لكن الأزرار تختلف.
إذا ما تساءلت لماذا يجب أن تتعرف إلى هذه المعلومات عن أنظمة التشغيل، فإن هذا لأن لغات البرمجة ترتبط إرتباطاً مباشراً ولا فكاك منه بأنظمة التشغيل، فالبرنامج الذي تبذل لتطويره أياماً وليالي سيعمل على (أحد أو بعض أو كل) أنظمة التشغيل.
ولإختلاف أنظمة التشغيل و اختلاف طريقة تعاملها مع الأجهزة و إختلاف شاشاتها يجب أن تعلم كيف سيعالج برنامجك هذه الإختلافات.
6. مصادر الدخل بين (مفتوح المصدر و مغلق المصدر)
ستمر عليك هاتين العبارتين كثيراً في مسيرة تعلمك للبرمجة و عملك فيها.
ما يفعله المبرمج كما تعلم هو أنه يكتب شفراته البرمجية (Source code)، ثم تُترجَم هذه الشفرات إلى لغة الحاسب لتعمل.
حسناً، لنُضف إضافة مهمة…
بعد ترجمة شفرتك البرمجية فإن مُترجماً افتراضياً يتكفل بتحويل تلك الشفرات إلى ملف آخر قابل للتنفيذ.
مثل أن يحول المترجم شفرتك البرمجية إلى ملف بالإمتداد exe على ويندوز.
--
جميع البرامج في الكون من الممكن أن تكون مفتوحة المصدر أو مُغلقته.
كيف ذلك؟
البرنامج مفتوح المصدر يعني أنه مع نشر البرنامج تكون شفرته البرمجية متاحة للجميع مجاناً.
أما البرنامج مغلق المصدر فيعني أن البرنامج فقط تم نشره للجميع ولكن تم الإحتفاظ بشفرتها البرمجية.
مايكروسوفت من الشركات التي تتبنى مفهوم البرامج مغلقة المصدر منذ سنوات، فنظام التشغيل ويندوز هو نظام مغلق المصدر ولم تُنشر شفرته البرمجية بتاتاً منذ بدايته و حتى اليوم.
أما نظام التشغيل لينكس فهو نظام مفتوح المصدر و شفرته البرمجية متاحة للجميع للتطوير و التعديل عليها.
مفاهيم مهمة في تحديد نوع البرنامج (مفتوح أم مغلق المصدر).
- البرامج مفتوحة المصدر تعني أن الجميع يستطيع التطوير فيها و البدء من حيث انتهى الآخرون.
- هذا التطوير يعني تطوراً أسرع لهذا البرنامج.
- مغلق المصدر يعني أن هناك فئة محددة تعتني بتطوير البرنامج.
- البرامج مغلقة المصدر من السهل التحكم فيها تجارياً، على عكس البرامج مفتوحة المصدر.
- البرامج مفتوحة المصدر لا تعني أن البرنامج مجاني، بل تعني فقط أن الشفرة ستكون متاحة للجميع.
تعليقات
إرسال تعليق