دورة تعلم البرمجة على مباداء صحيحة و سهلة للمبتدئين , شروحات اولية و مفاهيم عامة للبداية في البرمجة و انشاء اول برنامج لك على جهازك الخاص , تعلم البرمج من الصفر .
السلام عليكم ورحمة الله وبركاته , في هذه الدوروة و المواضيع التي سوف تكون متتالية و منقسمة على عدة اجزاء و فصول , سوف ننطلق في شروحات مُبسطة للبرمجة , التي سوف نحصرها اولا في لغة C , ليس لانها الاسهل لكن من وجهة نظري اجد انها الافضل للبداية .
بعد الاطلاع على المحتوى العربي في المجال وجدت انه من الصعب جدا ايجاد شروحات او دروس مُبسطة للجميع , يجب ان تكون مُبرمج لتفهم ما يُقال فيها و انت اصلا لا تعرف شئ عن البرمجة, او هي ضعيفة جدا و لن تستفيد منها في شئ.
رغم ان الامر ابسط من ذلك, يمكن حقا لاي شخص تعلم البرمجة و البداء في تصميم برامج الكمبيوتر, على حسب مستواك الشخصي و بحدود قدراتك التي يمكن ان تحسنها مع الوقت لتتعلم كل شئ اخر لا تعلمه .
من هذا الباب بَحث لكم عن افضل الشروحات الاجنبية و الاكثر افادة و بساطة التي حقا تبداء من الصفر مع الباحث عن العلم ليصل في اخر الشرح الى نتيجة ايجابية , بل يمكنه ان يصبح هو ايضا ناقل للعلم .
التركيز مطلوب و الصبر واجب, و خطوة بخطوة سوف تحقق ماتريد لا شيء مستحيل حتى اكبر عالم كان جاهل و بعد ان تَعلم صار يَعلم, لا تكترث الى من يريد كسر عزيمتك , بالارادة سوف تتغلب على اصعب العواقب .

مقدمة
ان كنت ترغب في تعلم البرمج و لا تعرف من اين تبداء لشدة تعقيد بعض الشروحات المتوفرة على الانترنت , فهاذه الدورة و الدروس هي مصنوعة من اجلك .
لغة C هي لغة برمجة مفتوحة و لا يمكن التحكم بها في المطلق صممت في السبعينيات ولحد اليوم هي تستعمل في انظمة التشغيل و الروبوتيك الحديثة .
لا يخفى عليك انها لغة معقدة لكن حين تتمكن منها سوف تكون لك قاعدة صلبة في المجال و يمكنك الانتقال الى لغات اخرى و انت تمتلك مفاهيم و اسس متينة .
في هذه الدورة سوف نتطرق الى الذاكرة , المتغيرات , الشروط , الحلقات , بعدها سوف ننتقل الى انشاء واجهات جرافيزك “GUIs” بمكتبة SDL ( العاب فيديو وغيرها ), سوف نتعلم طريقة التحكم في هياكل البيانات لتنظيم و تسوية المعلومات المخزنة , lists, stacks, queues, hash tables وغيرها .

لنبداء حقيقتا من الصفر يجب علينا ان نعلم او نُجيب على اسئلة بسيطة لكنها محورية لكسب المعرفة الصحيحة و الوصول الى لب الموضوع و نحصد نتيجة كل ما نتعلمه في الاخير, ايضا كي لا تختلط الامور على اصدقائنا الذي ليس لهم ادنى فكرة عن المجال .
ما هي البرمجة ؟
بكل بساطة هي تصميم و انشاء برامج رقمية IT (تكنولوجيا المعلومات) و هذه البرامج تعطي اوامر لجهاز الكمبيوتر .
الكمبيوتر او الحاسوب معبأ بالبرامج
- الالة الحاسبة هي برنامج
- معالج النص هو برنامج
- ادات الدردشة هي برنامج
- العاب الفيديو هي برنامج

خلاصة
البرامج هي موجدة في كل مكان و بامكانها القيام باي شئ على جهاز الكمبيوتر, يمكنك تصميم برنامج تشفير البيانات او لعبة 3D ثلاثية الابعاد على الانترنت … لا يهم حاسوبك بامكانه القيام بكل هذا و اكثر .
طبعا تصميم لعبة من الصفر لا تكون بين ليلة وضحاها التصميم يتطلب الكثير من الجهد و العمل .
في البداية لن نحاول تصميم لعبة ثلاثية الابعاد “صعبة “, سوف نبداء بعمل برامج بسيطة جدا و من ضمن اول الاشياء التي سوف نتعلمها هي كيفية اظهار رسالة على شاشة الحاسوب .
نعم النتيجة في حد ذاتها لا تبعت للحماس , لكن مجرد هذه العملية تتطلب معارف اساسية و سوف تكون نقظة البداية .
هذه الخطوة الاولى و ان كانت لا تثير اعجاب الاصدقاء لكن يجب علينا المرور بها و سلوك هذا الطريق لكي نتعمق اكثر فاكثر في البرمجة و نصمم اشياء اكثر تعقيد, هدف هذه الدورة هو انك تتمكن من التحكم في اي برنامج مهما كان بلغة C .
ما معنى لغة C اصلا ؟
الحاسوب الة غريبة الاطوار لا يمكن التعامل و التواصل معه الا من خلال ارقام 0 و 1, من هذا المنطلق اذا ترجمنا له ” حساب العملية 3+5 ” سوف نجد النتيجة على الشكل التالي تقريبا : 0010110110010011010011110
ما تراه في النتيجة هي لغة الحاسوب التي تسمى binary language ( احفظ جيدا هذه العبارة ), جهازك لا يعرف الا هذا النوع من الكلام و من الواضح ان مثل هذا الكلام غير مفهوم لنا بتاتا .
هذه اول مشكلة :
كيف نتكلم مع الكمبيوتر بلغة اسهل من 0 و 1 ؟
الكمبيوتر لا يتكلم اي لغة من لغات البشر, و من غير المعقول البرمجة باستعمال binary لتصميم برنامج, حتى مجانين البرمجة لا يعملون هذا .
من هذا المنطلق تم اختراع او تصميم لغات جديدة التي سوف تحول كلامنا الى binary ( كلام الكمبيوتر ), اصعب شيء هو انشاء برنامج يقوم بالترجمة اطمئن هذا البرنامج موجود و لن تطر لاختراعه .
سوف نستعمله لترجمة “حساب العملية 3+ ” التي سوف تمر عبر برنامج الترجمة و نحصل على نتجة : 0010110110010011010011110 .

معجم البرمجة
– لحد الان لم نستعمل الا عبارات “عامة”, لكي تكون لك فكرة توجد كلمة لكل شيء في البرمجة , و في هذه الدورة سوف نتعلم المعجم المستعمل , ليس فقط لتتظاهر و التتفاخر بانك تفهم ما تَقول 😝 لا . لكن لتتمكن في المستقبل (و هذا سوف يحصل) التواصل مع مُبرمج اخر , ستستطيع ايصال المعلومة بوضوح , لا تكترث لكلام الناس الذين سوف ينظرون اليك مثل كائن فضائي .. مع الوقت سوف تعتاد 😆 . نعود الى الرسم التبياني السابق
الحالة الاولة هي ان ” برنامجك مكتوب بلغة مُبسطة ” هذه اللغة المُبسطة تُسمى لغة عالية المستوى
high-level language .
يوجد العديد من مستويات اللغة, كل ما كانت رفيعة او عالية المستوى كل ما اقتربت من لغة البشرية, ادا لغة عالية المستوى هي سهلة الاستعمال , لكن في نفس الوقت لها سلبيات سوف نتعرف عليها لاحقا .
توجد العديد من اللغات من صنف عالية المستوى في البرمجة التي يمكنك استعمالها لتصميم برامجك مثل :
- ++C
- JAVA
- Visual Basic
- Delphi
- C
ليكن في علمك ان الترتيب كان عشوائيا و لا تجعل في ذهنك ان الاول اسهل او افضل من الاخير او العكس هذه مجرد امثلة , طبعا توجد لغات عديدة اخرى و لا يمكن وضعها جميعا للتيسير عليك .
الفرق بينها هو اختلاف عُلُو المستوى , بطبيعة الحال توجد لغات اسهل للاستعمال من اخرى .
كلمة اخرى للحفظ هي الشفرة المصدرية ” source code ” ما نسميه الكود سورس هو ببساطة كود برنامجك مكتوب بلغة عالية المستوى , بمعنى انت من يكتب ” source code ” الذي سوف يُترجم الى binary .
ننتقل الى ” برنامج الترجمة ” الذي سوف يترجم لغتنا عالية الممستوى (مثل C او C++ ) الى binary .
هذا البرنامج في حد داته له اسم , في المعجم اسمه the compiler و الترجمة تسمى the compilation .
مهم جدا : يوجد compiler لكل نوع من اللغات عالية المستوى , امر بديهي مادامة كلها مختلفة لا يمكن ان يكون المترجم يستعمل لها جميعا .
ملاحظة سوف تعرف لمذا بالذات يوجد عدت برامج “compiler” بالنسبة للغة C , يوجد مترجم من شركة Microsoft و اخر من GNU و عدد اخر , سوف نتعمق في الامر اكثر في الدرس القادم , هي تقريبا شبيهة ببعضها , لكن بها اختلاف طفيف سوف نتعلم ما هي بالتحديد .
اخيرا و ليس باخر برنامج binary المُتَرجَم على compiler يسمى the executable , لهذا السبب تجد ان اغلب البرامج على الويندوز لها ” extension ” امتداد « .exe » اصلها من كلمة EXEcutable .
الان لنعد صياغة الرسم التبياني في لغة البرمجة الحقيقية سوف تكون كالتالي :

لمذا اختيار تعلم لغة البرمجة C ؟
مثل ما شرحناه توجد العديد من اللغات للبرمجة , هل يجب بداء التعلم من احداهن ؟ سؤال وجيه . يجب عليك الاختيار للبداية في التعلم و الخيارات متعددة :
very high-level language لغة عالية جدا في المستوى : هي لغة سهلة الاستعمال , من ضمنها نجد Python, Ruby, Visual Basic , و عدد اخر من نفس القبيل , لكن تجد انها مرفوقة بملفات لكي تستطيع الاشتغال .
high-level language لغة من مستوى أقل قليلا : سوف تجد انها اصعب قليلا , لكن بلغة مثل C سوف تتعلم اكثر عن البرمجة و طريقة عمل الكمبيوتر , بعدها سوف يكون بامكانك تعلم لغات اخرى بسهولة اكبر , سوف تحصل على استقلال و تحرر داتي .
ايضا لغة C كثيرة الانتشار , هي مصدر العديد من البرامج التي تعرفها . – ايضا لغة C هي من اشهر لغات البرمجة في العالم , من المعروف انها تُدرس في المعاهد العليا للبرمجة .
هذه هي الدوافع التي تجعلنا نعتقد ان لغة C هي الافضل لبداية المشوار في البرمجة و يمكن الحصول على معارف كثيرة و قيمة .
يمكن ايضا اضافة ان بعض اللغات تستعمل اكثر من ناحية ال WEB مثل PHP, وليست مُحَبَدَة في انشاء برامج الكمبيوتر.
في الدورة سوف نتعامل مع الجميع و كانها اول مرة يسمع عن البرمجة و ليس له اي خبرة , حتى و ان كان القاراء له معلومات مسبقة , لن يضرك الامر في الانطلاق من الصفر .
اسئلة عشوائية
س : يوجد شئ لا افهمه ما هو الفرق بين مختلف لغات البرمجة ؟ مثلا ما هو الفرق بين لغة C و ++C ؟
ج : اللغة C و ++C متشابهتين كثيرا لمعرفة اوجه التقارب علينا الرجوع الى تاريخ اختراعهما :
في البداية حين كان الكمبيوتر يزن اطنان و حجمه يستلزم غرفة بسعة منزلك , تم اختراع اول لغة و اسمها Algol .
بعد التطور تم اختراع لغة اسمها CPL , الذي تم تطويره الى BCPL , الذي بعدها اخد اسم ” اللغة B ” .
بعدها بفترة تم اختراع لغة جديدة و هي C , هذه الاخيرة حتى و ان تم التعديل عليها تبقى الى اليوم الاكثر استعمال .
مرة وقت فتم اقتراح اضافة اشياء اخرى على C , على شكل “تحسين” حتى و ان كان المعنى لكلمة تحسين الا مجاز, سُمية باللغة ++C التي هي تعتبر فقط C مع اضافات تسمح بالبرمجة بطريقة اخرى .
لنتفق على هذه النقطة بالذات ++C ليس افضل من C, هو يسمح بالبرمجة على نحو مغاير و قد يسمح بالاتساعله في اشياء , بعد هذه الدورة سوف تجد سهولة كبيرة مع ++C ان قررت تعلمها .
ليس لان ++C معاصر على C يتوجب عليك حتما المرور من C الى ++C, لغة C ليست لغة قديمة الى الان تستعمل كاساس لانظمة التشغيل الاكتر رواج في العالم منها Linux ,MacOS ,Windows “وكانني قلت جميعها 😄” .
س : هل البرمجة صعبة ؟
ج : سؤال يدور في اذهان الجميع وخصوصا الراغبين في قطع اول الاشواط , هل يجب ان تكون متمكن في الرياضيات و حاصل على شهادات عليا لكي تتمكن من بداية البرمجة ؟ الجواب لا قطعا , طبعا لا , لا يستلزم عليك ان تكون ذو معرفة من مستوى عالي في الرياضيات للبرمجة , كل مايستلزم عليك مرفته هي العمليات الاربعة الاساسية للحساب
- الجمع
- الطرح
- القسمة
- الضرب
الامر مبهر اليس كذلك … ! في الدروس القادمة سوف نشرح كيف يقوم الحاسوب بتنفيد هذه العمليات الحسابية .
الامر ليس معقد , في الاصل كل شئ مرتبط بالبرنامج الذي تريد تصميمه , لو كنت تريد انشاء برنامج تشفير معقد هنا نعم يجب عليك معرفة بعض الاشياء في الجَبر , اذا كنت تريد تصميم برنامج ثلاثي الابعاد من الطبيعي ان تكون على علم ببعض الاشياء في ما يخص الحسابات الهندسية .
ليكن في علمك مع البرمجة على اللغة C ليس عليك ان تكون تعرف اي شيء معقد في الرياضيات .
ادا اين الفخ ! اين الصعوبة ؟
يجب عليك معرفة طريقة عمل الكمبيوتر للبرمجة بلغة C , من هذه الناحية لا تقلق سوف نتطرق اليها بالتفصيل .
المبرمج يجب ان تتوفر فيه الصفات التالية :
* الصبر : البرامج لا تعمل دائما في المرة الاولى , يجب عليك المثابرة .
* التحلي بحس المنطق : لا يستلزم عليك ان تكون تكسب معارف كبيرة في الرياضيات , لكن يجب عليك تخديم عقلك .
* الهدوء : لا .. لا نضرب الكمبيوتر بعصى , … لن يجعل من البرنامج يعمل .
ببساطة لا يستلزم قدرات خارقة في الرياصيات , حتى انسان ضعيف جدا في الجبر يمكنه البرمجة , بالصبر و المثابرة تستطيع فعل ذلك , ومع الوقت تصبح مدمن برمجة و ترى كل شيء ارقام مثل فيلم matrix 😵 .
خلاصة
– لتصميم برنامج يجب عليك ان تكتبه في لغة يفهمها الكمبيوتر .
– يوجد العديد من لغات البرمجة التي يمكن ترتيبها على حسب المستوى , اللغات التي تسمى ” high language ” عالية المستوى تكون عادتا اسهل للاستعمال .
– اللغة التي سوف نتعلمها في هذه الدورة “C” تعتبر كلغة برمجة منخفضة المستوى ” Low level ”
– source code هو عبارة عن تعليمات او اوامر مكتوبة بلغة المعلوماتية .
– compiler هو برنامج يحول source code الى binary , الذي بعدها يمكن للمعالج ‘CPU’ تنفيده على شكل .exe , التي ما هي الا برامج من binary فيها الكثير من source code بداخلها .
– البرمجة في حد ذاتها لا تتطلب معرفة متقدمة في الريا ضيات , الا فيحالة ما كان برنامجك مبني لفعل حسابات معقدة مثل التشفير
– الحس المنطقي مطلوب ويجب ان تكون منهجي .
الى الدرس القادم…. تعلم البرمجة بلغة C للمبتدئين : 2 الادوات اللازمة للبرمجة مع الشرح