برمجة .. مبرمج، برنامج
من خلال خبرتي .. دائما هنالك صورة ضبابية عن هذا المفهوم لدى الناس من غير المختصين
بل الصادم إن معظم المختصين (المتخرجين من كلية علوم الحاسوب خصوصا) غير قادرين على تكوين صورة واضحة عن مفهوم البرمجة
غير المختص يتصور إن البرمجة هي شيء معقد للغاية ويستحيل ان يفهمه.
اما المختصين (الذين لم يتعمقوا) فيتصورون إن البرمجة هي كتابة خطوات برنامج يتيح لك عمل اشياء بسيطة (مثلا ايجاد الاعداد الاولية اقل من 10 .. )
كلا المفهومين خاطئين، . و من هذه الموضوع، اتمنى ان يستطيع الجميع الدخول إلى هذا العالم من بابه الصحيح (وليس من الشباك، كما يتم تدريسها في الكليات)
قبل صناعة برنامج، يجب معرفة الامور التالية:
- الغرض من البرنامج (المتطلبات)
- بيئة عمل البرنامج
- لغة البرنامج (لغة البرمجة)
انا في هذا الموضوع، اود ان اشير إلى المسألة الاهم في نظري .. وهي (بيئة عمل البرنامج) . و هي المفتاح لتعلمك البرمجة بطريقة صحيحة، بحيث لا تكون (مبرمج سطحي) بل (مبرمج متعمق)
وهذه هي النصيحة الذهبية لمن يريد ان يتعلم البرمجة .. ان يركز على (بيئة عمل البرنامج) لتكون الصورة عنده واضحة ماذا يريد ان يفعل
ماذا نعني بالبيئة ؟
البيئة في العالم الحقيقي هي كل ما يحيط بك من هواء وماء وجغرافيا
ولكن في البرمجة، البيئة هي ببساطة كل ما يحيط ببرنامجك، ويوفر له المدخلات ويأخذ منه المخرجات
البرنامج هو دائما (جزء من كل) .. ولكي تعرف كيفية عمل الجزء، يجب ان تكون صورة واضحة عن (الكل)
البيئة (الكبرى) لعمل اي برنامج هي (نظام التشغيل) و هنالك انواع منه حاليا
- نظام الويندوز (اصدارات متعددة)
- نظام اللينكس ومشتقاته (اوبنتو، سينتوس إلخ)
- نظام الـ (ماك)
- نظام اندرويد (اصدارات متعددة)
- نظام IOS (الموجود في اجهزة ايفون)
لذلك قبل ان تبدأ بعمل البرنامج، يجب عليك ان تعرف ما هو النظام الذي سيعمل عليه البرنامج
في حالة كون البرنامج يعمل (مباشرة) داخل النظام، يجب ان يراعي البرنامج هذا بحيث يستدعي دوال النظام مباشرة، مثل البرامج المصنوعة بواسطة الـ سي بلس بلس
في حالات اخرى، البرنامج يعمل ضمن (بيئة تنفيذ مصغرة) بحيث لن يختلف نفس البرنامج في عمله سواء على الويندوز او اللينكس او غيره ..، ومثل هذه البرامج في الغالب لا يمكن تحويلها إلى (ملفات تنفيذية) بل تعمل فقط بوجود (تلك البيئة المصغرة) .. أمثلة:
- جافا (توفر بيئة تنفيذ، وايضا لغة برمجة خاصة بها)
- بيئة Node (هي بيئة تنفيذ للـ JavaScript)
- PHP (بيئة تنفيذ، وايضا لغة برمجة)
- Python (بيئة تنفيذ، ولغة برمجة)
لذلك عند عمل البرامج المخصصة لهذه البيئات، يجب ان يتم مراعاة قواعد تلك البيئة، ولكن مثل هذه البيئات تجعل من الممكن عمل نفس البرنامج على اللينكس او الويندوز، فهي سوف تعالج بنفسها (داخليا) الاختلافات بين الاثنين.
ولكن احيانا، يتم عمل برامج هي عبارة عن (اضافات) لانظمة اخرى
على سبيل المثال ان تصنع (خاصية معينة) ضمن (نظام المنتدى)
عندها يكون (نظام المنتدى) هو البيئةالخاصة بك، وهو الذي يعطيك المدخلات ويستلم منك المخرجات
لذلك يجب ان تتعرف على النظام الذي سوف يعمل ضمنه برنامجك (اضافتك)، قبل صناعة البرنامج نفسه، والا لن تستطيع عمل البرنامج
لماذا هذه (الفوضى) في البرمجة ؟
البرمجة لبرنامج هي دائما برمجة (جزء ضمن كل) .. خذ هذا المثال القريب لاعضاء درر العراق
اضافة (مثل الاهداءت في درر العراق) ضمن (نظام المنتدى)
نظام منتدى ضمن (بيئة PHP)
بيئة PHP ضمن نظام (لينكس) المنصب على السيرفر
في احيان اخرى البرنامج سوف يعمل على اكثر من بيئة مختلفة في وقت واحد ، مثلا الاهداءات تعمل في السيرفر على لغة PHP ولكنها في جانب العميل (client) تعمل في (المتصفح) باستخدام لغة جافا سكربت
لذلك يتوجب التعرف على كل البيئات المرتبطة بعمل البرنامج، لكي يعمل
مثال آخر: برنامج يعمل كتطبيق في الموبايل (اندرويد) ويتصل عبر الانترنت بسيرفر بعيد (مثل تطبيق الفيس بوك)
يجب على صانع التطبيق، ان يتعرف على نظام اندرويد اولا، لكي يصنع البرنامج على هذا اساس ، وعليه ان يتعرف على بيئة السيرفر ايضا (التي قد تكون PHP) التي ترسل المعلومات للتطبيق
بالطبع لو تم تغيير عمل البرنامج إلى IOS (ايفون) فيجب ان يتم تغيير البرنامج جملة وتفصيلا (رغم ثبوت المتطلبات او الغرض)
وعندما نقول (التعرف على البيئة) المقصود هو التعرف على بنيتها البرمجية، حتى يستطيع برنامجك التعامل معها
لذلك في العمل الحقيقي للبرمجة (وليس عمل الهواة) يجب التعرف على (الغرض) من البرنامج، وايضا التعرف على (بيئة عمل البرنامج) على الاقل لكي يكون بامكانك البدء بعمله.
وما دمت قد وصلت بالقراءة إلى هنا، يجب ان نقوم بالتفريق بين (بيئة التطوير) و (بيئة الانتاج) .. بسبب الخلط المستمر بينهما
انت تصنع برنامجا معينا، فتستخدم بيئة تطوير (مثل برنامج Visual Studio) الذي تنصبه على حاسوبك لتصنع به مثلا برامج بلغة Visual Basic، ولكن بعد ان يكتمل برنامجك في بيئة التطوير، ربما سوف يتم استخدامه في حواسيب اخرى لا يكون عليها الـ Visual Studio منصبا، وهي بيئة الانتاج، بل فقط برنامجك
مثال اخر:تقوم شركة vBulletin بصناعة نظام المنتدى (البرنامج) على سيرفراتها وتبيعه للزبائن، فيقوم الزبون باخذ (البرنامج) وينصبه على مساحته الخاصة (بيئة الانتاج)
إلى هنا انهي المحاضرة . اي استفسار بالخدمة