-
المساهمات
11 -
تاريخ الانضمام
-
تاريخ آخر زيارة
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Ola Saleh
-
نجيب اليوم في هذا مقال على سؤال ما هي البرمجة وما أهميتها في عصرنا الذي يشهد تطورًا تقنيًا غير مسبوق والذي أصبحت فيه الحواسيب والأجهزة الذكية جزءًا لا يتجزأ من حياتنا وأعمالنا اليومية، فلولا البرمجة لما كانت كل هذه الأجهزة والتقنيات قادرة على العمل بالشكل المطلوب. فالبرمجة هي التي تتيح لنا التفاعل والتواصل مع الحواسيب والأجهزة من حولنا وتمكننا من إعطائها التعليمات وتنفيذ المهام المتنوعة التي نحتاجها منها، كما أن تعلم البرمجة لم يعد حكرًا على المبرمجين والمطورين اليوم بل أصبح مهارة أساسية تفيد الجميع للانسجام مع ضرورات العصر الحالي ومتطلباته. ما هي البرمجة؟ البرمجة هي طريقة التواصل بيننا نحن البشر وبين أجهزة الحواسيب وغيرها من الأجهزة الإلكترونية القابلة للبرمجة، فالحاسوب لا يعرف بالأساس سوى لغة خاصة تسمى لغة الآلة machine language وهي لغة صعبة ومعقدة تتكون من مجموعة من الواحدات والأصفار، على سبيل المثال عندما نكتب حرفًا على لوحة المفاتيح، فإن هذا الحرف يحول إلى تسلسل من الأصفار والواحدات حتى يستطيع الحاسوب فهمه. باختصار يمكن أن نجيب على سؤال ما هي البرمجة بأنها كتابة الأوامر بلغة يمكن للحاسوب فهمها وتنفيذها. في بداية ظهور الحواسيب كان المبرمجون الأوائل يستخدمون طريقة يدوية وصعبة للتخاطب مع الحواسيب وإيصال المعلومات لها وذلك من خلال بطاقات مثقبة Punched cards فبعد كتابة الأوامر والتعليمات المطلوب من الحاسوب أن يفهمها يحولون هذه التعليمات إلى عدة بطاقات مثقبة لإدخالها للحاسوب، قد يحتاج كل أمر لبطاقة وكل بطاقة تحتوي على سلسلة من الثقوب بشكل معين تعبر عن هذا الأمر، ثم توضع البطاقات في جهاز مخصص يقرأ الثقوب على البطاقة ويترجمها إلى لغة الآلة التي يمكن للحاسوب فهمها وتنفيذها وإذا احتاج الحاسوب لإخراج المعلومات أو طباعتها فسيتم إخراجها كذلك على شكل بطاقات مثقبة. أما اليوم فنحن لا نحتاج إلى هذه التقنية المعقدة للتحدث مع الحواسيب فقد ابتكر علماء الحاسوب طريقة تساعدنا للتخاطب مع الحاسوب باستخدام لغات برمجة متطورة تكتب بصيغة معينة مفهومة أكثر لنا نحن البشر وتدخل إلى الحواسيب من خلال أجهزة الإدخال كلوحة المفاتيح والفأرة وصارت البرمجة مهمة ممتعة يمكننا من خلالها تحويل أفكارنا المختلفة لتطبيقات وبرامج حاسوبية مفيدة وممتعة ومشاركتها مع الآخرين. ما هي لغة البرمجة؟ لغة البرمجة هي لغة خاصة تستخدم للتخاطب مع جهاز الحاسوب وتوجيه الأوامر له بطريقة نستطيع نحن البشر فهمها ويستطيع الحاسوب ترجمتها للغة يفهمها وينفذها ويعطينا النتائج المطلوبة. هناك الكثير من أنواع لغات البرمجة لكل منها قواعدها واستخداماتها وأسلوب صياغتها، على سبيل المثال تعد لغات البرمجة C و C++ وجافا وجافا سكريبت وبايثون وسويفت أمثلة على لغات برمجة شائعة مستخدمة للتخاطب مع الحاسوب، تتشابه تعليمات هذه اللغات إلى حد ما مع اللغة الإنجليزية المحكية لكنها ليست مثلها تمامًا. لنفترض أنك تريد أن تخبر الحاسوب بأن يقوم بمهمة بسيطة مثل عرض رسالة ترحيبية على الشاشة، يمكنك أن تكتب له التعليمات بإحدى لغات البرمجة وتحفظها بشكل برنامج حاسوبي، فالبرنامج program هو مجرد تسلسل من التعليمات تُخبر الحاسوب بما يجب فعله، ثم تطلب منه بعد ذلك تنفيذ هذا البرنامج، سيفهم تعليمات البرنامج ويعرض لك الرسالة التي طلبتها منه. على سبيل المثال تبين الصورة التالية طريقة كتابة برنامج حاسوبي بسيط يطلب من الحاسوب أن يطبع رسالة ترحيبية "مرحبًًا بك في أكاديمية حسوب" باستخدام عدة لغات برمجة مختلفة، تعطي كافة هذه البرامج نفس النتيجة عند تشغيلها، حاول قراءة التعليمات البرمجية باللغات المختلفة، ألا ترى أن بعضها مفهوم وواضح وقريب جدًا للغة الإنجليزية المحكية؟ كيف يفهم الحاسوب لغات البرمجة؟ قد يتبادر لذهنك السؤال التالي: كيف يفهم الحاسوب هذه التعليمات إذا كان لا يعرف إلا لغة الأصفار والواحدات؟ إليك الإجابة: عندما تتخاطب مع الحاسوب بأي لغة من لغات البرمجة وتكتب برنامجًا باستخدامها يقوم برنامج خاص يسمى المترجم أو المصرّف compiler أو المفسر interpreter بعملية ترجمة أو تحويل الشيفرات البرمجية للبرنامج الحاسوبي إلى شيفرة مكتوبة بلغة الآلة ليتمكن الحاسوب من فهمها وتنفيذها وعرض النتائج المطلوبة للمستخدم. تعتمد هذه الخطوة على نوع لغة البرمجة التي تستخدمها فبعض اللغات تستخدم مصرف يقوم بترجمة البرنامج بأكمله إلى لغة الآلة في مرة واحدة ثم ينشئ ملف تنفيذي يمكن تشغيله مباشرة على الحاسوب وبعض اللغات تستخدم مفسر أو ما يعرف بالمصرف الفوري الذي تترجم البرنامج سطرًا سطرًا وتنفذ كل سطر على الفور دون الحاجة لإنشاء ملف تنفيذي منفصل وبمجرد ترجمة البرنامج إلى لغة الآلة يمكن تشغيله على الحاسوب وبهذا يمكن للمبرمج التخاطب مع الحاسوب دون الحاجة إلى التعامل مباشرةًً مع لغة الآلة. عندما تتعلم إحدى لغات البرمجة ستتعلم كيف تطلب من الحاسوب أن ينفذ لك أي أمر تريده سواء كان هذا الأمر بسيطًا كطباعة نصوص أو جمع أرقام أو حل معادلات الرياضية أو معقدًا كتصميم ألعاب أو إنشاء متاجر إلكترونية أو غيرها من التطبيقات المختلفة. ما هي الخوارزميات وما علاقتها بالبرمجة؟ يستخدم مصطلح الخوارزميات بشكل كبير في مجال البرمجة وعلوم الحاسوب والرياضيات، لأن البرمجة ترتبط بحل المشكلات وفهمها ثم كتابة بعض التعليمات البرمجية التي تنفذ هذا الحل من خلال الحاسوب، فإن لم تتمكن من فهم المشكلة وتحدد فيما إذا كانت مشكلة قابلة للحل برمجيًا وتقسمها لمشكلات أصغر ثم تبدأ بوضع الخطوات الصحيحة والمتسلسلة لحلها وإلا فلن تتمكن من برمجتها بشكل صحيح باستخدام أي لغة من لغات البرمجة، وهنا تأتي أهمية تعلم الخوارزميات وتطوير مهارات التفكير المنطقي التي تكسبك هذه المهارات. فالخوارزمية هي إجراء منطقي يستخدم لحل المشكلات من خلال وضع قائمة متسلسلة من التعليمات التي تحدد خطوة بخطوة كافة الإجراءات التي علينا اتباعها للوصول لحل المشكلة بكفاءة مع تحديد القيمة أو مجموعة من القيم التي نحتاج لمعرفتها لحل المشكلة والتي تمثل (المدخلات) واستنتاج القيمة أو مجموعة القيم التي تنتج كحل للمشكلة والتي تمثل (المخرجات) تكتب الخوارزميات بطريقة مشابهة لكتابة وصفات الطعام حيث يتم تحديد كل خطوة بطريقة وشرحها بطريقة مرتبة يمكن فهمها وتنفيذها، تخيل أنك تريد حل مشكلة طهي طبخة جديدة لأول مرة، مثل طبق الطاجن المغربي باللحم، عندها ألن تحتاج لمن يخبرك بكافة المكونات الأساسية المطلوبة في الطبق؟ وما هي الخطوات المتسلسلة لطهي الوصفة وتحويل هذه المكونات إلى الطبق المطلوب؟ حسنًا تعمل الخوارزمية الحاسوبية بنفس الطريقة فالحاسوب يحتاج منك أن تخبره كيف يتبع الخطوات الصحيحة في معالجة المدخلات ليعطيك النتيجة المطلوبة. أنواع لغات البرمجة هناك عدد كبير من لغات البرمجة المستخدمة من قبل المطورين والمبرمجين وعلماء الحاسوب، لكل لغة منها أغراضها ومجالات استخدامها وتصنف هذه اللغات وفق معايير وأنواع مختلفة بحسب مستواها ومجالات استخدامها وطريقة هيكلة شيفراتها وأسلوب تنفيذ تعليماتها وغيرها من العوامل المختلفة، وقد تندرج بعض لغات البرمجة تحت أكثر من تصنيف بذات الوقت. وإليك نبذة مختصرة عن أشهر أنواع لغات البرمجة: لغات البرمجة منخفضة المستوى Low-level languages لغات البرمجة عالية المستوى High-level languages لغات البرمجة الوظيفية Functional Programming Language لغات البرمجة النصية أو المكتوبة Scripting Programming Language لغة البرمجة المنطقية Logic Programming Language لغة البرمجة كائنية التوجه Object-Oriented Programming لغات برمجة منخفضة المستوى Low-level languages كانت لغات البرمجة الأولى لغات البرمجة منخفضة المستوى أي أنها أقرب لمستوى الأجهزة (كما أشرنا بمثال البطاقات المثقبة) وصعبة الفهم والتعلم والصيانة على البشر ومن الأمثلة عليها لغة الآلة ولغة التجميع Assembly، ويكون لكل نوع من أجهزة الحاسوب أو المعالجات لغة آلة خاصة به ولا يمكنه تنفيذ البرنامج عليه إلا إذا تم التعبير عنه بتلك اللغة. لغات البرمجة عالية المستوى High-level languages لغات البرمجة عالية المستوى هي لغات برمجة قريبة لفهم البشر فهي تستخدم مفردات وأوامر وبنية تتشابه مع مفردات اللغة الإنجليزية وتسمح بالتفاعل مع الحاسوب بسهولة وهي سهلة التعلم والصيانة ومن الأمثلة عليها لغة بايثون Python ولغة جافا سكريبت JavaScript وروبي Ruby. بعض اللغات أسهل في الاستخدام والفهم للمبرمجين (اللغات عالية المستوى) ولكنها توفر تحكمًا أقل في أجهزة الحاسوب. البعض الآخر أكثر ملاءمة للآلة (لغات منخفضة المستوى)، مما يجعلها أسرع في التنفيذ وأكثر كفاءة في الذاكرة، ولكن من الصعب على البشر فهمها. لغات البرمجة النصية Scripting languages هي لغات مكتوبة بشكل أوامر نصية تستخدم في العديد من المجالات مثل أتمتة المهام المتكررة وتطوير الويب والعديد من لغات البرمجة المشهورة اليوم هي لغات برمجة نصية، مثل لغة بايثون وجافا سكريبت ولغة PHP. لغات البرمجة المرئية Visual languages هي لغات برمجة لا تعتمد على أسلوب كتابة التعليمة البرمجية بل تعتمد البرمجة من خلال الرسومات والصور فهي توفر لك واجهات رسومية GUIs تساعدك في إنشاء البرامج، ومن أبرز الأمثلة على لغات البرمجة المرئية نذكر سكراتش Scratch وفيجوال بيسك Visual Basic. وهي أقل شهرة من لغات البرمجة النصية وتستخدم عادة لأغراض بسيطة وتعليمية فاستخدامها للعناصر المرئية يجعلها مفهومة أكثر من قبل المبتدئين. لغات البرمجة المنطقية Logic Programming Languages هي نوع خاص من أنواع لغات البرمجة لا تخبر الحاسوب بما يجب فعله بل تخبره بسلسلة من الحقائق والقواعد التي ترشده كيف يتخذ القرارات وهي تستخدم في تطبيقات الذكاء الاصطناعي ومعالجة اللغات الطبيعية وتحليل البيانات ومن الأمثلة على لغات البرمجة المنطقية نذكر لغة برولوغ Prolog، وداتا لوج Datalog. لغات البرمجة الإجرائية Procedural Programming تعتمد لغات البرمجة الإجرائية على تمثيل البرنامج الحاسوبي بشكل مجموعة من الإجراءات Procedures والإجراء هو سلسلة من الخطوات المتسلسلة أو الإجراءات التي تحقق النتيجة المطلوبة. ومن الأمثلة عليها لغة C وفورتران FORTRAN. لغات البرمجة كائنية التوجه OOP تعد البرمجة كائنية التوجه أو ما يعرف بلغة البرمجة بالكائنات من أشهر أنواع لغات البرمجة وهي تمثل برنامج حاسوبي من خلال مجموعة من الكائنات objects بحيث يتكون كل كائن من بيانات ووظائف تعالج هذه البيانات، وهذا الأسلوب يسهل على المبرمج إعادة استخدام التعليمات البرمجية وتوسيع نطاقها. ومن أشهر الأمثلة على لغات البرمجة كائنية التوجه نذكر لغة جافا وبايثون و C++. لغات البرمجة الوظيفية Functional Programming تعتمد لغات البرمجة الوظيفية كما يدل اسمها على استخدام الوظائف أو الدوال البرمجية Functions والوظيفة أو الدالة ما هي سوى قطعة من الشيفرة البرمجية تأخذ مدخلات وتعالجها وترجع نتيجة المعالجة، يركّز هذا الأسلوب في البرمجة على وصف طريقة حل المشكلة بدلاً كتابة خطوات متسلسلة لحلها، من أشهر لغات البرمجة الوظيفية جو Go ورست Rust وكوتلن Kotlin و #F. لغات البرمجة المصرفة والمفسرة كما ذكرنا سابقًا تحول التعليمات البرمجية إلى لغة مفهومة من قبل الحاسوب بأسلوبين إما من خلال تمرير هذه التعليمات على مصرّف يقرأها بالكامل ثم يحولها إلى كود مكتوب بلغة الآلة ثم ينفذ هذا الكود، وتسمى لغات البرمجة التي تعتمد هذا الأسلوب باللغات المصرفة compiled languages ومن الأمثلة عليها جافا و C++، و C#. الأسلوب الثاني أن تمر التعليمات البرمجية على مفسر يقرأها وينفذها سطرًا تلو الآخر ويعرض النتيجة مباشرةً وعندها تسمى لغات مفسرة interpreted languages ومن الأمثلة عليها لغة بايثون Python وجافا سكريبت JavaScript وروبي Ruby. ستجد العديد من الطرق لتصنيف لغات البرمجة وإذا كنت مهتمًا بمعرفة المزيد من التفاصيل حول أنواع البرمجة ولغاتها المختلفة والغرض من استخدامها أنصحك بمطالعة مقال أنواع لغات البرمجة. ما هي أسهل لغة برمجة؟ يرافق سؤال ما هي البرمجة سؤالًا آخر وهو ما هي أسهل لغة برمجة يمكن البدء بها؟ عمومًا، تتفاوت لغات البرمجة في صعوبتها فهناك لغات برمجة صعبة التعلم ومعقدة وتفرض الكثير من القواعد الصارمة والتفاصيل المعقدة، وهناك بالمقابل لغات سهلة وتملك قواعد صياغية ولغوية بسيطة وسهلة التعلم والفهم فإذا كنت في بداية رحلتك في تعلم البرمجة فمن الأفضل أن تبدأ بتعلم لغة سهلة يمكنك من خلالها فهم أساسيات البرمجة بسلاسة وبناء أساس قوي وبعد ذلك سيكون تعلم مفاهيم ولغات أخرى أكثر سهولةً ويسرًا، ومن أسهل لغات البرمجة التي يمكنك البدء بها: لغة HTML و CSS لغة جافا سكريبت JavaScript لغة PHP لغة بايثون Python لغة روبي Ruby لغة جافا Java لنشرح نبذة مختصرة عن كل لغة من هذه اللغات ونوضح أبرز مميزاتها واستخداماتها: لغة HTML و CSS من السهل تعلم HTML وCSS إلى حد كبير لأنهما لا يتطلبان منك التفكير المنطقي لحل المشكلات كما هو الحال في باقي لغات البرمجة، فلغة HTML أو لغة ترميز النص التشعبي هي أساس صفحات الويب وهي لغة توصيفية تصف وتنظم محتوى صفحات الويب وتحدد فيما إذا كان كل جزء من المحتوى هو فقرة نصية أو عنوان رئيسي أو قائمة من التعددات أو جدول أو غير ذلك. أما لغة CSS وهي اختصار لعبارة Cascading Style Sheets أي لغة صفحات الأنماط المتعاقبة فهي لغة تنسيقية مهمتها تعريف مجموعة من القواعد التي تطبّق على عناصر HTML وتعطيها مظهرًا جميلًا حيث يمكن من خلالها تحديد ألوان وخطوط وأحجام وأماكن تموضع العناصر المختلفة، يمكنك اعتبار HTML بمثابة الهيكل العظمي لصفحة الويب و CSS بمثابة الملابس التي تغطي هذا الهيكل وتعطيه منظرًا جميلًا. لغة جافا سكريبت JavaScript تتميز لغة جافا سكريبت JavaScript ببساطة ووضوح تعليماتها وهي لغة عالية المستوى وشائعة الاستخدام وتستخدم جنبًا إلى جنب مع HTML وCSS كواحدة من أهم لغات برمجة الويب فهي مدعومة من جميع متصفحات الويب الرئيسية وتستخدم لإضافة تأثيرات حركية وميزات تفاعلية لمواقع الويب، كما تستخدم في العديد من المجالات والتطبيقات الأخرى وتملك مجتمع دعم كبيرًا وضخمًا يوفر الكثير من المصادر التعليمية، مما يساعد المبتدئين على تعلم اللغة وحل المشكلات التي تواجههم بسرعة وسهولة. لغة PHP PHP هي اختصار تعاودي للعبارة Hypertext Preprocessor وهي لغة برمجة سهلة التعلم وشائعة الاستخدام، تستخدم بشكل أساسي في تطوير الويب وتمكنك من إضافة وإدارة المحتوى الديناميكي وقواعد بيانات إلى مواقع وتطبيقات الويب كما يمكنك تضمين هذه اللغة في HTML. وللاطلاع على مزيد من المعلومات حول لغة PHP وطريقة عملها وأبرز مميزاتها يمكنك مطالعة مقال تعرف على لغة PHP لغة بايثون Python تعد لغة بايثون Python واحدة من أسهل لغات البرمجة وأكثرها قوةً وفعاليةً، فهي تملك مفردات وعبارات قريبة جدًا من اللغة الإنجليزية وتعبّر عن المفاهيم البرمجية بطريقة مختصرة وواضحة، وهي لغة عامة الأغراض ويمكن أن تستخدم في العديد من المجالات والتطبيقات ومن أهمها تطوير الويب وتطبيقات الذكاء الاصطناعي والتعلم الآلي وتطوير تطبيقات سطح المكتب. لغة روبي Ruby تعد لغة روبي Ruby واحدة من أسهل لغات البرمجة وأكثرها مرونةً نظرًا لتركيبة جملها البسيط سهلة القراءة، وقد كان الهدف من إنشائها بالأصل هو جعل البرمجة ممتعة للمبتدئين وهي تعتمد البرمجة كائنية التوجه، أي يشتهر الكود المكتوب بلغة روبي بأنه منظم وسهل الفهم والصيانة. لغة جافا Java تتميز لغة البرمجة جافا Java بكونها لغة عامة الأغراض وكائنية التوجه وتحظى بشعبية كبيرة بين أوساط المبرمجين فهي تعتمد على مبدأ كتابة الكود مرة واحدة وإمكانية تشغيله في أي جهاز أو منصة. وهي لغة متعددة الاستخدامات مثل تطبيقات الويب وتطبيقات الهاتف المحمول وتطوير الألعاب ما يجعلها لغة مناسبة للبدء بتعلم البرمجة. كانت هذه نبذة سريعة عن أسهل لغات البرمجة للمبتدئين، ركّز في البداية على تعلم لغة برمجة واحدة تتوافق مع أهدافك ومتطلباتك، وبعدها سيكون تعلم أي لغة برمجة أخرى أمرًا في غاية السهولة. وللتعرف على مزيد من لغات البرمجة سهلة التعلم والمناسبة للمبتدئين في البرمجة أنصحك بمطالعة مقال أسهل لغات البرمجة أهمية البرمجة تكمن أهمية البرمجة في ضرورة مواكبة التطور التقني المتسارع الذي يعد سمةً مميزةً لعصرنا الحالي، فالبرمجة هي العصب المحرك لحياتنا والتواصل مع الحواسيب والأجهزة الذكية واستخدام التطبيقات والبرامج الحاسوبية أصبح أمرًا أساسيًا لا غنىً عنه لإنجاز المهام المختلفة كالتسوق ودفع الفواتير والبحث العلمي واللعب والترفيه والتواصل الاجتماعي وغيرها من الاستخدامات العديدة الأخرى. لذا تعد البرمجة اليوم واحدةً من أهم الوظائف المطلوبة في سوق العمل فلا تكاد تخلو مؤسسة اليوم من الاعتماد على التقنيات الرقمية وشبكة الإنترنت لإنجاز أعمالها ما يبرز الحاجة لتعيين مطورين ومبرمجين لتطوير هذه التقنيات المختلفة وتحسينها وصيانتها بشكل دوري وتعيين أشخاص قادرين على فهم آلية التعامل مع هذه التقنيات. كما أصبحت برمجة الحواسيب مهارة مطلوبة يبحث عنها أرباب العمل حتى بالنسبة للوظائف التي لا تتعلق بالحواسيب بشكل مباشر شأنها شأن المهارات الشخصية الأخرى مثل مهارة التواصل والاستماع أو مهارة التحدث بعدة لغات لأنها تدل ضمنيًا على أن الشخص الذي يملكها شخص منفتح تقنيًا ويملك مهارات في حل المشكلات والتفكير المنطقي. ومن أبرز المجالات والقطاعات التي تبرز فيها أهمية البرمجة نذكر: قطاع التعليم القطاعات الحكومية الاقتصاد وأسواق المال الرعاية الصحية الترفيه وصناعة الألعاب إنترنت الأشياء لنشرح أهم الفوائد التي تعود بها برمجة الحاسوب على كل مجال مما سبق: أهمية البرمجة في قطاع التعليم أصبحت مادة البرمجة جزءًا أساسيًا من المناهج الدراسية في العديد من البلدان فقد أدركت المؤسسات التعليمية أن تعليم البرمجة للطلاب يساعدهم في اكتساب العديد من المهارات القيمة مثل مهارة حل المشكلات والتفكير المنطقي والتحليلي ومهارة التواصل الفعال ويجعلهم أكثر إبداعًا وابتكارً ويوسع أفق تفكيرهم ويمكنهم من تعلم أي مفاهيم جديدة بسهولة أكبر كما يتوفر لهم العديد من فرص العمل في المستقبل. أهمية البرمجة في القطاعات الحكومية تفيد البرمجة في أتمتة وتسيير الأعمال الحكومية بصورة رقمية، فمعظم الحكومات اليوم بدأت بتنفيذ مشاريع التحول الرقمي وإنشاء بوابات إلكترونية تسهل على مواطنيها الوصول إلى الخدمات الحكومية والاستفادة منها. وهذا من شأنه أن يساعد الحكومات في تقديم خدمات أكثر شفافية وفعالية من حيث التكلفة وتحسن رضا المواطنين. إضافةً لذلك تساعد البرمجة المعلمين والأساتذة في تطوير تطبيقات ومنصات تعليمية احترافية وإنشاء محتوى تعليمي تفاعلي سهل الفهم وتقييم أداء طلابهم والتواصل معهم بشكل فعال لجعل عملية التعلم أكثر فعالية. أهمية البرمجة في الاقتصاد تساهم البرمجة في إدارة الأعمال وتعزيز النمو الاقتصادي فصناعة البرمجيات والمنتجات الرقمية المرتبطة بتقنية المعلومات من الصناعات الأكثر إنتاجيةً ونموًا في الاقتصاد. كما تستخدم بعض لغات البرمجة مثل لغة R ولغة بايثون والبرامج الإحصائية مثل إكسل و Stata و SAS من قبل المبرمجين ومحللي البيانات والمهتمين بالاقتصاد والأسواق المالية لتحليل البيانات الضخمة والتنبؤ بمستقبل الاقتصاد بشكل أفضل، واتخاذ قرارات تحسّن العمل وتزيد الأرباح. أهمية البرمجة في الرعاية الصحية يمكن أن تساعد مهارات البرمجة مؤسسات الرعاية الصحية على تطوير تطبيقات وبرامج تساعد في إدارة السجلات الطبية وتحسين رعاية المرضى ومتابعة حالتهم الصحية. كما تساعد البرمجة في مجال الأبحاث الطبية وتحليل بيانات الفحوصات والتحاليل الطبية وتساعد في تشخيص الأمراض والتنبؤ بوجود أمراض معينة بدقة عالية. أهمية البرمجة في الترفيه وصناعة الألعاب يستخدم المطورون لغات برمجة الألعاب مثل C++ و C# وجافا Java لإنشاء ألعاب احترافية قابلة للتشغيل على منصات مختلفة كالحواسيب والهواتف الذكية. وقد أصبحت صناعة الألعاب الإلكترونية واحدة من المجالات سريعة النمو والتي تدرّ الكثير من الأرباح. أهمية البرمجة في إنترنت الأشياء لقد نما مجال إنترنت الأشياء IoT بصورة سريعة وبدأت تطبيقاته وأجهزته المختلفة تستخدم بشكل كبير في أعمالنا وحياتنا اليومية وساهم في زيادة راحتنا وأمننا. وهناك العديد من لغات البرمجة التي تفيد في تطوير مشاريع إنترنت أشياء مثل لغة جافا Java وبايثون Python و C و C++. نصائح لتعلم البرمجة للمبتدئين بعد أن تعرفت ما هي البرمجة وما أهميتها قد تتساءل كيف يمكن تعلم البرمجة وما أهم الخطوات التي عليك اتباعها لتتقن البرمجة وتعمل في أحد المجالات أو فرص العمل المختلفة التي توفرها. حدد هدفك من تعلم البرمجة وأي مجال من مجالات البرمجة يهمك أكثر من غيره هل هو تطوير مواقع الويب أو تطوير تطبيقات الجوال أو تحليل البيانات …إلخ فهذا يساعدك في اختيار لغات البرمجة والتقنيات الصحيحة التي عليك التركيز على تعلمها. ابدأ بتعلم إحدى لغات البرمجة السهلة التي تناسب المبتدئين والتي تمكنك من احتراف المجال أو التخصص البرمجي الذي اخترته. تعلّم كيف تستخدم الأدوات البرمجية المطلوبة لكتابة وتنفيذ التعليمات البرمجية مثل محررات الأكواد وبيئات التطوير المتكاملة والمحطات الطرفية. طبّق ما تتعلمه على تطوير تطبيقات بسيطة كالآلة الحاسبة أو تطبيق حساب العمر أو ترتيب كلمات حسب التسلسل الأبجدي، كما يمكنك محاكاة مشاريع برمجية قام بها مبرمجون آخرون والتدرب على استكشاف الأخطاء البرمجية وإصلاحها ثم تدرّج إلى تطوير مشاريع أكثر تعقيدًا وبمميزات أكثر. عندما تطور مشاريع متقدمة تحتاج لأن تتعلم أسس ومنهجيات تطوير البرمجيات Software Development وتكتسب مهارة إدارة المشاريع البرمجية مثل تقسيم المشروع إلى أجزاء منفصلة ووضع جدول زمني لإنجاز المشروع وتتبع سير العمل. اختر مصادر تعلم حديثة واحترافية ومنظمة من كتب أو دورات عبر الإنترنت أو معسكرات برمجية وانتبه أن لا تشتت نفسك بكثرة المصادر لتضمن تجربة تعلم منهجية ومتسلسلة، ستجد في أكاديمية حسوب الكثير من الدروس والمقالات والكتب البرمجية المناسبة للمبتدئين. كما توفر موسوعة حسوب توثيقات مفيدة وشاملة باللغة العربية لأشهر لغات البرمجة والتقنيات. خلال رحلة تعلم البرمجة الكثير من الصعوبات والتحديات وقد تقضي ساعات طويلة لحل مشكلة برمجية ما، الأمر الذي قد يصيبك بالإحباط، من الضروري أن لا تستسلم للإحباط وتذكّر دومًا أن مستقبل البرمجة واعد ويستحقّ بذل الجهد. حفّز نفسك باستمرار ومما يساعدك على ذلك التعلم مع أصدقاء يشاركونك نفس الاهتمام والانضمام في المجتمعات والمنتديات البرمجية عبر الإنترنت ففيها ستجد العديد من المبتدئين الذين يواجهون نفس مشكلاتك والخبراء الذين يقدمون النصح والدعم. ابحث عن فرصة عمل مناسبة لخبراتك ومجال تخصصك على مواقع التوظيف ومنصات العمل الحر، فالمشاريع العملية تعزز مهاراتك في التعامل مع العملاء وتعرّفك على متطلبات سوق العمل. لا تتوقف عن تطوير نفسك فرحلة تعلم البرمجة تستمر مدى الحياة والتقنيات تتطور باستمرار ومن الضروري أن تبقى على اطلاعٍ دائمٍ لكل ما هو جديد. إذا كنت تشعر بالفعل بالتشتت والضياع ولا تستطيع الالتزام بخطة تعلم ذاتية يمكن أن تساعدك دورات البرمجة المنهجية على تنظيم أمورك والدراسة بطريقة منهجية ومدروسة، ستجد في أكاديمية حسوب العديد من دورات البرمجة في أكثر المجالات طلبًا في سوق العمل، عند التحاقك بإحدى هذه الدورات ستتمكن من تعلم البرمجة وفق منهج متسلسل يبدأ بالمفاهيم الأساسية ويتقدم تدريجيًا لشرح مواضيع متقدمة كما ستتمكن من إنجاز العديد من المشاريع العملية لتعزز ما تعلمته، وتطرح أي أسئلة أو مشكلات تواجهك ليجيبك عليها مدربون متخصصون، كما ستحصل في نهاية الدورة على شهادة معتمدة تعزز فرصتك المهنية. الخلاصة تعرفنا في مقال اليوم ما هي البرمجة وما أهميتها وتعرفنا على مفهوم لغات البرمجة وأهم أنواعها ومجالات استخدامها واستعرضنا مجموعة من أسهل لغات البرمجة التي يمكن للمبتدئين في مجال البرمجة تعلمها وختمنا المقال بمجموعة من التوصيات والنصائح التي تساعد على تعلم البرمجة بكفاءة. آمل أن تساعدك هذه المعلومات على فهم البرمجة والبدء بتعلمها، وفي حال كان لديك أي سؤال يخص البرمجة يمكنك طرحه في التعليقات أسفل المقالة. اقرأ أيضًا أهمية البرمجة وأهم لغات البرمجة تعلم البرمجة المرجع الشامل إلى تعلم الخوارزميات كيف تتعلم البرمجة: نصائح وأدوات لرحلتك في عالم البرمجة برمجة الحاسوب للمبتدئين هل أنا حقا مبرمج؟ متى أسمي نفسي مبرمجًا لماذا يجب أن تعلم طفلك البرمجة؟
-
لا يخفى على أحد اليوم مدى أهمية تطوير مواقع الويب فالجميع اليوم يسعى لإنشاء موقع إلكتروني خاص به بدءًا من الأشخاص ووصولًا للعلامات التجارية الكبرى إما للتعريف عن أنفسهم وإثبات وجودهم في الفضاء الرقمي، أو لبيع منتجاتهم وخدماتهم، أو تسيير معاملات عملائهم عبر الإنترنت، وغيرها من الفوائد التي لا حصر لها. لكن هل تعلم أن معظم مواقع الويب المتقدمة التي تتعامل معها لا تقتصر على الجزء الذي تراه أمامك على الشاشة والذي يعرف بالواجهات الأمامية لمواقع الويب بل هناك أيضًا الواجهات الخلفية الخفية المسؤولة عن إنجاز كافة الوظائف التي يتضمنها الموقع وجعل كل عناصره من أزرار وقوائم تتفاعل معك بالشكل الصحيح وهي تستخدم تقنيات وأدوات برمجية مختلفة عن تلك التي تستخدمها الواجهات الأمامية. نسلط الضوء في مقال اليوم على كل ما يخص تطوير الواجهات الخلفية لمواقع الويب، ونستعرض أهم المهارات والتقنيات التي تحتاج لتعلمها وأهم المسؤوليات المنوطة بها، فإذا كنت ترغب في العمل كمطور واجهة خلفية لكنك لا تعرف من أين تبدأ وما هي خطوات التعلم الصحيحة فهذا المقال سيفيدك حتمًا. كيف تعمل مواقع الويب؟ قبل الغوص في تفاصيل تطوير مواقع الإنترنت ومفهوم الواجهة الأمامية والخلفية لموقع الويب دعنا نتعرف بداية على المصطلحات الأساسية للويب والكيفية التي تعمل مواقع الويب وفقها. مبدئيًا لدينا نوعان من الأجهزة المتصلة بشبكة الإنترنت هما العميل client وهو جهازك الحالي وهو ببساطة هو الجهاز المتصل بالإنترنت التابع للمستخدم الذي يتصفح الإنترنت من خلال تطبيق خاص مثبت فيه هو متصفح الويب web browser مثل جوجل كروم أو فايرفوكس. خادم الويب web server وهو حاسوب بعيد مصمم للعمل كمستودع لملفات مواقع الويب من أكواد برمجية وملفات صور والنصوص وغيرها من العناصر التي تراها على موقع الويب وتسهل وصولك إليها فمطور المواقع يقوم بتحميل كل هذه الملفات إلى الخادم وأنت تتصل به وتعرض هذه الملفات على جهازك. يجب أن يزود الخادم ببرامج خاصة تمكنه من استقبال الطلبات الواردة إليه ومعالجتها والرد عليها ويجب أن يكون متصلًا بالإنترنت بصورة دائمة ويلبي طلبات العملاء بسرعة مع العلم بأن تسمية الخادم تختلف بحسب طبيعة الخدمة التي يقدمها فإذا كان الخادم يوفر خدمة قاعدة بيانات يسمى خادم قاعدة البيانات وإذا كانت يخزن صفحات الويب يسمى خادم ويب له عنوان URL فريد يمكن الوصول إليه عبر الإنترنت. الفرق بين الواجهة الأمامية Frontend والواجهة الخلفية Backend قبل الغوص في تفاصيل تطوير الواجهة الخلفية من الضروري أن تفهم الفرق بين الواجهة الأمامية frontend والواجهة الخلفية backend وهما مصطلحان يهدفان إلى فصل الاهتمامات بين طبقة العرض أو واجهة المستخدم أو ما يعرف بالواجهة الأمامية للتطبيقات والمواقع وبين طبقة الوصول إلى البيانات أو ما يعرف بالواجهة الخلفية التي تعمل خلف الكواليس. هل يبدو هذا صعب الفهم! حسنًا لنفترض أنك تتصفح أحد متاجر بيع الملابس على الإنترنت أنت تتفاعل الآن مع ما يسمى بالواجهة الأمامية للموقع فكافة أجزاء موقع الويب التي تراها أمامك والتي تعرض على متصفحك من عناوين وفقرات وصور وأزرار وأيقونات هي في الواجهة الأمامية للموقع. لكن من أين تم جلب قائمة المنتجات التي تراها في واجهة المستخدم؟ الجواب أنها خزنت في قاعدة البيانات المخزنة في الواجهة الخلفية وتم عرضها على الواجهة الأمامية لديك لتتصفحها، بعدها أعجبتك عدة قطع وقررت شراءها وحددت خياراتك المفضلة كاللون والقياس وما إلى ذلك ونقرت فوق زر إضافة لسلة المشتريات ثم أدخلت كافة بياناتك المطلوبة لكنك لم تكمل عملية الشراء لأن ثمن المشتريات لم يكن بحوزتك فخرجت من الموقع، برأيك أين تم حفظ هذه البيانات؟ نعم صحيح كما توقعت أيضًا في قاعدة بيانات الموقع المخزنة على الخادم. بعد ذلك بأيام عدت للموقع ونقرت فوق زر سلة المشتريات لتكمل عملية الشراء، سيقوم الكود المربوط بهذا الزر بسحب كل المعلومات التي أدخلتها من قاعدة البيانات ويحسب ثمنها ويرسلها إليك، كل هذا تم في الواجهة الخلفية للموقع، وبالتالي الواجهة الخلفية للموقع هي الجزء الخفي الذي يعمل وراء الكواليس، أما الكيفية التي ستعرض بها هذه البيانات لك فهي مسؤولية مطور الواجهة الأمامية. فأي كود مسؤول عن الجوانب المرئية لموقع الويب كتبه مطور الواجهة الأمامية وهو ينفذ في المتصفح، وأي كود يتعامل مع قواعد البيانات وواجهات برمجة التطبيقات كتبه مطور الواجهة الخلفية وهو ينفذ في الخادم. هناك نوع ثالث من المطورين يطلق عليه مطور الويب الكامل fullstack web developer أو المطور الكامل full stack developer وهو الذي يتولى بنفسه كتابة كل من كود الواجهة الخلفية والواجهة الأمامية للمواقع والتطبيقات ويملك خبرة بكليهما. للمزيد من التفصيل حول الواجهة الأمامية، يمكنك الرجوع إلى مقال تطوير الواجهة الأمامية لمواقع الويب Frontend Web Development الشامل. ما هو تطوير الواجهة الخلفية للويب؟ تطوير الواجهة الخلفية للويب أوما يعرف بتطوير النظم الخلفية backend development أو التطوير من طرف الخادم server-side هو عملية كتابة الشيفرات البرمجية التي تعمل على خوادم الويب web servers والتي تجعل موقع الويب يعمل خلف الكواليس ويتفاعل مع المستخدمين ويلبي كافة طلباتهم. الهدف من تطوير الواجهة الخلفية هو خلق تواصل بين الواجهات الأمامية وبين قاعدة البيانات عبر الخادم فالمستخدم يتفاعل مع الموقع عن طريق إدخال البيانات بعدها نخزن هذه البيانات في قاعدة البيانات الموجودة على نفس الخادم أو خادم منفصل، وأخيرًا يعيد الخادم النتائج المطلوبة ويعرضها على المتصفح أو ما يعرف بالعميل أو الواجهة الأمامية للموقع. لا غنى عن تطوير الواجهات الخلفية في مواقع الويب الديناميكية dynamic websites التي تتفاعل مع المستخدمين وتحتاج إلى تخزين البيانات وفهرستها وحفظها واستردادها وتعديلها وحذفه مثل مواقع التجارة الإلكترونية والمواقع التي تتطلب ملء نماذج وتخزين البيانات المتغيرة مثل وصف المنتجات والمنشورات وملفات تعريف المستخدمين وما إلى ذلك. أما مواقع الويب الثابتة أو الساكنة static websites فهي لا تتطلب تطوير الواجهة الخلفية وتكون مجرد مواقع بسيطة بمحتوى ثابت ولا تتفاعل مع المستخدمين ولا تستطيع تخزين أي شيء وتسعمل خوادم شبه جاهزة لتخديم البيانات. أهمية تطوير الواجهة الخلفية في سوق العمل لا شك أن أهمية تطوير الواجهة الخلفية ينتج عن انتشار تطبيقات الويب وليس فقط مواقع الويب والاعتماد الكبير على عالم الإنترنت والتطبيقات السحابية من برامج محاسبة وفيديو وإدارة مهام …إلخ. فجميع هذه التطبيقات تحتاج إلى بيانات ديناميكية وبالتالي تحتاج جميعها لتطوير واجهات خلفية. وحسب استطلاع الرأي الذي أجراه موقع موقع Stackoverflow الشهير للعام 2022 والذي يشارك فيه عدد كبير من المطورين والمبرمجين حول العالم تبين أن أكثر غالبية المشاركين في الاستطلاع ونسبتهم 46.82% هم في المقام الأول مطورون كاملون full-stack يليهم مباشرة مطورو الواجهة الخلفية back-end بنسبة 43.38% وبعدهم مطورو الواجهة الأمامية front-end بنسبة 25.96% ويلي ذلك باقي التخصصات البرمجية الأخرى. هذا يدل على أهمية مجال تطوير الويب عمومًا وتطوير الواجهة الخلفية على وجه الخصوص والطلب الكبير عليه في سوق العمل وإلا لم يكن الإقبال عليه ليصل لهذه النسب المرتفعة. كما يعد تطوير تطوير الواجهة الخلفية مجالًا وظيفيًا مربحًا وسريع النمو حيث متوسط الراتب السنوي لمطور الواجهة الخلفية وفق نفس الاستبيان في الولايات المتحدة، في عام 2022، بما قدر بـ 68 ألف دولار سنويًا وهذا الرقم بلا شك يختلف من بلد لآخر ويعتمد على سنوات خبرة المطور إلا أنه يظل رقمًا مرتفعًا مقارنة بباقي المهن والتخصصات. وبالتالي فإن استثمارك في تعلم تطوير الواجهات الخلفية للويب يفتح أمامك الكثير من فرص العمل المجزية والمضمونة، وطالما أن الأشخاص والشركات بحاجة إلى مواقع الويب والمتاجر الإلكترونية فستكون هناك حاجة إلى مطوري ويب. مهام ومسؤوليات مطور الواجهة الخلفية إذا قررت العمل كمطور واجهة خلفية فهذا يعني أنك ستكون المسؤول الأساسي عن تطوير كافة أجزاء موقع الويب التي تعمل من جانب الخادم وصيانتها واختبارها وتصحيحها. يمكن القول أنك مسؤول عن العمود الفقري لتطبيقات الويب والعمل في هذا المنصب يتطلب منك القيام بعدة مهام تشمل ما يلي: التواصل مع العملاء وأعضاء الفريق البرمجي وفهم احتياجات الموقع أو التطبيق وتحديد كافة البيانات والوظائف المطلوبة للعمل في الواجهة الخلفية. كتابة الشيفرات البرمجية التي تحقق وظائف الموقع باستخدام لغات البرمجة التي تعمل من جانب الخادم. معالجة كافة طلبات مستخدمي الموقع. صيانة عناصر الواجهة الخلفية واستكشاف أي أخطاء فيها وإصلاحها. إنشاء قواعد بيانات الموقع وتحسينها وإدارتها والاستعلام منها. إنشاء واجهات برمجة التطبيقات API من جانب الخادم والتي يحتاجها مطورو الواجهة الأمامية لاسترداد البيانات وعرضها. إعداد وإدارة بيئات الاستضافة وتثبيت البرنامج الضرورية على الخادم. تحسين أداء تطبيقات الويب وأمانها وتخفيف زمن تحميلها واستجابتها وتعزيز تجربة مستخدميها. دمج الخدمات الخارجية مثل بوابات الدفع والخدمات السحابية مثل Amazon Web Services و Azure مع الموقع. إجراء عمليات النسخ الاحتياطي واستعادة ملفات الموقع وقاعدة البيانات في حال وقوع أي طارئ. التأكد من أمان الموقع وحمايته من الاختراق. بعد الاطلاع على قائمة المهام أعلاه هل تجد مجال تطوير الواجهات الخلفية مناسب لك؟ أنصحك بمتابعة قراءة هذا المقال لتتعرف على أهم لغات البرمجة لتطوير الواجهات الخلفية وأهم النصائح التي تساعدك لتصبح مطور واجهات خلفية محترف. لغات تطوير الواجهة الخلفية Backend يمكن لمطوري الواجهات الخلفية استخدام العديد من لغات البرمجة والأدوات وأطر العمل التي تسهل عملية بناء تطبيقات تتصل بالخادم وتتفاعل مع قواعد البيانات، ستكون أول خطوة عليك القيام بها كمطور واجهات خلفية هو تحديد اللغات التي ستستخدمها، ولتسهيل المهمة عليك فقد جمعنا لك قائمة بأفضل لغات تطوير النظم الخلفية التي يمكنك استخدامها في عملك وأهم مميزاتها وأطر عملها. أهم لغات تطوير الواجهة الخلفية: لغة جافا سكريبت JavaScript مع Node.js لغة بايثون Python لغة PHP لغة روبي Ruby لغة جافا Java لغة C# دعنا نتناول كل لغة من بينها بمزيد من التفصيل ونتعرف على وأطر عملها ودورها الفعال في تطوير الواجهات الخلفية للويب. لغة جافا سكريبت JavaScript تعد جافا سكريبت واحدة من أكثر لغات البرمجة شهرة وانتشارًا بين أوساط المبرمجين بفضل سهولتها وإمكانية استخدامها لكل من تطوير الواجهة الخلفية والأمامية للويب، فهي تستخدم بشكل أساسي لإنشاء مواقع تفاعلية وديناميكية من جانب العميل وتعمل ضمن المتصفحات فقط، لكن بات بمقدورها بفضل بيئة تشغيل Node.js العمل على جانب الخادم وبرمجة الواجهات الخلفية بخروجها من بيئة المتصفح وبهذا يمكنك تعلم جافا سكريبت من العمل كمطور كامل fullstack ويفتح لك فرصًا أكبر. توفر جافا سكريبت كذلك الكثير من أطر عمل تطوير الواجهة الخلفية التي توفر مجموعة من الأكواد والمكتبات الجاهزة للاستخدام والتي تبسط مهام تطوير المواقع وتجعلها أسرع وأكثر كفاءة ومن ضمنها Express.js و Meteor.js وBackbone.js لكل إطار عمل منها ميزات مختلفة ويصلح لأنواع مواقع معينة أكثر من غيرها لذا عليك البحث في الإطار الذي تود استخدامه والتأكد أنه يلبي متطلباتك بشكل جيد. لغة بايثون Python تعد لغة بايثون إحدى أسهل لغات البرمجة وأكثرها شعبية بفضل بنيتها البسيطة والمقروءة، وهي تستخدم في العديد من المجالات ومن بينها تطوير الواجهات الخلفية للويب وهي تستخدم من قبل كبرى الشركات التقنية مثل إنستغرام و Dropbox. ويمكن استخدام أطر عمل بايثون مثل إطار العمل جانغو Django أو فلاسك flask أو FastAPI لتقليل كتابة التعليمات البرمجية وتبسيط عملية تطوير الواجهات الخلفية لمواقع الويب المتقدمة بشكل أسرع و أكثر أمانًا. لغة PHP ذاع صيت لغة PHP لفترة طويلة كواحدة من أشهر لغات الويب وهي تستخدم في تطوير حوالي 80% مواقع الويب في العالم لكونها لغة سريعة ومرنة يمكنها تطوير كافة أنواع المواقع من المدونات البسيطة إلى المتاجر الرقمية المتقدمة. لم تفقد PHP قوتها أمام اللغات الأخرى بفضل قوة أطر العمل المبنية عليها ولعل أشهرها إطار العمل لارافيل Laravel وهو إطار عمل مفتوح المصدر لتطوير الواجهات الخلفية لمواقع الويب بشكل منظم وسهل وآمن وسهل الاستخدام. إلى جانب العديد من أنظمة إدارة المحتوى CMS التي تجعل من تطوير المواقع وإنشاء المحتوى وتعديله وإدارته غاية في السهولة ولا يستلزم أي مهارات تقنية ومن أشهرها ووردبريس WordPress ودروبال Drupal. لغة روبي Ruby روبي هي لغة برمجة نصية مفتوحة المصدر أطلقت عام 1995 وقد اكتسبت هذه اللغة شعبية كبيرة بين أوساط المبرمجين بفضل تركيبتها التي تشبه إلى حد كبير اللغة الإنجليزية المحكية لذا تعد من أسهل لغات البرمجة المستخدمة في تطوير تطبيقات للويب. ورغم أنها ليست بشهرة اللغات السابقة في العالم العربي إلا أن شعبيتها تزداد بالتدريج على مستوى العالم وستجد الكثير من الوظائف المتوفرة عند تعلمها لاسيما عندما تتقن إطار عملها الشهير Ruby on Rails في تطوير تطبيقاتك فهو يسهل ويسرع عملك بشكل لافت. لغة جافا Java جافا هي لغة برمجة عريقة تم إطلاقها عام 1991 وهي لغة قوية ومتعددة الأغراض تعتمد مبدأ البرمجة كائنية التوجه OOP وعلى الرغم من إمكانية تشغيلها على المتصفح إلا أنها مصممة بشكل أساسي لتطوير الواجهات الخلفية للتطبيقات. بالرغم من أن شعبية جافا آخذة في الانخفاض وكونها لغة صعبة التعلم مقارنة بلغات البرمجة الأحدث إلا أنها لاتزال تستخدم في الكثير من مواقع الويب نظرًا لقوتها وضمان أمان التطبيقات المبنية بها لأنها لا تنفذ على الجهاز نفسه بل تنفذ على آلة جافا الافتراضية Java Virtual Machine أو اختصارًا JVM ما يضمن حماية التطبيقات وعزلها. كما تتضمن جافا العديد المكتبات وأطر عمل الواجهة الخلفية التي تسهل تطوير التطبيقات وصيانتها مثل Spring لذا تعد أحد الخيارات التي يمكنك الاعتماد عليها كمطور واجهات خلفية. لغة C# تعد لغة C# واحدة من أفضل لغات البرمجة وهي لغة عريقة عمرها يزيد على عشرين عامًا ولازالت تصلح لجميع أنواع التطبيقات ولبناء تطبيقات الويب يمكن استخدامها مع إطار عمل دوت نت NET Framework. الشهير الذي يستخدم لبناء تطبيقات ومواقع الويب بناء على لغة C# ويوفر بيئة تطوير واجهات خلفية قوية وفعالة يوفر وظائف مخصصة لإدارة كميات كبيرة من البيانات وإعدادات أمان قوية والكثير من الميزات الجاهزة ويسمح بالعمل مع واجهات برمجة تطبيقات الويب الأصلية. تقنيات وأدوات مهمة لتطوير الواجهة الخلفية Backend بعد أن تعرفت على أهم لغات برمجة وأطر عمل تطوير الواجهات الخلفية للويب دعنا نتعرف الآن على التقنيات والمهارات والأمور الأخرى التي تفيدك بشكل كبير في العمل تطوير الواجهات الخلفية. واجهات برمجة تطبيقات API قواعد البيانات وأبرز أنواعها ونظم إدارتها معرفة أساسية بالشبكات وأمنها أسس التعامل مع الخوادم والاستضافات ومزودات الخدمة السحابية نظم التحكم بالإصدارات Git أدوات إدارة الحزم Package Management System استخدام الحاويات Containers الإحاطة بأساسيات لغتي HTML و CSS وإليك معلومات إضافية عن كل تقنية من هذه التقنيات وكيف تفيدك كمطور ويب. واجهات برمجة تطبيقات API من الضروري كمطور واجهة الخلفية أن تتعلم مفهوم واجهة برمجة التطبيقات Application Programming Interface أو اختصارًا API وهو آلية تمكن التطبيقات والمواقع من التواصل مع بعضها والحصول على البيانات الخاصة ببعضها مهما كانت التقنية التي طورت بها هذه التطبيقات وسواء كانت تطبيقات واجهة خلفية تعمل من طرف الخادم أو تطبيقات واجهة خلفية تعمل من طرف العميل. ومن أبرز الأمثلة على أنواع واجهات برمجة التطبيقات نذكر RESTful API الذي يستخدم تنسيق JSON لتبادل البيانات و GraphQL الذي يعد مفهومًا لنقل وتبادل البيانات على شكل استعلامات queries، ويجب أن تحيط بهذين المفهومين جيدًا كمطور واجهات أمامية. وللمزيد حول مفهوم واجهات برمجة التطبيقات وكيفية استخدامها أنصح بمشاهدة فيديو ما هي الواجهة البرمجية API التالي: قواعد البيانات وأبرز أنواعها ونظم إدارتها يحتاج أي مطور واجهات خلفية لامتلاك معرفة في طريقة التعامل مع قواعد البيانات ونظم إدارتها وأنواعها المختلفة ومن أهمها: قواعد البيانات العلائقية التي تستخدم لغة SQL وتخزن بيانات التطبيقات ضمن جداول مرتبطة ببعضها البعض ومن أبرز أنظمة إدارة قواعد البيانات العلائقية نذكر MySQL و SQLite و PostgreSQL. قواعد البيانات غير العلائقية NoSQL وهي أشهر بدائل قواعد البيانات العلائقية التي تخزن بيانات التطبيقات بطرق أخرى غير الجدول العلائقي ومن أشهر نظم إدراتها نذكر MongoDB وكاساندرا. وقد ناقشنا في مقال دليلك الشامل إلى قواعد البيانات DataBase المزيد من الأنواع وميزات واستخدامات كل نوع من بينها بالتفصيل. معرفة أساسية بالشبكات وأمنها تحتاج كمطور واجهة خلفية إلى امتلاك معرفة أساسية ببروتوكولات الاتصال عبر الويب مثل: بروتوكول HTTP بروتوكول HTTPS وشهادة SSL بروتوكول WebSocket كما يحتاج أي مطور ويب لفهم آلية عمل شبكة الإنترنت والمفاهيم الأساسية المرتبطة بها مثل عناوين بروتوكول الإنترنت IP Addresses وأسماء النطاقات في شبكة الإنترنت. ولا يجب أن يغفل عن مفاهيم أمن الويب واتخاذ كافة إجراءات الحماية اللازمة لحماية قواعد بيانات موقع الويب وحماية مسارات واجهة برمجة التطبيقات من الثغرات الأمنية ومن محاولة سرقة البيانات ويستخدم أساليب المصادقة والأذونات التي تتحكم في وصول المستخدمين للتطبيقات ويشفر أي بيانات حساسة ويتحقق من صحة أي مدخلات من قبل المستخدمين وغيرها الكثير من إجراءات الحماية. قد ترغب في مشاهدة الفيديو التالي للتعرف على مزيد من المعلومات حول أشهر طرق الاختراق وسبل الوقاية منها. معرفة جيدة بنظم التشغيل يحتاج مطور الواجهة الخلفية لامتلاك معرفة أساسية بنظم التشغيل وخصوصًا نظام التشغيل لينكس لأن أغلب الخوادم تعمل بنظام لينكس وبالتالي تعلمه يمكنك من معرفة أساسيات التعامل مع الخوادم والاستضافات ومزودات الخدمة السحابية والتعامل مع واجهات سطر الأوامر أو الطرفية وطرق رفع الملفات إلى الاستضافة والوصول إلى قاعدة البيانات المخزنة عليه. كما يحتاج لامتلاك معرفة كافية بمنصات استضافة الويب وطريقة نشر وتشغيل الموقع على خادم ويب مثل خادم أباتشي Apache و خادم إنجن إكس Nginx ومعرفة طريقة التعامل مع مزودات الخدمة السحابية والاستفادة من أنواع الخدمات السحابية المختلفة، ولمزيد من المعلومات يمكنك متابعة العديد من الدروس حول الحوسبة السحابية في أكاديمية حسوب. نظم التحكم بالإصدارات Git تساعد نظم التحكم بالإصدارات المطور في إدارة التغييرات التي يقوم بإجرائها على الشيفرات البرمجية لمشاريعه وتطبيقاته ومن أشهرها نذكر Git وهي عبارة أداة برمجية تمكنك من العودة بسهولة إلى إصدار سابق يعمل بشكل صحيح من مشروعك في حال حدث خطأ ما بدلاً من البحث عن سبب الخطأ ومحاولة التراجع عنه يدويًا، كما أنه يفيد المطور بشكل كبير عند العمل على مشروع مشترك مع فريق عمل فهو ينظم التعديلات المختلفة ويمنع تضاربها. والجدير بالذكر أن التعامل مع أنظمة التحكم بالإصدارات هو ضرورة ولا يستطيع أي مبرمج أو مطور ويب العمل دون خبرة بها وستجد في أكاديمية حسوب مجموعة غنية ومنوعة من المقالات والدروس حول Git التي تساعدك في تعلم التعامل مع نظم التحكم بالإصدارات من الصفر حتى الاحتراف. أدوات إدارة الحزم Package Management System تتضمن معظم التطبيقات اليوم حزمًا ومكتبات خارجية ومن الصعب تطوير التطبيقات اليوم دون الاعتماد على أحد الأدوات البرمجية المساعدة في إدارة هذه الحزم الخارجية وعدم تعارضها، ومن الأمثلة عليها مثل npm الذي يأتي مع Node.js الذي يُستخدم مع لغة جافا سكريبت أو composer المستخدم مع لغة PHP. فمعظم مشاريع الويب اليوم تتضمن الكثير من الحزم التي يعتمد بعضها على بعض وهذه البرمجيات أساسية لمساعدتك في تحديد الحزم اللازمة لمشروعك ويحدد التبعيات المناسبة بنفسه والتأكد من توافقها مع التبعيات الأخرى ويتحكم في إصدارات الحزم التي تقوم بتثبيتها. استخدام الحاويات Containers بالرغم من أن تعلم استخدام الحاويات Containers يعد مهارة إضافية وليس لزامًا عليك كمطور واجهة خلفية إلا أن تعلمها يساعدك في بناء مشاريعك واختبارها ونشرها بكفاءة فالحاويات هي عبارة عن حزم برمجية تتضمن كافة العناصر الضرورية لتشغيل التطبيق في أي بيئة أو نظام تشغيل لكنه يكون معزول ضمن حاوية معزولة منطقيًا عن التطبيقات الأخرى بحيث لا يتعارض معها. يمكنك إنشاء الحاويات وتشغيلها باستخدام تقنية مثل دوكر Dockerوهي تقنية حاوية مفتوحة المصدر تعتمد على نظام لينكس وتسمح للمطورين ببناء وتشغيل التطبيقات واختبارها ونشرها بسهولة، وللاطلاع على مزيد من التفاصيل حول مفهوم الحاويات وأهميتها لمطوري التطبيقات يمكنك مشاهدة الفيديو التالي: الإحاطة بأساسيات لغتي HTML و CSS يحتاج مطور الواجهات الخلفية معرفة الجوانب الأساسية لكل من HTML و CSS اللتان تستخدمان لبناء الواجهات الأمامية فحتى لو لم يستخدمها في عمله فهو يحتاج للتواصل مع مطوري الواجهة الأمامية بشأنها وهي تقنيات سهلة التعلم. من أهم الأساسيات التي ينبغي تعلمها في لغة HTML هي طريقة إنشاء صفحة ويب ثابتة وإنشاء النماذج ومعالجتها وآليات الإدخال المختلفة إضافة إلى معرفة طريقة إنشاء قواعد التنسيق في CSS وكيفية عمل المحددات والفرق بين المعرف id والصنف class. يمكنك معرفة المزيد حول هاتين اللغتين من خلال مطالعة مقال تعلم لغة HTML ومقال أساسيات لغة CSS. خارطة طريق لتعلم تطوير الواجهات الخلفية هل تشعر بالتشتت من كثرة التقنيات التي عليك تعلمها لتصبح مطور واجهة خلفية ولا تعرف من أي واحدة تبدأ وكيف تنظم خطوات التعلم؟ دعني أساعدك وأوضح لك خارطة طريق لتعلم مجال تطوير الواجهات الخلفية والتي تعرض بوضوح طريق مطور الواجهات الخلفية backend في مجال تطوير الويب بالكامل بدءًا من المرحلة الأساسية وحتى المتقدمة وأغلب تلك المواضيع تجد عنها في أكاديمية حسوب وموسوعة حسوب فابحث عنها: أفضل المصادر العربية لتعلم تطوير تطبيقات الواجهة الخلفية إذا كنت تبحث عن مصادر عربية لتعلم تطوير الواجهة الخلفية ستجد العديد منها في أكاديمية حسوب التي تعد أكبر منصة عربية لتعليم البرمجة فهي توفر عدة دورات تدريبية لتطوير التطبيقات منها: دورة تطوير التطبيقات باستخدام لغة JavaScript دورة تطوير تطبيقات الويب باستخدام لغة PHP دورة تطوير التطبيقات باستخدام لغة Python دورة تطوير تطبيقات الويب باستخدام لغة Ruby تتميز كل دورة من هذه الدورات بكونها معدة بعناية من نخبة من المبرمجين في المجال وتتضمن العديد من المسارات التي تبدأ معك من أساسيات اللغة وتعلمك أهم أطر عملها وتنتهي بك في تطوير تطبيقات عملية احترافية تؤهلك للدخول في سوق العمل كما أنك تحصل على متابعة دورية من قبل فريق من المدربين الذين يجيبون على كافة تساؤلاتك بخصوص ما تتعلمه ويوجهونك خلال تطبيق المشاريع، وستحصل في نهاية كل دورة على شهادة معتمدة من أكاديمية حسوب تؤهلك لدخول سوق العمل. كما توفر أكاديمية حسوب مئات المقالات والسلاسل التعلميمة توفر شروحات مميزة لكافة اللغات والأطر والتقنيات التي ذكرناها في سياق مقالنا مثل مقال المدخل الشامل لتعلم تطوير الويب وبرمجة المواقع الذي يرشدك لكل ما يخص تطوير الويب بكافة أقسامه وتخصصاته وغيرها الكثير من المقالات المتقدمة لذا احرص على متابعة دروس الأكاديمية أولًا بأول. وإذا كنت تفضل الدراسة من الكتب لما توفره من تسلسل منهجي في طرح المعلومات ستجد في قسم الكتب في أكاديمية حسوب العديد من الكتب القيمة المتخصصة بشرح لغات البرمجة وقواعد البيانات وتقنيات تطوير الويب وغيرها من العناوين المهمة والمفيدة لأي مطور. أسئلة شائعة حول تطوير الواجهات الخلفية في بداية مشوارك في تطوير الواجهة الخلفية قد تدور بذهنك عدة تساؤلات حول هذا التخصص ومدى صعوبته وملائمته لك وإليك أبرز هذه التساؤلات والإجابات عليها 1. هل يمكن أن أتعلم تطوير الواجهة الخلفية بنفسي؟ نعم بكل تأكيد فتطوير الويب عمومًا وتطوير الواجهة الخلفية خصوصًا لا تتطلب منك الحصول على شهادة جامعية لتمارسها بل يمكنك تعلمها ذاتيًا واكتساب كافة المهارات اللازمة لتطوير مواقع وتطبيقات الويب بنفسك ولحسن الحظ موارد التعلم كثيرة ومتاحة ويمكنك الاعتماد عليها للتعلم الذاتي. وتذكر أن مفتاح نجاحك كمطور واجهة خلفية ليس مرتبطًا بالشهادات بقدر ما يعتمد على اكتساب المهارات المناسبة التي تمكنك من دخول سوق العمل وتطوير مشاريع تعكس تمكنك من هذه التقنيات والمهارات وتعزز فرصتك في العثور على العمل الذي يحقق طموحك. 2. هل وظيفة تطوير الواجهات الخلفية مناسبة لي؟ بالرغم من أن المهارات التقنية هي أول ما ينظر له عند توظيف مطور واجهات خلفية لكن هذا ليس كل شيء فكي تصبح مطور واجهة خلفية محترف يجب أن تمتلك بعض الصفات الأخرى مثل المهارات التحليلية والقدرة على حل المشكلات إلى جانب مهارات التواصل لاسيما عندما تعمل ضمن فريق عمل يضم عدة مطورين، كما يجب أن تمتلك حس الفضول والرغبة في تعلم كل جيد فكل يوم هناك إصدارات وأدوات وإضافات جديدة وعليك بذل الوقت والجهد لتعلمها، لذا تأكد من أنك شخص يمتلك هذه الصفات ولا تركز فقط على الجوانب الفنية وقرر بناء على ذلك إن كان العمل كمطور واجهات خلفية يناسبك أم لا. 3. هل يجب علي تعلم كل التقنيات الواردة في هذا المقال لأبدأ العمل كمطور واجهة خلفية؟ لحسن الحظ لا يلزمك تعلم كل هذه التقنيات لتبدأ تطوير الويب الخلفي فإذا امتلكت المهارات الأساسية بإحدى لغات الواجهة الخلفية وتعلمت إطار عمل واحد على الأقل وأتيحت لك فرصة عمل على مستوى المبتدئين لا تتردد واقبلها فورًا، سيطلب منك حينها البدء بمشاريع عملية صغيرة تناسب مهاراتك وبعدها ستتاح لك الفرصة لتوسيع مجموعة المهارات الخاصة بك وتعلم لغات وأدوات برمجة جديدة ومن جديد أؤكد لك بأن الخبرة العملية هي أكثر ما يساعدك على التطور. 4. ما هو الوقت اللازم لتعلم تطوير الواجهات الخلفية Backend؟ لا شك أن تعلم تطوير الواجهة الخلفية يتطلب معرفة ترسانة مختلفة من لغات البرمجة ومهاراتها وهذا يتطلب بلا شك بعض الوقت والالتزام لكن رغم ذلك تعتمد المدة اللازمة لتعلم تطوير الواجهة الخلفية على عدة عوامل أهمها مدى قابليتك وسرعتك في التعلم وكفاءة المصادر التي تتعلم منها ومدى التزامك بخطة منهجية وعدد الساعات التي تقضيهًا يوميًا في للتعلم. ولا شك أن المعرفة المسبقة بعلوم الحاسوب وأساسيات الشبكات وكنت على دراية بإحدى لغات البرمجة وكتابة الشيفرات البرمجية فهذا يختصر عليك زمن التعلم بشكل كبير، ويمكن القول أن فترة التعلم تتراوح وسطيًا بين 6 أشهر إلى عام لتصبح جاهزًا لدخول سوق العمل في حال اتبعت كل الخطوات والنصائح التي أوردناها في سياق المقال بعدها يمكن أن تتابع تطوير نفسك بشكل تدريجي وتصبح خبيرًا في المجال. 5. ما مدى صعوبة تعلم تطوير الواجهة الخلفية للويب؟ ستشعر بالطبع ببعض الصعوبات عند تعلم تطوير الواجهات الخلفية لأول مرة وستواجه الكثير من التحديات والعثرات خلال رحلة التعلم، لكن بقليل من المثابرة والاستعانة بمصادر تعلم مناسبة وفعالة يمكنك تجاوزها بسهولة وتذكر أنك تستثمر في مجال وظيفي مربح ومضمون لذا يستحق الأمر بذل الجهد. 6. أيهما أصعب تطوير الواجهة الخلفية أم الأمامية؟ برأيي الشخصي يعتمد الجواب على هذا السؤال على طبيعة الشخص وميوله فالبعض يرى أن تطوير الواجهة الخلفية هو الأصعب لكونه يتطلب تعلم تقنيات برمجية أكثر ويستلزم تعلم التعامل مع قواعد البيانات والخوادم والشبكات وضمان أمان التطبيقات كما أنه يتطلب امتلاك عدة مهارات شخصية أهمها التفكير المنطقي والتحليلي التي عليك تطويرها إلى جانب تطوير مهاراتك الفنية لتنجح في سوق العمل. بالمقابل يمكن أن يرى بعض الأشخاص أن تطوير الواجهات الأمامية هو الأصعب لكونه لا يخضع لقواعد ثابتة ويحتاج للاهتمام بالكثير من الجوانب المرئية مثل تجاوب التصميم مع كافة أنواع الأجهزة وأحجام الشاشات وفهم الاختلافات بين المتصفحات واختبار توافق التصاميم عليها ومراعاة تجربة المستخدم ولا ننسى الجانب الإبداعي والذوق في التصميم الإبداعي الذي قد لا يتوفر لدى جميع الأشخاص. ولمساعدتك في هذا الشأن أنصحك بالاطلاع على مقال دليلك الشامل إلى تطوير الواجهات الأمامية لتتعرف على كل ما يخص هذا المجال وتقرر بنفسك أين تبدو الأمور أسهل بالنسبة لك. الخلاصة تعرفنا في مقال اليوم على مجال تطوير الوجهة الخلفية للويب الذي يعنى بتطوير أجزاء تطبيقات ومواقع الويب التي تعمل من جهة الخادم وتعرفنا على أهم الفروقات بين تطوير الواجهة الأمامية الخلفية، وأبرز التقنيات واللغات والأطر المستخدمة في برمجة الواجهة الخلفية وتحقيق وظائف التطبيقات والمواقع الإلكترونية بكفاءة وأهم الخطوات والمصادر التي تساعدك على تعلمها بسهولة وكفاءة. وفي ختام مقالنا جاوبنا على أبرز الأسئلة التي قد تتبادر لذهن أي مبتدئ يرغب بتعلم تطوير الواجهات الخلفية، وفي حال كان لديك سؤال آخر لم نجب عليه في سياق المقال يمكنك تركه في قسم التعليقات أسفل المقال. اقرأ أيضًا المدخل الشامل لتعلم تطوير الويب وبرمجة المواقع برمجة مواقع الويب: دليلك المختصر مدخل إلى تطوير البرمجيات Software Development ما هي صفحات الويب
- 1 تعليق
-
- 1
-
- تطوير الويب
- الواجهة الخلفية
-
(و 1 أكثر)
موسوم في:
-
توفر نماذج البرمجة طرقًا مختلفة لحل المشكلات البرمجية التي يواجهها المطورون بسيطة فبعض النماذج يناسب حل المشكلات البرمجية البسيطة وبعضها الآخؤ يناسب لحل المشكلات المعقدة ومعرفة كل نموذج من هذه النماذج يساعد المبرمج على اعتماد النموذج الأنسب الذي يلبي متطلبات عمله. وكنا قد تحدثنا في المقال السابق على لغة البرمجة الإجرائية وهو واحد من أقدم نماذج البرمجة المتبعة في تطوير البرامج والتطبيقات، ونكمل الحديث في مقال اليوم عن أحد أشهر نماذج البرمجة التي يحتاج أي مطور لمعرفتها وهو نموذج لغة البرمجة بالكائنات أو البرمجة كائنية التوجه OOP ونتعرف على مبادئ عمله وطريقة تنظيم الشيفرات البرمجية من خلاله وأهم لغات البرمجة التي تستخدم هذا النموذج، كما سنشرح بالتفصيل مفهوم الأصناف Classes والكائنات المشتقة منها Objects والفرق بينهما وأهمية تطبيق هذه المفاهيم في تطوير البرامج الحاسوبية المعقدة وتسهيل صيانتها. أنواع لغات البرمجة تصنف لغات البرمجة إلى أنواع مختلفة بناء على عدة معايير ومن بين هذه المعايير تصنيفها وفق المنهجية المتبعة لهيكلة الشيفرات البرمجية، حيث تقسم لغات البرمجة بناء على هذا المعيار إلى عدة أصناف أو نماذج برمجية تحدد الأساليب المستخدمة لتمثيل عناصر البرنامج وخطوات معالجة البيانات وسير التنفيذ. تقسم لغات البرمجة بناء على هذا المعيار إلى عدة نماذج تشمل: نموذج البرمجة الأمرية Imperative Programming: الذي يصف بالتفصيل المدخلات وكيفية الحصول على المخرجات منها ويندرج تحته نموذج البرمجة الإجرائية procedural programming ونموذج البرمجة بالكائنات. نموذج البرمجة التصريحية Declarative Programming: الذي يعبر عن المهام التي يجب أن ينجزها البرنامج دون أن يصف بالتفصيل سير التنفيذ الخاص به ويندرج تحته البرمجة الوظيفية functional programming والبرمجة المنطقية logic programming. يمكنك معرفة المزيد من المعايير التي تصنف لغات البرمجة بناء عليها وأهم خصائص كل نوع منها من خلال مطالعة مقال أنواع لغات البرمجة وسنفرد مقال اليوم لشرح نموذج البرمجة بالكائنات وأشهر لغات البرمجة التي تعتمده ونكتشف أبرز مزاياها وعيوبها. ما هي لغة البرمجة بالكائنات؟ لغة البرمجة بالكائنات أو بتعبير أدق لغة البرمجة كائنية التوجه Object-Oriented Programming -واختصارًا oop- هي أحد أشهر نماذج البرمجة وقد تم ابتكارها منذ الستينيات وهي تعتمد على تنظيم شيفرات البرامج باستخدام مفهوم الأصناف classes والكائنات المشتقة منها objects بشكل مشابه لكائنات العالم الحقيقي. الصنف class هو بمثابة نموذج أو مخطط عام لتمثيل الكائنات حيث تتضمن الأصناف تعريف البيانات التي تصف الكائنات والوظائف الخاصة التي تصف سلوك الكائنات وتعالج بياناتها وهو يستخدم كقالب لاشتقاق العديد من الأمثلة أو الحالات المختلفة من هذه الكائنات objects، ولهذا السبب يسمى الكائن نسخة من الصنف instance. على سبيل المثال يمكن تعريف صنف يمثل السيارة حيث يكون لكل سيارة سمات أو خصائص تصفها تسمى المتغيرات الأعضاء أو حقول البيانات مثل طراز السيارة وسنة تصنيعها ولونها …إلخ ولها وظائف أو دوال تسمى دوال الصنف class functions تحاكي الأفعال أو السلوكيات التي تقوم بها السيارة مثل تشغيل السيارة وإيقافها وتغيير سرعتها وتحريكها لليمين واليسار …إلخ. كما يجب أن يتضمن الصنف دوال أخرى أهمها الدالة البانية constructor وهي الدالة التي تستدعى بشكل تلقائي عند إنشاء أو اشتقاق كائن من الصنف ويمكن من خلالها تمرير قيم تحدد متغيرات الكائن الجديد ودوال لضبط قيم متغيرات الكائن setter وجلبها getter وبعد اكتمال تعريف الصنف يمكننا اشتقاق كائن لكل سيارة جديدة نريد إنشاءها. توفر البرمجة بالكائنات للمطورين طريقة قوية لتنظيم البرامج وهيكلة التعليمات البرمجية بشكل وكائنات متفاعلة فيما بينها لتأدية المهام المطلوبة وتساعدهم على إنشاء تطبيقات قابلة للصيانة والتوسعة وإعادة الاستخدام وتعديل التعليمات البرمجية لتلبية المتطلبات. مثال برمجي على تعريف صنف وإنشاء كائنات منه قد يكون الشرح السابق لمفهوم البرمجة بالكائنات مربكًا وصعب الفهم لذا سنوضح لك المفاهيم بمثال عملي برمجي، لنفرض أنك تحتاج إلى تطوير برنامج لإدارة مكتبة باستخدام لغة البرمجة بايثون، إذا كنت تستخدم نموذج البرمجة كائنية التوجه لتطوير هذا البرنامج فأول ما ستفكر به هو الأصناف التي ستحتاجها. على سبيل المثال ستحتاج لتعريف صنف يمثل الكتاب وليكن اسمه Book ثم ستفكر في الخصائص أو السمات المميزة لكل كتاب مثل العنوان واسم المؤلف وعدد الصفحات …إلخ. ثم ستفكر في الوظائف التي ستطبق على هذا الكتاب وهي استعارة الكتاب وحجز الكتاب وإعادته للمكتبة إضافة لطريقة البناء init التي تستدعى عند إنشاء كائن أو كتاب جديد من الصنف وتهيئ خصائص هذا الكتاب ودوال الضبط والجلب لكل خاصية. سنحقق هذا الوصف برمجيًا من خلال كتابة الكود التالي بلغة بايثون: # تعريف صنف يمثل كتاب class Book(object): # تعريف الدالة البانية للصنف def __init__(self,title, author, pages): self.title = title self.author = author self.pages = pages # دالة ضبط عنوان الكتاب def setTitle(self, title): self.title = title # دالة جلب عنوان الكتاب def getTitle(self): return self.title # دالة ضبط اسم الكاتب def setAuthor(self, author): self.author = author # دالة جلب اسم الكاتب def getAuthor(self): return self.author # دالة ضبط عدد الصفحات def setNumPages(self, numPages): self.numPages = numPages # دالة جلب عدد الصفحات def getNumPages(self): return self.numPages # دالة لطباعة متغيرات الكتاب def printbook(self): print('تم إنشاء الكتاب التالي') print('------------') print('العنوان: ' , self.title) print('الكاتب: ' , self.author) print('عدد الصفحات: ' , self.pages) # دالة لإعارة الكتاب def borrow_book(self): print(f"{self.title} تمت استعارة كتاب") # دالة لإرجاع الكتاب def return_book(self): print(f"{self.title} تمت إعادة كتاب") # دالة لحجز الكتاب def reserve_book(self): print(f"{self.title} تم حجز كتاب") بعد تعريف الصنف يمكننا في أي مكان في البرنامج إنشاء كائنات والتعامل معها بالشكل التالي: # إنشاء كائن أول من صنف الكتاب book1=Book("البرمجة بلغة بايثون", "أكاديمية حسوب", 480) book1.printbook() book1.borrow_book() print('\n') سنحصل على المخرجات التالية بعد تنفيذ الشيفرة: يمكننا إنشاء كتاب آخر بتنفيذ تعليمة واحدة سهلة بسيطة وهكذا: # إنشاء كائن ثاني من صنف الكتاب book2=Book("البرمجة بلغة جافا سكريبت", "أكاديمية حسوب", 450) book2.printbook() book2.reserve_book() سنحصل أيضًا على المخرجات التالية: لاحظ كيف خلصتنا البرمجة بالكائنات الكثير من العمل ومن تكرار الشيفرة وهذه هي أبرز ميزة تتميز فيها البرمجة كائنية التوجه. يمكنك مطالعة المزيد من المعلومات حول إنشاء الأصناف والكائنات في لغة بايثون في مقال مختصر البرمجة كائنية التوجه OOP وتطبيقها في بايثون. مبادئ لغات البرمجة بالكائنات تعتمد لغات البرمجة بالكائنات على أربع مبادئ أساسية تمكن المبرمجين من تنظيم الشيفرات البرمجية وتقلل أخطاءها وتسهل إعادة استخدامها وصيانتها وتوسيعها في تطبيقات مختلفة. تشمل المبادئ الأربعة للبرمجة كائنية التوجه ما يلي: التغليف Encapsulation تجريد البيانات Abstraction الوراثة Inheritance تعدد الأشكال Polymorphism لنتعرف على كل مبدأ من هذه المبادئ بمزيد من التفصيل! 1. التغليف Encapsulation يشير مبدأ التغليف إلى عملية دمج البيانات والطرق ضمن وحدة مستقلة ومعزولة عن الشيفرات البرمجية الأخرى لها خصوصيتها، ففي البرمجة كائنية التوجه يمكن الوصول إلى بيانات الكائن وتعديلها فقط باستخدام وظائف أو دوال الكائن نفسها فقط وهذا يسمح بإخفاء الحالة الداخلية للكائن عن الكود الخارجي ويحد من صلاحية الوصول إلى بيانات ووظائف كل كائن أو تعديلها خارج نطاق الكائن ويمنع إساءة استخدامها ضمن الكود البرمجي ويضمن تنظيم الكود وموثوقيته. 2. تجريد البيانات Abstraction يمكن اعتبار مبدأ التجريد جزءًا من مبدأ التغليف فهو يساعد على تبسيط الأنظمة المعقدة عن طريق التركيز على المنطق العام للبرنامج وإخفاء تفاصيل التنفيذ عن المستخدمين، فالمقصود بتجريد البيانات في البرمجة بالكائنات إنشاء بنى مجردة عالية المستوى تسهل التعامل مع المهام المعقدة حيث يتم تمثيل خصائص الكائن وإخفاء تفاصيل التنفيذ أو العمليات الداخلية التي تجري على هذه الكائنات عن المستخدمين. ففي مثال الكتاب الوارد سابقًا ستهتم فقط كمستخدم بمعرفة مواصفات الكتاب وطرق التعامل معه من إعارة وحجز وإعادة دون أن تهتم للطريقة التي تنفذ فيها هذه الوظائف ما يهمك أن تستخدمها وتعمل بشكل صحيح دون أن تشغل بالك بتفاصيل عملها. 3. الوراثة Inheritance يسمح مبدأ الوراثة بإمكانية نقل السلوك والبيانات من كائن إلى آخر ويمكن المبرمج من إنشاء أصناف جديدة فرعية أو أبناء من أصناف أساسية موجودة تصبح آباء لها بدلًا من إنشاء أصناف جديدة كل مرة حيث يرث الصنف الابن كل المتغيرات (الصفات) والدوال (الوظائف) الخاصة بالصنف الأب ويمكنه إعادة تعريف وتخصيص الأمور الخاصة به وإضافة ميزات جديدة لها حسب الحاجة مما يسهل تعديل التعليمات البرمجية وتوسيعها. يمكن على سبيل المثال إنشاء صنف أب يمثل مركبة متحركة أو وسيلة نقل ويتضمن الأمور العامة المشتركة ثم استخدامه لإنشاء كائنات أخرى مثل الدراجات النارية أو الشاحنات أو الحافلات. كما يمكن اعتبار صنف الكتاب هو الصنف الأب وإنشاء صنف ابن منه يمثل مجلة وصنف آخر يمثل رواية يرث كل منهما خصائص ووظائف الصنف الأب ويضيف لها خصائص ووظائف إضافية خاصة به وهكذا. 4. تعدد الأشكال Polymorphism يشير مبدأ تعدد الأشكال إلى قدرة الكائنات المختلفة على الاستجابة بشكل مختلف عند استدعاء نفس اسم الدالة، بمعنى آخر استخدام نفس الوظيفة بمنطق مختلف حيث يمكن للكائنات المختلفة امتلاك وظائف أو دوال بنفس الاسم ولكنها تستخدم تعليمات مختلفة. يتضح استخدام هذا المبدأ بشكل جلي في الوراثة فعلى سبيل المثال بالعودة لمثال السيارة إذا كانت السيارة وهي الصنف الأب تحتوي على دالة لتشغيل السيارة تنفذ التعليمات بطريقة معينة فيمكن للمبرمج إعادة تعريفها وتنفيذها بشكل مختلف في الصنف الابن الذي يمثل الدراجات النارية ويمكن معرفة الدالة التي يجب تنفيذها وقت تشغيل الكود. باتباع مبادئ التغليف والتجريد والوراثة وتعدد الأشكال يمكن للمطورين إنشاء برامج قوية وإعادة استخدامها عند الحاجة ويسهل صيانتها وتطويرها. عمومًا، إن شعرت أنك لم تفهم هذه المبادئ فهمًا تامًا ولم تتضح لك اتضاحًا جليًا، فلا تقلق يكفي أن تتعرف عليها وعلى اسمها ثم ستفهما عندما تبدأ بالتطبيق والكتابة بلغة كائنية التوجه. ما معنى خاص ومحمي وعام في البرمجة بالكائنات؟ ستصادف في كافة لغات البرمجة بالكائنات مصطلحات عام وخاص ومحمي وإليك وصفًا موجز لكل مفهوم من هذه المفاهيم. خاص private: يمكن استخدام أي متغير (صفة) أو دالة (وظيفة) من النوع خاص ضمن الكود الموجود داخل الكائن فقط. محمي protected: لا يمكن استخدام أي متغير أو دالة محمية إلا من قبل الكائن نفسه ومن أبنائه. عام public: يمكن استخدام أي متغير أو دالة عامة أو تعديلها في أي مكان خارج الكائن. وتجدر الإشارة لضرورة الكشف عن الحد الأدنى من المعلومات المطلوبة خارج الكائن والحفاظ على خصوصيته قدر المستطاع إلا إذا دعت الضرورة البرمجية لغير ذلك. أشهر لغات البرمجة بالكائنات تستخدم البرمجة كائنات التوجه OOP على نطاق واسع وتعتمدها العديد من لغات البرمجة ومن أبرز لغات البرمجة بالكائنات نذكر: بايثون Python: من أشهر لغات البرمجة الكائنية وأكثرها تفضيلًا في الأوساط البرمجية فهي لغة مرنة وسهلة التعلم ومتعددة الأغراض تصلح لكثير من المجالات أبرزها تطوير الويب وعلوم البيانات والذكاء الصناعي وتعلم الآلة وهي توفر العديد من المكتبات المساعدة التي تسهل عمل المطورين. جافا Java: من أقوى لغات البرمجة كائنية التوجه وهي لغة قوية وآمنة وتتميز بكونها مستقلة وتعمل على كافة أنظمة التشغيل وهي من أبرز لغات تطوير تطبيقات أندرويد،لكن يعاب عليها أنها بطيئة وتستهلك الكثير من الذاكرة. روبي Ruby: لغة برمجة قوية تشبه لغة باثيون من ناحية امتلاكها قواعد صياغة بسيطة سهلة التعلم وهي تدعم البرمجة بالكائنات وتوفر الكثير من الأدوات والمكتبات وأطر العمل التي تسهل عمل المطورين وأبرزها روبي أون ريلز Ruby on Rails. C++: لغة برمجة قوية تدعم نموذج البرمجة كائنية التوجه وتوفر أداء عالي وإدارة جيدة للذاكرة وتملك مجتمع دعم ضخم وهي تصلح لبرمجة أنظمة التشغيل والتطبيقات المضمنة لكنها لغة صعبة التعلم وأقل مرونة من لغات البرمجة الأخرى. C#: لغة برمجة عامة الأغراض تدعم البرمجة الكائنية وتتكامل مع نظام التشغيل ويندوز وهي تستخدم بشكل أساسي لتطوير تطبيقات سطح المكتب وتطبيقات الويب وتصميم الألعاب. PHP: لغة برمجة مثالية لبناء تطبيقات الويب من جانب الخادم وهي لغة مفتوحة المصدر وسهلة الاستخدام أضافت ميزات البرمجة كائنية التوجه منذ الإصدار PHP5 وهي توفر الكثير من دعم المكتبات وأطر العمل وتعتمدها معظم نظم إدارة المحتوى الشهيرة مثل ووردبريس ودروبال. تايب سكريبت TypeScript: هي لغة برمجة مفتوحة المصدر تدعم البرمجة كائنية التوجه وقد طورتها شركة مايكروسوفت بالاعتماد على لغة جافا سكريبت JavaScript وهي تستخدم بشكل أساسي لتطوير تطبيقات الويب الكبيرة، أما لغة جافا سكريبت فبالرغم من كونها لغة تعتمد بشكل كبير على الكائنات لكنها لا تدعم كافة مبادئ البرمجة بالكائنات. إيجابيات وسلبيات لغات البرمجة بالكائنات لكل نموذج برمجي مميزاته وعيوبه وفيما يلي نوضح أهم إيجابيات وعيوب لغات البرمجة كائنية التوجه oop. إيجابيات لغات البرمجة بالكائنات يسمح أسلوب البرمجة بالكائنات بنمذجة مشكلات العالم الحقيقي بشكل أبسط بكثير من باقي النماذج البرمجية. تسهل البرمجة بالكائنات إعادة استخدام التعليمات البرمجية الحالية وتوسيعها باستخدام مبدأ الوراثة بدلاً من الاضطرار إلى إعادة كتابة نفس الكود مرارًا وتكرارًا تخفي البرمجة كائنية التوجه تفاصيل التنفيذ عن المستخدمين الخارجيين وتتيح لهم استخدام الأصناف بسهولة دون الكشف عن تفاصيل تنفيذ كل دالة من الدوال. تنظم البرمجة بالكائنات عملية تصميم البرامج من خلال تمثيلها بالاعتماد على كائنات منفصلة تتفاعل مع بعضها البعض ولكل منها خصائصها وسلوكياتها. تسرع البرمجة الكائنية تطوير البرمجيات وتزيد إنتاجيتها من خلال إمكانية إعادة استخدامها في مشاريع لاحقة. تحسن صيانة البرامج لأن الكائنات معزولة عن بعضها ويمكن حل مشكلاتها وتحسينها دون الحاجة إلى تعديل كامل الكود. تحافظ على أمان البيانات وتحميها من أي تعديلات غير مرغوب بها. سلبيات لغات البرمجة بالكائنات لغات البرمجة بالكائنات صعبة التعلم للمبتدئين ويستغرق فهمها والتعرف على طريقة عملها بشكل جيد وقتًا وجهدًا. تسبب البرمجة بالكائنات زيادة في حجم كود البرامج حيث تتضمن البرامج المطورة باستخدام نموذج البرمجة كائنية التوجه عددًا أكبر من التعليمات البرمجية مقارنة بالبرامج المطورة بنموذج البرمجة الإجرائية. تعد البرامج المطورة باستخدام نموذج البرمجة بالكائنات أبطأ من البرامج المطورة باستخدام نماذج البرمجة الأخرى. قد لا تناسب البرمجة بالكائنات جميع أنواع المشاكل البرمجية كالأنظمة البسيطة إلى حد ما التي يفضل حلها باستخدام نموذج البرمجة الإجرائية أو الأنظمة البالغة التعقيد التي تضطر فيها إلى إنشاء الكثير من مستويات الوراثة لتحقيقها ما يجعل الكود مربك وصعب الفهم والتي يناسبها نموذج البرمجة الوظيفية. الخلاصة تعرفنا في مقال اليوم على نموذج البرمجة بالكائنات OOP وشرحنا أهم المفاهيم والمصطلحات المرتبطة به مثل الصنف والكائن ومبادئ التجريد والتغليف والوراثة وتعدد الأشكال وعددنا أهم لغات البرمجة بالكائنات وأبرز سلبيات وإيجابيات هذا النموذج البرمجي، كل ما عليك الآن هو تطبيق هذه المفاهيم بشكل عملي من خلال إحدى لغات البرمجة التي تدعمها كي تتمكن من فهمها واستيعابها بشكل أفضل. اقرأ أيضًا البرمجة كائنية التوجه مختصر البرمجة كائنية التوجه OOP وتطبيقها في بايثون مفهوم الكائنات Objects والبرمجة كائنية التوجه OOP البرمجة كائنية التوجه (Object Oriented Programming) في PHP تعلم أساسيات البرمجة
-
عالم الألعاب الإلكترونية كبير ومتنوع ويضم أنواعًا وتصنيفات مختلفة تناسب مع مختلف اهتمامات المستخدمين، فمهما كان مجال الألعاب الذي تفضله سواء كان التصويب وإطلاق النار أو الرياضة أو الخيال العلمي أو المحاكاة فستجد بالتأكيد ألعابًا عديدة تتناسب مع هذا اهتمامك. وإذا كنت مهتمًا لتصبح مبرمج ألعاب أو مصمم ألعاب فإنك بحاجة لمعرفة أهم أنواع الألعاب الإلكترونية التي يمكنك إنشاؤها وأهم السمات المميزة لكل نوع، لذا سنعرفك في مقالة اليوم على أبرز الأنواع الأساسية والأنواع الفرعية التي تندرج تحتها الألعاب الإلكترونية والخصائص والسمات المميزة لكل نوع من هذه الأنواع. أهمية الألعاب الإلكترونية في سوق العمل تعد صناعة الألعاب الإلكترونية من المجالات الرائجة والمربحة في سوق العمل، وبحسب موقع الإحصاءات ستاتيستا Statista فإن إيرادات سوق الألعاب العالمي قد يبلغ في عام 2023 ما يقارب 490 مليار دولار أمريكي بمعدل نمو سنوي بنسبة 8.84٪ ويتوقع أن يصل عدد مستخدمي الألعاب بحلول عام 2027 إلى 4.3 مليار شخص. لهذا السبب يتزايد اهتمام استوديوهات الألعاب وشركات ألعاب الحاسوب والجوال وشركات وحدات التحكم بالألعاب بتطوير ألعاب مختلفة وطرحها في الأسواق والمتاجر المتخصصة، ويزداد بالمقابل الطلب على مصممي ومطوري الألعاب وتطور سنويًا آلاف الألعاب الإلكترونية التي تندرج تحت أنواع وتصنيفات مختلفة سنويًا. معايير تصنيف الألعاب الإلكترونية إذا كنت مصمم ألعاب أو مطور ألعاب إلكترونية فستحتاج لمعرفة نوع اللعبة الإلكترونية التي ستطورها فهذا من شأنه أن يساعدك على تحديد موارد اللعبة بدقة، ومعرفة الجمهور المستهدف منها، وحجم الطلب عليها في سوق العمل ودراسة منافسيك والتميز عنهم. كما يساعدك هذا على نشر لعبتك في التصنيف المناسب لها في متاجر الألعاب أو المنصات المتخصصة، ويمكِّن المستخدمين من العثور على الألعاب التي يفضلونها بين الكمّ الهائل من الألعاب الموجودة في السوق. تصنف الألعاب الإلكترونية وفق العديد من التصنيفات الأساسية والفرعية مختلفة بناء على عدة معايير من أهمها: أسلوب اللعب وهدفه: هذا المعيار أحد المعايير الأساسية في تصنيف الألعاب الإلكترونية حيث تتنوع الأهداف التي تصمم الألعاب من أجلها فهناك على سبيل المثال ألعاب محاكاة وألعاب تقمص أدوار وألعاب استراتيجية وألعاب إطلاق نار وغيرها الكثير وتختلف الطرق والأساليب التي يلعب بها المستخدمون ويتفاعلون مع بعضهم البعض بحسب كل لعبة. عدد اللاعبين وطبيعتهم: فهناك ألعاب فردية Single-player وألعاب جماعية أو متعددة اللاعبين تلعب عبر الإنترنت Massively Multi-player Online Games والتي تعرف اختصارًا بألعاب MMO وهذه بدورها يمكن أن تكون ألعاب تقمص أدوار جماعية MMORPG أو ألعاب إطلاق نار جماعية من منظور الشخص الأول MMOFPS أو ألعاب جماعية استراتيجية في الوقت الفعلي MMORTS …إلخ. كما أن هناك ألعابًا تعاونية يلعب فيها اللاعب ضد بيئة اللعب نفسها أو بمعنى آخر ضد الذكاء الاصطناعي المضمن في اللعبة وتعرف باسم ألعاب Player versus Environment أو اختصارًا PvE أو ألعاب تلعب كلاعب بشري ضد لاعب آخر لتحقيق الفوز أو تحقيق أهداف معينة في اللعبة وتعرف باسم Player versus Player أو اختصارًا PvP. أسلوب السرد وتقنياته: والمقصود به أسلوب سرد أحداث اللعبة فهناك ألعاب خيال علمي وألعاب واقعية وألعاب عسكرية وألعاب رعب، وهناك تقنيات مختلفة للسرد فقد يكون سرد أحداث اللعبة خطيًا Linear Narrative أي أن قصة اللعبة محددة من البداية ولها ترتيب معين لا يتغير مع تصرفات اللاعب، أو غير خطي Non-Linear Narrative حيث تحدد الإجراءات التي يقوم بها اللاعب طريقة سير القصة. نوع منصة اللعب: أو بمعنى آخر نوع الجهاز أو العتاد أو النظام البرمجي الذي تستهدفه اللعبة، فهناك ألعاب مخصصة للهواتف الذكية أو غيرها من الأجهزة المحمولة وهي اليوم أحد أشهر أنواع الألعاب وألعاب مخصصة للعب على الحواسيب، وألعاب موجهة لوحدات التحكم بالألعاب مثل بلاي ستيشن PlayStation وإكس بوكس Xbox ونينتيدو Nintendo Switch، وألعاب تلعب من داخل متصفح الويب ولكل نوع تقنياته وموارده. الفئة العمرية المستهدفة: فهناك ألعاب مخصصة للكبار وأخرى مخصصة للأطفال، ويجب على الجهة المطورة والناشرة للعبة التأكد من أن الألعاب مناسبة للفئة العمرية التي تستهدفها، فإذا كانت اللعبة موجهة للأطفال فيجب التأكد من خلوها من أي مخاطر على الأطفال وعدم عرضها لأي محتوى أو إعلانات لا تناسبهم. الغرض من اللعب: فبالرغم من أن معظم الألعاب تصمم لأغراض ترفيهية، إلا أن هناك ألعابًا مصممة لأغراض تعليمية وتهدف لتعزز المهارات المعرفية والاجتماعية والجسدية وهذه الألعاب في الغالب تستهدف الأطفال وهناك ألعاب محاكاة هدفها السماح للاعب بتجربة أمور واقعية ضمن بيئة افتراضية تحاكي البيئة الفعلية. منظور اللعب Perspective: فالألعاب الإلكترونية تتعدد حسب المنظور أو نقطة ارتكاز الكاميرا ضمن اللعبة فهناك ألعاب التمرير الجانبي التي تعرض اللعبة من زاوية الكاميرا الجانبية وتتبع اللاعب أثناء تحركه يسارًا أو يمينًا، وألعاب من أعلى إلى أسفل Top-down أو ما يعرف أيضًا باسم عرض عين الطائر birds-eye view أو عرض المروحية helicopter view حيث تعرض اللعبة من الأعلى وتنظر للأسفل حيث تكون الكاميرا مثبتة في موضع ثابت في الأعلى مع دوران مع أو بدون دوران، وألعاب تعرض اللعبة من منظور الشخص الأول First-person بمعنى أنها تتضمن كاميرا تحاكي رؤية بطل اللعبة أو من منظور الشخص الثالث وفيها يمكن رؤية شخصية اللاعب وتتبع الكاميرا حركة اللاعب. تملك الألعاب التي تندرج تحت نفس النوع سمات وخصائص مشتركة تميزها وتحددها عن غيرها، والجدير بالملاحظة أن بعض الألعاب الإلكترونية قد تندرج تحت عدة تصنيفات مختلفة بذات الوقت ومن الضروري أن تفهم كمطور ألعاب أو مصمم ألعاب خصائص كل نوع كي تتمكن من إنشاء لعبتك وتصنيفها بالشكل الصحيح. أهم أنواع الألعاب الإلكترونية في هذه الفقرة سنشرح أبرز أنواع الألعاب الإلكترونية بالاعتماد أسلوب اللعب أو الطريقة التي يتفاعل بها اللاعب مع اللعبة بشكل أساسي ونتعرف على أهم مميزاتها وأنواعها الفرعية، ونعطي أمثلة على بعض أشهر الألعاب التي تندرج تحتها. إليك قائمة بأبرز أنواع الألعاب الإلكترونية التي سنتطرق للحديث عنها في فقراتنا التالية: ألعاب صندوق الرمل وألعاب العالم المفتوح ألعاب تقمص الأدوار الألعاب الرياضية ألعاب المحاكاة والسباق الألعاب الاستراتيجية ألعاب التصويب وإطلاق النار الألعاب اليومية غير الرسمية ألعاب الألغاز والألعاب المنطقية ألعاب المنصات ألعاب الحركة أو الأكشن الألعاب القتالية ألعاب المغامرات ألعاب الآركيد Arcade لنتعرف على أهم مميزات وخصائص كل نوع من هذه الأنواع. 1. ألعاب صندوق الرمل Sandbox والعالم المفتوح Open World يطلق اسم ألعاب صندوق الرمل أو العاب الساند بوكس Sandbox على الألعاب الإلكترونية الإبداعية التي تتيح للاعب حرية اللعب بالطريقة أو الأسلوب الذي يحلو له واسمها مشتق من اسم صندوق الرمل الذي يتيح للأطفال إنشاء أي شيء يريدونه تقريبًا بداخله، ففي هذا النوع من الألعاب لا تكون أحداث اللعبة وشخصياتها الأساسية وأهدافها محددة وثابتة في بداية اللعب بل تكون متروكة لرغبة اللاعب وتفضيلاته ليخصصها كما يشاء. غالبًا ما ترتبط ألعاب صندوق الرمل Sandbox بمصطلح مشابه وهو ألعاب العالم المفتوح Open World والتي يقصد بها الألعاب التي لا تكون فيها حركة اللاعب مقيدة في عالم اللعبة، بل يمكنه التجول بحرية ضمن عالم اللعبة الافتراضي واكتشافه كما يحلو له وبالأسلوب الذي يرغب فيه، والتعامل مع تحديات اللعبة وأهدافها بحرية دون وجود أسلوب لعب مخطط ومنظم. يستخدم هذا النوع من الألعاب الإلكترونية عادة في ألعاب محاكاة بناء المدن ومحاكاة الحياة الواقعية وألعاب اكتشاف الفضاء والكواكب ومن الأمثلة البارزة على هذا النوع من الألعاب نذكر: Minecraft Terraria No Man's Sky The Elder Scrolls V: Skyrim 2. ألعاب تقمص الأدوار Role-Playing Games ألعاب تقمص الأدوار Role-Playing Game أو اختصارًا ألعاب آر بي جي RPG هي الألعاب الإلكترونية التي تتميز بوجود لاعب يتقمص دور الشخصية الرئيسية التي تتفاعل داخل عالم اللعبة ويساعدها على تحقيق أهدافها، ويستخدم هذا النوع من الألعاب الإلكترونية عادة في ألعاب المغامرات والألعاب القتالية وألعاب التصويب و ألعاب الفضاء والخيال العلمي. تتشابه هذه الألعاب في طريقة لعبها مع ألعاب الطاولة وألعاب البطاقات التقليدية كلعبة شراء العقارات حيث يتقمص اللاعب دور الشخصية التي يلعبها ويزيد من قوتها وخبرتها خلال سير اللعبة ويحاول التغلب على التحديات التي يواجهها وكلما أكمل عددًا أكبر من المهام ستزيد نقاط قوته. قد تكون ألعاب تقمص الأدوار فردية أو جماعية تضم عدة اللاعبين يلعبون معًا عبر الإنترنت في الوقت الفعلي وتسمى في هذه الحالة بألعاب MMORPG وهي اختصار لعبارة Massively Multiplayer Online Role-Playing Game وهذا يجعلها أكثر إثارة وحماسًا. ومن أشهر ألعاب تقمص الأدوار نذكر: Monster Hunter Rise Persona 4 Golden Dragon Age: Origins BattleTech Star Wars Galaxies Elder Scrolls يمكن أن تصمم ألعاب تقمص الأدوار كذلك بحيث في ذات الوقت ألعاب صندوق رمل فتصنف على أنها ألعاب Sandbox RPGs وفي هذه الحالة لا تتضمن اللعبة قصة محددة ثابتة بل تتيح للاعب عدة خيارات لتصميم وتخصيص الشخصية التي يتقمصها بحرية وتمكنه من اختيار أسلوب اللعب الذي يفضله وتحديد طبيعة المهام التي سيقوم به مثل لعبة Skyrim و Pokémon Scarlet & Violet و Terraria. 3. الألعاب الإلكترونية الرياضية Sports Games الألعاب الرياضية هي ألعاب تحاكي الرياضيات التقليدية فهي تمكنك من لعب الرياضية التي تفضلها سواء كانت رياضة كرة القدم أو كرة السلة وأنت جالس في مكانك، وهي واحدة من أشهر أنواع الألعاب الإلكترونية وأكثرها شيوعًا وتفضيلًا بين المستخدمين لا سيما حين تلعب عادة بشكل جماعي ضمن فرق متنافسة. من الأمثلة على الألعاب الرياضية نذكر: FIFA 23 Out Of The Park Baseball 2023 Football Manager Madden 23 Art of Rally MLB وما يزيد الألعاب الرياضية حماسة هو أنها قد تعتمد على تقنيات ووحدات تحكم تمكن اللعب من الحركة خلال اللعب مثل أنظمة Wii التي أصدرتها شركة نينتندو Nintendo التي تتيح للاعب التحرك لمحاكاة ممارسة الرياضة بشكل فعلي والتمرين خلال اللعب بدلًا من البقاء جالسًا ومن أشهر أنواع الألعاب المخصصة للعب بهذه الطريقة سلسلة ألعاب Madden NFL و NBA 2K. 4. ألعاب المحاكاة والسباق Racing and Simulation ألعاب المحاكاة Simulation هي الألعاب التي تمكنك من تحقيق ما تريده في واقع افتراضي مشابه للواقع الفعلي، على سبيل المثال يمكنك من خلال هذا النوع من الألعاب الإلكترونية محاكاة مهام الطبخ والزراعة والغوص وتربية الحيوانات وقيادة السيارات أو المشاركة في سباق الدراجات النارية أو تجربة قيادة طائرة أو الغوص في أعماق المحيطات و غيرها من الهوايات التي تفضلها والتي قد لا تتمكن من مزاولتها في حياتك اليومية. من الأمثلة على هذا النوع من الألعاب نذكر: Gran Turismo Microsoft Flight Simulator Animal Crossing-New Horizons DiRT Rally FlightGear Trainz Railroad Simulator 2022 Farming Simulator 2022 5. الألعاب الإلكترونية الاستراتيجية Strategy Games الألعاب الاستراتيجية هي ألعاب تتطلب تفكيرًا مسبقًا لتحقيق الهدف المطلوب من اللعب وكانت تستخدم سابقًا في تصميم الألعاب التقليدية مثل لعبة الشطرنج وهي اليوم تستخدم في الألعاب الإلكترونية التي تحتاج وقتًا طويلًا وتخطيطًا دقيقًا للربح. تقسم الألعاب الاستراتيجية إلى عدة أنواع فرعية بحسب طريقة اللعب ومن بين هذه الأنواع: الألعاب الاستراتيجية التي تلعب في الوقت الحقيقي Real-time strategy الألعاب الاستراتيجية المبنية على تبادل الدور Turn-based strategy ألعاب 4X. لنتعرف على الفرق بين كل نوع من هذه الأنواع بمزيد من التفصيل. الألعاب الاستراتيجية التي تلعب في الوقت الحقيقي تحاكي الألعاب الاستراتيجية في الوقت الحقيقي Real-time strategy أو ما يعرف اختصارًا بألعاب RTS ساحات المعارك والحروب وتلعب في الوقت الفعلي أي أنك تلعب في وقت واحد مع فريقك، ويتميز أسلوب اللعب فيها بوجود مناورات تكتيكية توجب على اللاعب الذي يلعب دور قائد المعركة توجيه فريقه واتخاذ القرارات ومهاجمة الأعداء وإنشاء الوحدات الدفاعية وتعديل استراتيجيته باستمرار مع تقدم اللعب. من أبرز الأمثلة البارزة على ألعاب استراتيجية في الوقت الحقيقي نذكر: Dune II DOTA 2 League of Legends Plants vs. Zombies StarCraft World In Conflict Dawn of War الألعاب الاستراتيجية المبنية على تبادل الدور الألعاب الاستراتيجية المبنية على تبادل الدور Turn-based Strategy Games أو اختصارًا TBS هي ألعاب يتناوب فيها فريق اللاعبين في اللعب لتحقيق الفوز بدلًا من اللعب معًا بذات الوقت حيث يُسمح للاعب لعبة بتحليل وتخطيط اللعبة قبل البدء، وعندما يبدأ دوره باللعب يسمح له بالقيام بعدد محدود من الحركات أو الهجمات، ومن ثم يتيح لخصمه فرصة الرد. تتطلب هذه الألعاب الكثير من التخطيط والتأني فأي خطوة خاطئة قد تسبب خسارة اللاعب. من أبرز الأمثلة على هذا النوع من الألعاب: Jagged Alliance X-COM The Battle for Wesnoth Fire Emblem Final Fantasy Tactics ألعاب 4X أخيرًا ألعاب 4X هي ألعاب استراتيجية تعتمد على تبادل الأدوار TBS أو تلعب في الزمن الحقيقي RTS لكنها تركز على موضوعات أكثر تعقيدًا من النوعين السابقين فهي تتضمن أفكارًا معقدة وطويلة الأمد مثل بناء مستعمرات خاصة باللاعبين والاهتمام بأمور الاقتصاد والبحث العلمي والحياة الاجتماعية. وقد جاء اسمها من اختصار الكلمات التالية (eXplore, eXpand, eXploit, eXterminate) التي تصف طريقة لعبها حيث يتعين على اللاعب استكشاف Explore عوالم وموارد متنوعة والتوسع Expand من خلال بناء مستوطناتهم واستغلال Exploit الموارد بذكاء للتقدم والتفوق Exterminate على خصومهم.. من أبرز الأمثلة على ألعاب 4X الاستراتيجية نذكر: Master of Orion Age of Empire 6. ألعاب التصويب وإطلاق النار Shooting Games ألعاب إطلاق النار هي ألعاب إلكترونية يستخدم فيها اللاعب أسلحة بعيدة المدى خلال اللعب، ويجب عليه التحرك بشكل مستمر ومواصلة الهجوم لقتل خصومه وتجنب هجماتهم القاضية. قد تكون ألعاب إطلاق النار ألعاب فردية مثل Battlefield 2042 أو Call of Duty أو متعددة اللاعبين أي أنها تضم فريق مكون من عدة شخصيات وتستلزم وجود تنسيق بينهم. تصنف ألعاب إطلاق النار أيضًا إلى عدة أصناف فرعية حسب منظور اللعب بشكل أساسي وهي ألعاب التصويب من منظور الشخص الأول FPS إذا كنت تتحكم بشخصية اللعب وترى بيئة اللعب من حولك كما لو كنت تنظر من خلال عيونها فحينها يطلق على هذه الألعاب اسم ألعاب التصويب من منظور الشخص الأول First-Person Shooters أو اختصارًا FPS. ألعاب من منظور الشخص الثالث TPS إذا كان التصويب يتم بحيث يمكنك رؤية شخصية اللعب بالكامل وكنت تتحكم فيها كما لو كنت تقف خلفها وترى بيئة اللعب من مسافة بعيدة وترى كل المعدات التي تستخدمها حينها يطلق على هذه الألعاب اسم ألعاب من منظور الشخص الثالث Third-Person Shooters أو اختصارًا TPS. ومن أبرز الأمثلة على ألعاب إطلاق النار المشهورة نذكر: Fortnit Team Fortress 2 Overwatch Paladins Apex Legends 7. ألعاب الألغاز والألعاب المنطقية Puzzle games تهدف ألعاب الألغاز إلى تحفير التفكير المنطقي للاعبين وتعزز مهاراتهم في حل المشكلات عن طريق طرح ألغاز وتحديات منطقية ومفاهيمية تحفز العقل وتطور التفكير، وتعتمد عادة على التدرج في صعوبة التحديات فعند إكمال كل لغز سيقدم للاعب لغز أكثر صعوبة ويستلزم المزيد من التفكير. تلقى هذه الألعاب على بساطتها وسهولتها رواجًا كبيرًا بين أوساط المستخدمين ومن أبرزها الأمثلة عليها: Sudoku Tetris 99 Jigsaws Tetris Myst Words with Friends ومن أنواعها الفرعية ألعاب الأغراض المخفية Hidden Object Puzzle Adventure أو اختصار HOPA وهي ألعاب تحفز اللاعب على العثور على أشياء مختلفة مخفية في صورة ما، وعادةً ما تكون هذه الأشياء مخبأة بشكل جيد وصعبة الرؤية بسبب التمويه أو الاكتظاظ في الصورة، ومن الأمثلة عليها: Hidden Folks Milo And The Magpies Hidden City 8. الألعاب اليومية غير الرسمية Casual Games مع انتشار الهواتف المحمولة في كل مكان في المجتمع، زاد الطلب على نوع جديد من الألعاب يعرف بالألعاب غير الرسمية Casual أو ألعاب الكسالى والخاملين Idle Games وهي ألعاب موجهة للاعبين الذين ليس لديهم وقت للعب ألعاب طويلة وصعبة ويحتاجون فقط لبعض التسلية وقضاء وقت سريع لا يتجاوز عدة دقائق على الهاتف خلال انتظار ممل في طابور أو في تنقلهم بالمواصلات حيث تتميز هذه الألعاب بكونها ألعاب بسيطة وسهلة اللعب ولا تفرض على اللاعب قواعد صارمة أو استراتيجيات صعبة. كل ما يحتاجه اللاعب للفوز في هذه الألعاب هو القيام ببضع نقرات على الشاشة أو الإجابة على أسئلة بسيطة للحصول على النقاط وشراء عناصر تساعده على الحصول على نقاط جديدة بسرعة أكبر، وغالبًا ما تحتوي على حفظ تلقائي ومزامنة يسمح للاعب بتصغيرها أو وضعها في وضع السكون أو إيقافها دون خسارة نقاطه وهي تمنح الكثير من المكافآت مع الوقت لتشجيع اللاعب على مواصلة اللعب. أمثلة على هذا النوع من الألعاب: Cookie Clicker Idle Miner Tycoon Doge Miner Cats and Soup 9. ألعاب المنصات Platform games ألعاب المنصات هي نوع من الألعاب الإلكترونية المرحة والممتعة التي تعتمد في أسلوب اللعب على القفز والتسلق ضمن بيئة اللعبة بشكل أساسي وتتطلب من اللاعب الانتقال بين عدة منصات معلقة وتجنب أي خصوم أو عقبات خلال تنقله، يمكن للشخصية في هذا النوع من الألعاب القفز لمسافات تبلغ عدة أضعاف ارتفاعها كما يمكنها التحكم في حركتها في الجو وتحديد الارتفاع ومسافة القفز التي تريدها حسب ما يتطلب الوضع. كما تعد ألعاب ميترويدفانيا Metroidvania نوعًا فرعيًا من ألعاب الحركة والمغامرات أو ألعاب المنصات ويأتي اسمها من جمع اسم سلسلتي ألعاب قديمة Metroid باسم Castlevania فهي ألعاب تركز على الاستكشاف وتتميز بوجود خرائط لعوالم كبيرة مترابطة يمكن للاعب استكشافها وتسجل تقدمه أثناء الاستكشاف، وقد يصل خلال استكشافه لأماكن سرية أو يعلق في أماكن ذات أبواب مغلقة لا يمكنه فتحها إلا بعد الحصول على أسلحة أو قدرات خاصة أو بعد الحوار مع عنصر أو شخصية معينة وبعدها يتم فتح هذه الأقسام ويتابع تقدمه. ومن أشهر أنواع ألعاب المنصات نذكر: Super Mario Bros Captain Toad’s Treasure Tracker Donkey Kong دورة تطوير الألعاب ابدأ رحلة صناعة الألعاب ثنائية وثلاثية الأبعاد وابتكر ألعاب ممتعة تفاعلية ومليئة بالتحديات. اشترك الآن 10. ألعاب الحركة أو الأكشن Action Games كانت معظم الألعاب الإلكترونية في البداية تعتبر ألعاب أكشن وهي ألعاب تتضمن تحديات جسدية وتحتاج لحركة سريعة ودائمة وتتطلب وجود مهارات حركية لدى اللاعب كي يتحكم في أحداث اللعبة بسرعة من خلال التنسيق بين اليد والعين، ورغم ظهور العديد من أنواع الألعاب الإلكترونية فيما بعد لا يزال هذا الأسلوب من اللعب يستخدم في العديد من الألعاب لاسيما ألعاب القتال وألعاب التصويب وألعاب المنصات. من الأمثلة على ألعاب الحركة نذكر: Mortal Kombat 1 Red Dead Redemption II Baldur's Gate III 11. الألعاب القتالية Fighting games السمة المميزة للألعاب القتالية هي وجود شخصية تتبارز ضد عدد محدود من الخصوم أو الأعداء الموجودين على مسافة قريبة منها وغالبًا ما تكون هذه الألعاب متعدد اللاعبين وهي لا تستخدم أسلحة أو إطلاق نار بل تعتمد على استخدام الفنون القتالية كالملاكمة والجودو والعراك بالأيدي. من أشهر الأمثلة على الألعاب القتالية: Mortal Kombat Street Fighter Samurai Shodown Super Smash Bros 12. ألعاب المغامرات Adventure Games تتميز ألعاب المغامرات بوجود رواية أو قصة تفاعلية يأخذ فيها اللاعب دور بطل القصة ويقود مغامرة يستكشف فيها بيئة اللعب وقد يواجه بعض المخاطر التي عليه تفاديها ويحل بعض الألغاز ليتقدم في اللعبة. من أشهر الأمثلة على ألعاب المغامرات: Steve's World Puzzle Room Escape Stellar Mines: Space Miner لا تتضمن ألعاب المغامرات بطبيعتها عناصر قتالية لكن يمكن أن تدمج ألعاب المغامرات مع ألعاب القتال كما في لعبة Prototype2 ولعبة Grand Theft Auto3 بحيث تجمع اللعبة بين القتال والاستكشاف وتتضمن محاربة بعض الوحوش والحصول على الغنائم خلال اللعب لجعلها أكثر حماسة. 13. ألعاب الآركيد Arcade ألعاب الآركيد Arcade هي ألعاب فيديو تعمل على أجهزة مخصصة تسمى آلات الآركيد، وكانت هذه الألعاب شائعة في الستينيات والسبعينيات والثمانينيات من القرن الماضي وتتميز بشخصيات بسيطة وأساليب لعب متنوعة وسهلة مثل ألعاب الإطلاق التي تتطلب من اللاعب إطلاق النار على الأعداء أو أهداف أخرى، وألعاب السباق البسيطة وألعاب القتال، وبالرغم من أن ألعاب الآركيد لم تعد شائعة اليوم بكثرة إلا أنها لا تزال تحظى ببعض الشعبية لاسيما في صالات الألعاب ومراكز التسوق والمتنزهات العامة. ومن أشهر الأمثلة على هذا النوع من الألعاب: Pac-Man Donkey Kong Dragon’s Lair كانت هذه أبرز أنواع الألعاب الإلكترونية، وهناك بلا شك العديد من الأنواع الأخرى لكننا ركزنا على الأنواع الرائجة بين أوساط المستخدمين والمطلوبة في سوق العمل. الخلاصة تعرفنا في مقال اليوم على أهمية صناعة الألعاب الإلكترونية في سوق العمل واكتشفنا مختلف أنواع الألعاب الإلكترونية وأهم مميزاتها وخصائصها والألعاب المشهورة التي تنتمي لكل نوع، فإذا كنت مطور ألعاب وتنوي البدء بتطوير لعبة جديدة نأمل أن يساعدك هذا المقال على إيجاد النوع المناسب لجمهورك المستهدف والبدء على تنفيذه. اقرأ أيضًا تعرف على أشهر محركات الألعاب Game Engines تعرف على أشهر لغات برمجة الألعاب تعرف على أفضل برنامج تصميم الألعاب الإلكترونية مطور الألعاب: من هو وما هي مهامه
-
يتضمن مجال تطوير الويب قسمين أساسين هما تطوير الواجهة الأمامية front-end (فرونت إند) وتطوير الواجهة الخلفية back-end (باك إند) وهما من المجالات الرائدة اليوم فجميع النشاطات التجارية والأشخاص يسعون للتواجد على شبكة الإنترنت ويحتاجون لمطوري ويب لإنشاء مدونات أو مواقع أو تطبيقات أو متاجر إلكترونية خاصة بهم. سنخصص مقال اليوم للحديث عن تطوير الواجهة الأمامية ونوضح كافة المفاهيم المرتبطة وكافة الخطوات والتقنيات التي تحتاجها لتتعلم كي تصبح مطور واجهات محترف فإذا كنت مهتمًا بهذا المجال لكنك لا تملك أدنى فكرة عن كتابة الشيفرات البرمجية أو إنشاء صفحات الويب ولا تعرف من أين تبدأ أنصحك بأن تقرأ المقال للنهاية. ما هو تطوير الواجهة الأمامية Front End Web Development؟ قبل أن نشرح تطوير الواجهة الأمامية front-end تحتاج لأن تعرف مراحل بناء أي موقع إلكتروني، فإنشاء أي موقع أو تطبيق يبدأ بتحديد فكرته وتوثيقها، بعدها ترسل هذه الفكرة إلى مصمم الواجهات الأمامية الذي يرسم واجهات الموقع وصفحاته كلها بمختلف تفاصيلها وحالتها، حيث تُراجع هذه الواجهات ثم ترسل إلى مطور الواجهات لتكويدها وبرمجتها وهنا تقسم العملية إلى برمجة واجهات أمامية وخلفية وتبرمج كل واجهة وتتفاعل الواجهتان مع بعضهما للحصول على المواقع المتكامل. فمطور الواجهة الأمامية front end web developer أو ما يعرف بمطور واجهات المستخدم user interface developer هو المبرمج المسؤول عن إنشاء كافة الأجزاء المرئية التي يراها المستخدم ويتفاعل معها عند زيارة مواقع وتطبيقات الويب وبرمجة كافة الواجهات ومكوناتها من أزرار وقوائم ونصوص ورسومات وصور ونماذج وغيرها وتحديد كيف سيبدو كل جزء من موقع الويب وكيف سيتفاعل المستخدم معه. الفرق بين تطوير الواجهة الأمامية front-end وتطوير الواجهة الخلفية back-end والتطوير الكامل Fullstack من الضروري أن تفهم أبرز الفروقات بين تطوير الواجهة الأمامية وتطوير الواجهة الخلفية والتطوير الكامل والتي تعكس في واقع الأمر تخصصات تطوير الويب أو بمعنى آخر الدور الذي يساهم به مطور الويب عند بناء المواقع والتطبيقات والتقنيات التي يستخدمها لأداء عمله، كما أنها تعبر عن مكان تشغيل الشيفرات البرمجية لهذه المواقع والتطبيقات. بدايةً يجب أن تعرف أن عرض موقع الويب على جهازك يتم دومًا في لغة HTML وهي لغة توصيفية يستخدمها مطورو الويب لإنشاء وعرض الصفحات، هناك عدة تقنيات يمكنك إنشاء المواقع من خلالها لكن مهما كانت التقنية المستخدمة فإن عرض الموقع لديك في نهاية المطاف سيكون بلغة HTML. الآن يمكن أن تحدث عملية عرض ملفات المواقع مباشرة على جهازك كما في حال المواقع البسيطة ذات المحتوى الثابت فهي تخزن على خادم الويب بالأساس بشكل ملفات HTML وترسل لك هذه الملفات مباشرة عند طلبها وتعرض لك كما هي على متصفحك. من ناحية أخرى قد تتطلب عملية عرض المواقع بعض المعالجة المسبقة التي تحدث على جانب خادم الويب أو يسمى الخادم البعيد مثل مواقع الويب الديناميكية التي لا تعرض نفس المحتوى لجميع المستخدمين وتتغير بناء على إدخالات المستخدم، فعندما ترسل طلبًا لعرض صفحة ما من موقع ديناميكي يقوم الخادم بمعالجة طلبك هذا وبعد الانتهاء ويجلب لك البيانات المطلوبة والعرض الأخير على جهازك يكون بشيفرة HTML. كل ما يتعلق بأمور عرض الموقع من جانب متصفح الويب أو يسمى طرف العميل client side يندرج تحت مجال تطوير الواجهة الأمامية للموقع، وكل ما يتعلق بأمور معالجة الموقع من طرف خادم الويب من معالجة البيانات وتخزينها وحفظها وإجراء عمليات عليها وغيرها يندرج تحت مجال تطوير الوجهة الخلفية للموقع ولكل منهما تقنياته وأدواته، على سبيل المثال عندما تسجل في موقع يطلب تاريخ ميلادك، تراه يعرضها لك أحيانًا بشكل عمر أي عدد وليس تاريخ، هذه المعالجة تُرسل عادة من طرف الخادم. ليس لزامًا عليك كمطور ويب تعلم تطوير الواجهة الأمامية أو الخلفية معًا بل يمكنك التخصص في إحداهما فقط، فإذا كنت تحب تنفيذ الجوانب المرئية لواجهات المستخدم وجعلها تعمل وفق التصميم المقترح سيناسبك تطوير الواجهة الأمامية أكثر، وإذا كنت تفضل حل المشاكل المنطقية والتعامل مع قواعد البيانات وواجهات برمجة التطبيقات والخوادم والخدمات السحابية فإن تطوير الواجهة الخلفية يناسبك. أما إذا كنت متحمسًا للقيام بكل ما سبق وكانت لديك القدرة لتعلم كافة التقنيات والمهارات اللازمة لتطوير الواجهة الأمامية وتطوير الواجهة الخلفية والقيام بالأمرين معًا عندها سيطلق عليك اسم المطور الكامل fullstack developer وستفتح أمامك الكثير من الفرص المجزية. وإذا كنت مهتمًا بمعرفة مزيد من التفاصيل حول مجالات تطوير الويب أنصح بمطالعة مقال المدخل الشامل لتعلم تطوير الويب وبرمجة المواقع ومقال دليلك الشامل إلى تطوير الواجهة الخلفية Backend. أهمية تطوير الواجهة الأمامية في سوق العمل إذا كنت مهتمًا بتطوير الويب فدعني أخبرك أن تبدأ به دون تردد فهو واحد من أكثر مجالات العمل نموًا مقارنة بباقي الوظائف فبحسب استبيان عام 2022 لموقع ستاك أوفر فلو الشهير الذي يضم آلاف خبراء البرمجة حول العالم فإن 25.96% من المشاركين في الاستبيان وعددهم 61,302 متخصصون في تطوير الواجهة الأمامية front-end، ويحتل هذا المجال المرتبة الثالثة بين أنواع المطورين بعد تطوير الواجهة الخلفية back-end والتطوير الكامل full-stack وهذا إن دلَّ على شيء فإنما يدل على مدى أهمية هذا المجال والطلب المرتفع عليه. أضف إلى ذلك فإن رواتب مطوري الواجهة الأمامية مرتفعة ومجزية ورغم كونها تتفاوت وتختلف حسب نوع الشركة ومقرها والمهارات المطلوبة للوظيفة ومستوى الخبرة إلا أن اكتسابك لمهارات عالية واحترافك لتطوير الواجهة الأمامية سيضمن لك الحصول على رواتب مرتفعة جدًا فمعظم جهات العمل تبحث عن مطور واجهة أمامية موهوب يمكنه إنشاء مواقع بتصاميم فريدة وبتجربة محسنة من شأنها زيادة رضا العملاء وجعل المواقع تتفوق على منافسيها. الجدير بالذكر أن أصعب جزء في مجال تطوير الواجهة الأمامية هو أنه متجدد باستمرار لذا يحتاج المطور للاطلاع بصورة دائمة على أحدث التقنيات في تطوير الويب ليتمكن من الاحتفاظ بالصدارة في سوق العمل لكنه مجال مجزٍ ويستحق الجهد. ما هي مهام مطور الواجهة الأمامية؟ مطور الواجهات الأمامية هو المسؤول بشكل عام عن إنشاء أجزاء المواقع والتطبيقات التي تعمل من جانب العميل (أو المتصفح)، وهذه المهمة تتضمن القيام بالعديد من المهام والتي تشمل: كتابة شيفرات HTML و CSS وجافا سكريبت لتنفيذ تصميم الموقع التي تكون عادة بشكل صور مصممة من قبل مصمم الواجهات الأمامية المسؤول عن تصميم واجهة المستخدم وتجربة المستخدم UI / UX بواسطة برامج متخصصة مثل فيجما Figma أو Sketch أو فوتوشوب. التواصل مع مطور الواجهة الخلفية المسؤول عن تحقيق وظائف الموقع والتأكد من توافق الواجهة الأمامية مع الواجهة الخلفية للموقع. تحسين أداء موقع الويب والتأكد من سرعة تحميله وتوفر تجربة مستخدم سهلة ومحسنة. التأكد من أن الموقع متوافق مع كافة متصفحات الويب ويعمل بالشكل الصحيح ومعالجة أي مشاكل توافق إن وجدت. التأكد من كون الموقع متجاوب ومتكيف مع كافة أحجام الشاشات بما في ذلك شاشات الهواتف الجوالة والأجهزة اللوحية وأجهزة الحاسوب. أهم أدوات تطوير الواجهة الأمامية إذا قررت التخصص في تطوير الواجهات الأمامية للويب ستجد الكثير من الخيارات المتاحة، فاللغات الثلاث الأساسية لأي مطور واجهة أمامية هي HTML و CSS وجافا سكريبت كما يمكنه إلى جانب ذلك استخدام العديد من اللغات وأطر العمل والمكتبات الأخرى الكثيرة التي تسهل عمله في تطوير الواجهات وفي الفقرات التالية سنسلط الضوء على أبرز هذه الأدوات. أهم لغات برمجة الواجهة الأمامية HTML CSS جافا سكريبت JavaScript تايب سكريبت TypeScript لنتناول بتفصيل أكثر كل لغة من هذه اللغات ودورها في تطوير الواجهات الأمامية للمواقع والتطبيقات. لغة HTML لغة HTML هي اختصار لعبارة HyperText Markup Language أي لغة ترميز النص التشعبي وهي اللغة الأساسية لتطوير الواجهة الأمامية للمواقع والتطبيقات وهي لغة وصفية أو لغة ترميز تصف البنية العامة لصفحات الويب ومحتوياتها من نصوص وأزرار وصور وقوائم باستخدام الوسوم وهي علامات موضوعة ضمن قوسي زاوية <> تحدد نوع المحتوى أو هيكليته على سبيل المثال لإنشاء صفحة ويب تتضمن عنوان وصورة ونص نكتب كود HTML التالي: <!DOCTYPE html> <html dir="rtl"> <head> <title>عنوان الصفحة</title> </head> <body> <h1>عنوان الصفحة</h1> <img id="myImage" src="html.png"> <p> HTML هي اختصار لـHyperText Markup Language أي لغة ترميز النص التشعبي وهي الأساسية لتطوير الواجهة الأمامية للمواقع والتطبيقات </p> </body> </html> احفظ الكود أعلاه في ملف نصي باسم index.html وقم بعرضه في متصفح الويب، عندها ستظهر الصفحة بالشكل التالي: للمزيد من المعلومات أنصح بمطالعة مقال تعلم لغة HTML الذي يشرح لك كافة الأساسيات التي تحتاجها للعمل مع هذه اللغة والاطلاع على توثيق HTML الشامل على موسوعة حسوب. لغة CSS لغة CSS هي اختصار لـ Cascading Style Sheets وهي لغة تصميم تستخدم لتحديد تنسيق صفحة الويب واختيار الألوان والخطوط والخلفيات وما إلى ذلك كما أنها تستخدم في جعل مواقع الويب متجاوبة مع مختلف الشاشات من خلال كتابة شيفرات تغير تنسيق وتخطيط العناصر بحسب أبعاد الشاشة. تستخدم لغة CSS قواعد تنسيق تستهدف عناصر HTML التي نريد تصميمها على سبيل المثال سنكتب التعليمات التالية لتنسيق صفحة الويب التي أنشأناها باستخدام HTML نكتب شيفرات CSS التالية ضمن الوسم <head>: <style> body { font-family: 'Cairo', sans-serif; background-color: #f2f2f2; margin: 0; padding: 0; } h1 { font-size: 36px; color: #333; text-align: center; margin: 50px 0; } img { display: block; margin: 0 auto; max-width: 100%; height: auto; } p { font-size: 18px; color: #666; text-align: center; margin: 50px; line-height: 1.5; } </style> تظهر الصفحة بعد إضافة التنسيقات كما يلي: وللمزيد من المعلومات يمكنك مطالعة سلسلة دروس CSS على أكاديمية حسوب إلى جانب توثيق CSS الشامل على موسوعة حسوب. لغة جافا سكريبت JavaScript بعد أن تقوم بتخطيط عناصر الواجهة الأمامية باستخدام HTML وتنسقها باستخدام CSS قد تحتاج إلى إضافة بعض التفاعلات إلى صفحاتك وهنا يأتي دور لغة جافا سكريبت JavaScript التي تعد واحدة من أشهر لغات البرمجة وأكثرها استخدامًا فهي تمكنك من تطوير كل من الواجهة الأمامية والخلفية. قد يكون تعلم جافا سكريبت هو الخطوة الأصعب لك كمطور واجهة أمامية لا سيما إن لم تكن تملك خبرة سابقة في البرمجة لكن بمجرد تعلمها ستتمكن من نقل الموقع إلى مستوى جديد وإضافة التأثيرات الديناميكية لصفحاته والاستجابة لتفاعل المستخدمين مع عناصره بدلًا من جعله يعرض معلومات ثابتة فقط. على سبيل المثال يمكنك كتابة شيفرات جافا سكريبت لعرض قائمة منسدلة أو إظهار رسالة منبثقة عند النقر فوق زر ما على الصفحة، أو إرسال طلب للتحقق من اسم المستخدم وكلمة المرور بعد النقر فوق زر تسجيل الدخول أو أي شكل من أشكال التفاعل مع الصفحة من طرف العميل. لنفرض أنك تحتاج لتكبير حجم صور الموقع قليلًا عند مرور مؤشر الفأرة فوقها، لن تتمكن من هذا إذا لم تكن تعرف جافا سكريبت وتدمجها مع HTML و CSS بدايةً عليك إضافة أكواد CSS التالية بعد الأكواد التي كتبتها في الخطوة السابقة: .zoom { transition: transform .2s; /* Add any other styles you want */ } .zoom:hover { transform: scale(1.5); /* Change the scale value to adjust the level of zoom */ } وبعدها عليك أن تضيف أكواد جافا سكريبت التالية قبل الوسم </body> ضمن كود HTML: const image = document.getElementById("myImage"); image.addEventListener("mouseover", function() { image.classList.add("zoom"); }); image.addEventListener("mouseout", function() { image.classList.remove("zoom"); }); تستمع شفرة جافا سكريبت هذه إلى حدث مرور مؤشر الفأرة فوق الصورة وتضيف تنسيق التكبير zoom إليه عند وقوع هذا الحدث. كما أنها تستمع إلى حدث خروج مؤشر الفأرة من عنصر الصورة وتزيل تنسيق التكبير منه عند وقوع هذا الحدث، وعند عرض الصفحة في المتصفح نحصل على التأثير التالي: للمزيد من التفاصيل أنصح بمطالعة مقال تعلم جافا سكريبت من الصفر حتى الاحتراف، كما توفر موسوعة حسوب توثيق لغة جافا سكريبت باللغة العربية يمكنك من خلالها تعلم كافة ما يتعلق بهذه اللغة. لغة TypeScript تعد لغة TypeScript لغة برمجة مفتوحة المصدر طورتها مايكروسوفت عام 2012 لتوفر ميزات إضافية تساعد على تطوير تطبيقات جافا سكريبت فهي تجعل تعليمات جافا سكريبت مفهومة بشكل أكبر وتوفر إمكانية تحديد أنواع المتغيرات كي تقلل من أخطاء الكود، وقد تزايدت شعبيتها بشكل كبير في الآونة الأخيرة لما توفره من ميزات لتحسين جودة التطبيقات وتسريع عملية التطوير . يمكنك مطالعة المزيد من المعلومات حول هذه اللغة وإمكانياتها من خلال مجموعة دروس TypeScript المتوفرة على أكاديمية حسوب أهم أطر عمل تطوير الواجهة الأمامية ظهرت أطر العمل frameworks والمكتبات البرمجية لتسهيل عمل المطور وتسريع عمله، لذا ستحتاج لاستخدامها في سوق العمل بدلًا من كتابة كل شيء بيدك من الصفر، وأطر عمل الواجهات الأمامية كثيرة ومن أبرزها: بوتستراب Bootstrap رياكت React أنغولار Angular فيو Vue جي كويري jQuery دعنا نلقي نظرة على كل تقنية منها ونشرح بمزيد من التفصيل دورها وأهميتها في تطوير الواجهة الأمامية. بوتستراب Bootstrap بوتستراب هو إطار ويب مجاني مفتوح المصدر مخصص للواجهة الأمامية فهو يستخدم لتصميم مواقع وتطبيقات ويب متجاوبة مع كافة أحجام الشاشات وذات مظهر احترافي بسرعة وسهولة فهو يحتوي على قوالب تصميم ومكونات جاهزة مكتوبة بلغة HTML ولغة CSS كما يوفر بالإضافة لذلك ملحقات تصميم مكتوبة بلغة جافا سكريبت. للاطلاع على المزيد من المعلومات يمكنك متابعة المقالات الدروس حول إطار عمل بوتستراب على أكاديمية حسوب إضافة لتوثيق بوتستراب الشامل على موسوعة حسوب. رياكت React رياكت React هي مكتبة جافا سكريبت مفتوحة المصدر طورتها شركة فيسبوك عام 2013 وهي تعد اليوم واحدة من أشهر مكتبات تطوير الواجهة الأمامية التي يمكنك من خلالها إنشاء مكونات قابلة لإعادة الاستخدام وتطوير واجهات مستخدم متجاوبة بسرعة وسهولة. يمكنك مطالعة المزيد حول هذه المكتبة وتعلم طريقة بناء واجهات المواقع والتطبيقات باستخدامها من خلال الدروس والمقالات الاحترافية حول React على أكاديمية حسوب وأيضًا توثيق React على موسوعة حسوب. أنغولار Angular أنغولار Angular هو إطار عمل مفتوح المصدر يعتمد على لغة TypeScript أطلقته شركة جوجل وهو يتميز بقدرته على تطوير تطبيقات ويب متطورة وضخمة وإدارتها بسهولة كبيرة فهو يوفر الكثير من الميزات التي تساعد مطوري الواجهة الأمامية مثل إدارة حالة التطبيق والتحقق من الصحة. كما يمكنك مطالعة المزيد من الدروس والمقالات الاحترافية حول Angular على أكاديمية حسوب لتتعرف على طريقة استخدامها في تطوير مواقع ويب احترافية. فيو Vue فيو Vue هو إطار عمل جافا سكريبت مفتوح المصدر طوره Evan You المبرمج في جوجل عام 2014 لتطوير واجهات المستخدم وتطبيقات الصفحة الواحدة وهو اليوم واحد من أكثر أطر عمل الواجهة الأمامية شيوعًا واستخدامًا. ما يميز إطار فيو Vue أنه مرن وخفيف الوزن وسهل الاستخدام فقد أزال كل المكونات الإضافية والمفاهيم غير الضرورية التي تأتي مع أطر عمل الواجهة الأمامية الأخرى مثل أنغولار Angular ورياكت React. وللمزيد من التفاصيل أنصح بمطالعة مقال مقارنة بين أطر الواجهات الأمامية: Angular و React و Vue لمعرفة الإطار الأنسب لمتطلباتك، كما أنصح بمتابعة الدروس والمقالات حول Vue التي توفرها أكاديمية حسوب بشكل دوري لتعلم المزيد حول استخدامات هذا الإطار. جي كويري jQuery جي كويري jQuery هي مكتبة مبنية بالاعتماد على لغة جافا سكريبت وهي توفر لمطوري الواجهة الأمامية الكثير من القوة والمرونة وتتضمن الكثير من الميزات التي تجعل كتابة شيفرات جافا سكريبت أبسط وأكثر اختصارًا. لمعرفة المزيد حول طريقة استخدام مكتبة jQuery عند تطوير مواقع الويب أنصح بمطالعات مجموعة المقالات والدروس حول jQuery المتوفرة على أكاديمية حسوب، كما أنصح بمطالعة توثيق jQuery على موسوعة حسوب. تقنيات وأدوات مهمة لتطوير الواجهة الأمامية إضافة لما سبق، يحتاج أي مطور واجهة أمامية لقائمة طويلة من المعارف والمهارات والأدوات الإضافية التي تعزز أداءه وتساعده في تطوير واجهات المستخدم وتكويدها بسرعة واحترافية، وإليك قائمة بأبرز هذه الأدوات نذكر: شجرة DOM والتعامل معها. معرفة أساسية بالشبكات وشبكة الإنترنت وأشهر برتوكولات التواصل مثل HTTP. لمحة عن قواعد التصميم وأساسيات تصميم واجهات المستخدم وتجربة المستخدم UX/UI. التصميم المتجاوب responsive design مع كافة أحجام الشاشات. التوافق مع المتصفحات Cross-browser. واجهة برمجة التطبيقات API. لمحة عن Node.js وأنظمة إدارة الحزم تحديدًا npm. نظام التحكم في الإصدارات git. شجرة DOM من الضروري أن يعرف أي مطور واجهة أمامية مهارات التعامل مع نموذج كائن المستند Document Object Model أو اختصارًا DOM أو شجرة DOM ومعالجته عبر لغة جافا سكريبت، و DOM هو مجموعة من المواصفات التي تمثل مستند الويب بشكل كائن وتعد أحد الطرق الأساسية في بناء مواقع تفاعلية حيث أنها تنشئ واجهة برمجة تطبيقات API تسمح للغات البرمجة مثل جافا سكريبت بالوصول لكافة عناصر صفحات الويب ومعالجتها والتحكم بها. ستساعدك معالجة DOM في تحديث بيانات الصفحة أو تغيير تخطيطها دون إعادة الحاجة لإعادة تحميلها على سبيل المثال يمكنك من خلال DOM إضافة عناصر HTML للصفحة أو إزالتها أو تعديل تنسيقات CSS لها عند وقوع حدث ما أو عند إعادة تحميل صفحة الويب. معرفة أساسية بالشبكات يحتاج مطور الواجهة الأمامية لامتلاك معلومات أساسية حول طريقة عمل الويب والشبكات الحاسوبية وشبكة الإنترنت ومفهوم العميل والخادم وكيفية التفاعل بينهما وبروتوكولات الاتصال عبر الويب مثل HTTP و HTTPS و SSL ومفهوم خدمة اسم المجال DNS فهذه المعرفة تمكنه من عرض واستدعاء المحتوى من الشبكة والاتصال مع الخادم بشكل آمن وتوفير تجربة مستخدم أفضل. للاطلاع على مزيد من المعلومات يمكنك مطالعة سلسلة المقالات والدروس حول الشبكات على أكاديمية حسوب. قواعد التصميم وأساسيات UX/UI ذكرنا سابقًا أن مطور الواجهة الأمامية قد يكون مسؤولًا عن تصميم موقع ويب من الصفر أو قد يكون مسؤولًا عن تحويل التصاميم الجاهزة إلى شيفرات برمجية، لكن في كلتا الحالتين أجد أنه من الضروري لأي مطور واجهة أمامية أن يعرف أفضل النصائح والقواعد لتصميم واجهة المستخدم والمبادئ والقواعد الأساسية في تصميم تجربة المستخدم UX وتصميم واجهة المستخدم UI فهذا من شأنه أن يساعده على فهم الواجهات وكيفية تفاعل المستخدمين معها بشكل أفضل وكيفية إنشاء واجهات أكثر جاذبية وسهولة في الاستخدام وبالتالي سيتمكن من كتابة شيفرات الواجهة الأمامية بشكل أفضل ويضمن أنها مطابق للقواعد التصميمة الصحيحة. التصميم المتجاوب مع كافة أحجام الشاشات التصميم المتجاوب Responsive Design هو تصميم يقوم بتغيير حجم عناصر صفحات الموقع أو إخفائها أو تصغيرها أو تكبيرها ليضمن ظهورها بطريقة واضحة وسهلة الاستخدام مهما كان نوع الجهاز المستخدم لعرضها. يحتاج مطور الواجهة الأمامية لمعرفة أساسيات تصميم الويب المتجاوب Responsive Web Design وطرق كتابة استعلامات الوسائط Media Queries في CSS بشكل صحيح كي يضمن ظهور المواقع بكفاءة على جميع أنواع وأحجام الأجهزة التي يستعملهما المستخدمون سواء الحواسيب ذات الشاشات الكبيرة أو الهواتف المحمولة ذات الشاشات الصغيرة. التوافق مع المتصفحات Cross-browser أحد المهارات الضرورية التي يجب على مطور الواجهة الأمامية تعلمها هو التأكد من أن الواجهات التي يبرمجها متوافقة مع مختلف المتصفحات وتظهر بشكل سليم ومتسق على المتصفحات الشهيرة مثل كروم وفايرفوكس وسفاري وEdge وOpera ويتعلم كيف يجري اختبارات التوافق مع المتصفحات cross-browser testing ويعالج أي مشكلات تواجهه في التوافق. يمكنك الاستعانة ببعض الأدوات والتقنيات المساعدة في اختبار توافق المتصفح Cross-browser مثل Markup Validation Service و CrossBrowserTesting و LambdaTest …إلخ. لكن تجدر الإشارة بأن أطر عمل الواجهات الأمامية مثل رياكت React وأنجولار Angular يمكنها أن تقوم بهذه المهمة عنك ولن تجعلك تكترث لها، يكفي أن تحدد لها أي نوع متصفح تريد أن نستهدف وهي تتولى الأمر لأنها تعالج دومًا الشيفرة التي تكتبها. استدعاء واجهة برمجة التطبيقات واجهات برمجة التطبيقات API هي صلة الوصل بين تطبيقات الواجهة الأمامية وبين النظم والوجهات الخلفية وبالرغم من أنك لا تحتاج كمطور واجهة أمامية لمعرفة كيفية كتابة واجهات برمجة التطبيقات لكونها مهمة مطور الواجهة الخلفية لكنك تحتاج لمعرفة طريقة الاتصال بهذه الواجهات وجلب البيانات منها وعرضها بشكل مناسب ومعرفة التقنيات المرتبطة بها مثل RESTful ومفهوم JSON. باختصار، يجري التواصل بين الواجهة الأمامية والواجهة الخلفية عبر واجهة برمجة التطبيقات وعادة ما ترسل البيانات من الواجهة الخلفية إلى الواجهة الأمامية بصيغة JSON لذا من الضروري معرفة هذه الصيغة، ويمكنك الرجوع إلى مقال تعلم JSON. تعلم Node.js وأنظمة إدارة الحزم يحتاج مطور الواجهة الأمامية إلى تعلم أحد أدوات إدارة الحزم Package Manager التي تجعل عملية تطوير الواجهة الأمامية أسرع وأسهل، فأدوات إدارة الحزم هي برمجيات تسمح لك بتثبيت الحزم المطلوبة للتطوير وإعدادها وتحديثها وإدارة تبعياتها وضمان عدم تعارضها بشكل تلقائي بدلًا من القيام بذلك بشكل يدوي ومن أشهرها npm و Yarn. وعادة يستعمل مطور الواجهات الأمامية مكتبة Node.js التي تأتي مع نظام إدارة الحزم الشهير npm والذي سيستعمله في تنزيل حزم المشروع وإدارتها ومكتبة Node.js هي أول أداة سيثبتها المطور على جهازه فبدونها لن يعمل مع لغة جافاسكريبت على الإطلاق، لذا يجب أن يتعرف عليها وعلى مدير الحزم npm. وقد شرحنا في مقال أساسيات إدارة الحزم في تطوير الويب من طرف العميل كل ما يتعلق باستخدام مدير الحزم وكيفية استخدامه في إدارة مشاريع الواجهة الأمامية. نظام التحكم في الإصدارات git يساعد نظام التحكم في الإصدار وأشهرها Git مطور الواجهة الأمامية على تتبع التغييرات التي يجريها على المواقع ويمكنه من العودة إلى إصدار كود سابق بكل سهولة إذا حدث خطأ ما في الكود كما يفيده في حال العمل على نفس المشروع مع فريق تطوير. تتوفر في أكاديمية حسوب مجموعة غنية ومنوعة من المقالات والدروس حول Git التي تساعدك في تعلم كافة المهارات اللازمة للتعامل مع نظام التحكم بالإصدارات Git. كانت هذه التقنيات جزءًا يسيرًا من التقنيات والأدوات التي على مطور الواجهة الأمامية معرفتها، وفي الفقرة التالية سنوضح المزيد من هذه التقنيات ونضع لك خارطة طريق منظمة تساعدك في تعلم تعلم تطوير الواجهة الأمامية. خارطة طريق تعلم تطوير الواجهة الأمامية إليك خارطة طريق لتعلم مجال تطوير الواجهات الأمامية والذي يعرض بوضوح طريق مطور الواجهات الأمامية بالكامل بدءًا من المرحلة المبتدئة وحتى المتقدمة وأغلب تلك المواضيع تجد عنها في أكاديمية حسوب وموسوعة حسوب: أهم مصادر تعلم تطوير الواجهة الأمامية إذا كنت مبتدئًا ولا تملك أي خبرة مسبقة وتبحث عن أقصر طريقة لتعلم تطوير الواجهة الأمامية أنصحك بالاطلاع على دروة تطوير واجهات المستخدم التي توفرها أكاديمية حسوب فهي دورة شاملة ومنظمة تزيد على 60 ساعة فيديو تدريبية ومن مسارات متعددة تبدأ معك من أساسيات تطوير واجهات المستخدم التي تشرح لك كل المفاهيم واللغات الأساسية وأطر ومكتبات العمل وتنتهي بك ببناء مشاريع عملية متقدمة ترسخ كل هذه الأساسيات وتساعدك في بناء معرض أعمالك. لن تكون وحدك خلال هذه الدورة بل سيكون معك فريق من المدربين لمساعدتك وإجابتك على أي تساؤل أو مشكلة تواجهك في رحلة التعلم، وفي نهاية الدورة ستحصل على شهادة معتمدة من أكاديمية حسوب تعزز سيرتك الذاتية. إضافة إلى ذلك توفر أكاديمية حسوب الكثير من مصادر التعلم المجانية باللغة العربية من دروس ومقالات وسلاسل تعلمية حول تطوير الويب تتعلم من خلالها كافة تقنيات ولغات برمجة الواجهات الأمامية وأطر العمل الشهيرة التي أوردناها في سياق المقال. وإن كنت تفضل الدراسة من الكتب بسبب شموليتها وتسلسلها في الشرح فإن الأكاديمية توفر لك مجموعة من الكتب القيمة التي تهم أي مطور واجهة أمامية من بينها: كتاب فهم أعمق لتقنيات HTML5 كتاب ملاحظات للعاملين في CSS كتاب البرمجة بلغة جافا سكريبت كتاب تصميم تجربة المستخدم سلسلة تطوير الويب وأخيرًا إذا كنت ترغب بمعرفة المزيد من المعلومات حول الواجهات الأمامية وأهم تقنيات برمجتها ومسار تعلمها أنصحك بمشاهدة هذا الفيديو. الخلاصة بهذا تكون وصلت إلى نهاية هذه المقالة الشاملة التي تناولنا فيها كل ما يتعلق بأساسيات تطوير الواجهة الأمامية front-end أو ما يعرف بتطوير واجهة المستخدم وتعرفنا على أهم اللغات وأطر العمل والأدوات التي تحتاجها كمطور واجهة أمامية لتنجز الجزء المرئي من الموقع الذي يتفاعل المستخدمون من خلاله مع التطبيقات والمواقع، كما شرحنا في ختامة أهم خطوات تعلم تطوير الواجهة الأمامية ومصادر تعلمها باللغة العربية. وفي حال كان لديك أي سؤال يتعلق بتطوير الويب وتحديدًا تطوير الواجهات الأمامية للويب فلا تتردد في كتابته في قسم التعليقات أسفل المقال، أو طرحه في قسم الأسئلة والأجوبة في أكاديمية حسوب ليجيبك عليه مبرمجون خبراء. اقرأ أيضًا المدخل الشامل لتعلم تطوير الويب وبرمجة المواقع برمجة مواقع الويب: دليلك المختصر ما الفرق بين تصميم المواقع الإلكترونية وتطوير المواقع الإلكترونية؟ عالم الويب ومعاييره ما هي صفحات الويب؟
-
- 1
-
- واجهة أمامية
- frontend
-
(و 2 أكثر)
موسوم في:
-
يحتاج أي مطور محترف للتعرف على أنواع لغات البرمجة المختلفة ومعرفة ميزاتها ومحدوديتها كي يتمكن من استخدام النوع الأنسب عند في كتابة برامجه وتطبيقاته، وفي مقال اليوم سنتعرف على مفهوم لغة البرمجة الإجرائية التي هي أحد أقدم وأبسط نماذج البرمجة ونكتشف استخداماتها وآلية عملها وطريقة كتابة البرامج باستخدامها ونستعرض أهم خصائصها وعيوبها ومميزاتها. أنواع لغات البرمجة تختلف لغات البرمجة وتتفاوت في عدة أوجه ما يجعل علماء البرمجة والمطورين يصنفونها وفق تصنيفات مختلفة وفق السمات أو الخصائص المشتركة فيما بينها. ومن بين المعايير التي يتم اعتمادها لتصنيف أنواع لغات البرمجة هو أسلوب هيكلة الشيفرة وطريقة تنظيم عناصر البرنامج حيث تقسم لغات البرمجة بناء على هذا المعيار إلى ثلاثة أصناف أو نماذج رئيسية هي: لغات البرمجة الإجرائية Procedural Programming لغات البرمجة الوظيفية Functional Programming لغات البرمجة الكائنية Object-Oriented Programming من الضروري لك كمبرمج أن تفهم الفروقات بين هذه النماذج البرمجية واختيار النموذج المناسب لمشروعك، وسنخصص فقراتنا التالية لشرح لغات البرمجة الإجرائية والتي تعد أحد أقدم نماذج البرمجة ونكتشف معًا طريقة عملها وأشهر لغات البرمجة التي تعتمدها وأبرز مزاياها وعيوبها. إذا كنت مهتمًا بمعرفة المزيد من المعايير التي تصنف وفقها لغات البرمجة وأهم مميزات كل نوع يمكنك مطالعة مقال أنواع لغات البرمجة. ما هي البرمجة الإجرائية Procedural Programming؟ البرمجة الإجرائية Procedural Programming هي أحد نماذج البرمجة التي تعتمد بشكل أساسي على إخبار الحاسوب بالمهام التي تريد منه القيام به بدقة وخطوة بخطوة من خلال كتابة إجراءات procedures أو دوال برمجية functions تؤدي كل منها مهمة محددة. سابقًا في بدايات البرمجة كانت البرامج تتألف من إجراء واحد يتكون من سلسلة متتالية من التعليمات البرمجية التي تنفذ بالتسلسل من أعلى الكود إلى أسفله لتؤدي المطلوب وكان هذا يجعل الكود مكررًا وطويلًا جدًا، أما مع أسلوب البرمجة الإجرائية أصبح بإمكان المبرمج تقسيم البرامج الطويلة إلى مجموعة من الإجراءات تحل كل منها مشكلة فرعية منفصلة وإعادة استخدامها عند الحاجة ضمن الإجراء الرئيسي أو ضمن إجراءات أخرى لتحقيق الهدف الكلي للبرنامج. فالإجراءات procedures أو الدوال functions أو ما يعرف أيضًا البرامج الفرعية subroutines أو الوظائف هي عبارة عن كتل من التعليمات البرمجية لها اسم محدد تحصل على المدخلات من المستخدم وتعالجها بطريقة معينة لأداء المهمة المطلوبة ثم تعيد مجموعة من النتائج كمخرجات. وتجدر الإشارة بأنه لا يتم تنفيذ تعليمات الإجراءات مباشرة عند كتابته بل يجب استدعاء الإجراء من خلال كتابة اسمه وتمرير قيم المتغيرات المناسبة له ليتم تنفيذ كتلة تعليماته البرمجية، بعبارة أخرى الإجراء البرمجي هو كتلة من التعليمات المجمعة بشكل وحدة واحدة والتي تؤدي مهمة محددة ويتم استخدامها في البرامج عند الحاجة لتنفيذ هذه المهمة المعينة. تصنف البرمجة الإجرائية كذلك بأنها أحد أنواع البرمجة الأمرية imperative وهي برمجة نعطي فيها الحاسوب مجموعة من الأوامر أو التعليمات أو الخطوات المرتبة لنخبره بشكل مفصل بما يجب عليه القيام به من أجل تحقيق مهمة ما. أمثلة على لغات برمجة إجرائية قد تدعم بعض لغات البرمجة نموذج البرمجة الإجرائية فقط، لكن في الغالب ستجد أن معظم لغات البرمجة تدعم أكثر من نموذج برمجة بذات الوقت للاستفادة من ميزات كل نموذج ومنح المبرمج مزيدًا من المرونة في كتابة برامجه على سبيل المثال تدعم لغة بايثون Python ولغة C++ كلًا من نموذج البرمجة الإجرائية والبرمجة كائنية التوجه بذات الوقت. من الأمثلة الشائعة على لغات البرمجة الإجرائية نذكر: سي C: لغة برمجة إجرائية شهيرة تم تطويرها عام 1972 وتستخدم في العديد من المجالات أهمها تطوير نظم التشغيل والتطبيقات المضمنة وألعاب الفيديو. بيسك BASIC: لغة برمجة عالية المستوى تم تطويرها في عام 1964 بهدف جعل البرمجة سهلة التعلم والفهم للمبتدئين وكانت تستخدم لتطوير التطبيقات الإدارية البسيطة والبرامج التعليمية والألعاب. فورتران FORTRAN: من لغات البرمجة الإجرائية الشهيرة وهي أقدم لغة برمجة عالية المستوى طورت في خمسينيات القرن الماضي لتسهيل كتابة البرامج الرياضية والعلمية ولا تزال لليوم في المجالات العلمية والهندسية مثل التنبؤ بالطقس والفيزياء الحاسوبية والتحليل العددي. كوبول COBOL: لغة برمجة إجرائية قديمة عالية المستوى طورت بهدف تقديم لغة برمجة سهلة ومفهومة من قبل المبرمجين وهي لا تزال لليوم تستخدم في عالم الأعمال والمصارف (البنوك). الغول ALGOL: هي لغة برمجة إجرائية تستخدم لتطوير التطبيقات العلمية والهندسية وهي أول لغة برمجة أدخلت مفهوم الكتل البرمجية وسمحت بتداخل الإجراءات والدوال داخل بعضها البعض وتعد لغة مرجعية لتطوير معايير لغات البرمجة الأخرى. آدا Ada: لغة برمجة إجرائية صممت لتكون لغة آمنة وموثوقة للاستخدام في الأنظمة البرمجية المعقدة المستخدمة من قبل المنظمات الحكومية والمؤسسات الأكاديمية فهي تتضمن ميزات مثل الكتابة الصارمة ومعالجة الاستثناءات. باسكال Pascal: لغة برمجة عالية المستوى صممها عالم الحاسوب نيكلاوس ويرث بداية السبعينيات لتوفير لغة برمجة صارمة ومنظمة للمبتدئين في تعلم البرمجة، واستخدمت في البدايات لتطوير برامج معالجة البيانات وتطوير الألعاب وأثرت في تطوير العديد من لغات البرمجة الأخرى مثل دلفي وآدا. مثال عملي لبرنامج مكتوب بأسلوب البرمجة الإجرائية لتفهم البرمجة الإجرائية بشكل أفضل دعني أوضح لك الأمر بمثال عملي، إذا فكرنا بكتابة برنامج بلغة C لحساب المتوسط الحسابي لعلامات طالب ما، يمكن أن نفكر بكتابته مباشرة دون استخدام الإجراءات من خلال تخزين العلامات في مصفوفة ثم نستخدم حلقة for للتكرار خلال عناصر المصفوفة لحساب المتوسط وعرض قيمته ضمن البرنامج الرئيسي كما يلي: #include <stdio.h> int main() { int marks[] = {60, 70, 88, 95, 59}; int size = sizeof(marks) / sizeof(marks[0]); int sum = 0; for (int i = 0; i < size; i++) { sum += marks[i]; } float avg = (float)sum / size; printf("Average: %f", avg); return 0; } الآن لو احتجنا لحساب المتوسط الحسابي لدرجات طالب آخر سنحتاج لتعريف مصفوفة أخرى تتضمن علامات هذا الطالب ونكرر نفس الكود على المصفوفة الثانية ويصبح الكود كالتالي: #include <stdio.h> int main() { int marks1[] = {60, 70, 88, 95, 59}; int size1 = sizeof(marks1) / sizeof(marks1[0]); int sum1 = 0; for (int i = 0; i < size1; i++) { sum1 += marks1[i]; } float avg = (float)sum1 / size1; printf("Average1: %f", avg); int marks2[] = {76, 93, 78, 93, 86}; int size2 = sizeof(marks2) / sizeof(marks2[0]); int sum2 = 0; for (int i = 0; i < size2; i++) { sum2 += marks2[i]; } float avg2 = (float)sum2 / size2; printf("Average2: %f", avg2); return 0; } والآن ماذا لو أردنا حساب متوسط درجات 100 طالب تخيل حجم تكرار الكود الذي سيحصل في البرنامج! لذا سيكون من الأفضل التفكير في تعريف إجراء أو دالة تغلف تعليمات حساب المتوسط ونعيد استخدامها في البرنامج الرئيسي عند الحاجة كما يلي. لكتابة هذا البرنامج سنعرف إجراءً يسمى average() يأخذ مصفوفة الدرجات كوسيط ويحسب هذا الإجراء حجم المصفوفة ومجموع كل العناصر في المصفوفة ويعيد المتوسط بقسمة المجموع على حجم المصفوفة. وفي الدالة main() التي تمثل البرنامج الرئيسي نكتفي بتعريف مصفوفات الدرجات ونمررها كوسطاء للدالة average() لنحصل مباشرة على النتيجة المطلوبة. #include <stdio.h> float average(int arr[]); int main() { int marks1[] = {60, 70, 88, 95, 59}; int marks2[] = {76, 93, 78, 93, 86}; printf("Average1: %f", average(marks1)); printf("Average2: %f", average(marks2)); return 0; } float average(int arr[]) { int size = sizeof(arr) / sizeof(arr[0]); int sum = 0; for (int i = 0; i < size; i++) { sum += arr[i]; } return (float)sum / size; } كما تلاحظ عندما استخدمنا الدوال أو الإجراءات لتحقيق المطلوب تمكنا من تنظيم البرنامج بشكل أفضل واختصرنا حجم الشيفرات البرمجية المكررة وأصبح بإمكاننا إعادة استخدام الإجراءات عدة مرات. خصائص البرمجة الإجرائية يتضمن نموذج البرمجة الإجرائية مجموعة من الخصائص أو الميزات الرئيسية وأبرزها: النمطية الدوال المعرفة مسبقًا تصميم البرنامج من أعلى لأسفل تمرير المعاملات parameters المتغيرات العامة المتغيرات المحلية لنتعرف على المزيد من التفاصيل حول كل خاصية من هذه الخاصيات! 1. النمطية تعني ميزة النمطية تقسيم البرامج المعقدة إلى وحدات أو أجزاء أصغر مستقلة بحيث يسهل حلها. كل قسم يؤدي مهمة محددة ثم يتم تجميعهما لأداء مهمة أكبر، تسمى هذه الوحدات في لغات البرمجة الإجرائية باسم الإجراءات أو الدوال وهي تساعد على تقليل تعقيد الأنظمة بشكل كبير وتجعل الكود أكثر كفاءة. 2. الدوال المعرفة مسبقًا تتضمن كافة لغات البرمجة الإجرائية دوال مضمنة أو معرفة مسبقًا predefined functions لا تضطر المبرمج إلى ترميز كل شيء من البداية حيث تؤدي هذه الدوال المدمجة في اللغة وظائف محددة مثل العمليات الحسابية أو عمليات إدخال أو إخراج البيانات وتُضمَّن في مكتبات قياسية جاهزة يمكن للمبرمج استدعاؤها مباشرة والاستفادة منها. 3. هيكلة البرنامج من أعلى لأسفل عندما تفكر في تطوير برنامج باستخدام إحدى لغات البرمجة الإجرائية تفكر من الأعلى للأسفل أي أنك تقسم البرنامج إلى أجزاء أصغر يتم تنفيذها بطريقة متسلسلة. حيث تفكر بداية في الهدف الأساسي العام للبرنامج ثم تقوم بتقسيمه إلى أجزاء أصغر لتنفيذ هذا الهدف وتكتب كافة الإجراءات أو الدوال المطلوب لتشغيله وتتحكم في تدفق الكود من خلال استدعاء هذه الدوال بالترتيب المناسب. 4. تمرير المعاملات تعتمد البرمجة الإجرائية على ميزة تمرير المعاملات parameter passing إلى الإجراءات أو الدوال والتي تمثل دخل الإجرائية وهي البيانات اللازمة لتنفيذ عمليات الإجرائية ثم إرجاع خرج، أي لكل إجرائية عادةً دخل تعطي بمقابله خرج ما. 5. المتغير المحلي Local Variable المتغير المحلي هو متغير يعرف ضمن كتلة تعليمات الدالة البرمجية ويمكن استخدامه فقط داخل الدالة المعرف فيها. فعند انتهاء تنفيذ الدالة وعودة التحكم إلى البرنامج مرة أخرى لا يمكن استخدام المتغيرات المحلية. 6. المتغير العام Global Variable المتغير العام هو متغير يعرف خارج كتلة تعليمات الدالة البرمجية وبالتالي يمكن استخدامه في أي مكان في البرنامج وفي أي دالة أخرى ضمن البرنامج ويمكن لأي وظيفة في البرنامج قراءته وتغيير قيمته، وتجدر الإشارة لضرورة استخدام المتغيرات العامة بحذر شديد ضمن كودك البرمجي. استخدامات اللغات الإجرائية تعد لغات البرمجة الإجرائية مناسبة للاستخدام في مجال تعليم البرمجة للمبتدئين لكونها تتميز بالوضوح وسهولة الفهم، كما أنها تستخدم لتطوير الأنظمة البرمجية البسيطة غير المعقدة التي لا تحتاج للكثير من المعالجات الفرعية وكتابة إجراءات متداخلة مع بعضها البعض. تناسب لغات البرمجة الإجرائية كذلك تطوير برامج الحسابات وحل كافة أنواع المشكلات العلمية والتقنية الواضحة. مميزات وسلبيات البرمجة الإجرائية يوفر نموذج البرمجة الإجرائية الكثير من المميزات للمبرمجين والمطورين لكنه لا يخلو من بعض العيوب التي قد تجعلهم يفضلون استخدام نماذج برمجة أخرى، وفيما يلي نناقش أهم إيجابيات وسلبيات البرمجة الإجرائية. مميزات البرمجة الإجرائية تتسم لغة البرمجة الإجرائية بالبساطة وسهولة الفهم ولهذا السبب يبدأ معظم من المبرمجين بتعلم إحدى لغات البرمجة الإجرائية وفهم أساسياتها قبل الانتقال لأساليب برمجة أخرى. تعتمد لغة البرمجة الإجرائية على تقسيم الكود إلى أجزاء أصغر مما يسهل على المبرمجين تنظيم العمل ومتابعة سير عمل البرنامج واختبار وتصحيح الأخطاء البرمجية بشكل أسرع. توفر البرمجة الإجرائية ميزة تعريف الإجراء مرة واحدة واستدعائه كلما دعت الحاجة مما يقلل الكثير من تكرار الشيفرات البرمجية ضمن البرنامج. تسهل البرمجة الإجرائية إعادة استخدام الكود في برامج خارجية من خلال حفظ هذه الإجراءات ضمن مكتبات واستيرادها إلى البرامج عند الحاجة. تسهل البرمجة الإجرائية ميزة توزيع المهام على فريق من المبرمجين عند العمل على البرامج الكبيرة حيث يمكن لكل مبرمج تطوير قسم من الإجراءات المطلوبة لإكمال البرامج بشكل أسرع. سلبيات لغة البرمجة الإجرائية في لغة البرمجة الإجرائية لا توجد حماية فعلية أو عزل للبيانات حيث يمكنك تمرير البيانات إلى الإجراءات واستخدامها وتعديلها لذا قد لا تكون أفضل لغة برمجة للتطبيقات التي تتضمن بيانات حساسة. استخدام مفهوم المتغيرات العامة في لغات البرمجة الإجرائية التي يمكن الوصول إليها وتعديلها بواسطة أي جزء من كود البرنامج قد يصعب عملية الصيانة ومعرفة مصدر الخطأ. يمكن للمطورين إعادة استخدام الإجراءات التي يكتبونها في نفس المشروع لكن لا يمكنهم إعادة استخدامها أو الاستفادة منها في مشاريع أخرى. في البرمجة الإجرائية لا يمكن تغيير البيانات بعد إنشائها داخل كود البرنامج ما يعطي بعض القيود في توسيع وتطوير البرامج. تعد لغات البرمجة الإجرائية أبطأ في التنفيذ مقارنة بأنواع لغات البرمجة الأخرى. قد لا تكون البرمجة الإجرائية هي النموذج الأنسب لتطوير برامج معقدة أو متقدمة كتطبيقات التعلم الآلي والذكاء الاصطناعي التي تتضمن الكثير من المعالجات. ما الفرق بين لغة البرمجة الإجرائية ولغة البرمجة كائنية التوجه؟ يقسم البرنامج في البرمجة الإجرائية إلى مجموعة من المتغيرات وهياكل البيانات والإجراءات وتكون هذه الإجراءات هي العناصر الأساسية للبرنامج فهي التي تتعامل مع المتغيرات وهياكل البيانات، بينما في البرمجة بالكائنات أو البرمجة كائنية التوجه OOP فيقسم البرنامج إلى مجموعة من الكائنات تمثل عناصره الرئيسية ويكون لكل كائن منها بياناته الخاصة والإجراءات التي تعالج هذه البيانات. ففي البرمجة الإجرائية تكون الإجراءات أو الدوال مكونات مستقلة قائمة بذاتها في البرنامج، بينما في البرمجة كائنية التوجه تكون الإجراءات جزءًا من بينة الكائنات نفسها وكما ذكرنا سابقًا لا تكون البرمجة الإجرائية هي أفضل لغة للمشاريع الحساسة للبيانات لذا توفر البرمجة بالكائنات نموذجًا أفضل لحماية البيانات ومنع التعديل عليها خارج الكائن. كما أن التحكم في سير تنفيذ كود البرنامج يتم في البرنامج الإجرائية يحدد من خلال ترتيب استدعاء الدوال أو الإجراءات في حين يتم التحكم به في البرمجة كائنية التوجه بالاعتماد على الحلقات والتعليمات الشرطية وعبارات التحكم الأخرى. وفيما يلي جدول مختصر للمقارنة بين البرمجة الإجرائية ولغة البرمجة كائنية التوجه: البرمجة الإجرائية البرمجة كائنية التوجه تركز لغة البرمجة الإجرائية على تنفيذ مجموعة من الخطوات المتسلسلة لحل المشكلة المطلوبة تركز البرمجة كائنية التوجه على البيانات التي يجب استخدامها لحل المشكلة المطلوبة الدوال هي العناصر الأساسية للبرنامج الأصناف والكائنات هي العناصر الأساسية للبرنامج لا تضمن حماية البيانات وأمانها تضمن حماية البيانات بشكل كبير عن طريق إخفاء البيانات الحساسة عن المستخدمين مناسبة للتطبيقات البسيطة عامة الأغراض وأنظمة التشغيل والبرامج المضنمة مناسبة للتطبيقات الكبيرة والمعقدة لا تمكنك من نمذجة مشكلات العالم الحقيقي بفعالية. تمكنك من نمذجة مشكلات العالم الحقيقي بفعالية ومرونة. وللمزيد من المعلومات حول البرمجة كائنية التوجه وأهم مفاهيمها واستخداماتها أنصحك بمطالعة مقال البرمجة كائنية التوجه. الخلاصة تعرفنا في مقال اليوم على كل ما يخص لغة البرمجة الإجرائية التي تعتمد بشكل أساسي على إخبار الحاسوب بما يجب القيام به خطوة بخطوة باستخدام قائمة واضحة ودقيقة من التعليمات المضمنة داخل إجراءات والتي تعامل البيانات والإجراءات ككيانين مختلفين ضمن البرامج الحاسوبية. فإذا كنت تخطط لتعلم البرمجة يمكنك أن تبدأ رحلة تعلمك بإحدى لغات البرمجة الإجرائية وتتعلم كيفية حل المشكلات باستخدامها وتقسيم برامجك إلى إجراءات فرعية واستدعاءها بالشكل المناسب. اقرأ أيضًا دليلك الشامل إلى لغات البرمجة تعلم أساسيات البرمجة قواعد البرمجة ببساطة للمبتدئين
-
- 1
-
- أساسيات البرمجة
- تعلم البرمجة
-
(و 1 أكثر)
موسوم في:
-
إذا كنت تتساءل عن الأسباب التي تجعل لغة بايثون Python لغة البرمجة المفضلة لدى أي مبتدئ في تعلم البرمجة وسبب الشهرة الكبيرة التي تتمتع بها بين أوساط المبرمجين والمطورين، ففي مقال اليوم سنجيبك على تساؤلاتك ونستعرض لك أهم مميزات لغة بايثون التي جعلت المطورين يقعون في حب هذه اللغة ويفضلون استخدامها دونًا عن غيرها من لغات البرمجة. ما هي لغة بايثون؟ ابتكر المبرمج الهولندي جيدو فان روسم لغة البرمجة بايثون Python أواخر الثمانينات بهدف إصدار لغة برمجة واضحة وسهلة الاستخدام وقد أسماها على اسم برنامج تلفزيوني كوميدي كان يعرض حينذاك على قناة BBC ليعكس مدى سلاستها ومرونتها وأطلقها للاستخدام أول مرة عام 1991. بعدها تطورت هذه اللغة البسيطة وأصبحت أكثر قوة فهي اليوم لغة عامة الأغراض وتستخدم على نطاق واسع من قبل المطورين والمبرمجين في مختلف التخصصات، وقد أظهر التقرير السنوي الذي أصدره GitHub لعام 2022 حول أكثر لغات البرمجة استخدامًا على جيت هب أن لغة بايثون Python هي ثاني أكثر لغات البرمجة استخدامًا بعد جافا سكريبت وأنها نمت بزيادة قدرها 22.5٪ ويستخدمها اليوم أكثر من أربعة ملايين مطور حول العالم وهذا الرقم بلا شك مثير للاهتمام ويدعو للتساؤل عن مميزات لغة بايثون python والأسباب الكامنة وراء تفوقها على غيرها من لغات البرمجة. ما هي أهم مميزات لغة بايثون Python؟ تتمتع لغة بايثون بجملة من المميزات التي جعلتها تشتهر بين أوساط المبرمجين وتتصدر عالم لغات البرمجة لليوم رغم مرور أكثر من ثلاثين عامًا من إطلاقها، وإليك قائمة بأهم مميزات لغة بايثون python في البرمجة: بسيطة وسهلة التعلم سهلة القراءة متعددة الاستخدامات تدعم البرمجة كائنية التوجه OOP مفتوحة المصدر تملك مجتمع دعم كبير توفر مكتبات قياسية غنية بالمميزات تملك العديد من أطر العمل المساعدة قابلة للتوسع والعمل ضمن لغات أخرى عالية الإنتاجية مطلوبة في سوق العمل دعنا نوضح كل ميزة من هذه المميزات ونستكشف من خلالها المزيد حول أهمية وقوة لغة بايثون 1. بسيطة وسهلة التعلم تعتبر البساطة من أبرز المميزات التي تجعل من لغة بايثون اللغة المفضلة للمبرمجين المبتدئين الذين يتعلمون البرمجة ويكتبون شيفراتهم البرمجية لأول مرة، فبساطة اللغة وسهولة تعليماتها تسهل عملية التعلم وتمكن المبرمج المبتدئ من التركيز على أساسيات البرمجة بدلاً من التركيز على تعقيد اللغة التي يبرمج بها. والجدير بالذكر بأن بساطة تراكيب لغة بايثون لا يعني أنها لغة محدودة بل على العكس تمامًا فهي لغة تجمع بين البساطة والقوة وتصلح لبناء أي نوع من التطبيقات البسيطة والمعقدة وتصلح للاستخدام في مختلف المجالات ما يجعلها تناسب المطورين المبتدئين والخبراء على حد سواء. 2. سهلة القراءة فحتى لو لم تكن تعرف البرمجة فبمجرد نظرك إلى الأكواد البرمجية المكتوبة بلغة بايثون ومقارنتها بالأكواد المكتوبة بغيرها من لغات البرمجة ستلاحظ مدى سهولة قراءة وفهم تعليمات بايثون، فمفردات لغة بايثون تشابه إلى حد كبير مفردات اللغة الإنجليزية المحكية وعباراتها موجزة وكلماتها المحجوزة keywords مختصرة جدًا مقارنة بباقي لغات البرمجة، أضف إلى ذلك فإن استخدام المسافات البادئة لتوضيح الكتل البرمجية المترابطة بدلاً من الأقواس المتعرجة يجعل قراءة التعليمات أكثر وضوحًا وفهمًا. على سبيل المثال لاحظ الفرق بين البرنامج التالي المكتوب بلغة بايثون لطباعة عبارة "مميزات لغة بايثون" على الشاشة print("مميزات لغة بايثون") وقارنه بهذا البرنامج المكتوب بلغة سي والذي يقوم بالأمر ذاته #include<stdio.h> int main(void) { printf("مميزات لغة بايثون"); return 0; } لابد أن الفرق واضح في سهولة المقروئية بين اللغتين، وتزداد أهمية هذه الميزة بالطبع مع تعقيد البرنامج وزيادة حجم شيفراته البرمجية. 3. متعددة الاستخدامات من مميزات لغة بايثون أنها لغة لغة برمجة عامة الأغراض أي أنها تصلح للاستخدام في مجالات وتطبيقات متنوعة في حين تتخصص بعض لغات البرمجة في أمر واحد فقط على سبيل المثال تختص لغة R في مجال علوم البيانات والتعلم الآلي ولا تصلح لتطوير الويب وتتخصص لغتي HTML و CSS في تطوير الويب فقط، بينما تصلح لغة بايثون للاستخدام في مجال برمجة التطبيقات والذكاء الصناعي وتحليل البيانات وأتمتة المهام اليومية وغيرها من المجالات. 4. تدعم البرمجة كائنية التوجه OOP تدعم لغة بايثون نموذج البرمجة كائنية التوجه OOP أي أنها تصمم البرنامج بشكل كائنات أو وحدات مجردة لكل منها خصائص ووظائف فريدة خاصة به. كما تدعم لغة بايثون كذلك نموذج البرمجة الوظيفية Functional Programming التي تركز على الوظائف التي يقوم بها البرنامج وبهذا يمكن للمطور استخدام النموذج الذي يفضله بحسب ما يناسب متطلبات كل مشروع. 5. مفتوحة المصدر من مميزات لغة بايثون أنها تعد لغة برمجة مفتوحة المصدر أي أن بإمكانك تنزيل الكود المصدري الخاص بها وتعديله وتوزيعه واستخدامه كيفما شئت، كما تعني عبارة مفتوحة المصدر أيضًا أن بإمكان المطورين والمبرمجين الوصول إلى مجموعة واسعة من الموارد والمكتبات التي تتيحها هذه اللغة واستخدامهًا مجانًا في تطبيقاتهم. 6. تملك مجتمع دعم كبير تمتلك لغة بايثون مجتمعًا ضخمًا من المطورين الذين يعملون باستمرار على تطوير اللغة وتحسينها وإصلاح أخطائها وإضافة ميزات جديدة لها، كما توفر لغة بايثون العديد من مصادر التعلم ومواقع الدروس التعليمية والنصائح وتبادل الخبرات التي تساعد المبرمجين على تعلم اللغة باحترافية وحل أي مشكلة تواجههم في برمجة تطبيقاتهم. 7. تعمل على مختلف المنصات من مميزات لغة بايثون المهمة أن شيفراتها البرمجية تعمل على مختلف المنصات ونظم التشغيل مثل لينكس وويندوز وماك أو إس دون الحاجة لإجراء أي تعديل بها. السبب في هذه الميزة هو أن بايثون توفر بيئة لتنفيذ الكود تسمى آلة بايثون الافتراضية Python Virtual Machine أو ما يعرف اختصارًا PVM والتي تغني المبرمجين عن تعديل تعليماتهم البرمجية لتتوافق مع أنظمة التشغيل المختلفة. 8. توفر مكتبات قياسية مدمجة غنية بالميزات تملك لغة بايثون مجموعة من المكتبات والحزم القياسية على مستودعها الرسمي PYPI إضافة للمكتبات الخارجية التي توفر للمطورين العديد من الوظائف والتعليمات البرمجية القابلة لإعادة الاستخدام والتي تساعدهم على حل المشكلات البرمجية في مختلف المجالات بسهولة وسلاسة. ستجد مكتبات بايثون قوية لتطبيقات الويب والذكاء الاصطناعي وعلوم البيانات والتعلم الآلي وغيرها من المجالات وإذا كنت مهتمًا بمعرفة المزيد حول هذه المكتبات أنصحك بقراءة مقال أهم مكتبات لغة بايثون التي تستخدم في المشاريع الصغيرة. 9. تملك العديد أطر العمل المساعدة توفر لغة بايثون عددًا هائلًا من أطر العمل مفتوحة المصدر التي تجعل تطوير التطبيقات أسهل وأسرع مثل جانغو Django وفلاسك flask وهما من أكثر أطر عمل بايثون استخدامًا في بناء مواقع وتطبيقات الويب ويمكنك للمطورين من خلالهما إنجاز المهام التي كانت تستغرق وقتًا طويلًا بزمن قصير ما يزيد الإنتاجية ويحسن الأداء. ويمكنك مطالعة المزيد من المعلومات حول أطر العمل من خلال مقال تعرف على مفهوم إطار العمل Framework وأهميته في البرمجة 10. قابلة للتوسع والعمل ضمن لغات أخرى من أهم مميزات لغة بايثون أنها تتعاون وتندمج بسلاسة مع لغات برمجة أخرى حيث يمكن للمطور الاستعانة ببعض الوظائف التي توفرها بايثون ولا تملكها لغات البرمجة الأخرى مثل لغة البرمجة جافا أو C++ وكتابة أكواد بايثون وتشغيلها ضمن التطبيقات المكتوبة بإحدى هذه اللغات. 11. عالية الإنتاجية ترفع لغة بايثون من إنتاجية المطورين والمبرمجين وتقلل من الوقت والجهد المبذول لكتابة نفس سطور التعليمات البرمجية بسبب بساطتها واختصار تعليماتها مقارنة باللغات الأكثر تعقيدًا مثل سي و C++ وجافا. أضف إلى ذلك فإن توفر عدد كبير من المكتبات القوية يساهم بشكل كبير في تقليل الوقت الذي يبذله المبرمجون في تطوير تطبيقاتهم المختلفة. 12. مطلوبة في سوق العمل سأختم بواحدة من أهم مميزات لغة بايثون التي يبحث عنها أي مبرمج في اللغة التي ينوي تعلمها وهو الطلب على اللغة في سوق العمل، فلغة بايثون مطلوبة بقوة في السوق العالمي والعربي وتوفر لك مجالات عمل متنوعة ذات أجر مرتفع كتطوير تطبيقات الويب أو تحليل البيانات أو الذكاء الاصطناعي، ولا شك بأن راتب المبرمجين يعتمد بشكل أساسي على عدد سنوات خبرته وموقعه الجغرافي وتخصصه إلا أن مبرمجي بايثون بشكل عام يحصلون على أجور عالية مقارنة بغيرهم. دورة الذكاء الاصطناعي احترف برمجة الذكاء الاصطناعي AI وتحليل البيانات وتعلم كافة المعلومات التي تحتاجها لبناء نماذج ذكاء اصطناعي متخصصة. اشترك الآن وإذا كنت مهتمًا بمعرفة مزيد من المعلومات حول التخصصات البرمجية مرتفعة الأجور أنصحك بمطالعة مقال تعرف على أعلى تخصصات البرمجة أجرًا. كانت هذه أبرز المميزات جعلت لغة بايثون واحدة من لغات البرمجة المفضلة ليس فقط قبل المبرمجين والمطورين بل من قبل الشركات والمؤسسات التقنية الكبرى فمحرك البحث جوجل يستخدم لغة البرمجة بايثون للزحف إلى صفحات الويب وفهرستها، وكذلك تستخدمها شركة سبوتيفاي Spotify لبث المقاطع الصوتية والبودكاست والتوصية بالمقاطع التي تناسب اهتمامات المستخدمين حتى أن وكالة ناسا لتحليل البيانات التي تجمعها وهذا إن دل على شيء فإنما يدل على قوة هذه اللغة ومرونتها. مصادر تعلم بايثون هل نالت مميزات لغة بايثون على استحسانك وترغب بالفعل في تعلمها ومعرفة مصادر قوية تساعدك في تعلمها ودخول سوق العمل بأقصر الطرق؟ أنصحك بمطالعة دورة تطوير التطبيقات باستخدام لغة Python التي توفرها أكاديمية حسوب والمعدة من قبل نخبة من مبرمجي بايثون فهي دورة متكاملة تمنحك الفرصة لبدء تعلم بايثون من الصفر حتى الاحتراف دون الحاجة لتوفر أي خبرة برمجية مسبقة وتوفر لك متابعة دورية مع مدربين أكفاء يجيبونك في حال وجود أي تساؤل أو استفسار بخصوص ما تتعلمه. كما توفر أكاديمية حسوب الكثير من موارد التعلم المجانية المتقدمة التي تصقل مهاراتك في بايثون من بينها مئات المقالات والسلاسل التعلمية الكاملة التي تعلمك استخدام لغة بايثون وأطر عملها الشهيرة باحترافية، إلى جانب توثيق شامل للغة بايثون يعرفك على كل تفاصيل هذه اللغة. وإذا كنت تفضل الكتب كمراجع للتعلم يمكنك تحميل كتاب البرمجة بلغة بايثون الذي يشرح لك لغة بايثون بأسلوب منهجي ومتسلسل مدعم بالأمثلة التطبيقية المفيدة. الخلاصة تعرفنا في مقال اليوم على أبرز مميزات لغة بايثون التي تعد واحدة من أكثر لغات البرمجة شيوعًا بين أوساط المبرمجين حول العالم، وتعرفنا على أسباب تميزها على اللغات الأخرى وأهم مصادر لتعلمها. فإذا كنت قد اتخذت قرارًا بدخول عالم البرمجة وبدء تعلم لغة بايثون فأنصحك بأن لا تتردد وتبدأ من الآن رحلتك في التعلم لأنك ستضمن بذلك تعلم لغة قوية توفر لك العديد من الفرص لحياتك المهنية. اقرأ أيضًا المرجع الشامل إلى تعلم لغة بايثون تطبيقات لغة بايثون بيئات التطوير IDE المستخدمة في تطوير تطبيقات بايثون كيف تتعلم البرمجة: نصائح وأدوات لرحلتك في عالم البرمجة
-
هل أنت مهتم بتطوير الألعاب، وتود التعرف على مفهوم محرك الألعاب وأفضل أنواع محركات الألعاب Game Engines التي توفر لك بيئة عمل متكاملة يمكنك من خلالها برمجة الألعاب بسهولة واحترافية؟ نعرّفك في هذه المقالة على أبرز محركات الألعاب ونوضح أهم مميزاتها وعيوبها لتختار منها ما يناسبك وتنطلق في مجال صناعة الألعاب. مدخل إلى برمجة الألعاب قبل التعمق في شرح مفهوم محرك الألعاب لنتحدث بإيجاز عن خطوات تطوير وبرمجة الألعاب، حيث تضم عملية تطوير الألعاب عدة مراحل لا تقتصر فقط على المهارات البرمجية والرياضية، بل تحتاج لوجود مهارات فنية وإبداعية، والقدرة على ابتكار أفكار لعب مشوقة، وسرد اللعبة بطريقة واضحة تبين للاعب قوانين اللعبة وطريقة اللعب بها. قد تختلف مراحل تطوير الألعاب بحسب نوع اللعبة ومستواها ومنصة اللعب بها، إلا أنها تمر بمجموعة من المراحل الأساسية تشمل: التخطيط للعبة ووضع تصور عام لها وتحديد نوعها ومميزاتها وطريقة اللعب بها والمستويات التي تتضمنها والمنصة التي ستعمل عليها. تصميم اللعبة فبمجرد الانتهاء من مرحلة التخطيط للعبة تبدأ مرحلة التصميم وتحديد الشكل الذي ستظهر به هل هي ثنائية الأبعاد 2D أم ثلاثية الأبعاد 3D وشكل الشخصيات ونمط رسمها وهل ستصمم الشخصيات من الصفر أم ستستورد من مصدر جاهز. برمجة اللعبة في هذه المرحلة تتم كتابة المنطق البرمجي الذي يجعل اللعبة تعمل مع تحديد الأدوات أو التقنيات اللازمة لتحقيق ذلك، وهنا أمام المطور خياران إما البدء بكتابة كافة الأكواد البرمجية اللازمة لعمل اللعبة من الصفر بإحدى لغات برمجة الألعاب وهذا سيستغرق وقتًا وجهدًا كبيرين وهو يصلح لبرمجة الألعاب البسيطة أو استخدام محركات ألعاب متخصصة تساعد مبرمج الألعاب في أداء المهام التطويرية وتمكنه من تطوير ألعاب عالية الجودة بأقل جهد. اختبار اللعبة حيث بعد الانتهاء من برمجة اللعبة يجب اختبارها وتجربة اللعب بها والتأكد من أنها تعمل بالشكل المطلوب وإصلاح أي أخطاء تظهر فيها. نشر اللعبة على المنصات أو المتاجر الخاصة بها وإتاحتها للمستخدمين، على سبيل المثال إذا قمت بإنشاء لعبة تعمل على الجوال تحتاج لتحميلها على متجر تطبيقات جوجل بلاي ومتجر تطبيقات آبل. بالنسبة للألعاب البسيطة يمكن أن يكون مصمم اللعبة ومبرمج اللعبة هو الشخص نفسه، أم في الألعاب المتقدمة فيكون هناك فريق تطوير متخصص مكون من مجموعة أفراد الذين يعملون معًا لإنشاء وتطوير الألعاب كالمصممين الذين يبتكرون تصاميم اللعبة والمطورين الذين يكتبون الكود البرمجي لها ومهندسين لإنشاء أصوات اللعبة ومصممي مستويات اللعبة وأحيانًا كتَّاب سيناريو ومنتجين ومخرجين وغيرهم من الأشخاص المختصين بحسب مستوى اللعبة ودرجة تعقيدها. ما هو محرك الألعاب Game Engine؟ محرك الألعاب game engine أو ما يعرف بإطار عمل الألعاب game framework هو البيئة المسؤولة عن تشغيل الألعاب، إذ يوفر للمبرمجين إطار عمل برمجي يتضمن التعليمات البرمجية الأساسية والأدوات الجاهزة والمكتبات المضمنة التي توفر كافة الوظائف التي يحتاجها المطور لتطوير وتخصيص ونشر الألعاب بسرعة وسهولة. يعد محرك الألعاب أساس إنشاء وتشغيل الألعاب المختلفة، واختياره خطوة أولى لتطوير الألعاب باختلاف أنواعها، ويمكن تشبيه محرك الألعاب بمحرك السيارة فكما أن محرك السيارة هو ما يشغل هيكل السيارة ويجعلها تتحرك فهو ما يوفر البنية التحتية الرقمية اللازمة لتشغيل عناصر اللعبة وجعلها تعمل بالشكل المطلوب. لقد أحدثت محركات الألعاب تحولًا جذريًا في مجال تطوير الألعاب فقبل ظهورها كان مطور الألعاب يحتاج لتصميم كل تفاصيل لعبته الألعاب من الألف إلى الياء وكتابة كافة التعليمات البرمجية المطلوبة لتصميم الألعاب ونشرها على المنصات المختلفة، لكن باستخدام محركات الألعاب لن تكون مضطرًا لكتابة الكثير من التعليمات البرمجية المعقدة لتجعل لعبتك تعمل بالشكل المطلوب وستتمكن من خلال برنامج واحد إنشاء ألعاب متعددة المنصات تعمل على أجهزة الحاسوب الشخصية والأجهزة المحمولة ووحدات التحكم بالألعاب consoles ومنصات الواقع الافتراضي VR platforms، فكل ما تحتاجه لتصميم لعبة متكاملة اليوم هو تعلم استخدام أحد محركات الألعاب ومعرفة أساسية بإحدى لغات البرمجة التي يدعمها هذا المحرك. مكونات محرك الألعاب يتضمن محرك الألعاب عادة مجموعة من المكونات أو المحركات الفرعية التي تتفاعل مع بعضها البعض لتجعل عناصر أو كائنات اللعبة تقوم بكافة الوظائف الضرورية التي تحتاجها، وأهم هذه المحركات: محرك الفيزياء Physics Engine محرك التصيير أو الإخراج Rendering Engine محرك الرياضيات Math Engine محرك الصوت Sound Engine محرك الشبكة Networking Engine محرك الذكاء الاصطناعي AI Engine لنتناول بإيجاز دور كل محرك من هذه المحركات والوظائف التي يقدمها. 1. محرك الفيزياء Physics Engine المسؤول عن جعل عناصر اللعبة تظهر بطريقة واقعية عندما تسقط أو تصدم ببعضها البعض أو عند إطلاق قذيفة أو انسكاب سوائل وغيرها من التصرفات. 2. محرك التصيير أو الإخراج Rendering Engine يعرف كذلك باسم المحرك الرسومي graphic engine وهو مسؤول بشكل أساسي عن إخراج رسومات اللعبة بشكل ثنائي الأبعاد 2D أو ثلاثي الأبعاد 3D. 3. محرك الرياضيات Math Engine المسؤول عن توفير الوظائف الرياضية مثل حساب المسافة أو حساب السرعة وغيرها من العمليات الرياضية التي تفيدك في سياق التحكم في شخصيات اللعبة. 4. محرك الصوت Sound Engine المسؤول عن تحميل وتشغيل ملفات الصوت والتأثيرات الصوتية داخل اللعبة وتحسينها والتحكم بها. 5. محرك الشبكة Networking Engine الذي يتيح لك استخدام الشبكات لتطوير ألعاب متعددة اللاعبين multiplayer games ما يجعل اللعبة أكثر حماسًا وتفاعلية. 6. محرك الذكاء الاصطناعي AI Engine وهو المسؤول عن تقديم توصيات أو اتخاذ قرارات في اللعبة بناءً على سلوك اللاعب. قد لا تستخدم كافة هذه المحركات في تصميم لعبتك إذ يعتمد الأمر على طبيعة اللعبة التي تطورها والمميزات التي توفرها. دعنا نتعرف في الفقرات التالية ما هي أهم محركات الألعاب ونكتشف أبرز مميزاتها لتختار منها ما يناسبك. أشهر محركات الألعاب هناك العديد من محركات الألعاب التي توفر إمكانيات ومميزات مختلفة وتستهدف منصات متعددة وتتناسب مع أنواع ومستويات ألعاب مختلفة، ويعتمد اختيار محرك الألعاب المناسب على متطلبات اللعبة التي تود تطويرها مثل نوع اللعبة، والمنصة التي تستهدفها، ونوع الجهاز الذي ستعمل عليه، وغيرها من العوامل. وإليك قائمة بأبرز محركات الألعاب: محرك الألعاب Unity Engine محرك الألعاب Unreal Engine محرك الألعاب Godot Engine محرك الألعاب GameMaker Engine محرك الألعاب Open 3D محرك الألعاب jMonkey Engine محرك الألعاب FrostBite لنتعرف بمزيد من التفصيل على كل محرك من بين هذه المحركات ونكتشف أبرز مميزاته وعيوبه. 1. محرك الألعاب Unity Engine محرك يونتي Unity Engine هو واحد من أشهر محركات الألعاب طورته شركة Unity Technologies لتصميم ألعاب فيديو متكاملة الوظائف ومتعددة المنصات، يتميز محرك ألعاب Unity بالمرونة وسهولة الاستخدام ويناسب مطوري الألعاب المبتدئين والخبراء على حد سواء، كما أنه يعمل على كافة أنواع الأجهزة سواء أجهزة الحاسوب أو الجوال أو وحدات تحكم الألعاب الأخرى ويتوافق مع مختلف أنظمة التشغيل، وهو خيار مثالي لبرمجة ألعاب الهواتف المحمولة وألعاب الويب وسطح المكتب خفيفة الحجم. كما يوفر محرك Unity العديد من الميزات والوظائف المضمنة التي تساعد المطورين في تصميم ألعاب احترافية، مثل منصة تطوير ثنائية وثلاثية الأبعاد لبرمجة الألعاب، وميزات اكتشاف الاصطدام والفيزياء المضمنة، وعرض رسومات الألعاب بشكل ممتاز حتى على الأجهزة ذات الجودة المنخفضة، كما يوفر متجر ألعاب خاص به Unity Asset Store ليتيح للمطورين إنشاء وبيع الألعاب ومحلقاتها ومواردها المختلفة مثل التأثيرات الصوتية والبصرية والبيئات ثنائية وثلاثية الأبعاد وغيرها من العناصر التي تحتاجها لتصميم وبرمجة ألعاب احترافية بسرعة وبأقل جهد. يتميز محرك ألعاب يونيتي Unity عن غيره من محركات الألعاب بأنه يستخدم عدة صناعات أخرى غير صناعة الألعاب مثل التصوير السينمائي والهندسة المعمارية وتصميم السيارات وغيرها من الصناعات، وهو متوفر بإصدار شخصي مجاني Unity Personal مخصص للأفراد والهواة والمؤسسات الصغيرة للمشاريع التي تدرّ أرباحًا تقل عن 200000 دولار سنويًا، وإصدار آخر احترافي Unity Pro تبلغ تكلفته الشهرية 185 دولار وتكلفته السنوية 2040 دولار -أثناء كتابة المقال- لكل مقعد أو مستخدم، مع فترة تجريبية مجانية مدتها 30 يومًا. وقد أعلنت شركة Unity Technologies مؤخرًا فرض رسوم جديدة على المطورين بداية من الأول من يناير 2024 لزيادة ربحيتها وبأنها ستتقاضى رسومًا من المطورين في كل مرة يتم فيها تنزيل ألعابهم أي أن الرسوم ستفرض على المطور إما عندما تتجاوز إيرادات لعبته مبلغ 200000 دولار سنويًا أو عندما يبلغ عدد مرات تثبيت لعبته 200000 تثبيت لكنها تراجعت سريعًا عن قرار فرض رسوم مقابل عدد مرات التثبيت بعد أن تعرضت لانتقادات واحتجاجات واسعة من قبل المطورين وصناع الألعاب الذين يستخدمون محرك الألعاب يونتي Unity، ووضحت أن القرار سيبطق على الإصدارات المستقبلية من المحرك فقط في حال اختار المطور تحديثه. من أشهر الألعاب المطورة باستخدام محرك ألعاب Unity نذكر: Pokémon Go Cuphead Angry Birds 2+ Temple Run Monument Valley Lara Croft Go Pillars of Eternity 2. محرك الألعاب Unreal Engine محرك ألعاب أن ريل Unreal Engine هو محرك تطوير ألعاب مفتوح المصدر طورته شركة Epic Games عام 1988وهو يستخدم لإنشاء مختلف أنواع الألعاب الإلكترونية متعددة المنصات، ويتميز بكونه سهل الاستخدام وموثق بشكل جيد وواضح حيث يوفر للمطورين مجموعة شاملة من الموارد والشروحات التعليمية التي تساعدهم على تعلم استخدام المحرك بسرعة، إلى جانب ذلك يوفر مكتبة ألعاب متنوعة يمكن للمطور أن يحمِّل ما يشاء منها من مصادر ويسرّع تطوير ألعابه. لا يستخدم محرك Unreal عادة في تصميم وبرمجة الألعاب البسيطة فهو يعتمد على لغة البرمجة C++ لإضافة المنطق للألعاب وهي لغة صعبة نسبيًا للمبتدئين، لذا يناسب هذا المحرك مطوري الألعاب المحترفين الذين يستفيدون من أدائه العالي في برمجة الألعاب الثقيلة الحجم ذات الرسومات المتقدمة القريبة للواقع، والألعاب متعددة اللاعبين، وألعاب الواقع الافتراضي VR وألعاب الذكاء الاصطناعي التي تتطلب الكثير من الموارد وتعمل عليها فرق تطوير كبيرة والتي تعرف باسم ألعاب AAA Games كما يستخدم كذلك في مجالات أخرى مثل صناعة السيارات حيث يساعد في إنشاء تصاميم ثلاثية الأبعاد مفصلة وتفاعلية للسيارات ومحاكاتها قبل البدء بتصنيعها مما يساعد في اختيار التصميم الأنسب. يمكن تنزيل محرك Unreal Engine واستخدامه بشكل مجاني والبدء باستخدامه لتطوير ألعابك الخاصة دون دفع أي تكاليف، لكنك ستدفع رسوم ملكية بنسبة تساوي 5% عندما تحقق لعبتك أرباح تزيد على مليون دولار. من أشهر الألعاب المطورة باستخدام محرك ألعاب Unreal نذكر: Fortnite PUBG Gears of War Mortal Kombat Borderlands Tetris Effect Yoshi's Crafted World 3. محرك الألعاب Godot Engine محرك الألعاب جودو Godot Engine هو برنامج مفتوح المصدر لتصميم الألعاب طوره المبرمجان الأرجنتينيان جوان لينيتسكي Juan Linietsky وأرييل مانزور Ariel Manzur عام 2014 بهدف تطوير محرك فعال ومرن يناسب المطورين المبتدئين والمحترفين على حد سواء ويسمح لهم بإنشاء وتخصيص ألعابهم بسهولة كبيرة، حيث يعتمد محرك ألعاب جودو على لغة البرمجة GDScript وهي لغة بسيطة وسهلة المقروئية تشبه في تركيبتها لغة بايثون python، كما يسمح للمطورين بكتابة منطق ألعابهم بلغات برمجة أخرى مختلفة مثل C++ أو C# أو روبي Ruby. يتضمن محرك ألعاب جودو العديد من الميزات أبرزها توفير بيئة تطوير ألعاب ثنائية وثلاثية الأبعاد، وأدوات لإنشاء وإخراج الرسومات وعرضها، ومحرر شيفرات مدمج، ومشغل للملفات الصوتية، ومحرك فيزياء، وغيرها من الميزات ضمن واجهة رسومية بسيطة وسهلة الاستخدام تعتمد السحب والإفلات، كما يدعم محرك ألعاب جودو منصات متعددة فهو يسمح بتصميم ألعاب متوافقة مع أنظمة ويندوز ولينكس وماك وأندرويد Android وآي أو إس iOS كما يسمح بتصدير الألعاب بصيغة HTML5 لتناسب الويب. يعتمد محرك الألعاب جودو على مفهوم العقد Nodes والمشاهد scenes، فاللعبة في جودو ليست سوى مجموعة من مشهد أو مجموعة من المشاهد وكل مشهد عبارة عن شجرة من العقد، تشكل العقد الوحدات أو اللبنات الأساسية لبناء اللعبة والعقدة هي كائن يمثل وظيفة ما فقد تعرض العقدة الرسومات، أو تشغل الرسوم المتحركة، أو تشغل صوت أو تمثل نموذجًا ثلاثي الأبعاد لكائن ما لذا تضاف العقد للعبة حسب الوظيفة التي تحتاجها، كما تحتوي العقدة على مجموعة من الخصائص لتخصيص سلوكها ويمكنك تجميع العقد ودمجها لإنشاء عقد أكبر وأكثر تعقيدًا. دورة تطوير الألعاب ابدأ رحلة صناعة الألعاب ثنائية وثلاثية الأبعاد وابتكر ألعاب ممتعة تفاعلية ومليئة بالتحديات. اشترك الآن يعد محرك ألعاب جودو المحرك المفضل للمطورين ذوي الميزانية المحدود الراغبين في دخول عالم تطوير الألعاب لكونه يوفر حلًا مجانيًا قويًا لإنشاء ألعاب احترافية، ولكونه محرك مفتوح المصدر فهو يملك مجتمع دعم نشيط يضم آلاف المطورين الذين يوفرون الكثير من الشروحات والدروس التعليمية والنصائح ومنتديات الدعم التي تساعدك في حال واجهتك أي مشكلة في تطوير ألعابك. من أبرز الألعاب المطورة باستخدام محرك ألعاب Godot: Kingdoms of the Dump Cruelty Squad Dome Keeper Cassette Beasts Luck Be a Landlord Commander Keen in Keen Dreams 4. محرك الألعاب GameMaker محرك جيم ميكر GameMaker هو محرك ألعاب طوره بالأساس مبرمج الألعاب الهولندي مارك أوفرمارس Mark Overmars وصدر لأول مرة في 15 نوفمبر عام 1999 تحت اسم Animo وكان في بدايته عبارة عن أداة رسومية بإمكانيات محدودة، وبعدها منذ عام 2007 تولت شركة تطوير البرمجيات YoYo Games وأدخلت عليه تحسينات كثيرة تحويل إلى محرك ألعاب مخصص لإنشاء الألعاب ثنائية الأبعاد يستهدف المبتدئين وغير التقنيين حيث يسمح لهم ببرمجة الألعاب بطريقة سهلة وسريعة دون الحاجة لكتابة أي كود برمجي من خلال واجهة رسومية سهلة الاستخدام، لكن بالطبع فإن امتلاك خلفية برمجية سيمكنك من استخدام المحرك بكفاءة أعلى وتطوير الألعاب بشكل أفضل. يملك محرك GameMaker لغة برمجة مضمنة خاصة به تسمى لغة GML تعتمد على لغات جافا سكريبت و C++ و C# التي يتم دمجها بطرق محددة وبالتالي إذا كان لديك أساس برمجي جيد في هذه اللغات سيكون من السهل عليك تعلم هذه اللغة. يتضمن GameMaker العديد من الميزات والوظائف المدمجة مثل محرر صور لإنشاء السبرايت sprites (وهي الرسومات أو النقوش المتحركة التي تظهر ضمن اللعبة) كما يتيح لك استيراد الصور المنشأة في محرر خارجي وتحويلها إلى كائنات ضمن اللعبة وإضافة إجراءات أو وظائف برمجية لها وهو يدعم عشرات أنظمة تشغيل ويندوز ولينكس وماك وأندرويد و iOS إلى جانب منصات الألعاب مثل بلاي ستيشن PlayStation وإكس بوكس Xbox وسويتش Switch وغيرها. يمكنك تحميل محرك الألعاب GameMaker مجانًا لكنك مجبر على الترقية لأحد الخطط المدفوعة إذا كنت ترغب في الاستفادة منه بشكل فعلي وتصدير ألعابك إلى منصات معينة، حيث تبدأ الخطط المدفوعة من 5 دولارات شهريًا يناسب محرك الألعاب GameMaker إنشاء وتطوير أنواع مختلفة من الألعاب مثل الألعاب الحركية من نمط أعلى لأسفل top-down action games وألعاب الألغاز، وألعاب فن البكسل Pixel Art. ومن أشهر الألعاب المطورة باستخدام المحرك GameMaker: Post Void Undertale Hyper Light Drifter Spelunky 5. محرك الألعاب Open 3D محرك أوبن ثري دي Open 3D أو اختصارًا O3DE هو محرك تطوير ألعاب ثلاثي الأبعاد مفتوح المصدر متكامل الميزات طورته مؤسسة Open 3D Foundation حيث يتيح للمطورين إنشاء ألعاب عالية الدقة AAA وعوالم ثلاثية الأبعاد عالية الدقة ذات جودة سينمائية وهو إصدار محدث من محرك ألعاب أمازون Amazon Lumberyard المشتق من محركها السابق CryEngine ويوزع بموجب ترخيص Apache 2.0 ويدعم محرك O3DE حاليًا نظامي التشغيل ويندوز ولينكس فقط. أطلق الإصدار الأولي من محرك الألعاب Open 3D في يوليو/تموز عام 2021 وصدر أول إصدار مستقر منه في 12 مايو/أيار عام 2022 ورغم حداثته إلا أنه تمكن من منافسة محركات الألعاب التقليدية مثل Unity وUnreal Engine فقد احتفظ بأفضل مميزات المحرك Amazon Lumberyard وأضاف له العديد من المميزات مثل واجهة مستخدم قابلة للتوسيع وحزم برمجية جاهزة والعديد من المميزات والمكونات التي يمكن أن تختار ما تحتاج منها وتضيفه للعبتك دون الحاجة لتضمين المكونات غير الضرورية. يدعم Open 3D Engine لغات البرمجة C++ وبايثون Python ولوا Lua وهو مجاني بالكامل ولا يتطلب دفع أي رسوم أو التزامات تجارية كما يتضمن العديد من الميزات مثل عارض متعدد المنصات يسمى Atom يمكن توسيعه ليناسب متطلبات لعبتك ودعم المحاكاة الفيزيائية لإضافة الواقعية إلى عناصر اللعبة، كما يوفر أسلوبين لإضافة المنطق لألعابك إما من خلال واجهة مرئية تسمى Script Canvas أو من خلال لغة برمجة سريعة وخفيفة الوزن تسمى Lua ورغم أن شعبيته لاتزال أقل من غيره من محركات الألعاب نظرًا لحداثته إلا أنه ينبئ بمستقبل واعد. لازال محرك O3DE حديث العهد وعدد الألعاب المطور باستخدامه محدود ومن أشهر الألعاب المطورة باستخدام O3DE نذكر: Deadhaus Sonata Planet Survival Game Planet Storm 6. محرك الألعاب jMonkeyEngine jMonkeyEngine أو ما يعرف اختصارًا بـ jME هو محرك مفتوح المصدر يعتمد على لغة البرمجة جافا Java يستخدم لتطوير الألعاب ثلاثية الأبعاد طور الإصدار الأول منه Mark Powell عام 2003 وبعدها ساهم عدد كبير من الأشخاص بشكل كبير في تطوير هذا المحرك، والإصدار الحالي منه هو 3.6. يتميز محرك jMonkeyEngine بسهولة استخدامه وملائمته للمبتدئين توثيقه الجيد، والميزة المهمة هي أنه محرك متعدد المنصات يمكن استخدامه لتصميم ألعاب تعمل على مختلف المنصات وأنظمة التشغيل مثل ويندوز Windows ولينكس Linux وماك macOS وراسيبيري باي Raspberry Pi وأندرويد Android و آي أو إس iOS لكنه يتطلب وجود معرفة برمجية لتسهيل تطوير الألعاب. يستخدم هذا المحرك مكتبة Lightweight Java Game Library أو اختصارًا LWJGL بشكل افتراضي لإخراج الرسومات وعرضها ويتطلب تثبيته على جهازك وجود بطاقة فيديو متوافقة مع OpenGL 2 وتثبيت عُدة تطوير جافا بإصدار JDK 6 أو أعلى. يتميز محرك ألعاب jMonkeyEngine بسهولة استخدامه وتعلمه لذا فهو يستخدم من قبل العديد من المؤسسات التعليمية واستوديوهات الألعاب التجارية، ومن أشهر الألعاب المطورة باستخدامه: Skullstone Mythruna Boardtastic 2 Lightspeed Frontier 3079 3089 7. محرك الألعاب Frostbite فروست بايت Frostbite هو محرك ألعاب مكتوب بلغة C++ و C# طورته شركة DICE الشهيرة ثم استحوذت عليه شركة Electronic Arts لاستخدامه في تطوير ألعابها أي أنه محرك داخلي غير مرخص للعامة ومخصص حصريًا لتطوير ألعاب Electronic Arts لكننا ذكرناه لشهرة الألعاب المطورة باستخدامه وخصيصًا الألعاب المعتمدة على مبدأ إطلاق النار من منظور الشخص الأول First-person shooter أو اختصارًا FPS ومن أبرزها لعبة كرة القدم فيفا كما يمكن تشغيل الألعاب المطورة باستخدامه على نظام التشغيل ويندوز وأجهزة بلاي ستيشن 3 وبلاي ستيشن 4 وأجهزة Xbox 360 و Xbox one. يوفر محرك Frostbite العديد من الميزات من بينها محرك فيزياء ومحرك رسومات قادر على عرض رسوم متحركة عالية الجودة وتوفير صوت HDR يغير مستوى المؤثرات الصوتية داخل اللعبة ويركز على الأصوات الأكثر أهمية، مثل أصوات إطلاق النار وسير المركبات الأمر الذي يجعل الألعاب نابضة بالحياة وقريبة للواقعية. ومن أشهر الألعاب المطورة باستخدام محرك Frostbite نذكر: سلسلة ألعاب FIFA سلسلة ألعاب Star wars سلسلة ألعاب Battlefield Need For Speed Army of Two الخلاصة تعرفنا في مقال اليوم على أهم محركات الألعاب أو البرامج المستخدمة في تصميم وتطوير الألعاب وتعرفنا على أبرز مميزاتها ولغات البرمجة التي تستخدمها والمنصات والبيئات التي تدعمها، لتختار من بينها البرنامج المناسب لميزانيتك ومتطلبات لعبتك ومستوى خبرتك البرمجية وابدأ رحلة إنشاء الألعاب فهي مجال ممتع ومجزي بذات الوقت. اقرأ أيضًا تعرف على أشهر لغات برمجة الألعاب برمجة لعبة متاهة باستخدام محرك يونيتي Unity نبذة عن صناعة الألعاب ومحرك Unity3D مدخل إلى صناعة ألعاب المتصفح
- 1 تعليق
-
- 1
-
نسلط الضوء في مقال اليوم على فوائد تعلم البرمجة التي تشكل حجر الأساس لكافة التطبيقات والبرمجيات التي نستخدمها يوميًا سواء على أجهزة الحواسيب أو الجوالات أو غيرها من الأجهزة الذكية القابلة للبرمجة، فبدون البرمجة لن تكون كل هذه الأجهزة قادرة على تلبية متطلباتنا. إذا كنت مهتمًا بالتعرف أكثر على ماهية البرمجة والمميزات التي ستحصل عليها عند تعلم البرمجة واكتساب القدرة على كتابة الشيفرات البرمجية وفهمها على الصعيد الشخصي والعمل فتابع قراءة المقال للنهاية. ما هي البرمجة؟ قبل أن نشرح أهمية تعلم البرمجة دعنا نوضح بداية ما هي البرمجة بالتحديد وما هي استخدامات البرمجة ولماذا ينبغي عليك تعلمها؟ يمكنك التفكير في البرمجة على أنها طريقة تمكننا نحن البشر من إرسال التعليمات لأجهزة الحاسوب باستخدام لغة يمكن للحواسيب فهمها تسمى لغة البرمجة، وبعبارة أخرى البرمجة هي وسيلة للتخاطب مع الأجهزة الإلكترونية المختلفة مثل الحواسيب أو الهواتف الذكية أو أي أجهزة قابل للبرمجة وجعلها تحل مشكلة ما أو تنجز مهمة محددة. تتعدد أنواع لغات البرمجة مثل بايثون وجافا سكريبت وجافا و C# وروبي …إلخ. لكن يمكن القول بأن كل هذه اللغات تتشارك نفس المفاهيم فالبرامج الحاسوبية ما هي إلا شيفرات برمجية مكونة من سلسلة مرتبة من الأوامر والتعليمات اللازمة لتأدية مهمة أو حل مشكلة ما، ثم يقرأ الحاسوب هذه التعليمات وينفذها واحدة تلو الأخرى ليعطينا النتائج المطلوبة. يتطلب تعلم البرمجة معرفة أساسية في عدة مواضيع منها الرياضيات والجبر والتفكير المنطقي، كما يحتاج امتلاك قدرة على تحليل المشكلات وفهمها بشكل صحيح وتحويلها إلى خوارزميات ثم البدء ببرمجة هذه الخوارزميات باستخدام لغات البرمجة وهذا يعني أنك قبل أن تتمكن من كتابة الشيفرات البرمجية يجب أن تمتلك تصورًا واضحًا لحل المشكلة بالشكل الصحيح. بناء على ذلك، يعتبر تعلم الخوارزميات أحد الخطوات الأساسية في تعلم البرمجة فإذا لم يكن لديك خوارزمية صحيحة تحقق الهدف المطلوب فلن يكون لديك برنامج صحيح، وتُعرَّف الخوارزمية بأنها تسلسل منطقي يوضح كافة الخطوات اللازمة لحل مشكلة أو مسألة ما وهو مفهوم لا يقتصر استخدامه على البرمجة أو تطوير البرامج بل يمكنك تطبيقه لحل أي مشكلة حياتية تواجهك، ويمكنك مطالعة المزيد حول الخوارزميات وطرق كتابتها في مقال المرجع الشامل إلى تعلم الخوارزميات للمبتدئين. مستقبل البرمجة ازدادت أهمية تعلم البرمجة اليوم أكثر من أي وقت مضى نظرًا للتطور التقني الحاصل في مجال التقنية والبرمجيات والذكاء الاصطناعي فلا يكاد يوجد عمل اليوم لا يتطلب استخدام البرامج الحاسوبية ما جعل البرمجة أحد المهارات الأساسية المطلوبة بكثرة في سوق العمل. أضف إلى ذلك فإن تعلم البرمجة سيحولك من مستهلك للتقنية إلى منتج لها ويكسبك القدرة على التعامل مع الأجهزة والبرمجيات باحترافية ومرونة كما يكسبك القدرة على إنتاج حلول تقنية وبرامج مفيدة لحل المشكلات التي تواجهها ويطور مهاراتك في التفكير. لذلك السبب، نجد أن معظم البلدان اليوم ومن بينها دول عربية قد أدركت فوائد تعلم لغات البرمجة و أدرجتها في المناهج الدراسية بدءًا من المراحل الابتدائية المبكرة لتهيئة الجيل الجديد للمستقبل وتوسيع أفق تفكيرهم ومساعدتهم على مواكبة التطور التقني بسهولة فمن يتعلم البرمجة في سن مبكرة سيفهم التقنية ويتعامل معها بشكل أفضل من أولئك الذين لا يتعلمونها. فوائد تعلم لغات البرمجة إن فوائد تعلم البرمجة كثيرة منها مساعدتك على تأدية الأعمال بكفاءة أكبر وتضمن لك مستقبلًا واعدًا كما تقدم لك العديد من الفوائد الأخرى على صعيد العمل والحياة الشخصية. من أهم فوائد تعلم البرمجة: ضمان الحصول على عمل الحصول على رواتب مجزية إمكانية العمل عن بعد محو الأمية الرقمية مواكبة التطور التقني تحسين التفكير والقدرة على حل المشكلات أتمتة الأعمال اليومية وزيادة الإنتاجية تحسين مهارات التواصل اكتساب الصبر والتركيز لنناقش بمزيد من التفصيل كل فائدة من الفوائد الواردة أعلاه! ضمان الحصول على عمل نظرًا للطلب الكبير على المبرمجين بمختلف تخصصاتهم فإن أحد أهم فوائد تعلم البرمجة تحقيق الأمان الوظيفي وضمان العثور على فرصة مناسبة في سوق العمل لذا ابدأ من الآن بتعلم البرمجة كي تضمن العثور على الكثير من الفرص في حياتك المهنية. وحتى لو لم تكن ترغب بالعمل في مجال التقنية وتطوير البرمجيات إلا أن تعلم البرمجة هو مهارة أساسية تفيدك في كل مجال فكل الصناعات اليوم تعتمد على الحواسيب للقيام بالأعمال وترغب بالتأكيد في توظيف شخص يعرف كيفية عمل هذه الحواسيب ويستخدمها باحترافية. الحصول على رواتب مجزية تعد البرمجة من أكثر المهن المربحة التي تضمن لك أجرًا مرتفعًا لا سيما إذا كنت تملك الخبرة والمهارة الكافية ولديك معرض أعمال قوي فالطلب على المطورين والمبرمجين من مختلف التخصصات في تزايد مستمر. وبالرغم من أن رواتب المبرمجين تختلف حسب الموقع الجغرافي وعدد سنوات الخبرة والتخصص البرمجي إلا أن متوسط رواتب المبرمجين بشكل عام يبقى أعلى من متوسط الرواتب لبقية المهن. إمكانية العمل عن بعد أحد فوائد تعلم البرمجة الجلية التي ستجنيها من تعلمها والعمل بها هي حرية اختيار العمل عن بعد من داخل منزلك أو أي مكان هادئ تفضله والتعاقد مع أي عميل حول العالم أو العمل الحر بشكل مستقل خلال أوقات عمل مرنة لا تلزمك بساعات محددة يفرضها عليك صاحب العمل. فإذا كنت ممن يفضل العمل عن بعد على بيئات العمل التقليدية وتجد أن هذا يساهم في زيادة تركيزك وإنتاجيتك ومردودك فقرار تعلم البرمجة لبدء مهنة جديدة هو فرصتك لتحقيق هذا الأمر. محو الأمية الرقمية يمكن القول أن عدم القدرة على كتابة وفهم التعليمات البرمجية في عصرنا الحالي يكافئ عدم القدرة على القراءة والكتابة من سنوات قليلة مضت، فمعظم الوظائف اليوم تتطلب معرفة أساسية بالتعامل مع الحاسوب واستخدام التطبيقات والبرامج المختلفة. فإذا كنت لا تريد أن توصف بالجهل الرقمي أنصحك بأن تبدأ بتعلم البرمجة وتفهم كيفية عمل التطبيقات والبرامج التي تستخدمها في حياتك اليومية وتكون مرنًا ومتكيفًا مع المتطلبات المتغيرة في عالم التقنية سريع التطور. مواكبة التطور التقني من منا اليوم لا يستخدم التقنيات والتطبيقات والأجهزة الذكية! بدءًا من التسوق عبر الإنترنت ودفع الفواتير ووصولًا للسيارات المبرمجة ذاتية القيادة والروبوتات الذكية التي أصبحت تنوب عنا في أداء الأعمال اليومية. فقد أصبح كل شيء حولنا اليوم مزودًا بالتقنيات الحديثة وتعلم البرمجة يكسبنا القدرة على فهم طريقة عمل هذه التقنيات والتآلف معها بسرعة أكبر. تحسين التفكير والقدرة على حل المشكلات فتعلم إحدى لغات البرمجة شبيه بتعلم لغة ثانية ومن شأنه أن يزيد قدرات عقلك ويوسع مداركك، كما أن تعلم البرمجة يجعل تفكيرك أكثر تنظيمًا وإبداعًا ويكسبك مرونة أكبر في التعامل مع أي مشكلة تواجهك وحلها بذكاء، وهذا لا ينطبق على المشكلات التقنية فقط بل ينعكس على كافة مجالات الحياة والعمل. فالبرمجة مهارة تفيد الجميع وليست حكرًا على المبرمجين، وهنا تحضرني مقولة شهيرة لمؤسس شركة آبل ستيف جوبز: أتمتة الأعمال وزيادة الإنتاجية من فوائد تعلم البرمجة إكسابك القدرة على أتمتة الأعمال والمهام اليدوية المتكررة من خلال كتابة أكواد برمجية تنجز لك هذه المهام بسرعة ودون أخطاء وبهذا يمكنك استثمار وقتك وزيادة إنتاجيتك. على سبيل المثال إذا احتجت لتحميل مجموعة كبيرة من الملفات من موقع ما أو احتجت لإعادة تسمية عدة مستندات أو تصنيف رسائل البريد الإلكتروني الخاصة بك في مجلدات مخصصة فكل ما عليك هو كتابة بضعة أسطر من التعليمات البرمجية لإنجاز العمل بدلًا من قضاء ساعات في تأديته بصورة يدوية. تحسين مهارات التواصل تحتاج في مجال العمل البرمجي للتواصل مع أعضاء فريق التطوير أو مع زملاء في العمل من أقسام مختلفة أو ربما مع عملاء مختلفين متواجدين في أي مكان حول العالم إذا كنت تعمل بشكل مستقل وتعلم البرمجة يساعدك على تحسين مهارات التواصل وتوصيل الأفكار المعقدة للآخرين. حتى لو لم تكن تنوي احتراف البرمجة فإن أحد فوائد تعلم البرمجة هو مساعدتك على التواصل مع الموظفين التقنيين في بيئة عملك وفهمهم والنقاش معهم بشكل أفضل. تعلم الصبر والتركيز مهنة البرمجة من أكثر المهن التي تتطلب الهدوء والصبر والتركيز فعند العمل على حل مشكلة برمجية قد تحتاج لقضاء ساعات في كتابة الشيفرات البرمجية وحل الأخطاء وتحسين النتائج حتى تحصل على النتيجة المرجوة. ستجد بعد مدة من ممارسة البرمجة أنك تميل للصبر والهدوء عندما تواجه أي عقبات أو صعوبات في عملك أو حياتك اليومية وهذه مهارة مهمة نحتاجها جميعًا. نصائح لتعلم البرمجة بكفاءة بعد أن تعرفت على فوائد تعلم البرمجة لا بد أنك متحمس الآن لبدء رحلة تعلم البرمجة واحترافها لذا سأختم المقال بجملة من النصائح السريعة التي تساعدك على تعلم البرمجة بسرعة وتجنبك الفشل. البرمجة ليست مجرد كتابة شيفرات برمجية بل هي تعلم طريقة التفكير بطرق مبتكرة وحل المشكلات المعقدة لذا حسّن مبادئ التفكير المنطقي والخوارزمي لديك وجرب حل التحديات والألغاز البرمجية قبل أن تبدأ تعلم إحدى لغات البرمجة. إليك جملة نصائح لتعلم البرمجة بكفاءة: ابدأ بتعلم لغة برمجة سهلة وتناسب المبتدئين مثل بايثون Python أو جافا سكريبت JavaScript أو روبي Ruby كما يمكنك البدء بإحدى لغات البرمجة المرئية المعتمدة على الكتل مثل لغة سكراتش التي تعلمك البرمجة بطريقة ممتعة ومسلية. تعلم أساسيات البرمجة مثل الشروط والحلقات والمتغيرات والدوال وهياكل البيانات data structures وتأكد من إتقانها قبل الانتقال لمواضيع أكثر تقدمًا. ستجد الكثير من مصادر التعلم المتنوعة عبر الإنترنت، وهذا أمر رائع لكنه قد يشتتك لذا احرص على اتباع مصدر محدد وموثوق والتزم بالتعلم منه وفي حال واجهت صعوبة في فهم أمر ما يمكنك البحث عن مصادر إضافية. احرص على التطبيق العملي وممارسة كل ما تتعلمه فالاكتفاء بالمعلومات النظرية ومشاهدة الدروس ومقاطع الفيديو لن يساعدك على تعلم البرمجة بطريقة احترافية. لا تتوقف عن التعلم وتطوير مهاراتك والاطلاع على أحدث الأدوات والتقنيات واستخدامها في مشاريعك البرمجية. الخلاصة البرمجة كنز ثمين لمن يتعلمها ومهارة قوية تضمن مستقبلك وتهيئك لمواكية التطورات التقنية المتسارعة والنجاح في مجالات العمل المختلفة، ونأمل أن يكون هذا المقال قد ساعدك في التعرف على أهم فوائد تعلم البرمجة والمميزات التي ستعود عليك إذا احترفتها. ابدأ من الآن خطوتك الأولى لتعلم البرمجة فقد تكون أنت من سيطور برامج رائعة تخدم البشرية! اقرأ أيضًا مدخل إلى الخوارزميات أسهل لغات البرمجة أهمية البرمجة وأهم لغات البرمجة المرجع الشامل إلى تعلم لغة بايثون
-
تتنوع لغات البرمجة وتتعدد استخداماتها لتناسب التخصصات البرمجية المختلفة، فبعض لغات البرمجة تفيد لتكون لغات برمجة ألعاب أكثر من غيرها، وبعضها الآخر يناسب تطوير التطبيقات، ومنها ما يلائم الذكاء الاصطناعي، وبعضها ينفع لتحليل البيانات أو الويب، فلكل تخصص برمجي لغات وتقنيات خاصة به، وفي مقال اليوم سنركز على لغات برمجة الألعاب. فإذا كنت ترغب في تعلم برمجة الألعاب، وتتساءل ما هي أفضل لغات برمجة الألعاب يمكنك تعلمها وما هي أبرز مميزاتها، وما الوظائف والمكتبات والأدوات المساعدة التي توفرها لمطوري الألعاب وما الخطوات الصحيحة لبرمجة الألعاب؟ فهذا المقال لك. ما هي برمجة الألعاب؟ برمجة الألعاب هي عملية تحويل الألعاب من فكرة مجردة إلى برنامج أو تطبيق يمكنك اللعب به على أحد المنصات وذلك باستخدام أدوات وتقنيات مساعدة كبرامج التصميم ومحركات الألعاب، أو باستخدام لغات البرمجة في حال رغبت بتطوير لعبتك من الصفر وهذا صعب جدًا وخاصة في الألعاب المتقدمة. تمر برمجة الألعاب عادة بمجموعة من المراحل تشمل: كتابة فكرة اللعبة وشخصياتها وطريقة اللعب وقواعد الربح والخسارة. التخطيط للعبة وكتابة سيناريو اللعبة وطريقة اللعب بها والموارد اللازمة لتنفيذها ونمط رسوماتها والجمهور المستهدف منها والمنصة المستهدفة التي ستعمل عليها. البدء ببرمجة اللعبة وتنفيذ فكرتها باستخدام الأدوات والتقنيات المناسبة كمحركات الألعاب وبرامج تصميم الرسومات ولغات البرمجة. اختبار اللعبة والتأكد من أنها تعمل بشكل صحيح وإصلاح أي أخطاء أو عيوب إن وجدت. نشر اللعبة على المنصة المستهدفة سواء الحاسوب أو الجوال أو الويب أو بلاي ستيشن PlayStation أوإكس بوكس Xbox أو غيرها. صيانة اللعبة ودعمها وتحديثها وتحسينها بصورة مستمرة وإصلاح أي مشكلات تظهر لاحقًا. يمكن أن يقوم شخص واحد بكل هذه المهام في حال برمجة الألعاب البسيطة، لكن في حال برمجة الألعاب الاحترافية المتكاملة التي تمتلك بيئة ضخمة وعدة شخصيات وأحداث وقواعد فهذه تعمل عليها فرق عمل تضم مبرمجين ومصممي رسوميات ومهندسي صوت وكتاب وغيرهم. ما أفضل لغات برمجة الألعاب؟ هناك العديد من لغات برمجة الألعاب، ومن أبرز هذه اللغات: C++ C# Java Python HTML JavaScript Lua Swift لنتناول بمزيد من التفصيل كل لغة من هذه اللغات وأهميتها في برمجة الألعاب ونكتشف أبرز الألعاب المطورة باستخدامها. 1. لغة برمجة C++ تعد لغة C++ من أشهر لغات برمجة الألعاب فهي لغة قوية وسريعة تدعم عرض الرسومات المعقدة ومعالجة كمية كبيرة من البيانات، كما توفر العديد من أدوات تصحيح الأخطاء التي تكتشف المشكلات البرمجية وتساعد على تحسين أداء التطبيقات المطورة باستخدامها. وهي لغة منخفضة المستوى فهذا يجعلها أقرب إلى طبقة العتاد ويساعد المطورين على برمجة ألعاب سريعة وعالية الأداء تستفيد من موارد الجهاز بالشكل الأمثل كما أنها لغة برمجة كائنية التوجه OOP فهي تمكن المطورين من تنظيم التعليمات البرمجية ضمن مكونات قابلة لإعادة الاستخدام وسهلة الصيانة. ومن المميزات البارزة للغة C++ أنها اللغة التي يستخدمها محرك الألعاب الشهير Unreal Engine كما تدعمها معظم محركات الألعاب الأخرى مثل Godot و CryEngine و Source، كما أنها لغة قابلة للتشغيل عبر منصات متعددة وتملك مجتمع دعم كبير عبر الإنترنت وتوفر الكثير من المكتبات والأطر المساعدة في مجال تطوير الألعاب، لكنها لغة صعبة التعلم لذا لا يفضلها المطورون المبتدئون في برمجة الألعاب. ومن أشهر الألعاب التي طورت باستخدام لغة C++ نذكر لعبة Counter Strike و World of Warcraft و King Quest. 2. لغة برمجة C# تتميز لغة C# بكونها واحدة من أشهر لغات برمجة الألعاب فهي لغة برمجة قوية وكائنية التوجه oop طورتها مايكروسوفت كجزء من إطار عمل دوت نت NET. وهي توفر الكثير من المزايا المتقدمة وتتيح للمبرمج الألعاب التحكم في موارد الجهاز كما توفر مجموعة كبيرة من المكتبات والأدوات اللازمة لتطوير التطبيقات المختلفة، وتتوافق لغة C# مع محرك الألعاب الشهير Unity Engine وهو محرك ألعاب شائع يفضله العديد من مطوري الألعاب ويمكن استخدامها مع محركات ألعاب أخرى مثل محرك Unreal Engine ومحرك Godot. تعد لغة C# من اللغات الملائمة جدًا لبرمجة وتطوير الألعاب فهي تتشابه في ميزاتها مع لغة C++ في السرعة والفعالية لكنها أبسط وأسهل منها في التعلم والاستخدام، ورغم كونها لا توفر نفس مستوى التحكم الدقيق بالعتاد الذي توفره لغة C++ لكنها لغة شائعة في برمجة الألعاب وتسمح للمطورين بالتركيز على إنشاء ألعاب عالية الجودة دون الغوص في تفاصيل فنية معقدة. ومن أشهر الألعاب المطورة باستخدام C# نذكر لعبة Stardew Valley و HearthStone و Cuphead و Dead Island. 3. لغة Java تعد لغة جافا Java من أشهر لغات البرمجة متعددة الأغراض وهي تستخدم في العديد من المجالات ومن ضمنها استخداماها في برمجة الألعاب، ومن أبرز مميزات لغة جافا هو كونها لغة سهلة التعلم وتدعم ميزات تساعد على زيادة سرعة وكفاءة البرامج مثل تعدد الخيوط threads والمعالجة على التوازي، كما توفر مكتبات وأطر تطوير ألعاب قوية مثل libGDX للألعاب ثنائية الأبعاد و jMonkeyEngine للألعاب ثلاثية الأبعاد، ويمكن تشغيل الألعاب المطورة باستخدامها على العديد من المنصات بفضل ميزة آلة جافا الافتراضية JVM. قد لا تكون لغة جافا شائعة في مجال صناعة الألعاب مثل C++ أو C# لكن العديد من الألعاب الكبيرة متعددة المنصات مثل ماين كرافت Minecraft الشهيرة لا تزال تستخدمها، ومن أشهر الألعاب المطورة باستخدامها Star Wars Galaxies و Runescape و Powder Game و Roboforge. 4. لغة Python لغة البرمجة بايثون Python هي لغة برمجة متعددة الأغراض وسهلة التعلم تناسب العديد من التطبيقات وتوفر العديد من المكتبات، وهي تستخدم أيضًا في مجال برمجة وتطوير الألعاب حيث توفر العديد من مكتبات الرسومات الأساسية والشبكات والصوت التي تساعد مطوري الألعاب وتسهل عملهم مثل مكتبة PyGame و Pyglet و Kivy و PANDA3D، كما أن لغة GDScript المستخدمة في محرك ألعاب جودو Godot تتشابه كثيرًا مع لغة بايثون وبالتالي فإن تعلم بايثون سيسهل البدء في إنشاء ألعاب باستخدام محرك الألعاب جودو Godot. دورة تطوير الألعاب ابدأ رحلة صناعة الألعاب ثنائية وثلاثية الأبعاد وابتكر ألعاب ممتعة تفاعلية ومليئة بالتحديات. اشترك الآن فإذا كنت تبحث عن لغة برمجة ألعاب بسيطة سهلة التعلم وذات شهرة كبيرة وتملك مجتمعًا كبيرًا ونشطًا عبر الإنترنت فإن لغة بايثون Python خيار مناسب للحصول على نتائج سريعة، لكن لغة بايثون لا تتحكم في العتاد أو إدارة الذاكرة بنفس كفاءة لغة C++ وهي أبطأ من لغات البرمجة الأخرى لذا فهي لا تناسب الألعاب عالية الأداء. ومن الألعاب المشهورة التي طورت باستخدام لغة بايثون نذكر World of Tanks و Battlefield 2 و Civilization IV و Vega Strike. 5. لغة HTML تستخدم لغة HTML بشكل أساسي في إنشاء صفحات الويب ويجب استخدامها إلى جانب لغة CSS ولغة جافا سكريبت -وهي الثلاثي الذهبي للويب- كإحدى لغات برمجة الألعاب وبشكل خاص ألعاب المتصفحات المتوافقة مع مختلف المنصات، حيث تعمل الألعاب المبنية باستخدام HTML على كل الحواسيب الشخصية والجوالات والأجهزة اللوحية وأجهزة التلفزيون الذكية أي أينما وُجد متصفح ويب. ولا تزال ألعاب المتصفح مطلوبة بشدة بالرغم التقدم الهائل في تقنيات وأدوات تصميم الألعاب ومن أشهر الألعاب المطورة باستخدام HTML نذكر A Grain of Truth و Dune 2 و RowserQuest و Cookie Clicker. 6. لغة برمجة JavaScript تعد لغة جافا سكريبت JavaScript من لغات البرمجة عالية المستوى والمستخدمة بشكل أساسي في تطوير الويب وإضافة تأثيرات تفاعلية على صفحات الويب، كما يمكن أن تستخدم جافا سكريبت في تطوير ألعاب المتصفح حيث توفر جافا سكريبت العديد من المكتبات وأطر العمل التي تساعد المبرمجين على تطوير ألعاب الويب التي تعمل على أي متصفح مثل WebGL وهي عبارة عن واجهة برمجة تطبيقات جافا سكريبت لعرض رسومات ثنائية وثلاثية الأبعاد على المتصفح، ومحرك ألعاب الويب Phaser ومكتبات Three.JS و Babylon.js و Impact.js. كما تعتمد لغة جافا سكريبت على مفهوم الأحداث events وهذا يجعلها مناسبة لكتابة التعليمات البرمجية غير المتزامنة ويساعد مطوري الألعاب على إنشاء ألعاب عالية الأداء وسريعة الاستجابة وقادرة على التعامل مع العديد من الطلبات وتوفر تجربة مستخدم سلسلة. ومن أشهر الألعاب المطورة باستخدام لغة البرمجة جافا سكريبت نذكر Bejeweled و HexGl و CrossCode و Polycraft و Swoop. 7. لغة برمجة Lua لربما تسمع باسم لغة البرمجة لوا Lua لأول مرة وهو يعني القمر باللغة البرتغالية، لكنك في الغالب سمعت بأسماء الألعاب الشهيرة المطورة بالاستعانة بها مثل Roblox و Angry Birds و World of Warcraft، تتميز لغة Lua بكونها مفتوحة المصدر ومبنية على لغة البرمجة سي C وهي لغة سريعة وفعالة وخفيفة الحجم ومتعددة المنصات وتدعم البرمجة الإجرائية والبرمجة الوظيفية والبرمجة كائنية التوجه كما تدعمها عدة محركات ألعاب مثل Open 3D و Solar 2d لذا تعد لغة مثالية لبرمجة الألعاب وتعديلها وتخصيصها بسرعة وسهولة. إضافة لذلك تتميز هذه اللغة بسهولة تعلمها حيث يمكن للأطفال تعلمها لبرمجة الألعاب الخاصة بهم، كما تستخدم في مجالات أخرى تتطلب السرعة والكفاءة مثل تطبيقات الويب وتحليل البيانات وبرمجة أنظمة الشبكات مثل CISCO و Nmap وغيرها. 8. لغة Swift تعد لغة البرمجة سويفت Swift من آبل لغة مثالية لتطوير الألعاب والتطبيقات التي تعمل على أنظمة ماك macOS وiOS وiPadOS وwatchOS وtvOS.وهي تتميز بكونها لغة برمجة حديثة سهلة التعلم والاستخدام وعالية الأداء وتوفر العديد من المكتبات الرسومية ثنائية وثلاثية الأبعاد مثل SpriteKit وSceneKit و GameplayKit التي تمكن المطورين من إضافة رسومات عالية الجودة وهذا يجعلها لغة مثالية لبرمجة الألعاب الكبيرة والمعقدة. من محدوديات لغة سويفت Swift أنها تقتصر على منصات آبل Apple ولا تمكنك من تطوير ألعاب تعمل على منصات أخرى لكنها تفوقت برغم حداثتها على لغة Objective-C المستخدمة أيضًا في تطوير تطبيقات لأنظمة تشغيل آبل وفاقتها في السرعة والأداء. ومن أشهر الألعاب المطورة باستخدام Swift نذكر Crossy Road و Flappy Bird و 2048. كيف تختار أفضل لغة برمجة لتطوير الألعاب؟ كما شرحنا سابقًا هناك العديد من لغات البرمجة المختلفة التي يمكنك استخدامها لتطوير الألعاب ومن أجل اختيار اللغة التي تناسب احتياجاتك عليك في البداية أن تحدد متطلباتك وهدفك من تعلم تطوير الألعاب بدقة ثم تختار بناء على ذلك لغة البرمجة الأنسب لتحقيق هذا الهدف. حيث يعتمد اختيار لغة برمجة الألعاب على طبيعة اللعبة التي تريد تطويرها، فإذا كان هدفك تطوير لعبة بسيطة ثنائية أو ثلاثية الأبعاد، فيمكنك في هذه الحالة استخدام لغة البرمجة بايثون Python أو لغة جافا سكريبت JavaScript أو لوا Lua. وإذا كان هدفك تطوير لعبة احترافية عالية الأداء تتضمن عمليات محاكاة معقدة وتتطلب قدرًا كبيرًا من الذاكرة فستحتاج حينها إلى الاعتماد على أحد محركات الألعاب التي تسهل لك العمل كما ذكرنا سابقًا وحينها ستكون مقيدًا باستخدام إحدى لغات البرمجة التي يدعمها هذا المحرك، فلكل محرك ألعاب مجموعة لغات برمجة محددة يمكنه التعامل معها، على سبيل المثال يمكن أن تستخدم لغة C++ أو لغة برمجة مرئية تسمى Blueprints مع محرك الألعاب Unreal Engine أو تستخدم لغة البرمجة C# أو لغة برمجة مرئية تسمى Bolt مع محرك ألعاب يونتي Unity. كما أن تحديد المنصة التي تستهدفها لعبتك قد يساعدك في تحديد لغة البرمجة الأفضل، فإذا كنت ترغب في إنشاء ألعاب تعمل على الحواسيب المكتبية سيكون من المناسب لك استخدام لغة C++ أو بايثون أو جافا، وفي حال كان هدفك تطوير لعبة تعمل على أنظمة أندرويد Android ففي هذه الحالة تعد لغة جافا خيارًا مناسبًا، أما إن كنت تنوي تطوير ألعاب لأنظمة iOS فعليك حينها اختيار لغة Swift، وفي حال كان هدفك هو برمجة ألعاب الويب فاستخدم لغة جافا سكريبت JavaScript أو بايثون Python. الخلاصة تعرفنا في مقال اليوم على أفضل لغات برمجة الألعاب الإلكترونية، ومميزات كل لغة من بينها، وأبرز الألعاب المطورة باستخدامها، ووضحنا في ختام المقال أن اختيار لغة برمجة لعبة يعتمد على عدة عوامل من بينها المنصة التي تستهدفها اللعبة ومدى تعقيدها ومستوى صعوبتها ونوعها، لذا قبل أن تحدد اللغة التي سوف تستخدمها في تطوير لعبتك حدد كافة متطلبات اللعبة بشكل دقيق ثم اختر اللغة الأنسب لتلبية هذه المتطلبات. اقرأ أيضًا مطور الألعاب: من هو وما هي مهامه كيف تحصل على أفكار ألعاب فيديو ناجحة برمجة لعبة متاهة باستخدام محرك يونيتي Unity برمجة لعبة تفاعلية باستخدام سكراتش نبذة عن صناعة الألعاب ومحرك Unity3D
-
سنتعرف في مقال اليوم على مفهوم صفحات الويب وكيف تعمل ونتعرف على أهم مكوناتها ونميز بين أنواع صفحات الويب الثابتة والديناميكية، وأخيرًا نوضح أهم الخطوات والتقنيات التي عليك تعلمها لتصمم وتبرمج هذه الصفحات. تعريف صفحة الويب Web Page قد تتساءل، ما هي صفحة الويب؟ سأجيبك، هي مستند مكون من سلسلة من التعليمات البرمجية المكتوبة بإحدى لغات الويب ويتم عرضها داخل تطبيق مخصص يسمى متصفح الويب Web Browser. تستخدم صفحات الويب بشكل أساسي لعرض المعلومات بأشكال مختلفة من نصوص ورسومات وصور ومقاطع الفيديو وروابط لصفحات ويب أخرى وإتاحتها عبر شبكة الإنترنت وتشكل مجموعة صفحات الويب المتعددة المرتبطة مع بعضها البعض موقع ويب يمكن لصفحات الويب أن تكتب بأنواع مختلفة من لغات البرمجة مثل HTML و CSS وجافا سكريبت و PHP وغيرها من اللغات والتقنيات وفق ما تقتضي الحاجة، لكن تعد لغة HTML التقنية الأساسية لبناء صفحة الويب، فصفحات الويب بتنسيق HTML هي المعيار للمحتوى الذي يعرضه متصفح الإنترنت. وتجدر الإشارة إلى أن HTML ليست لغة برمجة بالمعنى المتعارف، بل لغة توصيفية markup language تعتمد على رموز خاصة تسمى الوسوم Tags، هذه الوسوم مسؤولة عن وصف بنية صفحات الويب وطريقة عرض محتوياتها وإظهارها بالبنية التي نريدها، كعرضها بشكل فقرات أو جداول أو تعدادات نقطية …إلخ. تتميز لغة التوصيف HTML بكونها مفهومة ومعبرة فكل ما تقوم به هو وصف أسلوب عرض المحتوى للمتصفح وطريقة تخطيط صفحة الويب، على سبيل المثال لإدراج عنوان رئيسي وفقرة في صفحة الويب نكتب اكتب العنوان بين علامتي <h1> و <h1/> ولكتابة فقرة نصية اكتبها بين علامتي <p> و <p/> بالشكل التالي: <h1> هذا هو عنوان الفقرة</h1> <p> هذا هو محتوى الفقرة</p> قم بكتابة الكود السابق في أي محرر نصوص مثل المفكرة واحفظه بالامتداد .html أو .htm وسمه بأي اسم تختاره ليكن example.html، ستلاحظ أن أيقونة الملف قد تحولت إلى صفحة ويب وعند فتحها تعرض في المتصفح الافتراضي لديك وتظهر بشكل مشابه للصورة التالية: لاحظ أن النص (هذا هو عنوان الفقرة) ظهر كعنوان غامق لأننا غلفناه بعلامات خاصة بالعنوان، بينما ظهر النص (هذا هو محتوى الفقرة) كنص عادي لأننا وضعناه بين علامتين تدلان على كونه فقرة نصية. تحتاج هذه الصفحة للكثير بالطبع من أكواد HTML الإضافية كي تبدو صفحة ويب متكاملة الأركان، كما تحتاج لإضافة تنسيقات مختلفة من خطوط وألوان وتخطيطات لجعل مظهرها أكثر احترافية وهو ما تقوم به لغة CSS التي تتكامل مع لغة HTML حيث تضاف شيفرات CSS بعدة طرق إلى صفحة الويب، فهي إما أن تكتب في ملف .html نفسه، أو تضاف في ملف نصي مستقل بالامتداد css. بأي اسم تختاره وليكن styles.css ثم تربط مع ملف .html من خلال كتابة الكود التالي: <link rel="stylesheet" type="text/css" href="styles.css" /> <h1> هذا هو عنوان الفقرة</h1> <p> هذا هو محتوى الفقرة</p> لسنا بصدد شرح أكواد CSS في هذا المقال لكننا سنكتب بعض التنسيقات البسيطة لصفحتنا لتفهم الفكرة التي تعمل من خلالها صفحات الويب، على سبيل المثال لجعل العنوان الذي أضفناه بالصفحة باللون الأحمر والفقرة باللون الأزرق تكتب في ملف التنسيقات الأكواد التالية: h1 { color: red; } p { color: blue; } بعدها عند عرض الصفحة ستظهر لنا بالشكل المنسق التالي: للمزيد حول تصميم صفحات الويب وكتابة أكواد CSS يمكنك مطالعة مقال HTML و CSS للمبتدئين: كيف تصمم أول صفحة ويب لك ومقال أساسيات CSS، كما يمكنك تعلم المزيد حول ربط أكواد مع ملف .html من خلال مقالة كيفية بناء موقع باستخدام CSS. ما هو متصفح الويب؟ ذكرنا في الفقرات السابقة كلمة متصفح عدة مرات وذكرنا أنه برنامج يستخدم لفتح صفحات الويب وعرضها، ولعلك تتساءل ما هو دور المتصفح في صفحات الويب التي هي بالأساس مستندات نصية تكتب ضمن محررات نصوص أو محررات أكواد برمجية؟ وإليك الجواب: كي تتمكن من فتح صفحات الويب على جهازك تحتاج لوجود برنامج متصفح الويب وهو عبارة عن تطبيق يمكنك من الوصول إلى المعلومات المضمنة في صفحات الويب وعرضها بالشكل الصحيح، فهو بمثابة حاوية تعرض كافة محتويات الصفحة. هناك الكثير من متصفحات الويب وأشهر خمس متصفحات هي: جوجل كروم Chrome فايرفوكس Firefox مايكروسوفت إيدج Microsoft Edge أوبرا Opera سفاري Safari كي تتمكن متصفحات الويب من عرض صفحات الويب فهي تستخدم محرك عرض Rendering Engine أو ما يسمى بمحرك التخطيط Layout Engine مهمته أخذ كافة معلومات المحتوى والتصميم الواردة في التعليمات البرمجية التي كتبت بها هذه الصفحة وتفسيرها وعرضها بالشكل النهائي لك. يستخدم كل متصفح محرك عرض مختلف عن الآخر، على سبيل المثال يستخدم فايرفوكس محركًا يسمى Gecko ويستخدم كل من كروم وأوبرا محرك باسم Blink كما أن بعض المتصفحات قد تستخدم تقنيات خاصة بها غير متوفرة في متصفحات أخرى، ما يهمك في هذا الأمر أن تفهم سبب وجود الاختلافات عند طريقة عرض صفحات الويب من متصفح لآخر، أو سبب عدم عمل بعض الميزات في متصفح بينما تعمل بشكل مثالي في متصفح آخر، ولهذا السبب يحرص مصممو المواقع على معالجة المشاكل الشائعة للتوافق مع المتصفحات في HTML و CSS. كيف أفتح صفحات الويب؟ يملك كل موقع ويب اسم نطاق Domain name مميز خاص به لا يستخدمه أي موقع آخر ويجب حجزه من خلال دفع رسوم شهرية أو سنوية لشركات تسجيل أسماء المجالات على سبيل المثال اسم المجال الرئيسي لشركة حسوب هو hsoub.com وهذا المجال هو جزء من عنوان الموقع الكامل URL وهو https://www.hsoub.com/. حيث تمتلك كل صفحة ويب عنوان URL فريد يميزها ويحدد موقعها الدقيق على شبكة الإنترنت فمن أجل فتح صفحة الويب وعرض محتواها كل ما عليك هو فتح المتصفح المثبت على جهازك وكتابة عنوان URL الخاص بها في شريط عنوان المتصفح عندها سيطلب المتصفح أو ما يعرف بالعميل Client جلب محتويات هذه الصفحة من خادم الويب البعيد Server ويعرضها لك. على سبيل المثال للوصول للصفحة الرئيسية لأكاديمية حسوب كل ما عليك هو إدخال العنوان https://academy.hsoub.com/ في شريط عنوان المتصفح، وللوصول إلى الصفحة الخاصة بدروس البرمجة في الأكاديمية يمكنك كتابة العنوان https://academy.hsoub.com/programming/ أما إذا كنت لا تعرف العنوان الخاص بصفحة أو موقع ما يمكنك البحث عن اسمه بأحد محركات البحث والوصول له من خلال نتائج البحث وهذه الطريقة هي الأمر الشائع لدى المستخدمين بدلًا من حفظ العناوين الخاصة بكل صفحة. محرك البحث Search Engine هو نوع خاص من مواقع الويب يتم الوصول لها من خلال متصفح الويب ليساعدك في العثور على مواقع وصفحات الويب وأشهرها على الإطلاق محرك بحث جوجل الذي يتميز بدقة نتائجه، ومؤخرًا برز اسم محرك بحث Bing من شركة مايكروسوفت الذي يعمل بتقنيات الذكاء الاصطناعي. ما الفرق بين موقع الويب وصفحة الويب؟ يتكون موقع الويب عادة من عدة صفحات ويب مرتبطة ببعضها البعض بطرق مختلفة والتي تشترك في اسم مجال أو عنوان فريد خاص بها. يمكن تشبيه صفحة الويب بصفحة من كتاب والموقع بالكتاب نفسه الذي يجمع في طياته كل هذه الصفحات تحت عنوان واحد مشترك ويكون لكل صفحة منها عنوانها الخاص الذي يميزها. ينظم موقع الويب على شكل صفحات مرتبطة مع بعضها البعض بروابط تشعبية وأهم هذه الصفحات هي الصفحة الرئيسية وهي الصفحة الأولى التي يراها المستخدم عند دخوله إلى موقع الويب وهي تعطيك نظرةً شاملةً عن محتوى الموقع ومنها تنتقل عبر صفحات الموقع الفرعية الأخرى، ويجب أن يحرص مصمم الموقع على جعل التنقل في صفحات الموقع واضحًا وسهل الاستخدام كي لا يشتت زوار الموقع. ما هي عناصر صفحة الويب؟ تختلف العناصر أو الأقسام التي تحتويها صفحات الويب وطريقة توزيع المحتوى ضمن هذه الأقسام بحسب الهدف من هذه الصفحة وطبيعة المحتوى الذي تتضمنه لكن يمكن القول أن معظم صفحات الويب تتضمن العناصر التالية: ترويسة الصفحة: وهي تتضمن عادة اسم الموقع أو شعار الموقع وشريط التنقل بين صفحات الموقع وصندوق للبحث في محتوى الموقع، وقد تتضمن بعض الإشعارات أو العروض المميزة أو الصور المميزة التي تريد لفت نظر المستخدمين لها. الشريط الجانبي للصفحة: وهو قسم اختياري في الصفحة يعرض المعلومات التي لا تكون جزءًا من المحتوى الرئيسي للصفحة. وقد يتضمن إعلانات أو عبارات دعوة لاتخاذ إجراء CTA أو روابط لأجزاء أخرى من موقع الويب وقد يتضمن رابط الرجوع إلى أعلى الصفحة لا سيما في الصفحات ذات المحتوى المكثف. المحتوى الأساسي للصفحة: وهو يتضمن عادة عنوان صفحة الويب ومحتوى منوع من فقرات وصور وروابط لصفحات أخرى حسب الحاجة. تذييل الصفحة: هو القسم الذي يعرف المستخدم أنه وصل إلى نهاية صفحة الويب ويجب أن يتضمن التذييل أي معلومات مهمة عن الموقع وعبارة حقوق النشر وقد يتضمن بعض الروابط لصفحات هامة مثل صفحة سياسة الخصوصية ومعلومات الاتصال وروابط للشبكات الاجتماعية. أنواع صفحات الويب ستجد في شبكة الانترنت نوعين من صفحات الويب منها ما هو بمحتوى ثابت لا يتغير مثل صفحات السيرة الذاتية أو معارض الأعمال وأخرى بمحتوى ديناميكي متجدد مثل الصفحات الإخبارية وصفحات المدونات وصفحات وسائل التواصل الاجتماعي، وإليك الفرق بين هذين النوعين. صفحات الويب الثابتة Static Web Pages هي صفحات تمتلك محتوى ثابت مخصص للقراءة فقط ويظهر لكافة المستخدمين بنفس الشكل، وهذه الصفحات تكتب عادة بلغة HTML حيث يتوجب عليك إنشاء ملف بالامتداد .html لكل صفحة جديدة تضيفها للموقع. ويمكن أن تتضمن الصفحات الثابتة موارد أخرى مثل تنسيقات CSS للتحكم في مظهرها وأكواد بلغة جافا سكريبت JavaScript لإضافة تأثيرات تفاعلية إليها إلى جانب ملفات الوسائط مثل الصور والأصوات ومقاطع الفيديو وغيرها من الوسائط التي تعرض على صفحات الويب. كي تغير محتوى صفحات الويب الثابتة تحتاج لأن تصل إلى ملفات الشيفرات البرمجية لهذه الصفحة وتقوم بتعديل ما تريد بنفسك وتجدر الإشارة لأن جميع مواقع وصفحات الويب كانت ثابتة في بدايات ظهور الويب. واليوم لا تزال الصفحات الثابتة مستخدمة لعرض أي محتوى يكتب لمرة واحدة ولا يحتاج لتخصيص أو تحديث بشكل متكرر مثل مواقع السيرة الذاتية ومعارض الأعمال وصفحات الهبوط والصفحات التعريفية للشركات. لكن ماذا لو كانت المواقع ذات محتوى متغير بشكل متكرر أو يحتاج لأن يخصص حسب المستخدم أو يتفاعل معه؟ عندها تحتاج لأن تصمم صفحات ويب ديناميكية. صفحات الويب الديناميكية Dynamic Web Page هي صفحات يتم تغيير محتواها باستمرار بالاعتماد على مدخلات المستخدم وتفاعله مع الصفحة وغيرها من العوامل ومن الأمثلة عليها تطبيقات الويب التفاعلية ووسائل التواصل الاجتماعي ومواقع التجارة الإلكترونية وما شابه، ويمكن لهذه الصفحات عرض تقديم معلومات مختلفة للزوار المختلفين، على سبيل المثال موقع التواصل الاجتماعي فيسبوك هو موقع ديناميكي لأن محتوى صفحة فيسبوك التي تظهر لي مختلف عن محتوى الصفحة التي تظهر لك، كما أنك في كل مرة تزور فيها صفحتك تجد فيها معلومات مختلفة عن المرة السابقة. تصمم صفحات الويب الديناميكية باستخدام لغات برمجة تعمل على الخادم مثل PHP أو بايثون أو روبي ..إلخ، إضافة للغات HTML و CSS وجافا سكريبت وغالبًا ما تحتوي على عناصر ديناميكية تتفاعل مع مدخلات المستخدم وتستخرج المعلومات المطلوبة المخزنة في الخادم لإنشاء صفحة الويب النهائية التي يشاهدها المستخدم في متصفحه. ولمطالعة مزيد من المعلومات حول الطريقة التي تعمل بها صفحات الويب الدينامكية أنصح بمطالعة مقال نظرة على تفاعلات الخادم مع العميل في موقع ويب ديناميكي. تعلم برمجة وتصميم صفحات الويب قد تكون مهتمًا بمعرفة الطريقة التي تبرمج بها صفحات الويب وتتساءل كيف يمكنني تعلم برمجة وتصميم صفحات الويب وإدارتها بسرعة واحترافية وما هي اللغات والأدوات الواجب تعلمها. إليك أهم الخطوات التي يمكنك اتباعها لتعلم برمجة صفحات الويب: تعلم كيف يعمل الويب تعلم الأدوات والتقنيات اللازمة لتطوير صفحات الويب تعلم تصميم المواقع الإلكترونية اختر مصادر تعلم موثوقة ومنظمة لا تتوقف عن التعلم لنتعرف كل خطوة من هذه الخطوات بمزيد من التفصيل: 1. تعلم كيف يعمل الويب في هذه المرحلة عليك تعلم مجموعة من المفاهيم الأساسية مثل: كيف يعمل الويب Web. كيف تعمل مواقع الويب. ما هي مكونات الويب الرئيسية. ما هو مفهوم بروتوكولات الويب مثل HTTP و TCP/IP و وكيفية تخزين وتنظيم الصفحات والملفات المختلفة لمواقع الويب على الخادم المتصل بالإنترنت وعرضها على المتصفح أو العميل. أنواع الخوادم وكيفية إدارتها ومفهوم استضافات الويب وأنواعها. 2. تعلم الأدوات والتقنيات اللازمة لتطوير صفحات الويب في المرحلة التالية من المهم أن تتعرف على أهم الأدوات المستخدمة في بناء مواقع ويب، وتحدد التقنيات التي تريد استخدامها وكي لا تشعر بالتشتت فقد وفرنا في مقال المدخل الشامل لتعلم تطوير الويب وبرمجة المواقع معلومات شاملة تعرفك على كافة الجوانب المتعلقة بتطوير صفحات الويب والتقنيات ولغات البرمجة التي يمكنك تعلمها لتصبح مطور مواقع محترف، بعد أن تتضح لك الصورة الكاملة حدد بدقة ما هي اللغات والأدوات التي تريد استخدامها لبناء مواقع الويب وضع خطة زمنية لتعلمها. 3. تعلم تصميم المواقع الإلكترونية إذا كنت ترغب في التخصص في تصميم واجهات مواقع وتطبيقات الويب فعليك في هذه الحالة تعلم أساسيات تصميم المواقع الإلكترونية والتعرف على أفضل النصائح لتصميم واجهة المستخدم لتصمم مواقع وصفحات ويب احترافية، وتنظم بنية موقعك بأفضل طريقة ممكنة، وتختار أفضل أنواع الخطوط والألوان التي عليك استخدامها بما يتناسب وهوية الموقع والفئة المستهدفة وتحسين تجربة المستخدم. 4. اعتمد مصادر تعلم موثوقة اختر مصادر التعلم التي تفضلها سواء دروس عبر الإنترنت أو كتب أو معسكرات أو قنوات يويتوب أو دورات تدريبية، لكن تشتت نفسك بكثرتها واحرص على اختيار مصادر منظمة ومتكاملة، ولا تكتفِ بمجرد القراءة أو المشاهدة بل طبق كل ما تتعلمه وصمم مواقع تجريبية وقم بنشرها على الإنترنت لأن التطبيق العملي أفضل وأسرع طريقة للتعلم وهو يساعدك على بناء معرض أعمالك والعثور على وظيفة بشكل أسرع. ستجد في أكاديمية حسوب الكثير من الدورات التدريبية المتخصصة في تطوير مواقع الويب مثل: دورة تطوير واجهات المستخدم التي تعرفك على كل ما يخص تطوير الواجهات الأمامية لمواقع الويب وبناء عدة مواقع ويب ثابتة تعزز معرض أعمالك وتساعدك في العثور على وظيفة ملائمة. دورة تطوير التطبيقات باستخدام لغة Python التي ستتعلم فيها أساسيات لغة البرمجة بايثون وتبني من خلالها مواقع مختلفة مطلوبة في سوق العمل. دورة تطوير التطبيقات باستخدام لغة JavaScript التي ستتقن من خلالها لغة البرمجة الأكثر شهرة وانتشارًا جافا سكريبت وتتعلم تطوير العديد من أنواع التطبيقات المختلفة من خلالها. دورة تطوير تطبيقات الويب باستخدام لغة PHP التي ستتعلم من خلالها تطوير مواقع انترنت احترافية باستخدام العديد من الأدوات والتقنيات. تتكون كل دورة من هذه الدورات من مسارات غنية بالمعلومات لا تطلب منك أي معرفة مسبقة وتنتهي بتطوير العديد من مواقع الويب الاحترافية في عدة مجالات وتوفر تحديثات مستمرة ومدربين محترفين يوفرون لك إرشادات وإجابات على كافة تساؤلاتك طيلة فترة التعلم. كما ستجد الكثير من الدورس والمقالات المجانية حول تصميم صفحات الويب وتعلمك تطوير الويب من الصفر للاحترف، ليس هذا فحسب فإن كنت ممن يفضل الدراسة من الكتب لما توفره من معلومات شاملة ومنظمة ومتدرجة، ستجد في قسم الكتب في أكاديمية حسوب الكثير من الكتب الشاملة عن لغات برمجة صفحات الويب وتصميم واجهات المواقع الإلكترونية المتاحة للتحميل بالمجان. 5. لا تتوقف عن التعلم الاستمرارية في التعلم أساسية في أي مجال تقني وفي مجال تطوير الويب على وجه الخصوص لكونه مجالًا متجددًا بصورة مستمرة ويوفر الكثير من التقنيات والأدوات التي تسهل عمل المطورين وتحسن من طريقة برمجة صفحات الويب، لذا كن على اطلاع على كل جديد في هذا المجال واستفد من في الارتقاء بمستوى عملك. الخلاصة تعرفنا في مقال اليوم على مفهوم صفحات الويب ومكوناتها وأنواعها المختلفة وطريقة عملها، وأهم الخطوات التي يمكنك اتباعها لتتعلم برمجة وتصميم صفحات الويب ووفرنا مجموعة من المصادر العربية الموثوقة التي تساعدك في رحلة التعلم. اقرأ أيضًا تعلم تطوير الويب كيف يعمل الويب Web؟ عالم الويب ومعاييره كيفية التعامل مع الويب مراحل بناء مواقع الإنترنت من الصفر
-
يعد إطار عمل لارافيل Laravel واحدًا من أهم أطر عمل PHP وأكثرها شهرة وقوة، فقد تمكن لارافيل من إثبات جدارته واحتلال مواقع متصدرة بين نظم تطوير تطبيقات الويب لما يتمتع به من ميزات أبرزها توفير الكثير من الوظائف البرمجية الجاهزة التي تجعل تطوير الويب أسهل وأسرع، واهتمامه الخاص بأمن مواقع الويب وحمايتها من الثغرات الأمنية. فإذا كنت تتساءل ما هو لارافيل Laravel وما فوائد استخدامه، وترغب في التعرف على أبرز مميزاته وعيوبه، واكتشاف أفضل المصادر العربية التي تمكنك من تعلم لارافيل واستخدامه في إنشاء مواقع وتطبيقات ويب بميزات متقدمة فهذا المقال لك. ما هو لارافيل Laravel لارافيل Laravel هو إطار عمل مفتوح المصدر مبني على لغة PHP يستخدم لتطوير تطبيقات الويب، طوره تايلور أوتويل Taylor Otwell عام 2011 ليمكّن المطورين من إنشاء تطبيقات ويب متكاملة الميزات بسهولة وسرعة من خلال توفير أكثر المهام والوظائف الشائعة التي يحتاجونها في مشاريع الويب. وإطار العمل Framework هو باختصار بيئة توفر مجموعة من الوظائف والأدوات الجاهزة المكتوبة مسبقًا والتي يستخدمها المبرمجون والمطورون لتسهل عليه عملهم في التطوير وتمكنهم من أداء المطلوب باستخدام أقل قدر من التعليمات البرمجية، وللمزيد من المعلومات أنصح بالاطلاع على مقال تعرف على مفهوم إطار العمل Framework وأهميته في البرمجة لقد عزز إطار العمل لارافيل من قوة لغة PHP وساهم في استمراريتها وديمومتها، حيث أنه وفر للمبرمجين طريقة أكثر كفاءة في التعامل معها وبسّط كتابة تعليماتها المعقدة نوعًا ما وجعل تطوير تطبيقات الويب باستخدامها أسرع وأسهل. إصدارات لارافيل Laravel قبل إصدار لارافيل 9 كان فريق لارافيل يوفر إصدارًا رئيسيًا كل ستة أشهر بمعدل نسختين رئيسيتين سنويًا لتخفيف أعباء الصيانة، لكن تقرر بعد ذلك توفير الإصدارات الجديدة بشكل سنوي. يتطور لارافيل Laravel بسرعة فائقة مع مرور الوقت ويضيف تحسينات وميزات ووظائف جديدة تواكب اتجاهات السوق المتغيرة باستمرار أو يغير بعض الوظائف أو يلغيها لذلك من الضروري معرفة الإصدار الذي تستخدمه في تطوير مشاريعك. وإليك قائمة بأهم إصدارات لارافيل laravel وتاريخ صدورها: أطلق الإصدار الأول لارافيل 1.0 في 9 يونيو/حزيران 2011 توالت بعدها الإصدارات لغاية لارافيل 8 الذي تم إطلاقه في 8 سبتمبر/أيلول 2020 وهو الإصدار العشرين من Laravel ولم تعد كافة هذه الإصدارات تتلقى تحديثات أمنية لذا يفضل أن تتم ترقية التطبيقات المبنية بأحدها لإصدار أحدث لمنع الثغرات الأمنية والوصول إلى الميزات الجديدة. صدر لارافيل 9 بتاريخ 8 فبراير 2022 ويتطلب هذا الإصدار نسخة PHP 8.0 كحد أدنى. صدر لارافيل 10 بتاريخ 7 فبراير 2023 وتضمن العديد من الميزات الجديدة التي تعزز أداء تطبيقات الويب وأمانها ووظائفها ويتطلب هذا الإصدار نسخة 8.1 من لغة PHP كحد أدنى. ومن المتوقع أن يصدر لارافيل 11 في الربع الأول من عام 2024، وللمزيد من التفاصيل يمكنك مطالعة الصفحة التالية لكافة إصدارات لارافيل، والجدير بالذكر أن لارافيل قد أثبت كفاءته لأكثر من عقد من الزمن وتمكن من فرض نفسه كأحد أكثر أطر PHP شيوعًا وتفضيلًا من قبل مطوري الويب بفضل طريقة تنظيمه الأنيقة وميزاته القوية. أهمية إطار لارافيل في سوق العمل يعد لارافيل أحد أشهر أطر عمل PHP وأكثرها استخدامًا ويملك مجتمعًا كبيرًا من المطورين الذين يوفرون الكثير من المكتبات والحزم الجاهزة والمتاحة للاستخدام بسهولة. كما يعد لارافيل أحد المهارات المطلوبة بشدة في سوق العمل، ويبحث الكثير من أرباب العمل عن مطورين محترفين في استخدام إطار العمل لارافيل لتطوير تطبيقاتهم ومواقعهم الإلكترونية ولا عجب في ذلك فهو واحد من أسرع أطر عمل PHP نموًا وأكثرها غنىً بالميزات. وتستخدم العديد من المواقع الكبرى لارافيل في تطوير تطبيقاتها الخاصة،فبحسب موقع builtwith الذي يحدد التقنيات المستخدمة في إنشاء المواقع هناك 1,175,772 موقع ويب مبني باستخدام إطار عمل Laravel ولك أن تتخيل مدى شعبيته. كما يلبي لارافيل كافة متطلبات العمل لكونه يعتمد على لغة PHP العريقة التي تعد واحدة من أقوى لغات البرمجة من جانب الخادم والتي تستخدم في تطوير ملايين المواقع الإلكترونية من بينها مواقع شهيرة مثل فيسبوك وويكيبيديا. فإذا كنت مهتمًا بمجال تطوير الويب فتعلم إطار عمل لارافيل Laravel يوفر لك الكثير من الفرص المميزة في مجال تطوير تطبيقات الويب ويمكنك من إنشاء كافة أنواع التطبيقات والمواقع الإلكترونية سواء المواقع البسيطة للشركات الناشئة منها أو المواقع المتقدمة كمواقع التجارة الإلكترونية بسرعة واحترافية. ويتنافس إطار عمل لارافيل مع أطر عمل تطوير الويب الأخرى في سوق العمل مثل جانغو Django المبني باستخدام لغة البرمجة بايثون Python والتي تعتبر أسرع من لغة PHP وأكثر شعبية منها، وإطار عمل إكسبريس Express المبني باستخدام لغة جافا سكريبت أحد أكثر لغات البرمجة شهرة واستخدامًا بين أوساط المطورين، وإطار عمل ريلز Rails المبني باستخدام لغة البرمجة روبي Ruby المحببة للمبتدئين، تقدم معظم أطر العمل ميزات متشابهة وكي تتمكن من اختيار إطار العمل الأنسب لك عليك أن تأخذ عدة أمور بعين الاعتبار مثل لغة البرمجة التي تفضل تعلمها وطبيعة المشاريع التي تعمل عليها، ولمزيد من التفاصيل حول أشهر أطر عمل تطوير الويب أنصح بمطالعة مقال مقارنة بين Django و Laravel و Rails. مميزات لارافيل Laravel لاشك أن لارافيل Laravel ليس إطار العمل الوحيد المتاح اليوم بل هو واحد من بين عشرات أطر عمل تطوير الويب، وقد تتساءل لماذا أستخدم لارافيل دونًا عن غيره؟ وما الذي يميزه عن غيره من أطر عمل تطوير الويب؟ في الواقع نجد تحيز من قبل المبرمجين لاختيار لارافيل دون غيره نظرًا لما يتمتع به من ميزات، وإليك قائمة بأهم 10 مميزات لإطار لارافيل: سهولة التعلم والاستخدام. تسريع وقت التطوير. التوثيق الجيد. غني بالميزات وقابل للتوسيع. يهتم بأمان التطبيقات. يحسن أداء التطبيقات. يدعم تعدد اللغات. يسهل تصحيح أخطاء التطبيقات وصيانتها. يوفر نظام لتهجير البيانات Migration. يوفر نظام التوجيه Routing. لنناقش كل خاصية من هذه الخواص بمزيد من التفصيل ونكتشف أهميتها في تطوير الويب. 1. سهولة التعلم والاستخدام يتميز لارافيل بكود سهل التعلم والاستخدام، لكنه بالطبع يشترط امتلاك معرفة مسبقة بأساسيات PHP ومبادئ البرمجة كائنية التوجه OOP إلى جانب وجود معرفة جيدة حول HTML وأحد أنظمة إدارة قواعد البيانات مثل MySQL أو PostgreSQL بعدها سيكون تعلم لارافيل أمرًا في غاية البساطة. 2. تسريع وقت التطوير يتضمن لارافيل Laravel العديد من الوظائف التي تسهل على المطور تنفيذ المهام الشائعة مثل عمليات المصادقة authentication، والتوجيه routing، وتهجير قواعد البيانات migrating، والتخزين المؤقت cach، فكل هذه الوظائف مضمنة ومدمجة في نظام لارافيل وجاهزة لتستخدمها بكل سهولة. كما يتضمن واجهة سطر أوامر مدمجة تسمى آرتيزان Artisan توفر مجموعة من الأوامر المفيدة في بناء تطبيقات الويب، وبالجمع بين أوامر آرتيزان والوظائف المضمنة تصبح عملية تطوير تطبيقات الويب أسرع بكثير. 3. التوثيق الجيد يحتوي لارافيل Laravel على توثيق مميز عبر الإنترنت يساعد المطورين والمبرمجين في تعلم كل ما يحتاجونه والعثور على إجابات لكافة تساؤلاتهم حول التعامل مع هذا الإطار، كما تتوفر معلومات هائلة متاحة من مجتمع مطوري لارافيل. المشكلة الوحيدة التي توجد في هذه المصادر هو أنها متاحة باللغة الإنجليزية وشرحها جامد إلى حد ما، وفي فقرة تعلم لارافيل سأطلعك على مصادر عربية جيدة تساعدك في تعلم لارافيل. 4. غني بالميزات وقابل للتوسيع يعد لارافيل نظامًا قويًا وغنيًا بالكثير من الميزات المضمنة ويوفر مجموعة متنوعة من المكتبات المضمنة التي تساعدك على بناء تطبيقات متقدمة تعالج ملايين الطلبات بفضل دعمه للتخزين المؤقت السريع والتخزين الموزع، كما يوفر لارافيل منصات سحابية خفية الخوادم Serverless مثل Laravel Forge و Vapor تمكنك من نشر التطبيقات وتشغيلها دون الحاجة إلى إدارة الخوادم وهي منصات قابلة للتوسيع التلقائي بكل سهولة. أضف إلى ذلك يوفر مطوروا لارافيل الكثير من الحزم الخارجية لأي وظيفة أو ميزة تحتاجها، على سبيل المثال يمكنك باستخدام مكتبة Socialite تضمين ميزة تسجيل الدخول إلى موقعك باستخدام حسابات شبكات التواصل الاجتماعي على فيسبوك أو تويتر أو لينكدإن أو جيتهب أو جوجل بكل سهولة. 5. يهتم بأمان التطبيقات يمكنك لارافيل من تطوير مواقع وتطبيقات آمنة بفضل العديد من ميزات الأمان المدمجة مثل نظام المصادقة أو الاستيثاق المدمج authentication system ونظام المصادقة authorization والتحقق من صحة البيانات data validation وتشفير البيانات والتحقق من البريد الإلكتروني وإعادة تعيين كلمة المرور، كما يسهل عليك تكوين ميزات الأمان المتقدمة التي تحمي تطبيقاتك من الاختراق وتضمن أمان بيانات عملائك. 6. يحسن أداء التطبيقات يوفر لارافيل عدة طرق لتحسين سرعة التطبيقات وتحسين أدائها مثل دعم التخزين المؤقت لموقعك الإلكتروني على الخادم، كما أنه يسهل تنفيذ تقنيات أخرى لتحسين السرعة مثل تقليل استخدام الذاكرة وفهرسة قاعدة البيانات. فإذا كانت سرعة الموقع أولوية لديك فإن لارافيل خيارك الأنسب. 7. يدعم تعدد اللغات فمن خلال ميزة التوطين localization يمكنك لارافيل من إنشاء تطبيقات متعددة اللغات واسترداد السلاسل النصية بلغات مختلفة، وهو يدعم عدة لغات من بينها اللغة العربية. 8. يسهل تصحيح أخطاء التطبيقات وصيانتها يحتوي لارافيل على ميزات تختبر كل جزء من موقع الويب الخاص بك للبحث عن أي أخطاء ويعرض لك رسائل واضحة ومفصلة تبين كافة الأخطاء التي تحدث في موقعك ويسهل عليك تصحيحها، كما أنه يسهل صيانة التطبيقات بفضل ميزات الكود النظيف واعتماد مبادئ البرمجة كائنية التوجه OOP ومعمارية MVC التي تنظم الكود وتمكن أي مطور من متابعة العمل على مشروع سابق وتطويره وإضافة الميزات المطلوبة له. 9.يوفر نظام تهجير البيانات Migration يوفر لارافيل ميزة تهجير البيانات Migration التي توفر آليات لإنشاء وتعديل جداول قاعدة البيانات كما يوفر آلية شبيهة بنظام التحكم في الإصدارات لقاعدة البيانات الخاصة بك تتعقب كيفية تعديل قاعدة البيانات مع الوقت وتسمح لكافة أعضاء فريق التطوير بتعديل قاعدة بيانات المشروع ومشاركته فيما بينهم وتسهل حذف قاعدة البيانات وإعادة إنشائها عند الضرورة. وللمزيد من التفاصيل حول هذه الميزة يمكنك مطالعة مقال تهجير قواعد البيانات في لارافيل 5 10. يوفر نظام التوجيه Routing يوفر لارافيل نظام توجيه Routing قوي لمعالجة وإدارة مسارات تطبيق الويب ويُمكِّنك من الانتقال من مكان لآخر في تطبيقك وتبادل المعلومات بينها بسهولة، كما يمكّنك من استخدام أسماء بسيطة ترتبط بأجزاء مختلفة من تطبيقك بدلاً من الأسماء الطويلة والمربكة، ستجد كافة المسارات الخاصة بالتطبيق في الملف web.php ضمن المجلد routes لمشروعك وللمزيد من التفاصيل يمكنك الاطلاع على توثيق التوجيه Routing في لارافيل. عيوب لارافيل Laravel لا تخلو أي تقنية مهما كانت متقدمة من بعض العيوب ومن بينها لارافيل، فهو يملك بعض جوانب النقص وإليك قائمة بأبرز عيوب لارافيل: يعتبر إطار عمل لارافيل بطيئًا نسبيًا عند مقارنته ببعض أطر تطوير الويب الأخرى. رغم كونه آمنًا بشكل كبير إلا أنه لا يزال مهددًا باستهدافه بالثغرات الأمنية بسبب اعتماده على PHP التي وسمت بكثرة الثغرات الأمنية فيها تحديدًا في الإصدارات القديمة منها. تكلفته عالية فالمواقع المطورة بإطار لارافيل قد تكون أغلى نسبيًا من المواقع المطورة بغيرها من تقنيات الويب كأنظمة إدارة المحتوى أو أطر العمل الأخرى وهذا رغم كونه عامل قوة لك كمطور لكنه قد يجعل بعض العملاء يفضلون الخيارات الأرخص. وجود تحديثات متكررة قد يجعلك تواجه صعوبات في تعلم الجديد في كل إصدار وتعديل شيفرة تطبيقاتك المطورة بإصدارات قديمة لذا يجب أن تكون لديك رغبة مستمرة في التعلم كي تتلاءم مع كل إصدار جديد. كانت هذه قائمة بأبرز عيوب أو سلبيات لارافيل Laravel، وبموازنة السلبيات والإيجابيات يمكن أن تقرر فيما إذا كان إطار لارافيل سيلبي احتياجاتك أم لا. تنظيم الكود في لارافيل Laravel يتميز إطار لارافيل Laravel بكود منظم وسهل الصيانة يحافظ على تنظيم مشاريعك البرمجة من خلال استخدامه معمارية MVC وهي اختصار لثلاث كلمات هي: النموذج Model الذي يعني بيانات التطبيق فهو يتفاعل مباشرة مع قاعدة البيانات الخاصة بك ويسترد المعلومات منها. العرض View الذي يعني واجهة التطبيق فهو يعرض الصفحات التي يتفاعل معها المستخدم مباشرة. المتحكم Controller وهو صلة الوصل بين العرض والنموذج فهو يستقبل طلبات المستخدمين ويسترد البيانات المطلوبة من النموذج ويعالجها ويرسلها إلى صفحات العرض. وباستخدام هذا الأسلوب التنظيمي يستطيع لارافيل فصل كود التطبيق إلى ثلاث مجموعات لكل منها وظيفة محددة وهي الواجهة الخلفية والواجهة الأمامية ووحدة التحكم للربط بين الواجهتين وهذه الميزة تجعل من لارافيل أفضل إطار عمل PHP لتطبيقات الويب. بالإضافة إلى ذلك يستخدم لارافيل المسارات routes لتعيين عناوين URL الخاصة بإجراءات متحكم معين، فعندما يقوم المستخدم بإدخال عنوان URL خاص بالتطبيق يعين المسار المرتبط بهذا العنوان عنوان URL للمتحكم المسؤول عن استرداد البيانات المطلوبة من قاعدة البيانات أو النموذج ويمررها إلى صفحات العرض النهائية. كيف أتعلم لارافيل Laravel؟ بعد أن تعرفنا على إطار عمل لارافيل وأهم مميزاته واستخداماته، سنوضح لك في هذه الفقرة طريقة تعلم لارافيل وأهم الخطوات التي عليك اتباعها كي تحترفه. قبل أن تبدأ بتعلم لارافيل يجب أن تكون على دراية بأساسيات تطوير الويب والمفاهيم الأساسية في HTML و CSS. يجب أن تتعلم أساسيات البرمجة بلغة PHP وتتمكن من كتابة برامج PHP بسيطة وتعرف كذلك مبادئ البرمجة كائنية التوجه OOP. تعلم المكونات الأساسية لإطار عمل لارافيل ومعمارية MVC ومفاهيم النماذج وصفحات العرض والمتحكمات من خلال مصادر التعلم التي تفضلها سواء كانت مواقع الإنترنت أو الكتب أو الدورات التعليمية واحرص على تحديد خطة للتعلم والتزم بها كي تحقق أهدافك. طور مشاريع تطبق فيها ما تعلمته، فالتطبيق العملي طريقة رائعة لتعلم المفاهيم التي تعلمتها، ابدأ بمشروع بسيط ثم انتقل إلى مشاريع أكثر تقدمًا فهذا يساعدك على إنشاء معرض أعمال يعزز مسيرتك المهنية. لا تتوقف عن التعلم واطلع على كل جديد في مجال تطوير الويب عمومًا وإطار لارافيل على وجه الخصوص، فالتقنيات تتطور بسرعة والتعلم المستمر يساعدك على التكيف مع أي تطور جديد والبقاء في الصدارة. مصادر تعلم لارافيل Laravel إذا كنت تبحث عن مصدر عربي موثوق لتعلم لارافيل من الصفر للاحتراف بشهادة معتمدة تعزز فرصتك في سوق العمل ستجد في أكاديمية حسوب دورة تطوير تطبيقات الويب باستخدام لغة PHP وهي دورة تدريبية عالية الجودة تضم مسارات متعددة ولا تتطلب منك أي معرفة مسبقة وتعلمك كل ما يخص لغة PHP وإطار عملها لارافيل وتدمج بين الشرح النظري والتطبيق العملي، فمن خلالها ستتعلم تطوير العديد من تطبيقات الويب المتكاملة وتبني من خلالها معرض أعمال قوي، كما ستتمكن من خلال هذه الدورة من التواصل مع مدربين أكفاء وطرح أي سؤال أو مشكلة تواجهك عند تطبيق مشروعك البرمجي. كما ستجد في أكاديمية حسوب الكثير من مصادر التعلم المجانية مثل المقالات والدروس المتنوعة حول PHP وحول إطار عمل لارافيل Laravel، وبالإضافة لكل ما سبق فقد ترجمت موسوعة حسوب توثيق لارافيل الأجنبي إلى اللغة العربية ويمكنك من خلاله أن تتعرف على كل ما يخص هذا الإطار بتسلسل منظم وواضح. تنصيب لارافيل Laravel كي تتمكن من التعامل مع مشاريع لارافيل في حاسوبك المحلي عليك اتباع مجموعة من الخطوات وهي كالتالي: أول خطوة قبل البدء بتثبيت لارافيل Laravel على جهازك المحلي هي تحويل حاسوبك إلى خادم ويب محلي كي يتمكن من تشغيل PHP و نظام إدارة قواعد البيانات مثل MySQL أو PostgreSQL، يمكنك القيام بذلك باستخدام XAMPP المتوافق مع كافة أنظمة التشغيل. عليك كذلك تثبيت أي محرر أكواد أو بيئة تطوير متكاملة IDE ترغب بها لتحرير أكواد مشروعك مثل PhpStorm أو Visual Studio Code أو أي محرر آخر تتآلف معه. بعدها عليك تثبيت مدير الحزم كومبوزر Composer لتحميل إطار لارافيل من خلاله، وهو ضروري لتحديد المكتبات التي يحتاجها مشروعك بكل سهولة وإدارتها بالنيابة عنك. وللمزيد يمكنك مطالعة مقال ما هو Composer ولماذا يجب على كل مطور PHP استخدامه. الآن يمكنك تثبيت لارافيل على جهازك، وأبسط طريقة لتحميل لارافيل هي تشغيل محرر الأوامر في نظامك والانتقال للمسار الذي تريد إنشاء مشروع لارافيل الخاص بك فيه ثم كتابة الأمر التالي، هنا أنشأنا مشروع لارافيل باسم example-app composer create-project laravel/laravel example-app لتشغيل المشروع انتقل إلى مجلد مشروعك وهو في حالتنا D:\example-app ونفذ الأمر التالي: D:\cd example-app D:\example-app>php artisan serve هذا الأمر سيشغل تطبيق لارافيل على خادم تطوير PHP وينتج عن تنفيذه عرض رابط المشروع بالشكل التالي http://127.0.0.1:8000، كل ما عليك هو نسخ هذا الرابط ولصقه في المستعرض لتظهر لك الصفحة الرئيسية لموقع لارافيل الخاص بك كما هو موضح في الصورة التالية. ولإيقاف تشغيل خادم التطوير من خلال سطر الأوامر اضغط على مفتاحي Ctrl+C في لوحة المفاتيح. ولمزيد من المعلومات حول تثبيت لارافيل يمكنك مطالعة مقال تثبيت وإعداد لارافيل Laravel على دوكر كومبوز Docker Compose ومقال تثبيت Laravel 5 وإعداده على Windows وUbuntu. أخيرًا أنصحك أن تفتح مشروع في محرر الشيفرات الذي اخترته وتتعرف على بنية المجلدات في Laravel وتفهم دورها في المشروع ومساهمتها في نموذج MVC المستخدم في إطار العمل لارافيل. هذا كل شيء! أنت جاهز الآن لتبدأ رحلتك في اكتشاف لارافيل والبدء بتعلمه. الخلاصة اكتشفنا في مقال اليوم ما هو إطار عمل لارافيل Laravel وأهميته في سوق العمل، وتعرفنا على أهم المميزات التي يقدمها في مجال تطوير مواقع وتطبيقات الويب، كما تعرفنا على كيفية تنصيب لارافيل وبدء التعامل معه وأهم مصادر تعلمه. وسواء كنت مطورًا مبتدئًا أو خبيرًا في برمجة تطبيقات الويب فإن لارافيل Laravel خيار مناسب لك تمامًا فهو يوفر لك بيئة تطوير سهلة وقوية ويقدم لك الكثير من الميزات والوظائف المبرمجة مسبقًا التي تمكنك من بناء تطبيقات ويب احترافية وعالية الجودة بسرعة وسهولة. لا تتردد وابدأ من اليوم بتعلم لارافيل وإن اعترضك أي سؤال حوله شاركنا إياه في قسم التعليقات أسفل المقال. اقرأ أيضًا دليل مطوّري PHP للبدء في بناء تطبيقات Laravel - الجزء الأوّل دليل مطوّري PHP للبدء في بناء تطبيقات Laravel - الجزء الثاني رفع الملفّات وإدارتها في تطبيقات Laravel تجريد إعداد قواعد البيانات في لارافيل باستعمال عملية التهجير Migration والبذر Seeder لارافيل للمبتدئين-الجزء الأول: البدء في إنشاء مدونة بسيطة
-
كثيرًا ما تتردد على مسامعنا عبارة التفكير المنطقي ونسمع نصائح حول أهميته وضرورة تحسينه واستخدامه في حل مشكلات حياتنا اليومية واتخاذ القرارات الصعبة، ولعلك تتساءل ما هو التفكير المنطقي؟ وما أهميته للمبرمج وهل فعلاً كلما كان لديك منطق أفضل ستتمكن من احتراف البرمجة بشكل أسرع؟ وهل التفكير المنطقي هو مَلَكة فطرية تولد مع الشخص أم أنه مهارة مكتسبة وقابلة للتعلم والتحسين؟ إذا كنت مهتمًا بمعرفة الإجابة على كل هذه التساؤلات تابع قراءة المقال إلى النهاية. سنتعرف في مقال اليوم على ماهية التفكير المنطقي وأهميته في مجال البرمجة وأهم الطرق والأدوات التي تساعدك على اكتساب مهارات التفكير المنطقي وتحسين طريقة تفكيرك وحل الخوارزميات المعقدة. ما هو التفكير المنطقي؟ التفكير المنطقي بشكل عام هو مهارة شخصية تكسب المرء القدرة على ضبط تفكيره وتحليل المواقف والمشكلات التي تواجهه وابتكار الحلول المناسبة بناءً على المعلومات والأدلة والحقائق المتوفرة لديه، وهو يتضمن كذلك القدرة على تقسيم المشكلات المعقدة إلى أجزاء أصغر وتقييمها بشكل منهجي للوصول إلى حل. وبما أن البرمجة ما هي إلا عملية التخاطب مع الحاسوب وتوجيهه لإيجاد حل لمشكلة ما والمبرمج هو حلال المشاكل كما يقال، فإن التفكير المنطقي للمبرمج يعزز قدرته على تحليل المشكلات واستنباط الحلول واتخاذ القرارات المناسبة وتطبيق المنطق على الكود الذي يكتبه لإنتاج برامج قادرة على معالجة وتحليل البيانات وإجراء العمليات الحسابية والمنطقية عليها بشكل صحيح. خصائص التفكير المنطقي قد تتساءل ما هي الخصائص التي يجب أن أتمتع بها كي أعتبر نفسي منطقيًا وهل لدي القدرة على التفكير بشكل منطقي من أجل حل أي مشكلة أو اتخاذ أي قرار؟ لأساعدك على الإجابة دعني أعدد لك خصائص التفكير المنطقي: العقلانية وعدم التحيز العاطفي والتأثر بالمشاعر عند اتخاذ قرار ما في أي موقف. على سبيل المثال يفكر الشخص العقلاني قبل شراء منتج ما بكل إيجابياته وسلبياته وهل سيلبي هذا المنتج متطلباته أم لا ثم يتخذ قرار الشراء من عدمه. التنظيم والتخطيط المسبق لكل شيء على سبيل المثال إذا كنت تنوي الذهاب في رحلة هل تفكر مليًا قبل ذلك في كل شيء يتعلق بتفاصيل رحلتك مثل زمان ومكان الرحلة وكيف ستقضي وقتك ومتى ستعود؟ إذا كان الجواب نعم فأنت في الغالب شخص منطقي. الانتباه ودقة الملاحظة لكل ما يحيط بك وأخذه بالاعتبار عند التفكير في حل مشكلة ما فمعظم الأخطاء تنجم عن عدم الوعي والانتباه للتفاصيل الدقيقة. الديناميكية وإيجاد حلول بديلة عند الضرورة. الفضول وحب الاستكشاف وتعلم أشياء جديدة وطرح العديد من الأسئلة لتوسيع أفق التفكير. الاعتراف بالخطأ وتصحيحه فهذا ينم عن نضج فكري لدى الشخص. الاعتماد على الحقائق والمعرفة وليس على الحدس والمعتقدات عند اتخاذ القرارات. بعد قراءة الخصائص الواردة أعلاه، هل تعتقد أنك تملك مهارة التفكير المنطقي أم لا؟ مراحل التفكير المنطقي كي تتمكن من التفكير منطقيًا وحل أي مشكلة تواجهك بطريقة منهجية يمكنك اتباع الخطوات التالية: فهم المشكلة جيدًا فإذا لم نفهم المشكلة تمامًا فلن تتوصل لأفضل حل ممكن لها أو ربما تستغرق الكثير من الوقت لتحلها. تقسيم المشكلة المعقدة وصعبة الحل إلى أجزاء صغيرة وبسيطة يسهل حلها. وضع خطة واضحة لحل كل جزء من المشكلة. البدء بتنفيذ الخطة التي وضعتها في الخطوة السابقة. العودة للخطوة الأولى. أهمية التفكير المنطقي للمبرمج لا شك أن أهمية التفكير المنطقي تبرز في كافة مجالات الحياة الشخصية والعملية، لكننا سنركز في هذه الفقرة على أهمية التفكير المنطقي في مجال البرمجة على وجه الخصوص فهو يعد أحد المهارات التي لا غنى عنها للمبرمجين والمطورين بصفة خاصة. فالبرمجة تحتاج منك للتخاطب مع الآلة، والآلة لا تفهم ولا تنفذ أوامر عامة بل تحتاج إلى تبسيط الأوامر إلى أبسط شكل، وتعد أي مهمة أو مخاطبة مع الآلة مشكلة يجب إيجاد أفضل حل وكتابة الحل الناتج بشكل برنامج، ومن هنا تأتي أهمية التفكير المنطقي في عملية البرمجة. لذا في حال رغبت بأن تصبح مبرمجًا ستكون أول نصيحة توجه لك هو تعلم مهارات التفكير المنطقي والخوارزميات لكونها خطوة أساسية تسبق مرحلة البرمجة وكتابة الأكواد، وبدون امتلاك مهارات التفكير المنطقي ستجد صعوبة كبيرة في حل المشكلات البرمجية المعقدة. وإليك جملة من فوائد التفكير المنطقي للمبرمج: يمنح القدرة على التفكير خارج الصندوق وابتكار حلول إبداعية للمشكلات البرمجية. ينشط الدماغ ويحفز الذاكرة ويساعد على ربط المعلومات ببعضها البعض. يساعد على تقسيم المشكلات إلى خطوات بسيطة ومتسلسلة منطقيًا. يعزز القدرة على تصور حل المشكلات البرمجية وصياغة طريقة الحل الأمثل قبل البدء في كتابة الكود البرمجي. يساعد على كتابة وفهم الخوارزميات وهي مجموعة من التعليمات التي تخبر الحاسوب بما يتوجب عليه القيام به لحل المشكلة بناء على معطيات دخل محددة. يسهل فهم منطق البرمجة وأكوادها واستخدام التعبيرات المنطقية والعبارات الشرطية. والجدير بالملاحظة أن المهارات التقنية ليست وحدها ما يبحث عنه أرباب العمل في المبرمجين والمطورين المرشحين للتوظيف بل تجدهم يحرصون على توافر مجموعة من المهارات والسمات الشخصية مثل التفكير المنطقي ومهارات حل المشكلات ومهارات التواصل الفعال وتنظيم الوقت وغيرها من السمات الأخرى التي يمكنك الاطلاع عليها في هذا الفيديو: التفكير المنطقي لحل المشكلات البرمجية يحتاج أي مبرمج لمهارة التفكير المنطقي لحل المشكلات البرمجية لأن حلها يتطلب طريقة معينة في التفكير ووضع خطوات الحل بطريقة مفضلة ومتسلسلة منطقيًا وقابلة للحل حاسوبيًا. على سبيل المثال إذا طلب منك حل مشكلة صنع شطيرة توست من الزبدة والمربى سيكون عليك أن تفكر بداية بالمواد المطلوبة لصنعها وهل هي متوفرة أم لا وهي الزبدة والمربى والخبز والسكين. بعد التأكد من توافر كل المعطيات اللازمة سيكون عليك التفكير بالخطوات التي تحتاجها لصنع الشطيرة. قد تخبرني أن الأمر بديهي ولا يحتاج لأي تفكير منطقي ضع الزبدة والمربى على الخبز وتناولها لكن انتبه هنا لأن هذا لن يساعدك في حل المشكلة وبناءً على ذلك قد تكون الخطوات المنطقية للعمل كالتالي: افتح كيس الخبز. خذ شريحة الخبز الموجودة في أعلى الكيس وضعها في طبق. افتح علبة الزبدة. اغمس السكين في علبة الزبدة. وزع الزيدة على شريحة الخبز. ضع السكين جانباً. خذ شريحة خبز ثانية من أعلى الكيس وضعها فوق الشريحة الأولى. افتح علبة المربى. اغمس السكين في علبة المربى وزع الزيدة على شريحة الخبز الثانية. ضع السكين جانباً. ضع شريحة الخبز الأولى فوق الثانية. الشطيرة جاهزة. قد يكون هناك أكثر من طريقة لحل المشكلة على سبيل المثال يمكن أن نختصر بعض الخطوات ونفكر في حل المشكلة كالتالي: افتح كيس الخبز وخذ شريحتين من خبز التوست. افتح علبة الزيدة. اغمس السكين في الزبدة. وزع الزبدة فوق شريحة الخبز الأولى. افتح علبة المربى. اغمس السكين في المربى. وزع المربى فوق شريحة الخبز الأولى. ضع الشريحة الأولى فوق الثانية. الشطيرة جاهزة. قد تفكر أيضًا أن الخطوات (افتح العلبة، اغمس السكين، وزع) تتكرر مرة من أجل الزبدة ومرة من أجل المربى فلم لا نحاول دمجها بوظيفة وليكن اسمها مثلًا وضع المادة المطلوبة. تسألك عن المادة التي تريدها وتطبق هذه الخطوات الثلاث دفعة واحدة في كل مرة تريد فيها تنفيذ هذه الخطوة. وقد تفكر في مناقشة بعض الافتراضات والحالات الخاصة التي قد تحدث خلال العمل وتجد حلولًا مناسبة لها كأن تناقش حالة عدم وجود المربى واستبداله بالعسل أو الشوكولا، فالخطوات المتبعة في الحل وطريقة التفكير والتنفيذ والمعالجة قد تختلف من شخص لآخر وهنا تبرز أهمية التفكير المنطقي فالجميع قد يحصل في النهاية على حل لكن بعض الحلول قد تكون أفضل من غيرها وأكثر كفاءة واختصارًا. قس على هذا أي مشكلة معقدة تحاول حلها من خلال الحاسوب. في ختام هذه الفقرة أدعوك لمشاهدة هذا الفيديو اللطيف والشيق لأب يعلم أطفاله كيف يكتبون بدقة التعليمات اللازمة لطريقة صنع شطيرة زبدة الفول السوداني مع المربى، عندما تتعامل مع الحاسوب تعامل معه كأنه ذلك الأب وأخبره بالتعليمات المطلوبة لحل مشكلتك بدقة متناهية. اكتساب التفكير المنطقي في البرمجة بعد أن تعرفت على أهمية التفكير المنطقي في تحسين البرمجة أعتقد أنك تتساءل الآن هل التفكير المنطقي هو موهبة فطرية تولد مع المبرمج وتمكنه من التوصل إلى حلول منطقية مناسبة لحل مشكلات الكود بسهولة وسلاسة، أم أنه مهارة مكتسبة يمكن تنميتها من خلال أدوات وممارسات معينة؟ لحسن الحظ رغم أن التفكير المنطقي هو ملَكَة فطرية يتميز بها البعض ويساعدهم وجودها على تعلم لغات البرمجة أسرع من غيرهم لكنه في نفس الوقت مهارة قابلة للاكتساب والتحسين والتطوير من خلال العديد من الطرق والتقنيات. إليك أهم الطرق والأدوات التي تساعدك على تحسين التفكير المنطقي في البرمجة: حلّ الألغاز والألعاب المنطقية. استخدم الورقة والقلم لوصف أي مشكلة تواجهك. تعلّم الخوارزميات. قسّم المشكلات المعقدة لأجزاء أصغر. تمكّن من أساسيات البرمجة. شارك في المسابقات والتحديات البرمجية. ادرس الشيفرات البرمجية للآخرين. تعلّم نماذج البرمجة وأنماط التصميم. دعنا نناقش كل طريقة من هذه الطرق ونتعرف على أهميتها في تنمية منطقك البرمجي حلّ الألغاز والألعاب المنطقية فحل الألغاز المنطقية وألعاب الذكاء مثل الشطرنج وألغاز الكلمات المتقاطعة وسودودكو و tic-tac-toe أو غيرها من الألغاز الرياضية والألعاب المنطقية وألغاز الذكاء IQ أمر ممتع ومفيد جدًا في تشيط عقلك وتحسين تفكيرك المنطقي وبالتالي تحسين قدراتك البرمجية. فمهارة حل الأحاجي أمر يبحث عنه معظم أرباب العمل لمعرفة مدى قوة تفكيرك وسرعة بديهتك فلا تستغرب حين تطرح عليك في مقابلات العمل مع شركات البرمجيات ألغاز من قبيل الأحجية التالية: كم عدد العملات التي تمتلكها إذا كانت جملة واحدة فقط من الجمل الثلاث التالية صحيحة: لديك عملة واحدة على الأقل. لديك خمس عملات على الأقل. عدد العملات الموجود معك أقل من خمسة. خذ وقتك في التفكير بحل هذه المسألة ويمكن أن تشاركني في التعليقات الجواب الذي توصلت إليه وكيف توصلت إليه. كما يمكن أن تتدرب على الكثير من المسائل والأحاجي المنطقية، ابحث عن ألغاز مثل لغز المئة سجين 100 prisoners problem أو لغز الجمل والموز camel and banana puzzle أو غيرها من الألغاز المشهورة التي تخص مجال البرمجة وعلوم الحاسب فهي متوفرة بكثرة على مواقع الإنترنت ومتاجر التطبيقات. استخدم الورقة والقلم لوصف أي مشكلة تواجهك استخدم الورقة والقلم عند التفكير واكتب كافة المعطيات المتاحة بين يديك كي لا تنسى أحدها فنحن البشر نتذكر الأشياء التي نكتبها بكفاءة أكثر، بعدها ناقش كافة الخيارات التي تخطر ببالك للحل وحاول أن تستنتج الحل الأمثل والأدق لها. ويمكنك أن ترسم مخططات توجيهية توضح لك الأمور بشكل أفضل لاسيما إذا كنت شخصًا بصريًا حينها ستساعدك المخططات والرسوم التوضيحية والمربعات والدوائر والأسهم على تصور المشكلة وفهمها بشكل أفضل وكتابة كود مناسب لحلها لاحقًا. تعلّم الخوارزميات فتعلم الخوارزميات وهياكل البيانات من شأنه أن يعزز التفكير المنطقي التحليلي والتفكير الخوارزمي الذي يغير طريقة تفكيرك في حل المشكلات ويعلمك منهجية التفكير بطريقة تشبه الطريقة التي يعمل بها الحاسوب كما أنه يساعدك لاحقًا في تعلم لغات البرمجة. يمكن أن تبدأ بالخوارزميات الأساسية مثل خوارزميات الفرز والترتيب sorting algorithms وخوازميات البحث search algorithms وخوارزميات فرق تسد divide and conquer وتفهم آلية عملها ثم تتدرج في تعلم خوارزميات أكثر تعقيدًا، كما أن فهم هياكل البيانات مثل القائمة المترابطة linked lists والمكدس stack والشجرة الثنائية binary trees واستخدامها أثناء تنفيذ الخوارزميات يسرع كثيرًا من قدرتك على حل المشكلات المعقدة. قسّم المشكلات المعقدة لأجزاء أصغر عندما تعجز عن حل مشكلة ما لماذا لا تجرب أن تحللها وتقسّمها إلى مشكلات أصغر يسهل التعامل معها، ابدأ بحل كل مشكلة منها وكافئ نفسك على تحقيق كل هدف صغير ثم اجمع كل الأجزاء لتتكامل مع بعضها البعض وتحل المشكلة الأساسية. على سبيل المثال إذا طلب منك إبجاد طريقة أو خوارزمية للبحث عن رقم ما في سلسلة من الأرقام يمكنك تقسيم المشكلة إلى مشاكل أصغر تحلها كالتالي: معرفة من أين أبدأ البحث (من بداية السلسلة أم نهايتها أم من الوسط). معرفة متى وكيف يتم إيقاف عملية البحث. تحديد كيفية مقارنة عنصرين من عناصر السلسلة لتحديد أيهما يأتي قبل العنصر الآخر. تحديد كيفية متابعة البحث عند عدم العثور على الرقم المطلوب. تمكّن من أساسيات البرمجة تأكد من الفهم الجيد لأساسيات البرمجة مثل المتغيرات وأنواع البيانات والتعليمات الشرطية والحلقات التكرارية والدوال وهياكل البيانات بالتوازي مع تطوير تفكيرك المنطقي فالبرمجة والمنطق يعززان بعضهما البعض فمن جهة يساعدك التفكير المنطقي على فهم تعليمات البرمجة ومن جهة أخرى تساعدك كتابة الأكواد البرمجية على تحسين منطقك والتفكير بالطريقة التي يفهمها الحاسوب. وتذكر أنك بدون إتقان المفاهيم الأساسية والتطبيق العملي لها من خلال حل العديد من أسئلة البرمجة وحل مشكلات رياضية بسيطة من البداية إلى النهاية بشكل منتظم فإنك لن تتمكن من تطوير تفكيرك وتعلم المفاهيم المتقدمة لاحقًا وعندما تكون عالقًا في مشكلة معينة لا مشكلة في البحث عن حلول لها على الإنترنت وفهم منطق عملها فهذا يحسن مهاراتك أيضًا. شارك في المسابقات والتحديات البرمجية شارك في المسابقات والتحديات البرمجية فهي تركز على تحديات منهجية ومتسلسلة في الصعوبة وغالبًا ما تكون مقيدة بوقت محدد لذا يساعدك حلها على تحسين وتسريع تفكيرك المنطقي. حتى لو لم تحقق نتائج عالية في هذه المسابقات ستكون التجربة مفيدة لك كما أن مناقشة حلول المشاركين الآخرين تفيدك في توسيع أفق تفكيرك. ادرس الشيفرات البرمجية للآخرين فكما ذكرنا سابقًا قد توجد أكثر من طريقة لحل مشكلة معينة لهذا قد يتبع كل مبرمج طريقة خاصة به لحل المشكلة والتعرف على وجهات نظر مختلفة يفيدك بكل تأكيد ويطور منطقك البرمجي، ستجد الكثير من الأكواد لمبرمجين خبراء في المجتمعات البرمجية ومستودعات المشاريع مفتوحة المصدر مثل GitHub. تعلم نماذج البرمجة وأنماط التصميم إن تعلم نماذج البرمجة مثل البرمجة كائنية التوجه OOP والبرمجة الوظيفية functional programming وأنماط التصميم البرمجي design patterns التي توفر حلول ونماذج للمشكلات البرمجية الشائعة فهي تساعدك في بناء حلول منطقية أكثر وضوحًا وتنظيمًا وأقل أخطاءً وتحسن مهاراتك البرمجية. عادة ما تدرس مادة الخوارزميات وحل المشكلات بما يتعلق بالتفكير المنطقي في بداية أي مسار يُعلم البرمجة تعليمًا صحيحًا، سواءً في الجامعات أو مسارات البرمجة الخاصة، فمثلًا في دورة علوم الحاسوب في أكاديمية حسوب ستتعرف على أهم الخوارزميات وطريقة كتابتها وتحليلها، وتتعرف على أهم بنى المعطيات وتتعلم أساسيات البرمجة وأنماط التصميم وتكتب الكثير من البرامج العملية التي تعزز تفكيرك المنطقي وتحسّن مستواك البرمجي بشكل كبير. نصائح إضافية لتحسين التفكير المنطقي إضافةً للطرق التي ذكرناها سابقًا، إليك قائمة من النصائح السريعة التي من شأنها كذلك أن تحسن مهاراتك وتفكيرك المنطقي وتعزز فهمك للبرمجة: احرص على القراءة فهي تغذي الدماغ وتعزز تفكيرك في الأمور. لا تكن عاطفيًا أو متحيزًا لوجهة نظرك وحاول أن تتفهم آراء الآخرين. اهتم بكل التفاصيل وحلل معنى الكلمات والجمل وافهم مدلولاتها الدقيقة. تعلم لغة جديدة فهذا من شأنه أن يقوي دماغك ويحفزه. مارس نشاطًا إبداعيًا تحبه كالرسم والكتابة. كن فضوليًا واطرح تساؤلات عن مواضيع تثير اهتمامك واستكشف إجاباتها فهذا يوسع أفق تفكيرك المنطقي. حل مشاكل جديدة كل يوم أو جرب طرقًا مختلفة لحل نفس المشكلة. طور علاقات هادفة مع أشخاص آخرين وتناقش معهم حول آراء مختلفة ووسع وجهة نظرك للأمور. تعلم التفكير النقدي من خلال تحليل الحقائق والأدلة بطريقة منطقية لفهم مشكلة أو موضوع ما بدقة. حافظ على هدوءك وتركيزك عند حل مشكلة ما، فالتوتر والاستعجال أكبر عدو للتفكير السليم. كن صبورًا ولا تستسلم بسرعة وضع أهدافًا واقعية لتحسين التفكير المنطقي وابذل جهدك لتحقيقها فتغيير السلوك أمر يستغرق وقتًا. الخلاصة تعرفنا في مقال اليوم على مفهوم التفكير المنطقي الذي يعد أحد المهارات الضرورية لأي مبرمج أو مطور برمجيات، والتي تمكنه من التعامل بكفاءة مع حل المشكلات البرمجية وجمع كل المعطيات الممكنة حولها وتحليلها وفهمها ووضع الحلول المناسبة لها أيًا كانت لغة البرمجة التي يستخدمها، وتعرفنا على مجموعة من الطرق والنصائح التي تساعد المبرمجين على تحسين تفكيرهم المنطقي وبرمجة التطبيقات بكفاءة ومرونة. وتذكر في الختام أن تركيزك على تعلم لغات البرمجة والأمور التقنية على أهميته لا يكفي لجعلك مبرمجًا جيدًا، لذا لا تهمل مهاراتك الناعمة ومن أهمها مهارات التفكير المنطقي والتواصل الفعال فهي سبيلك للتميز والحصول على فرصة العمل التي تطمح لها. اقرأ أيضًا مدخل إلى الخوارزميات المرجع الشامل إلى تعلم الخوارزميات كيف تتعلم البرمجة: نصائح وأدوات لرحلتك في عالم البرمجة برمجة الحاسوب للمبتدئين هل أنا حقا مبرمج؟ متى أسمي نفسي مبرمجًا لماذا يجب أن تعلم طفلك البرمجة؟
-
لاشك أن كتابة الأكواد البرمجية لحل المشكلات المختلفة تُعَد واحدةً من أفضل طرق تعلم لغة بايثون أو أي لغة برمجة أخرى، فالتطبيق العملي ومحاولة كتابة أكواد بايثون وتشغيلها بنفسك وفهم آلية عملها ومدخلاتها ومخرجاتها والعمل على تصحيح أخطائها كفيلة بتطوير مهاراتك البرمجية بكثرة وتسريع وتيرة تعلمك للبرمجة. سنوفر في مقال اليوم مجموعةً من أبرز أكواد لغة بايثون، ونوضح من خلالها استخدامات أوامر بايثون في أمثلة برمجية بسيطة؛ وننصحك بدراسة هذه الأكواد والعمل على تنفيذها على حاسوبك وتطويرها بإضافة أكواد جديدة لمساعدتك في فهم أساسيات لغة بايثون أكثر. كيفية كتابة كود بايثون Python قبل البدء بكتابة أكواد لغة بايثون لابد أنك تتساءل أين وكيف أكتب كود بايثون؟ وكيف يفهم حاسوبي أوامر لغة بايثون وينفذها بطريقة صحيحة ويعرض نتائج التنفيذ. الجواب على هذا السؤال يعتمد على جهازك وعلى المنصة أو نظام التشغيل الذي تستخدمه على هذا الجهاز، كما تتوفر عدة طرق لكتابة وتنفيذ أوامر بايثون لتختار منها ما يناسبك. حتى تتمكن من تنفيذ كود بايثون على حاسوبك الشخصي، عليك في البداية تثبيت برنامج خاص يسمى مفسر بايثون أو المترجم الفوري لبايثون Python interpreter مهمته تفسير وتشغيل الشيفرات البرمجية التي تكتبها. وللقيام بذلك، انتقل إلى موقع بايثون الرسمي وثبت مفسر لغة بايثون الموافق لنظام تشغيلك ويندوز أو لينكس أو ماك. بعدها سيكون بإمكانك كتابة أكواد بايثون وتنفيذها في وضعين: الوضع التفاعلي Interactive Mode وهو يصلح لتنفيذ الأكواد والتعليمات البسيطة، حيث يمكنك من كتابة كل تعليمة من تعليمات بايثون وتنفيذها مباشرةً في سطر الأوامر، فهو يقرأ كل أمر من أوامر بايثون ويقيم نتيجته، ثم يطبع النتيجة على الشاشة ثم يكمل قراءة الأمر التالي. الوضع النصي Script Mode يصلح لتنفيذ أكواد بايثون الطويلة، حيث يتوجب عليك كتابة كافة تعليمات البرنامج وحفظها في ملف نصي له الامتداد py. ثم تنفيذها، وهو أسهل في تعديل الكود وإعادة استخدامه في المستقبل. بعد تثبيت مفسر بايثون، ستتكمن من كتابة الأكواد مباشرة في الطرفية أو نافذة سطر الأوامر لنظام تشغيلك لتشغيل أكواد باثيون في الوضع التفاعلي، أو يمكنك استخدام محرر أكواد أو بيئة تطوير متكاملة مثل IDLE و Pythonista PyCharm و VS Code و Anaconda Python أو Rodeo لكتابة وتنفيذ أكواد بايثون ضمن ملفات نصية ثم تنفيذها. وللمزيد من التفاصيل حول إعداد بيئة عمل بايثون على حاسوبك يمكنك قراءة مقال كيفية استخدام سطر أوامر بايثون التفاعلي ومقال بيئات التطوير IDE المستخدمة في تطوير تطبيقات بايثون وإذا كنت لا ترغب في إعداد بيئة بايثون على حاسوبك أو كان جهازك لا يحتوي على موارد كافية لتثبيت البرامج المستخدمة في كتابة اكواد بايثون وترغب بالتدرب على كتابة أكواد بسيطة وتنفيذها، فيمكنك الاعتماد على طريقة سهلة لتنفيذ أكواد بايثون للمبتدئين وهي المترجمات الفورية عبر الانترنت أو منصات تطوير باثيون السحابية مثل Programiz Compiler و Replit و Geekflare Online Compiler و OneCompiler التي يمكن استخدامها لبدء تعلم بايثون. دورة تطوير التطبيقات باستخدام لغة Python احترف تطوير التطبيقات مع أكاديمية حسوب والتحق بسوق العمل فور انتهائك من الدورة اشترك الآن في هذا المقال، سننفذ أكواد بايثون على حاسوب محلي يعمل نظام التشغيل ويندوز، وسنعتمد على محرر أكواد بايثون Python IDLE و IDLE هنا هي اختصار لعبارة Integrated Development and Learning Environment أي بيئة التعلم والتطوير المكامل فهذا المحرر يثبَّت تلقائيًا على الحاسوب بمجرد تثبيت مفسر بايثون على نظامي التشغيل ويندوز أو ماك ليساعدك على كتابة الأكواد وتنفيذها، وفي حال كنت تستخدم نظام لينكس فيمكنك تثبيته باستخدام مدير الحزم. وبما أننا سننفذ أكواد بايثون على نظام تشغيل ويندوز، لذا بعد اكتمال تحميل نسخة بايثون الخاصة بنظام التشغيل، نكتب كلمة IDLE في شريط بحث ويندوز، وعندما يظهر التطبيق المطلوب ننقر فوق خيار فتح لتشغيله كما في الصورة التالية. سيعمل المحرر في الوضع التفاعلي افتراضيًا، وسنختبره بكتابة التعليمة البرمجية التالية التي تطبع عبارة "This is Python code" على الشاشة print("This is Python code") أيضًا، يمكننا تنفيذ أكواد بايثون في الوضع النصي من خلال إنشاء ملف جديد من خلال اختيار القائمة File من شريط القوائم في الأعلى والنقر فوق الأمر New File، وسيؤدي هذا إلى فتح ملف فارغ في المحرر بحيث يمكنك أن تكتب ضمنه كود بايثون وتحفظه، ثم تنفذه من خلال اختيار الأمر Run module من القائمة Run، وسنعتمد هذه الطريقة عند كتابة الأمثلة على أكواد بايثون في الفقرات التالية. أمثلة على أكواد بايثون دعنا نتعرف على مجموعة من أكواد برامج بايثون البسيطة التي يمكنك من خلال فهم آلية التعامل مع أوامر بايثون المختلفة مثل المتغيرات والشروط والحلقات التكرارية وتعريف واستدعاء دوال بايثون واستدعائها وأهم أنواع البيانات وهياكل البيانات في بايثون والتعامل مع الوحدات والمكتبات والملفات، وغيرها من المواضيع الأساسية في لغة بايثون. ملاحظة: تفترض هذه المقالة أن لديك معرفة مسبقة عن أساسيات البرمجة بلغة بايثون وتريد تطبيق هذه المعرفة في كتابة برامج عملية تتأكد فيها من فهمك لهذه الأساسيات، لذا لا تقرأ الأكواد مباشرة بل جرب كتابتها بنفسك ثم قارن ما كتبته مع الكود المكتوب لتحقق الفائدة المرجوة. كود بايثون لإيجاد مساحة ومحيط الدائرة لكتابة برنامج بلغة بايثون يحسب مساحة ومحيط دائرة، سنعرف دالتين الأولى لحساب المساحة والأخرى لحساب المحيط، تحتاج كل دالة لتمرير وسيط يمثل نصف قطر الدائرة وتعيد كل دالة منها قيمة وحيدة كما نحتاج لتعريف ثابت pi=3.14 واستخدامه لحساب المطلوب كما يلي: # تعريف الثوابت pi=3.14 # تعريف دالة حساب مساحة الدائرة def areaOfCircle(r): return pi*r*r def areaOfCircle(r): return pi*r*r # تعريف دالة حساب محيط الدائرة def circumOfCircle(r): return 2*pi*r # استدعاء الدوال في البرنامج r=int(input("Enter radius of circle ")) area = areaOfCircle(r) circm = circumOfCircle(r) # عرض النتائج print('Area=',"%.2f" % area) print('Circumference=',"%.2f" % circm) يكون الخرج الناتج عن تنفيذ الكود السابق كما يلي: Enter radius of circle 2 Area= 12.56 Circumference= 12.56 ملاحظة 1: يمكنك الاستعاضة عن تعريف الثابت pi في أول سطرين من الكود السابق واستيراده من الوحدة math كما يلي: # استيراد قيمة pi from math import pi ملاحظة 2: استخدمنا التنسيق %.2f في الكود السابق لتحديد دقة الأعداد العشرية الناتجة وعرض رقمين عشريين فقط بعد الفاصلة، جرب مسح التنسيق من الكود السابق ولاحظ كيف تظهر نتائج التنفيذ على الشاشة. كود بايثون لإيجاد أكبر عدد من بين ثلاثة أعداد لحل هذه المسألة برمجيًا، سنعرف دالة تختبر بدايةً ما إذا كان العدد الأول أكبر من الثاني والثالث معًا، بحيث سنعُدّه الأكبر عندها بين الأعداد الثلاثة المدخلة، وإلا فنحن أمام حالتين، إما أن العدد الثاني هو الأكبر أو العدد الثالث هو الأكبر، لذا سنختبر ما إذا كان العدد الثاني أكبر من الثالث، فسيكون هو أكبر الجميع وإلا فالعدد الثالث هو الأكبر. أسهل طريقة لتحقيق هذا الحل من خلال كود بايثون هي من خلال استخدام التعليمة الشرطية if-elif-else كما يلي: #تعريف الدالة def biggest(num1,num2,num3): if num1 > num2 and num1 > num3 : return num1 elif num2 > num3 : return num2 else : return num3 num1=int(input("Enter num1 value: ")) num2=int(input("Enter num2 value: ")) num3=int(input("Enter num3 value: ")) #استدعاء الدالة big= biggest(num1,num2,num3) print("The largest number among the three numbers is: ",big) عند تنفيذ الكود السابق نحصل على خرج مشابه لما يلي: Enter num1 value: 233 Enter num2 value: 45 Enter num3 value: 67 The largest number among the three numbers is: 233 كود بايثون لتحويل الزاوية من الدرجات إلى الراديان وبالعكس إذا طلب منك كتابة برنامج بايثون لتحويل وحدة قياس الزاوية من الدرجات، فعليك بدايةً أن تعرف القانون الرياضي الذي يحول من درجة إلى راديان أو العكس كما هو مبين في الصورة التالية لتحقيق هذه المعادلة باستخدام أكواد لغة بايثون نكتب البرنامج التالي: import math radian = float(input("Input radians: ")) degree = radian*(180/math.pi) print("The angle value in degrees = " degree) degree = float(input("Input degrees: ")) radian = degree*(math.pi/180) print("The angle value in radian = " degree) عند تنفيذ البرنامج نحصل على خرج مشابه للتالي: Input radians: 5 The angle value in degrees: 286.4788975654116 Input degrees: 90 The angle value in radian: 1.5707963267948966 دورة الذكاء الاصطناعي احترف برمجة الذكاء الاصطناعي AI وتحليل البيانات وتعلم كافة المعلومات التي تحتاجها لبناء نماذج ذكاء اصطناعي متخصصة. اشترك الآن كود بايثون لحساب مضروب أو عاملي عدد ما باستخدام التعاود مضروب عدد Factorial أو ما يعرف كذلك بعاملي العدد هو حاصل ضرب جميع الأعداد الصحيحة من العدد واحد إلى هذا الرقم. على سبيل المثال عاملي العدد 5 يحسب كما يلي: 5! يساوي حاصل ضرب الأعداد من 5 إلى 1 ببعضها والناتج هو 120. أفضل طريقة لحل مسألة العاملي من خلال بايثون هي باستخدام مفهوم التعاود Recursion، حيث سنستدعي الدالة داخل تعريفها كما يلي: def fact(n): if n==0: return 1 else : result = n * fact(n-1) return result num=int(input("Enter num value: ")) if num < 0: print("Sorry factorial does not exist for negative numbers") else : print("The factorial of", num, "is", fact(num)) عند تنفيذ الكود السابق لحساب عاملي العدد 5 سنحصل على النتيجة التالية: Enter num value: 5 The factorial of 5 is 120 ملاحظة: يمكن أن تحل أي مسألة تعاودية من خلال حلقة تكرارية، لكن ليس بالضرورة أن يكون الحل بسيطًا، فقد تزداد أكواد البرنامج التعاودي تعقيدًا عند تحويلها إلى الأسلوب التكراري. جرب كتابة الكود السابق من خلال حلقة for التكرارية بدلًا من استدعاء الدالة ضمن تعريفها، ماذا تلاحظ؟ كود بايثون للتحقق من كون السنة الحالية كبيسة وعرض أيام شهر فبراير تكون السنة كبيسةً إذا كان عدد أيام شهر فبراير هو 29 يوم، وهي سنة تأتي كل أربع سنوات. ولنعرف إن كانت السنة كبيسة أم لا، نقسمها على 4 فإن كان باقي القسمة صفر فهي كبيسة وإلا فهي ليست كذلك. لكن بايثون توفر طريقةً أسهل للتحقق من كون السنة كبيسة من خلال الوحدة calender التي تضم الكثير من الدوال المساعدة ومن بينها الدالة ()isleap التي تخبرنا الدالة ما إذا كانت السنة المعطاة كبيسة أم لا كما يلي: import calendar if (calendar.isleap(2023)): print ("السنة كبيسة") else: print("السنة غير كبيسة") print(calendar.month(2023,2)) ينتج الكود السابق الخرج التالي: السنة غير كبيسة February 2023 Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 جرب كتابة كود بايثون لحل المسألة السابقة دون استخدام الوحدة calendar، ماذا تستنتج؟ كود بايثون لتخرين أسماء ومعدلات مجموعة من الطلاب سيكون الكود موجهًا لتخرين أسماء ومعدلات مجموعة من الطلاب وترتيبها تصاعديًا وفقًا لأسمائهم وتنازليًا حسب معدلاتهم. سنكتب كود بايثون يستخدم بنية معطيات القاموس Dictionary في بايثون، وهو بنية مكونة من أزواج من المفتاتيح والقيم. سنعُد اسم الطالب هو المفتاح ومعدله هو القيمة، وبما أننا نحتاج لتخزين مجموعة من الطلاب, فسننشئ قائمة قواميس، أي أن القاموس سيكون موجودًا كعنصر في القائمة، ونستعين بالدالة ()sort التي تمكننا من فرز القاموس حسب مفتاح الفرز الذي نمرره كوسيط للدالة. Students = [ {'Name': 'Ali', 'avg': 70}, {'Name': 'Said', 'avg': 100}, {'Name': 'Mohammad', 'avg': 90}, {'Name': 'Manal', 'avg': 66}, {'Name': 'Adel', 'avg': 84}, ] # custom functions to get employee info def get_name(Students): return Students.get('Name') def get_avg(Students): return Students.get('avg') # sort by name (Ascending order) Students.sort(key=get_name) print("ترتيب الطلاب تصاعديًا وفق الأسماء") print(Students, end='\n') # sort by salary (Descending order) print("ترتيب الطلاب تنازليًا حسب المعدل") Students.sort(key=get_avg, reverse=True) print(Students, end='\n') تعطي أكواد بايثون السابقة النتيجة التالية: ترتيب الطلاب تصاعديًا وفق الأسماء [{'Name': 'Adel', 'avg': 84}, {'Name': 'Ali', 'avg': 70}, {'Name': 'Manal', 'avg': 66}, {'Name': 'Mohammad', 'avg': 90}, {'Name': 'Said', 'avg': 100}] ترتيب الطلاب تنازليًا حسب المعدل [{'Name': 'Said', 'avg': 100}, {'Name': 'Mohammad', 'avg': 90}, {'Name': 'Adel', 'avg': 84}, {'Name': 'Ali', 'avg': 70}, {'Name': 'Manal', 'avg': 66}] ملاحظة: في هذا الكود قمنا بفرز القاموس بالدالة ()sort حسب الترتيب الأبجدي للأسماء تصاعديًا ثم حسب ترتيب قيم المعدل تنازليًّا، وستكون النتيجة في كل مرة قاموسًا جديدًا أي أن القائمة الأصلية ستتغير ونحصل على قائمة بترتيب مختلف، أما إذا كنت تريد دالة تعرض فقط القائمة التي فُرزت دون تغيير القائمة الأصلية، فاستخدم في هذه الحالة الدالة ()sorted في الكود أعلاه ولاحظ الفرق. كود بايثون لكتابة وقراءة البيانات إلى ملف نصي سنكتب في هذا البرنامج كود بايثون لإنشاء ملف نصي باسم data.txt في القرص المحلي D وحفظ مجموعة من البيانات يدخلها المستخدم فيه وهي الاسم والكنية بعد تحويلهما لأحرف كبيرة، وحفظ كلمة المرور كما هي، ثم قراءة محتوى هذا الملف وعرضه على الشاشة وأخيرًا قم بعرض حجم الملف الناتج بالبايت. import os first=input("Enter your first name: ") last=input("Enter your last name: ") password =input("Enter Password : ") #فتح الملف للكتابة وإنشاؤه إن لم يكن موجود file = open("D:\data.txt", "a") #كتابة البيانات إلى الملف file.write("\nFirst name: "+first.upper()+", Last name: "+last.upper()+", Password: "+password) file.close() # قراءة محتوى الملف وطباعتها على الشاشة data = open("D:\data.txt", "r") for line in data: print(line) #عرض حجم الملف size = os.path.getsize("D:\data.txt") print(f"\nThe size of file is {size} bytes") ينتج عن تنفيذ كود بايثون أعلاه الخرج التالي: Enter your first name: ola Enter your last name: saleh Enter Password : $123456* First name: OLA, Last name: SALEH, Password: $123456* The size of file is 55 bytes ملاحظة: لا تحتاج إلى استيراد أي وحدات أو مكتبات خارجية لقراءة الملفات أو الكتابة لها في بايثون، فهي تتيح الوصول إلى ملفات نظام التشغيل والكتابة والقراءة منها ضمنيًا، لكننا استوردنا الوحدة os في كود بايثون السابق لاستخدام الدالة getsize() التي تعيد حجم الملف الممرر لها كوسيط. ولمعرفة المزيد من التفاصيل يمكنك الاطلاع على مقال قراءة الملفات والكتابة فيها في بايثون كود بايثون لعرض النسب المئوية للمصاريف الشهرية بشكل مخطط دائري في هذا البرنامج، سنكتب كود بايثون بالاستعانة بمكتبة بايثون الشهيرة matplotlib لتصميم الرسوم البيانية والإحصاءات ونستخدم الدالة pie لتمثيل المخطط الدائري المطلوب. import matplotlib.pyplot as plt Partition = 'Bills', 'clothes', 'transportation', 'food' sizes = [250, 100, 300, 200] fig1, ax1 = plt.subplots() ax1.pie(sizes, labels=Partition, autopct='%1.1f%%', startangle=90) ax1.axis('equal') plt.title("Monthly budget") plt.show() استوردنا في الكود أعلاه واجهة برمجة التطبيقات pyplot في مكتبة تصميم الرسوميات matplotlib باسم مستعار plt، ثم استخدامنا دوالها لإنشاء مخطط دائري مكون من أربعة أقسام لها تسميات وأحجام وألوان مختلفة كما في الصورة التالية: ملاحظة: لكي تتمكن من تنفيذ البرنامج السابق عليك تعلم طريقة التعامل مع المكتبات والحزم معرفة طريقة تثبيتها، على سبيل المثال لتثبيت المكتبة matplotlib على نظام تشغيل ويندوز نكتب الأمر التالي في نافذة سطر الأوامر pip install matplotlib وإلا سنحصل على رسالة الخطأ التالية: ModuleNotFoundError: No module named 'matplotlib' ولمعرفة المزيد من المعلومات حول أهم مكتبات بايثون وكيفية الاستفادة منها، ألقِ نظرةَ على أهم 8 مكتبات بلغة البايثون تستخدم في المشاريع الصغيرة الخلاصة استعرضنا في مقال اليوم أمثلةً منوعةً عن أكواد بايثون جاهزة حيث تناولنا من خلالها العديد من المفاهيم الأساسية للغة، مثل التعامل مع السلاسل النصية والأرقام والملفات والحلقات والشروط والدوال واستيراد المكتبات والوحدات الخارجية والاستفادة منها في كتابة البرامج بسرعة وفعالية. حاول فهم هذه الأكواد وتطبيقها، واحرص على كتابة كودات بايثون عديدة بنفسك والتدرب على حل أكبر قدر ممكن من المسائل البرمجية كي تعزز فهمك لأساسيات لغة بايثون، وإذا استشكل عليك فهم أي كود برمجي، أو كنت تود كتابة كود بايثون لحل مسألة ما ولست متأكدًا من طريقة القيام بذلك، يمكنك طرح مسألتك للنقاش في قسم التعليقات أسفل المقال. اقرأ أيضًا: تعلم لغة بايثون Python تطبيقات لغة بايثون المرجع الشامل إلى تعلم لغة بايثون بيئات التطوير IDE المستخدمة في تطوير تطبيقات بايثون
-
نشرح لك في مقال اليوم طريقة تعلم جافا سكريبت التي تُعَد واحدةً من أكثر لغات البرمجة شهرة وشعبية في أوساط المطورين حول العالم والتي تستخدم من قبل معظم إن لم يكن جميع التطبيقات والمواقع التي تتصفحها يوميًا. سوف نستعرض في البداية مفهوم لغة جافا سكريبت ونوضح أبرز تطبيقاتها واستخداماتها، كما سنتعرف على أهم أطر عمل جافا سكريبت ومكتباتها، ومن ثمة نكتشف الفرق بين لغة جافا سكريبت ولغة البرمجة جافا ولغة Typescript، وختامًا سنوفر لك أهم الخطوات والمصادر المفيدة التي تساعدك على تعلم جافا سكريبت من الصفر حتى الاحتراف. ما هي لغة جافا سكريبت JavaScript لعلك تتساءل ما هي جافا سكريبت JavaScript أو ما يعرف اختصارًا JS؟ الجواب ببساطة هو أنها لغة برمجة عالية المستوى تجعل مواقع الويب تفاعلية، فمن خلال جافا سكريبت صار بإمكان مطوري المواقع إضافة وظائف تفاعلية لمواقع الويب وتمكين المستخدمين من التفاعل مع عناصر الموقع مثل القوائم المنسدلة ونماذج الاتصال؛ كما مكنت لغة جافا سكريبت المطورين من إدخال التأثيرات الحركية على المواقع، مثل الرسوم المتحركة ومشغلات الفيديو والخرائط التفاعلية. تُعَد جافا سكريبت إحدى لغات البرمجة الثلاثة الرئيسية المستخدمة في تطوير الواجهات الأمامية لمواقع الويب فهي تستخدم إلى جانب لغة HTML المسؤولة عن تحديد بنية موقع الويب، ولغة CSS التي تنسق عناصر موقع الويب، في حين يتجلى دور لغة جافا سكريبت JavaScript في إضافة وظائف لموقع الويب وتمكين التفاعل مع محتوى الموقع من خلال ما يسمى بنموذج تمثيل المستند ككائن Document Object Model أو النموذج الشجري، والذي يعرف اختصارًا DOM. ومفهوم DOM ببساطة ما هو سوى عملية تمثيل صفحات موقع الويب بطريقة خاصة بحيث يُعَد كل عنصر من عناصر الصفحة عبارة عن كائن Object يمكن الوصول له وتعديله والتحكم به بواسطة جافا سكريبت، وللمزيد من المعلومات حول المفهوم DOM وتعلم كيفية التعامل معه من خلال لغة جافا سكريبت يمكنك الاطلاع على مقال مكونات الويب: التعامل مع شجرة DOM الخفية. كذلك، تُعَد جافا سكريبت اليوم لغة برمجة متعددة الأغراض، فلا يقتصر استخدامها على تطوير الواجهات الأمامية للويب فقط، فبعد ظهور بيئة Node.js وظهور أطر العمل والمكتبات المختلفة -التي سنتعرف عليها تباعًا في هذا المقال- أصبحت لغة جافا سكريبت قادرةً على العمل على الواجهة الخلفية لمواقع الويب، بمعنى العمل من طرف الخادم والتفاعل مع قواعد البيانات، كما صارت تستخدم في العديد من مجالات البرمجة. استفد من تقنيات جافا سكريبت في بناء موقع آمن وفعّال وظّف مبرمج جافا سكريبت خبير على مستقل أضف مشروعك الآن مثال على استخدام لغة جافا سكريبت في المتصفح تحتوي معظم المتصفحات الرئيسية على قارئ جافا سكريبت مضمّن يقرأ التعليمات البرمجية ويفسرها، مثل تعليمة تغيير نص عنصر معروض على الصفحة أو الحصول على قيمة ما من المستخدم ومعالجتها وعرض النتيجة في المتصفح؛ حيث كل ما تحتاجه لكتابة كود جافا سكريبت الخاص بك هو محرر نصوص بسيط مثل المفكرة أو محررات شيفرات برمجية مثل فيجوال ستوديو VS Code أو Atom أو Sublime أو بيئة تطوير متكاملة IDEs لجافا سكريبت مثل IntelliJ IDEA و Komodo IDE، أو بيئة تطوير سحابية مثل CopePen، لكي تساعدك في كتابة التعليمات البرمجية وتسهل عليك اكتشاف الأخطاء. عندما يقرأ المتصفح ملف HTML الخاص بك سيبدأ بقراءة هذا الملف سطرًا سطرًا من أعلى إلى أسفل ويفسره ويعرضه على الشاشة. وعندما يصل إلى شيفرات جافا سكريبت، فإنه يشغّل هذه الشيفرات بالكامل قبل المتابعة إلى أسفل الصفحة. يمكن تضمين أكواد جافا سكريبت ضمن كود HTML بطريقتين إما من خلال تضمين شيفراتها البرمجية بين الوسمين <script> و <script/> أو من خلال كتابة الأكواد في ملف بالامتداد js، وتضمين هذا الملف ضمن كود HTML بالشكل التالي: <script type="text/javascript" src="path-to-javascript-file.js"></script> على سبيل المثال، كود جافا سكريبت التالي يستخدم لتغيير لون خلفية صفحة الويب عند مرور مؤشر الفأرة فوق اللون المطلوب <!DOCTYPE html> <html dir="rtl" lang="ar"> <head> <script> function bgChange(bg) { document.body.style.background = bg; } </script> </head> <body> <h2>مثال على تغيير لون خلفية الصفحة</h2> <p>اختر اللون الذي تفضله</p> <table style="width:300px;height:100px"> <tr> <td onmouseover="bgChange(this.style.backgroundColor)" onmouseout="bgChange('transparent')" style="background-color:#89CFF0"> </td> <td onmouseover="bgChange(this.style.backgroundColor)" onmouseout="bgChange('transparent')" style="background-color:#FFBF00"> </td> </tr> </table> </body> </html> عند استعراض الصفحة السابقة في المتصفح سنحصل على النتيجة التالية: كيف أصبحت لغة جافا سكريبت تعمل من طرف السيرفر؟ بدأت جافا سكريبت حياتها كما ذكرنا سابقًا كلغة برمجة تعمل ضمن المتصفح، لكن كانت هناك عدة محاولات لجعلها تعمل خارج المتصفح، فقد حاولت شركة نيتسكيب من البداية تطوير بيئة عمل تسمى LiveWire يمكنها أن تعرض صفحات الويب الديناميكية باستخدام جافا سكريبت التي تنفذ على الخوادم، غير أن هذه التجربة باءت بالفشل سريعًا. بعد فترة وجيزة وتحديدًا في عام 2009 كتب مهندس البرمجيات في شركة جوجل ريان داهل Ryan Dahl بيئة تشغيل مفتوحة المصدر ومتعددة المنصات لجافا سكريبت، وسماها Node.JS، التي وفرت طريقةً لتنفيذ التعليمات البرمجية لجافا سكريبت من طرف الخادم، كما أرفقت هذه البيئة بنظام إدارة الحزم يسمى Node Package Manager أو اختصارًا npm الذي ساعد كثيرًا على تنظيم وإدارة حزم البرمجيات التي يتم التعامل معها في المشاريع البرمجية. ولمزيد من المعلومات حول التعامل مع مدير الحزم npm في مشاريع Node.JS وأهم مميزاته وطريقة تشغيل المهام باستخدامه، أنصح بمطالعة الفيديو التالي استخدام مدير الحزم npm ما هي Node.JS وما أهميتها؟ Node.JS هي بيئة تشغيل للغة جافا سكريبت مسؤولة عن تشغيل ملفات جافا سكريبت خارج المستعرض، وبالتالي أصبح لدى المطورين طريقتان لتشغيل كود جافا سكريبت، الأولى أن تكون أكواد جافا سكريبت ضمن موقع ويب وتنفذ ضمن متصفح الويب، والثانية تشغيل أكواد جافا سكريبت باستقلالية عن المتصفح باستخدام Node.JS. عند تشغيل كود جافا سكريبت في المتصفح، سيكون بإمكانك الوصول إلى عناصر HTML وتعديلها والتحكم بها؛ أما عند تشغيلها في Node.JS، فلن يكون هناك ملف HTML يمكن لجافا سكريبت الوصول إليه، بل سيعمل الكود باستقلالية، لكنك ستتمكن في هذه الحالة الوصول إلى نظام الملفات على جهازك والتعامل معها. كانت Node.JS في البداية مدعومةً على أنظمة تشغيل لينكس وماك أو إس فقط، ثم دعمت لاحقًا من قبل معظم أنظمة التشغيل الأخرى. وعلى الرغم من أن Node.JS لم تكن المحاولة الأولى لجعل جافا سكريبت تعمل على الخادم، إلا أنها كانت أول محاولة تنجح فعليًا، حيث شكلت نقطةً هامةً في مسيرة تطور جافا سكريبت ووصولها لهذه الشهرة والشعبية. وللعلم، لم تكن Node.JS هي التقنية الوحيدة من طرف الخادم التي تستخدم JavaScript، فقد طورت مايكروسوفت لغتها الخاصة JScript التي دُعمت لأول مرة في متصفح إنترنت إكسبلورر3 عام 1996، لكنها عانت من مشاكل أمنية عديدة وظهرت فيها مجموعة من الأخطاء التي دفعت مايكروسوفت لتعطيلها. كما طورت مايكروسوفت لغة VBScript وهي مجموعة فرعية من لغة البرمجة فيجوال بيزيك Visual Basic المعدة للعمل على مستعرض الويب إنترنت إكسبلورر وحاولت هذه اللغة منافسة لغة جافا سكريبت، لكنها لم تنجح بذلك، فقد كان مستعرض إنترنت إكسبلورر المتصفح الوحيد الذي دعم هذه اللغة. وكما تعرف، فقد أوقف هذا المتصفح اعتبارًا من حزيران/ يونيو 2022، لذا وفرت مايكروسوفت ميزة VBScript في متصفح Microsoft Edge فقط من أجل المستخدمين الذين يحتاجون إلى تشغيل تطبيق ويب قديم يحتوي على شيفرات VBScript. على هذا الأساس، تمكنك Node.js من إثبات وجودها واعتمادها كتقنية ناجحة لتحرير جافا سكريبت من قيود المتصفح وجعلها تتحول إلى لغة شاملة تعمل في الواجهة الخلفية Back-end وفي الواجهة الأمامية Front-end وتستخدم في تطوير جميع أنواع التطبيقات سواء تطبيقات السيرفر أو الجوال تطبيقات سطح المكتب وهذا شجع المطورين والمبرمجين على التوجه نحو تعلم جافا سكريبت واحترافها. أهمية تعلم لغة جافا سكريبت اختيرت لغة البرمجة جافا سكريبت على أنها اللغة الأكثر استخدامًا بين المطورين المحترفين والمبتدئين على حد سواء، فهي تستخدم من قبل أكثر من 63% من المطورين واحتفظت بمركز الصدارة للعام العاشر على التوالي بحسب ما أظهر استطلاع الرأي الذي أجراه موقع التطوير الشهير StackOverflow لعام 2022 ستجد أن النسبة الأكبر من المستودعات البرمجية مفتوحة المصدر المستضافة على موقع GitHub مكتوبة بلغة جافا سكريبت، وهذا إن دل على شيء، فإنما يدل على مدى أهمية هذه اللغة ومدى شهرتها بين المبرمجين. تبرز أهمية جافا سكريبت كذلك بأنها لغة سهلة الاستخدام والتعلم، فهي لغة عالية المستوى وقريبة للغة الطبيعة، كما أنها تكون مثبتة ضمنيًا في معظم المتصفحات، ولست بحاجة للقيام بأي إجراء لإعداد بيئة التطوير الخاصة بها ويمكنك كتابة تعليماتها وتشغيلها ورؤية نتائجها على عناصر صفحات الويب مباشرةً دون الحاجة لأي إعداد لبيئة التطوير الخاصة بك، ما يجعلها واحدةً من أسهل لغات البرمجة للمبتدئين تعد جافا سكريبت أيضًا لغةً ممتازةً ومثاليةً للمبرمجين الذين يرغبون في التعرف على أساسيات البرمجة، فهي سهلة التعلم وتفيدهم طوال حياتهم المهنية، فبمجرد تعلم مبادئها الأساسية ستتمكن من تطبيقها بسهولة على أي لغة برمجة أخرى تريد تعلمها سواء بايثون أو جافا أو C++ أو غيرها من لغات البرمجة. إضافةً إلى سهولة التعلم، تُعَد جافا سكريبت أداةً قوية، فلكونها لغة متعددة المجالات والاستخدامات ويمكنك استثمارها في الكثير من المجالات مثل تطوير مواقع وتطبيقات الويب وتطبيقات الجوال وبناء تطبيقات سطح المكتب، فهي تستخدم أيضًا في مجال إنترنت الأشياء (IoT) والعديد من المجالات الأخرى التي سنتحدث عنها بمزيد من التفصيل في فقرة لاحقة؛ ولهذا تستخدمها المواقع والتطبيقات التابعة لأهم الشركات التقنية مثل جوجل ويويتوب وويكيبيديا وأمازون وفيسبوك ولينكدإن وتوتير. من ناحية أخرى، لغة جافا سكريبت لا تتوقف عن النمو والتطور، وهو ما ينبئ بأن المستقبل سيظل واعدًا لهذه اللغة، إذ تتمتع جافا سكريبت بمجتمع نشط وفعال يعمل بصورة مستمرة على تطوير إصدارات جديدة لأدوات وأطر عمل ومكتبات جديدة تعتمد على جافا سكريبت وتتيح للمطورين إنشاء برامجهم وتطبيقاتهم بسهولة وبساطة دون الغوص في تفاصيل اللغة ويقدم لك الدعم والمساعدة في حل أي مشكلة تواجهك في التعامل معها. لغة جافا سكريبت في سوق العمل تُعَد جافا سكريبت واحدةً من أكثر المهارات طلبًا والأعلى أجرًا في سوق العمل التقني، إذ هناك طلب كبير على مطوري جافا سكريبت ولا غرابة في ذلك، فجافا سكريبت تستخدم تقريبًا في حوالي 98٪ من مواقع الويب، وبالتالي تحتاج هذه المواقع إلى مطورين لإدارتها وصيانتها. ومن ناحية الأجور، يتقاضى مطورو جافا سكريبت أجورًا عالية، وبالرغم من أن الأجور تتفاوت بناءً على عدة عوامل أهمها الموقع الجغرافي وسنوات الخبرة التي يملكها المطور، لكن تبقى أجور مطوري جافا سكريبت مرتفعةً مقارنةً بباقي المهن وبالمقارنة مع عدة لغات برمجية أخرى. أظهر استطلاع الرأي الذي أجراه موقع ستاك أوفرفلو حول التقنيات الأعلى أجرًا أن مطوري جافا سكريبت يتقاضون رواتب سنوية تقدر وسطيًا بحوالي 65000 دولارًا وهو مبلغ كبير مقارنةً بعدة لغات وتقنيات برمجية شائعة الاستخدام. وتسعى الشركات والمؤسسات لتوظيف مطوري جافا سكريبت أكفاء وتدفع لهم رواتب مجزية. بالتالي إذا كنت حريصًا على ضمان مستقبل وظيفي مستقر وتسعى للحصول على وظيفة مرموقة وذات أجر مرتفع، فإن جافا سكريبت تُعَد أداةً قويةً ومتعددة الاستخدامات، يعني من خلال تعلمها يمكن أن تحقق لك ما تطمح له بسهولة. ما هي أهم مكتبات وأطر لغة جافا سكريبت؟ توفر لغة جافا سكريبت العديد من المكتبات وأطر العمل التي تتضمن مجموعةً من التعليمات البرمجية المكتوبة مسبقًا والجاهزة للاستخدام والمختبرة، والتي تسرع من وتيرة عمل المبرمجين في تطوير المشاريع وتجعله أبسط وأسرع وأكثر كفاءة. إطار العمل framework في البرمجة هو في الأساس مكتبة من التعليمات البرمجية للغة معينة، وهو بمثابة مخطط عام لبناء مشروعك البرمجي، فهو يمنحك هيكلًا للعمل من خلاله ويحتوي على مجموعة من المكونات والأدوات الجاهزة للاستخدام بدلًا من كتابتها من الصفر؛ كما أنه يوفر نهجًا منظمًا لكتابة تعليمات برمجية منظمة ومختصرة ومقروءة.من أشهر أطر عمل جافا سكريبت نذكر أنغولار Angular وأمبر Ember وفيو Vue. أما المكتبة library، فهي تتضمن كذلك مجموعةً من التعليمات البرمجية الجاهزة للاستخدام، لكنها تكون محدودةً أكثر من أطر العمل وتستخدم عادةً من أجل حالات مخصصة وتنفذ وظائف وميزات معينة، على سبيل المثال تُعَد كل من جي كويري jQuery ورياكت React و Lodash أمثلةً على مكتبات جافا سكريبت التي توفر عليك كتابة عشرات الأسطر البرمجية لتحقيق وظائف محددة في تطبيقك. ولكي تدرك أهمية استخدام المكتبات والأطر، تخيل أنك على سبيل المثال تبني منزلًا خاصًا بك، بحيث يمكنك إما بناؤه من الصفر وهذا سيستغرق وقتًا وجهدًا، أو بناؤه باستخدام عناصر جاهزة مسبقة الصنع تستوردها لموقع منزلك وتجمّعها بكل سهولة. بنفس الطريقة توفر لك أطر ومكتبات جافا سكريبت كل شيء وتحسن لك الأداء وتغنيك عن البدء من نقطة الصفر مما يوفر لك الجهد والوقت. مجالات وتطبيقات لغة جافا سكريبت قد تتساءل عن المجالات المختلفة التي يوفرها لك تعلم لغة جافا سكريبت، والخبر الجيد أن لغة جافا سكريبت هي لغة متعددة الاستخدامات، بالتالي تعلمها سيفتح لك مجالات عديدة يمكنك التخصص بها ويمكّنك من صنع أي نوع من التطبيقات. لنستعرض معًا أمثلةً على أهم استخدامات جافا سكريبت: تطوير مواقع الويب تطوير تطبيقات الجوال تطوير تطبيقات سطح المكتب برمجة الألعاب مواقع العروض التقديمية الذكاء الاصطناعي وتعلم الآلة تطوير التطبيقات القائمة على السحابة دعونا نتعرف على مزيد من التفاصيل حول كل مجال من هذه المجالات ومساهمة جافا سكريبت فيه. تطوير مواقع الويب تستخدم جافا سكريبت خاصةً في مجال تصميم وتطوير مواقع الويب، سواءً تطوير الواجهات الأمامية، أو الخلفية للمواقع، حيث تُعَد جافا سكريبت أفضل لغة برمجة لتطوير الواجهة الأمامية، وهي تضمَّن في كود HTML وتنفذ في المتصفح لتمنح الموقع وظائف إضافية وتأثيرات بصرية جذابة واحترافية، مع إضافة سلوك تفاعلي إلى صفحات الموقع لا يمكنك تحقيقها بواسطة HTML و CSS وحدها. أيضًا، توفر جافا سكريبت العديد من أطر العمل والمكتبات التي تساعد كثيرًا في تطوير الواجهة الأمامية للموقع، وأبرزها جي كويري jQuery وأنغولار Angular ورياكت React وفيو Vue وأمبر Ember. تستخدم جافا سكريبت أيضَا لتطوير الواجهة الخلفية لمواقع وتطبيقات الويب من خلال بيئة التشغيل Node.js، التي تعتمد على لغة جافا سكريبت الأساسية وتوفر الأدوات اللازمة لتشغيل جافا سكريبت على الخوادم ومعالجة الطلبات المختلفة من المتصفحات. ومن أهم أطر العمل التي تساعد في تطوير الواجهات الخلفية، نذكر Backbone واكسبرس Express و Meteor و Sails …إلخ. بعد تحديد الإطار أو المكتبة التي ستستخدمها في الواجهة الخلفية، عليك اختيار قاعدة البيانات المناسبة لمشروعك، وأمامك مجموعة خيارات للتعامل معها فجافا سكريبت تدعم معظم أنواع قواعد البيانات مثل MySQL و MongoDB و PostgreSQL و MongoDB …إلخ. لعلك تكون قد استنتجت مما سبق أن تعلم جافا سكريبت يمكّنك من العمل كمطور ويب شامل Full Stack Developer، مما يكسبك الرهان في سوق العمل التنافسي، فجافا سكريبت ستكفيك بالتأكيد ولن تضطر معها إلى تعلم بنية لغات البرمجة الخلفية الأخرى، مثل روبي أو جافا أو بايثون، أو غيرهم. وللمزيد من المعلومات حول تطوير الويب الكامل، يمكنك مطالعة هذا الفيديو. احصل على موقع إلكتروني مخصص لأعمالك أبهر زوارك بموقع احترافي ومميز بالاستعانة بأفضل خدمات تطوير وتحسين المواقع على خمسات أنشئ موقعك الآن تطوير تطبيقات الجوال إذا كنت مهتمًا بأن تصبح مطور تطبيقات جوال، فإن تعلم لغة جافا سكريبت سيمكنك من تطوير تطبيقات الهاتف المحمول المختلفة، سواءً التطبيقات الهجينة التي تتطلب منك كتابة كود التطبيق مرةً واحدةً فقط وتشغيله على مختلف الأنظمة مثل أندرويد Android وآي أو إس iOS (أبرز أطر عمل جافا سكريبت لتطوير تطبيقات الجوال الهجينة نذكر إطار أيونيك Ionic و PhoneGap و NativeScript)؛ أو تطوير تطبيقات جوال أصيلة native تعمل على الأنظمة المختلفة دون أي جهد إضافي لاستخدام قاعدة بيانات مختلفة لكل نظام من خلال إطار عمل React Native المبني بالاعتماد على مكتبة React.js. كذلك، يُعَد تطوير تطبيقات الويب التقدمية PWAs أحد أبرز مجالات لغة جافا سكريبت، وهي تطبيقات يمكن تشغيلها في المتصفح كموقع ويب أو تطبيق ويب، كما يمكن بذات الوقت تشغيلها على سطح المكتب والأجهزة المحمولة، وهذا بالاعتماد على قاعدة بيانات واحدة. تستخدم هذه التطبيقات تقنيات متطورةً توسع تطبيقات الويب وتحسن تجربة المستخدم، ويمكنك مطالعة مزيد من التفاصيل حول هذه التطبيقات وآلية عملها بقراءة مقال مدخل إلى تطبيقات الويب التقدمية PWA. تطوير تطبيقات سطح المكتب توفر جافا سكريبت إطار عمل مفتوح المصدر يسمى إلكترون Electron يساعد المطورين كثيرًا على تطوير تطبيقات سطح المكتب باستخدام HTML5 و CSS وجافاسكريبت JavaScript، ويمكن لهذه التطبيقات العمل على كافة أنظمة التشغيل سواء ويندوز أو لينكس أو ماك. ويُعَد محرر الأكواد فيجوال ستوديو كود Visual Studio Code أحد الأمثلة الشهيرة على تطبيق سطح مكتب مبني باستخدام إطار العمل إلكترون Electron. برمجة الألعاب تُعَد لغة جافا سكريبت من التقنيات البارزة في مجال تطوير الألعاب ثنائية الأبعاد أو ثلاثية الأبعاد، سواءٌ الألعاب التي تعمل على الويب، أو على الجوال. فلعبة Angry Birds الشهيرة من أولى ألعاب الجوال المطورة باستخدام جافا سكريبت. وتوفر جافا سكريبت عشرات المكتبات والأطر ومحركات الألعاب التي تسرع عملية تطوير الألعاب وتمكّنك من إنشاء تأثيرات بصرية احترافية، نذكر منها مكتبة Three.js التي تمكنك من إنشاء رسومات احترافية ثلاثية الأبعاد في المتصفحات التي تدعم HTML5 ومحرك PixiJS و ImpactJS لتطوير الألعاب ثنائية الأبعاد ومحرك الألعاب Phaser و BabylonJS لإنتاج رسوم متحركة وعوالم احترافية للألعاب ثلاثية الأبعاد. مواقع العروض التقديمية تُعَد جافا سكريبت مثاليةً لإنشاء مجموعة شرائح أو عروض تقديمية تستند إلى الويبو، أو ما يعرف باسم موقع ويب كعرض تقديمي Presentations as websites، حيث توفر جافا سكريبت مكتبات متخصصة في هذا الأمر مثل RevealJs و BespokeJs التي تسهل عليك مهمة إنشاء عرض تقديمي احترافي يعمل على شبكة الانترنت بسرعة وسهولة. الذكاء الاصطناعي وتعلم الآلة إذا كنت مهتمًا بمجال تعلم الآلة Machine Learning والتعلم العميق والشبكات العصبية Deep Learning، فإن لغة جافا سكريبت توفر لك مجموعةً من المكتبات المفيدة في هذا المجال، ومن أبرز هذه المكتبات JavaScript ML5.js و Synaptic و Brain.js و ConvNetJS. أيضًا، توفر لغة جافا سكريبت العديد من المكتبات المتعلقة بعلوم البيانات مثل مكتبة Tensorflow التي تسمح لعلماء البيانات بإنشاء رسوم بيانية لعرض البيانات. تطوير التطبيقات القائمة على السحابة يتجه معظم المطورين اليوم لاستخدام بيئة Node.js لبناء تطبيقات الحوسبة السحابية، وهذه التطبيقات تعتمد في الغالب على قواعد البيانات غير العلائقية NoSQL لتخزين السجلات وتستخدم المعيار JSON من أجل تبادل البيانات على الإنترنت. وعلى الرغم من أن JSON يعمل جيدًا مع أي لغة برمجة، إلا أنه يعمل بصورة أفضل مع لغة JavaScript. كانت هذه أمثلة عن أبرز المجالات والتطبيقات التي ستتمكن من القيام بها عند تعلم جافا سكريبت، وهناك العديد من التطبيقات الأخرى، مثل تطبيقات قواعد البيانات وحلول إنترنت الأشياء IOT وتطبيقات الأمن السيبراني وغيرها. وكما ترى، لغة جافا سكريبت هي لغة برمجة قوية وشاملة ومتعددة الاستخدام وتتميز عن غيرها من لغات البرمجة بتنوع مجالاتها وبكونها صالحة لبناء أي نوع من التطبيقات، لذا كل ما عليك هو تحديد المجال الذي تريد التخصص فيه وستجد الكثير من الأطر والمكتبات التي توفرها لك لغة جافا سكريبت، والتي تسهل عليك إنجاز هذه التطبيقات بسرعة ومرونة. ما الفرق بين جافا وجافا سكريبت على الرغم من أن لغة جافا ولغة جافا سكريبت تتشابهان في التسمية وتناسبان تطوير تطبيقات الويب وتطبيقات الجوال، إلا أنهما لغتان مختلفان تمامًا ولا ينبغي الخلط بينهما، فقد طورت جافا سكريبت عام 1995 من قبل Netscape Communications على أنها -لغة برمجة نصية- تتوافق مع مواصفات ECMAScript، وتسمح بتحديد سلوك الصفحة من طرف العميل وتنفيذ أمور متقدمة على صفحات الويب وتجعلها أكثر ديناميكية وتفاعلية؛ أما لغة جافا فهي لغة تم تطويرها عام 1995 من قِبل شركة Sun Microsystems لتكون -لغة برمجة عامة الأغراض-. أيضًا، تعتمد لغة جافا سكريبت على البرمجة القائمة على الأحداث وتدعم نموذج البرمجة الإجرائية والبرمجة كائنية التوجه لبناء صفحات ويب تفاعلية، وتوفر واجهات برمجة تطبيقات للعمل مع النصوص والتواريخ وهياكل البيانات ونموذج كائن المستند DOM؛ في حين تعتمد لغة جافا أساسًا على مفهوم الكائنات Objects والبرمجة كائنية التوجه OOP، ويمكن تشغيل التعليمات البرمجية المكتوبة فيها على أي نظام تشغيل، من خلال آلة جافا الافتراضية Java virtual machine أواختصارًا JVM. وبالتالي يمكن القول أن كلًا من لغة جافا وجافا سكربيت تستخدمان في العديد من المجالات، مثل تطوير الويب وتطوير تطبيقات الهاتف المحمول وتطبيقات سطح المكتب وإنترنت الأشياء والأنظمة المضمنة وغيرها من المجالات، لكن الاختلاف الأساسي بينهما يكمن في نموذج البرمجة الخاص بكل منهما، فلغة جافا تعتمد على مفهوم الكائنات OOP، في حين أن لغة جافا سكريبت متعددة النماذج، حيث يمكن استخدامها كلغة OOP، أو لغة إجرائية، أو لغة نصية. كذلك، تختلف الللغتان في طريقة تنفيذ التعليمات البرمجية، حيث تشغّل تعليمات جافا سكريبت على المتصفح ولها تطبيقات قادرة على تنفيذها خارج المتصفح من جانب الخادم، في حين يتم تنفيذ أكواد جافا على آلة جافا الافتراضية JVM أو على متصفح يدعم جافا من خلال ما يعرف ببريمجات جافا Java applet. ما الفرق بين لغة جافا سكريبت JavaScript ولغة تايب سكريبت Typescript؟ بالرغم من أن جافا سكريبت هي لغة البرمجة النصية الأكثر شيوعًا واستخدامًا في مواقع وتطبيقات الويب، إلا أنها ليست اللغة الوحيدة التي تقوم بذلك، حيث تُعَد لغة تايب سكريبت TypeScript كذلك لغةً برمجةً نصية مفتوحة المصدر طورتها شركة مايكروسوفت عام 2012، وكان الهدف من إيجادها هو أن كود جافا سكريبت قد أصبح معقدًا وصار التعامل معه صعبًا في التطبيقات الكبيرة. على هذا الأساس تم إستحداث لغة TypeScript التي تُعَد لغةً برمجةً نصيةً تساعد في إنشاء محتوى صفحة ويب ديناميكي، وهي لغة أشمل من جافا سكريبت وتتبع نفس معاييرها ECMAScript وتتوافق مع مكتباتها، ولكنها تجعل من جافا سكريبت أسهل في الإدارة والتعامل. تضيف TypeScript المزيد من الميزات على جافا سكريبت، ومن أبرزها دعم الأنواع Types، مما يجعل من بناء التعليمات البرمجية أكثر وضوحًا وفهمًا وتسهيلًا لعملية تصحيح الأخطاء والكشف المبكر عنها أثناء ترجمة أو تصريف الكود، وللعلم كل ما تكتبه في TypeScript يحوّل في النهاية إلى لغة جافا سكريبت، بالتالي إذا حفظت ملف جافا سكريبت ذي الامتداد js. بامتداد ts. الخاص بلغة TypeScript فسيعمل جيدًا، لكن تجدر الإشارة بأنه لا يمكنك تشغيل كود TypeScript مباشرةً في المتصفح، بل تحتاج إلى بيئة تشغيل مثل NodeJs لتحويل التعليمات البرمجية. يمنحك تعلم TypeScript كمبرمج قوةً إضافية، فهو يمكّنك من العمل على كل من مشاريع جافا سكريبت و TypeScript بذات الوقت، وستجد في أكاديمية حسوب مجموعة مقالات منوعة عن أساسيات TypeScript، كما توفر موسوعة حسوب توثيق Typescript شاملًا يعرّفك على كل ما يتعلق بهذه اللغة. ويمكن القول باختصار بأن لغة جافا سكريبت هي الخيار الأنسب عند العمل على مشاريع ويب صغيرة، في حين أن TypeScript مناسبة للعمل على المشاريع المعقدة. ولمطالعة من التفاصيل حوال أبرز الفروقات بين هاتين اللغتين، أنصحك بمطالعة مقال مقارنة بين JavaScript و TypeScript خطوات تعلم لغة جافا سكريبت هل ترغب في تعلم لغة جافا سكريبت ولكنك لا تعرف من أين تبدأ؟ أو ربما قد بدأت في تعلمها بالفعل لكنك تشعر أنك تتقدم ببطء وتبحث عن أفضل الطرق لتعلم لغة جافا سكريبت والبدء بتطوير التطبيقات المتنوعة من خلالها؟ حسنًا، يجب أن تضع في الحسبان أن أمامك مستويين من التعلم. الأول هو تعلم لغة جافا سكريبت نفسه، والثاني هو تعلم الأدوات والأطر الخاصة بلغة جافا سكريبت، والتي يمكنك إتقان أي منها والاستفادة من قوتها دون الحاجة للغوص في كل تفاصيل اللغة. وفيما يلي نقترح لك مجموعة من الخطوات التي تساعدك على تعلم جافا سكريبت بسرعة وكفاءة: الخطوة 1. تعلم أساسيات جافا سكريبت بالرغم من أن جافا سكريبت توفر العديد من المكتبات والأطر التي تتضمن شيفرات جاهزة للاستخدام تغنيك عن تعلم جافا سكريبت من البداية وتختصر لك الكثير من العمل، إلا أنني أنصحك بأن تبدأ بتعلم المبادئ الأساسية للويب وأساسيات لغة جافا سكريبت نفسها قبل الاعتماد على الأطر، فهذا سيساعدك بأن تصبح مطورًا محترفًا ويسرع من فهم إطار العمل الذي تنوي استخدامه بشكل أفضل، كما يسرع من فهم وصيانة التطبيقات والبرامج التي تطورها. الخطوة 2. تعلم المكتبات والأطر المساعدة بمجرد أن تتقن أساسيات جافا سكريبت، يمكنك التركيز على تعلم أطر العمل والمكتبات التي تساعدك في تحقيق أهدافك، فإذا كان هدفك هو تطوير الواجهة الأمامية لمواقع الويب، فركز على تعلم أدواتها. وإذا كان هدفك هو تطوير تطبيقات الجوال، فابدأ بتعلم أهم الأطر والمكتبات التي تساعدك في تحقيق هدفك. الخطوة 3. طبق ما تعلمته على مشاريع عملية لاشك أن أفضل طريقة لإتقان أي لغة برمجة ومن بينها جافا سكريبت هي التدريب العملي ومحاولة بناء مشاريع وتطبيقات تحل مشكلات حقيقية كي تعزز معلوماتك النظرية، بالتالي بمجرد أن تكمل تعلم أساسيات جافا سكريبت وأساسيات الأطر التي تحتاجها لبناء مشاريعك، ابدأ بتجريب ما تعلمته على مشاريع عملية. ويمكنك الاطلاع على مشاريع مفتوحة المصدر والاطلاع على الشيفرة البرمجية الخاصة به ومحاولة فهمها وتعديلها وتحسينها. الخطوة 4. كن صبورا في التعامل مع المشكلات البرمجية عندما تبني مشاريع عملية، سوف تواجه العديد من الأخطاء والمشكلات بلا شك، وهذا أمر مرهق في البداية، لكن عليك أن تتحلى بالصبر وأن تكتسب مهارة حل المشكلات وطرح الأسئلة والبحث عن الحلول بنفسك، فهذا سيساعدك كثيرًا على تحسين مهاراتك في البحث ومرونة في حل المشكلات البرمجية، وهما صفتان هامتان لك كمطور، وبنفس الوقت يساعدك التعلم من خلال المشاريع في بناء ملف تعريف شخصي يتيح لك الحصول على فرصة عمل مناسبة. الخطوة 5. ركز على المصادر الجيدة للتعلم لا شك أن هناك الكثير من موارد التعلم الخاصة بجافا سكريبت JavaScript من كتب ومقالات ومعسكرات وبودكاست ودورات تشرح ماهية جافا سكريبت وأطر عملها المختلفة، ويمكنك الاعتماد عليها في الويب في عملية التعلم الذاتي؛ لكن انتبه كي لا تتشتت خلال تعلمك، واحرص على الاعتماد على مصادر منهجية ومنظمة وركز على أسلوب التعلم المفضل لديك. وفي هذا الصدد، يمكن الإشارة إلى أن أكاديمية حسوب وفرت مجموعةً مميزةً من مقالات تعلم جافا سكريبت وأطر عملها المختلفة، يمكنك الوصول لها من خلال الرابط التالي؛ كما توفر موسوعة حسوب توثيقًا مميزًا لجافا سكريبت شاملًا وعالي الجودة ومرفق بالأمثلة العملية يساعدك في تعلم اللغة من الصفر. أيضًا، أصدرت أكاديمية حسوب عدة كتب شاملة تساعدك أي مبتدئ يشق طريقه في هذه اللغة هي كتاب دليل JavaScript الشامل والبرمجة بلغة جافاسكربت والبرمجة باستخدام Node.js، فإذا كنت تفضل التعلم عن طريق الكتب لما توفره من معلومات دقيقة ومترابطة، فأنصحك بتحميل هذه الكتب واعتمادها كمراجع في التعلم. وإذا كنت تبحث عن دورة تدريبية احترافية توفر وقتك ومواردك وتمكنك من تعلم جافا سكريبت واحتراف تطوير التطبيقات المختلفة باستخدامها ودخول سوق العمل بسرعة، فيمكنك الاطلاع على دورة تطوير التطبيقات باستخدام لغة JavaScript التي توفرها أكاديمية حسوب، والتي تتضمن 55 ساعة فيديو تدريبية أعدها نخبة من المتخصصين، وهي دورة غنية تتضمن عدة مسارات ولا تتطلب منك أي معرفة مسبقة للبدء، كما وتوفر لك إمكانية الحصول على شرح تفصيلي وتحديثات دورية ودعم فوري وإجابة على كافة التساؤلات التي تواجهك خلال رحلة تعلمك وتضمن لك في النهاية الحصول على شهادة معتمدة من أكاديمية حسوب. الخلاصة إلى هنا نكون قد وصلنا لنهاية مقالنا الشامل، والذي تناولنا فيه كل ما يتعلق بلغة جافا سكريبت JavaScript واستعرضنا تاريخ تطورها وتعرفنا على أطر عمل جافا سكريبت التي تعطي لها قوةً إضافية وتمكنها من التوسع في مجالات عديدة وتحولها من لغة مقتصرة على العمل في المتصفح إلى لغة قوية وشاملة ومتعددة المجالات ومفضلة بين مجتمع المطورين ومهندسي البرمجيات حول العالم. والآن هل أنت مهتم بتعلم جافا سكريبت أو لديك أي تساؤل حولها؟ يمكنك كتابة سؤالك في قسم التعليقات أسفل المقال وإذا كنت قد بدأت بالفعل في تعلم جافا سكريبت واستخدامها في التطبيقات العملية، فشاركنا تجربتك وأخبرنا عن العقبات التي واجهتها خلال تعلم جافا سكريبت وأبرز الإيجابيات والسلبيات التي لاحظتها عند استخدامك لهذه اللغة. اقرأ أيضًا الدليل الشامل لتعلم جافا سكريبت أساسيات لغة جافاسكربت ما هي جافا سكريبت؟ الدليل السريع إلى لغة البرمجة جافاسكريبت JavaScript مدخل إلى جافاسكريبت كائنية التوجه كل ما تود معرفته عن برمجة تطبيقات سطح المكتب
-
في مقال اليوم سوف نكتشف معًا لغة PHP بدءًا من التعرف على ماهية لغة PHP وطريقة عملها وأبرز مميزاتها وخطوات تعلمها وصولًا لكتابة البرنامج الأول باستخدامها. فسواء كانت لديك خبرة مسبقة في إحدى لغات البرمجة أو كنت مبتدئًا وتتعلم البرمجة للتو فإن هذا الدليل بمثابة نقطة انطلاق رئيسية في رحلة تعلم لغة PHP. ما هي لغة PHP؟ لغة PHP هي لغة برمجة قوية مفتوحة المصدر طورها المبرمج الدنماركي راسموس ليردورف عام 1994 ويأتي اسمها من اختصار عبارة PHP: Hypertext Preprocessor وهي لغة برمجة تعمل من طرف الخادم Server-side وهذا يعني أن كل الشيفرات البرمجية المكتوبة بهذه اللغة لن تنفذ على جهاز الحاسوب المحلي الخاص بالمستخدم والذي يسمى العميل Client بل تنفذ على جهاز حاسوب بعيد يسمى الخادم Server يخزن صفحات موقع الويب المكتوبة بلغة PHP ويرسلها للمستخدم عند الطلب. تطورت لغة PHP بشكل كبير منذ إطلاقها لأول مرة وهي تتحسن باستمرار وتضاف لها الكثير من الميزات مع كل إصدار، -أحدث إصدار PHP لحظة كتابة هذا المقال هو PHP is 8.2 الصادر في مايو 2023- وهي اليوم واحدة من أشهر لغات البرمجة المستخدمة في تطوير مواقع وتطبيقات الويب الديناميكية فما يزيد عن 77% من مواقع الإنترنت بحسب W3tech تستخدم لغة PHP، وتستخدمها شركات كبرى في تطوير مواقعها مثل شبكة التواصل الاجتماعي الشهيرة فيسبوك وويكيبيديا وجامعة هارفارد مما يدل على مدى قوتها ويعزز مصداقيتها. مصطلحات أساسية تحتاجها قبل تعلم PHP تستخدم لغة PHP بشكل أساسي في تطوير مواقع وتطبيقات الويب، لذا قد تصادفك خلال رحلة تعلمها مجموعة من المصطلحات الأساسية التي تحتاج لفهمها كمبتدئ قبل الغوص في تفاصيل اللغة، وإليك شرحًا مختصرًا لأهم هذه المصطلحات: موقع الويب Website: هو عبارة عن مجموعة من الصفحات الإلكترونية المرتبطة مع بعضها البعض والتي تتضمن محتوى مختلف كالنصوص والروابط والصور وغيرها. ويتكون أي موقع إلكتروني من واجهة أمامية تشمل كل ما تراه على الموقع وتتفاعل معه من صور ونصوص وأزرار وواجهة خلفية مخفية تكون مسؤولة عن تخزين بيانات الموقع واستردادها وعرضها وهي التي تجعل الموقع يعمل بشكل صحيح، يمكن استخدام عدة لغات في برمجة مواقع الويب، وبعد الانتهاء من برمجته تخزن كافة ملفاته على استضافة أو بمعنى أدق على خوادم الويب التي توفرها الاستضافة وبهذا يمكن الوصول إليه من قبل المستخدمين وعرضه باستخدام متصفحات الإنترنت. المتصفح Browser: هو برنامج أو تطبيق مثبت على جهاز المستخدم (العميل) يستخدم لتصفح الإنترنت وعرض صفحات الويب، فهو المسؤول عن إرسال طلب عرض صفحات الويب إلى الخادم من خلال كتابة عنوان URL للصفحة المطلوبة في شريط مخصص ضمن التطبيق، ومن أبرز الأمثلة على متصفح إنترنت نذكر: جوجل كروم وفايرفوكس ومايكروسوفت إيدج. خادم الويب Server: هو عبارة عن جهاز حاسوب بمواصفات خاصة يخزن محتوى مواقع الويب ويكون مسؤولًا عن تشغيلها وعرضها عند الطلب، توجد أنواع عديدة من خوادم الويب مثل خادم Apache و Nginx وخادم IIS من مايكروسوفت. بروتوكولات الإنترنت Internet protocols: هي آلية تسمح بنقل البيانات عبر الإنترنت وأشهرها بروتوكول HTTP المستخدم لتبادل البيانات بين المتصفح والخادم والذي يعتبر بمثابة لغة يستخدمها المتصفح والخادم للتواصل مع بعضهما لعرض صفحات الويب عبر الإنترنت، وبروتوكول HTTPS الآمن الذي يشفر البيانات قبل نقلها. كانت هذه أهم المصطلحات التي تحتاج لمعرفتها قبل البدء بتعلم أساسيات لغة PHP، ولمزيد من التفاصيل حول آلية عمل الويب أنصح بمطالعة مقال الفرق بين صفحة الويب وموقع الويب وخادم الويب ومحرك البحث ومقال آلية عمل شبكة الانترنت. دورة تطوير تطبيقات الويب باستخدام لغة PHP احترف تطوير النظم الخلفية وتطبيقات الويب من الألف إلى الياء دون الحاجة لخبرة برمجية مسبقة اشترك الآن كيفية عمل لغة PHP PHP هي لغة برمجة تعمل من طرف الخادم كما ذكرنا مسبقًا، لذا تحتاج لفهم آلية عمل الخادم نفسه كي تفهم طريقة عرض صفحات الويب المكتوبة بلغة PHP، بداية يجب أن يملك الخادم تطبيقًا خاصًا قادرًا على فهم ومعالجة أكواد PHP يسمى هذا التطبيق PHP interpreter، أما من طرف العميل فيجب توفر متصفح ويب واتصال بالإنترنت. عندما يطلب العميل صفحة PHP معينة من خلال المتصفح يستلم الخادم هذا الطلب ويتحقق من توفر الصفحة المطلوبة ويبدأ بمعالجتها، وقد يحتاج للاستعلام من قواعد بيانات الموقع لجلب البيانات المطلوب عرضها في الصفحة ثم يقوم بإعادة إخراج البيانات المطلوبة على شكل صفحة ويب بتنسيق HTML ويرسلها للمتصفح الذي يفهمها ويعرض النتيجة النهائية على جهاز العميل. كما تلاحظ من الصورة أعلاه تتم معالجة طلب العميل بالطريقة التالية: يرسل العميل طلبًا إلى الخادم لعرض صفحة ويب PHP. يعالج الخادم طلب العميل ويبحث عن الصفحة المطلوبة. يبدأ الخادم بمعالجة الصفحة وتنفيذ أكوادها. يجلب الخادم المحتوى المطلوب من قاعدة البيانات ويعرضه في الصفحة من قاعدة البيانات. يعيد الخادم نتيجة المعالجة النهائية بصيغة HTML إلى العميل. تظهر الصفحة النهائية على متصفح العميل. ما استخدامات PHP؟ قد تتساءل ما الذي يمكنني عمله عند تعلم لغة PHP؟ في الواقع يمكن من خلال تعلم لغة PHP إنجاز العديد من المهام ومن بينها: تطوير مختلف أنواع المواقع وتطبيقات الويب الديناميكية بدءًا من المدونات البسيطة وصولًا للمتاجر الإلكترونية الضخمة. أتمتة المهام المتكررة مثل تحميل بيانات من الإنترنت أو تنفيذ كود معين دوريًا كأخذ نسخة احتياطية من البيانات أو غيرها من المهام. إدارة الخوادم ومعالجة الملفات المخزنة عليها. التحقق من صحة بيانات نماذج الويب forms ومعالجتها وتخزينها. إدارة البيانات المخزنة في قاعدة بيانات الموقع. تشفير البيانات وحمايتها أثناء النقل أو التخزين من وإلى الخادم. تطوير مواقع متعددة المستخدمين وضبط صلاحيات وصول كل مستخدم لمتحوى محدد من الموقع. إرسال رسائل البريد الإلكتروني بسهولة بفضل ما توفره من مكتبات خاصة بالبريد الإلكتروني. احصل على موقع إلكتروني مخصص لأعمالك أبهر زوارك بموقع احترافي ومميز بالاستعانة بأفضل خدمات تطوير وتحسين المواقع على خمسات أنشئ موقعك الآن إيجابيات وسلبيات PHP بالرغم من شهرة وقوة لغة PHP في تطوير تطبيقات ومواقع الويب الديناميكية إلا أنها لا تخلو من بعض المعوقات شأنها شأن أي تقنية، وفي الفقرات التالية سنعرفك على أبرز إيجابيات وسلبيات لغة PHP. إيجابيات لغة PHP فيما يلي قائمة بأبرز المميزات والفوائد التي تتميز بها لغة PHP: بسيطة وسهلة التعلم للمبتدئين. لغة حرة ومفتوحة المصدر. توفر مجتمع دعم كبير جاهز لمساعدتك في حال واجهتك أي مشكلة. سريعة ومع كل إصدار جديد تصبح PHP أسرع من ذي قبل. مليئة بالميزات الرائعة التي تجعلها من اللغات القوية المنافسة للغات الأخرى مثل بايثون أو جافا، خصوصًا في الإصدارات الحديثة مثل PHP 8. تصلح لتطوير كافة أنواع المواقع بدءًا من المدونات البسيطة وصولًا للمتاجر الإلكترونية الضخمة. متوافقة مع كل خوادم الويب وأنظمة التشغيل. متوافقة مع جميع أنواع قواعد البيانات. توفر الكثير من المكتبات وأطر العمل مثل لارافيل Laravel وكود إغنيتر CodeIgniter التي تسهل عمل المطورين وتسرع عملهم. تستخدم في تطوير أشهر أنظمة إدارة المحتوى CMS مثل ووردبريس WordPress ودروبال Drupal. سلبيات لغة PHP فيما يلي قائمة ببعض الجوانب السلبية التي تؤخذ على لغة PHP: لغة PHP لغة مخصصة بتطوير الواجهات الخلفية لمواقع الويب، وصحيح أنك تستطيع تطوير تطبيقات عامة بسيطة، لكن هنالك لغات أفضل منها تسهل عليك العمل في مجالات عامة مثل تطوير تطبيقات سطح المكتب أو التعامل مع مكتبات تعلم الآلة. لا تناسب لغة PHP تطوير الواجهات الأمامية لمواقع الويب لذا تحتاج لتعلم لغات وتقنيات أخرى في حال رغبت في العمل كمطور ويب كامل Full-stack developer. بالرغم من كون لغة PHP آمنة إلا أن كونها لغة شائعة الاستخدام ومفتوحة المصدر يشجع على استغلالها قبل المخترقين الذين يستغلون أي ثغرات أمنية تؤثر على تطبيقات PHP لتنفيذ الهجمات على المواقع، لذا من المهم إبقاء مواقعك محدثة إلى آخر الإصدارات من PHP. تعد من اللغات ضعيفة التنميط weakly-typed بمعنى أنك قادر على تخزين رقم في متغير ما ثم تخزين نص في نفس المتغير وهذا الأمر يجعل اللغة أكثر مرونة لكنه قد يسبب أخطاء غير متوقعة في التطبيقات. أضافت الإصدارات الحديثة بدءًا من PHP 7 إمكانية تحديد أنواع المتغيرات والقيم الممررة إلى الدوال والمعادة منها، يمكن للمطورين الاستفادة من هذه الميزات لتحسين تطبيقاتهم الجديدة. ما الفرق بين PHP و Laravel؟ الجواب باختصار هو أن PHP هي لغة برمجة أما لارافيل Laravel فهو إطار عمل framework يعتمد على لغة البرمجة PHP، بمعنى آخر تعد PHP لغة برمجة لتطوير تطبيقات الويب الديناميكة من طرف الخادم وباستخدامها ستكون مسؤولًا عن كتابة كامل الشيفرات البرمجية لتحقيق كافة وظائف الموقع مثل أكواد الاتصال مع قواعد البيانات والتحقق من هوية المستخدم وغيرها من المهام من الصفر. أما لارافيل Laravel فهو إطار عمل مفتوح المصدر مبني باستخدام لغة PHP يسهل عليك عملية تطوير مواقع وتطبيقات الويب بشكل كبير فهو يوفر الكثير من المكونات والحزم الجاهزة التي يمكنك استخدامها لتسريع عملك بدلًا من كتابة كل شيء من الصفر، فمن خلال استخدام لارافيل لن تحتاج على سبيل المثال إلى كتابة أكواد طويلة ومفصلة للتحقق من هوية المستخدم فهو يوفر نظام مصادقة مدمج كما يوفر واجهات برمجية سهلة للاتصال بسهولة مع قواعد البيانات والتفاعل معها. وإذا كنت مهتمًا بالاطلاع على المزيد من التفاصيل حول مفهوم أطر العمل وطريقة عملها وأهمية الاعتماد عليها في عملية التطوير أنصحك بمطالعة مقال: تعرف على مفهوم إطار العمل Framework وأهميته في البرمجة. كتابة أول برنامج PHP قبل أن تتمكن من كتابة كود PHP وتشغيله PHP في جهازك ستحتاج لتوفر بعض البرامج الأساسية على جهازك وهي: استخدام أحد برامج تحرير النصوص لكتابة أكواد PHP، يمكنك استخدام أي محرر بسيط كالمفكرة أو أو اعتماد محرر أكواد مخصص مثل فيجوال ستوديو كود VSCode أو ++Notepad أو أي محرر مناسب يساعدك على كتابة الشيفرات البرمجية للغة PHP بسرعة وكفاءة. تثبيت محرك للغة PHP Engine على حاسوبك لتشغيل شيفرات PHP. تثبيت برنامج خادم مثل أباتشي Apache ليحول حاسوبك إلى خادم محلي قادر على معالجة طلبات عرض الصفحات. تثبيت برنامج مخصص لإدارة قواعد البيانات باستخدام لغة مثل MySQL لإنشاء قاعدة بيانات الموقع وتخزين المعلومات بشكل دائم وعرضها عند الطلب. يمكنك بدلًا من تثبيت البرامج الثلاثة الأخيرة الاعتماد على بيئة تطوير محليةمتكاملة مثل XAMPP المتوافق مع كافة أنظمة التشغيل أو WAMP المخصص لأنظمة ويندوز أو MAMP المخصص لأنظمة تشغيل ماك والتي تمكنك من تشغيل البرامج المكتوبة بلغة PHP بكل سهولة، حيث ستوفر لك بيئة التطوير البرامج مفسر للغة البرمجة PHP وخادم أباتشي محلي وقاعدة بيانات MySQL وتجمعها في حزمة واحدة، يمكنك مطالعة المزيد من التفاصيل حول تثبيت بيئة تطوير PHP على مختلف أنظمة التشغيل من خلال مقال البدء مع PHP والتعرف على أنواع البيانات فيها. بعد الانتهاء من تحويل جهازك المحلي إلى خادم وإعداد بيئة العمل ستكون جاهزًا لكتابة أول برنامج PHP وعرض نتائج تنفيذه في المتصفح. تكتب ملفات PHP ضمن المجلد الجذر للخادم لتمكين الوصول لها من قبل المتصفح، وهذا المجلد يختلف من تطبيق لآخر على سبيل المثال في حال تثبيت الخادم XAMPP في المسار C:\xampp ستجد المجلد في المسار C:\xampp\htdocs وفي حال كنت تستخدم WAMP سيكون اسم المجلد الجذر هو www، انتقل للمجلد الجذر لخادمك وأنشئ ضمنه مجلد بأي اسم تختاره وليكن learnphp ضمن هذا المجلد ستضع كافة ملفات PHP الخاصة بموقعك. أنشئ ضمن هذا المجلد ملف باسم helloworld.php وحرره باستخدام محرر النصوص المفضل لديك واكتب بداخله الكود التالي: <?php echo "Hello World!<br>"; echo "هذا هو البرنامج الأول في تعلم لغة بي إتش بي"; كما تلاحظ في الكود أعلاه تكتب أكواد PHP عادة بين الوسمين <?php و ?> لكن انتبه لأن كتابة وسم إغلاق PHP الأخير ?> في حال كان موقعه في نهاية الملف هو أمر اختياري، وينصح بحذفه لتجنب قيام محرر النصوص بإلحاق حرف خاص مخفي بعد هذا العلامة ويتسبب بعرض فراغات أو رموز غير مقصودة بعد وسم إغلاق PHP يستدعي الكود أعلاه الدالة echo التي تطبع ببساطة النص المكتوب بعدها، ما نريده الآن هو تنفيذ الكود أعلاه وعرض نتيجة التنفيذ في المتصفح، للقيام بذلك اكتب في متصفح الانترنت localhost أو 127.0.0.1 في والذي يشير إلى عنوان جهاز الحاسوب الخاص بك يليه اسم المجلد learnphp اسم الملف helloworld.php مع الفصل بينها بشرطات مائلة كما يلي. http://localhost/learnphp/helloworld.php أو http://127.0.0.1/learnphp/helloworld.php الآن اضغط على مفتاح Enter للانتقال للعنوان المطلوب، ستظهر لك النتيجة بالشكل التالي عادة لا تكتب أكواد PHP لوحدها بل تدمج مع أكواد HTML، وتذكر أن PHP هي لغة برمجة تنفذ من طرف الخادم تستخدم لإنشاء محتوى ديناميكي في موقع الويب، لذا يفيد دمجها مع لغة HTML في هيكلة هذا المحتوى الديناميكي وتنظيم طريقة عرضه في متصفح الويب، كما يمكن أن يساعد دمج كود PHP مع HTML في كتابة أكواد HTML ديناميكية تعرض في الصفحة بناءً على متغيرات وشروط برمجية مكتوبة بلغة PHP. على سبيل المثال دعنا نعدل كود الملف السابق وندمج كود PHP مع كود HTML كما يلي: <!DOCTYPE html> <html> <head> <title>PHP and HTML</title> </head> <body> <h1> <?php echo "Hello World!<br>"; echo "هذا هو البرنامج الأول في تعلم لغة بي إتش بي"; ?> </h1> </body> </html> عندما تتم معالجة كود PHP أعلاه من قبل الخادم سينشئ الخادم صفحة HTML مع تضمين المحتوى الديناميكي بداخلها ويرسل HTML الذي تم إنشاؤه إلى متصفح الويب الخاص بالمستخدم لعرض النتيجة النهائية كما في الصورة التالية: تهانينا! إذا وصلت إلى هنا وتمكنت من تنفيذ الكود السابق بنجاح ستكون قد نجحت في أول خطوة في تعلم لغة PHP ونفذت برنامجك الأول باستخدامها. كيفية تعلم لغة برمجة PHP قبل أن تقرر البدء بتعلم لغة برمجة PHP يجب عليك أن تمتلك معرفة أساسية بلغات الويب الأساسية HTML و CSS وجافا سكريبت JavaScript التي تعمل من طرف العميل لأن هذه اللغات كما ذكرنا مسبقًا تدمج مع أكواد PHP، بعدها يمكن أن تباشر رحلة تعلم لغة PHP من خلال اتباع الخطوات التالية: تعرف على طريقة تحويل حاسوبك المحلي إلى خادم وكيفية تثبيت PHP عليه وطريقة كتابة أكواد PHP وتنفيذها. تعلم ما هي الثوابت والمتغيرات في PHP ومتى نستخدم كل منها. تعرف على أنواع البيانات الأساسية في لغة PHP مثل البيانات الرقمية والنصية والمنطقية. تعرف على طريقة طباعة قيم المتغيرات في PHP. تعرف على المعاملات Operators في PHP وأنواعها المختلفة وأولوية تنفيذها. تعرف على بنى التحكم والحلقات التكرارية في PHP وكيف تساعدك على التحكم في سير تنفيذ الأكواد البرمجية. تعرف على مفهوم الدوال في PHP وما هي أهم الدوال المدمجة في PHP وكيف تكتب دوال مخصصة واستدعاءها في الكود. تعرف على بنى معطيات أكثر تقدمًا مثل المصفوفات والمصفوفات الترابطية وكيفية التعامل معها واستخدامها في تطبيقات عملية. تعلم كيفية معالجة نماذج HTML باستخدام لغة PHP والتحقق من صحة بياناتها وطريقة تخزينها في قواعد البيانات. تعلم طريقة التعامل مع الجلسات وملفات تعريف الارتباط في PHP. كيف تستخدم قواعد البيانات في PHP. تعلم البرمجة كائنية التوجه OOP في PHP وكيفية إنشاء الأصناف والكائنات البرمجية. تعرف على مفهوم إدارة الحزم والمكتبات وطريقة إدارتها باستخدام Composer. ابدأ بتطوير مواقع ويب بسيطة متكاملة تتضمن عدة صفحات ولوحة تحكم باستخدام PHP مع قواعد البيانات MySQL. تعلم طريقة مفهوم واجهة برمجة تطبيقات وكيف تنشئ واجهة REST بسيطة تمكنك من ربط تطبيقات PHP الخاصة بك بخدمات وأنظمة أخرى. تعلم طريقة تطوير التطبيقات باستخدام نموذج التصميم MVC وكيفية استخدام أحد أطر عمل PHP التي تتبع هذا النموذج مثل مثل لارافيل Laravel وكود إغنيتر CodeIgniter وابدأ بتطوير مواقع وتطبيقات احترافية باستخدامه. طور مهاراتك باستمرار وتعلم كيف تحسن الكود البرمجي وتتتبع أفضل الممارسات البرمجية لتنتج تطبيقات آمنة وعالية الجودة. كانت هذه أهم الخطوات التي تضمن لك بأن تصبح مبرمج PHP محترف قادر على إنشاء أي نوع من التطبيقات والمواقع، كل ما عليك بعد إكمال هذه الخطوات هو البحث عن فرصة مناسبة في سوق العمل أو عرض خدماتك في مواقع العمل الحر مثل مستقل أو خمسات أو يمكنك إنشاء شركة تطوير خاصة بك والعمل على تطوير مواقع لعملاء حقيقيين في سوق العمل يعزز مهاراتك بشكل كبير. مصادر تعلم لغة PHP يمكنك تعلم لغة PHP من خلال الدراسة الجامعية والالتحاق بإحدى الكليات التقنية المتخصصة وهو طريق طويل ويستغرق وقتًا، أو من خلال التعلم الذاتي لاختصار الوقت والجهد، فلحسن الحظ تعلم PHP بشكل ذاتي أمر يسير وسهل نظرًا لشهرتها وتوفر كم هائل من مصادر التعلم الجيدة لهذه اللغة من كتب ودروس ومقالات ومقاطع فيديو ومعسكرات تدريبية ودورات تدريبية عبر الإنترنت يمكنها أن تساعدك في بدء التعلم والارتقاء بمستواك البرمجي. لكن كثرة المصادر وتنوعها على أهميته إلا أنه قد يصيبك بالتشتت لذا إذا كنت تبحث عن مصدر واحد يوفر لك كل ما تحتاجه لتعلم لغة PHP ودخول سوق العمل فيمكنك الاطلاع على دورة تطوير تطبيقات الويب باستخدام لغة PHP من أكاديمية حسوب التي توفر لك محتوى فيديو غني يبدأ معك من أساسيات PHP وينتهي بك بتطوير مواقع احترافية بأشهر أطر عملها لارافيل Laravel وأشهر نظام إدارة المحتوى ووردبريس WordPress، تتوزع الدورة على أكثر من 10 مسارات شاملة ومتنوعة تعلمك كل ما تحتاجه لتدخل سوق العمل بزمن قياسي، فهي تركز على التطبيق العملي إلى جانب الشرح النظري كما توفر لك فريقًا من المدربين يتابعك طيلة فترة التعلم ويجيب على أي تساؤل أو مشكلة تعترضك، أضف إلى ذلك ستحصل في نهاية الدورة على شهادة معتمدة من أكاديمية حسوب تضاف إلى سيرتك الذاتية وتعزز فرصتك في سوق العمل. كما يمكنك الاطلاع على توثيق PHP في موسوعة حسوب التي توفر لك شرحًا متكاملًا باللغة العربية يعرفك على ماهية لغة PHP وأهم مميزاتها ويشرح لك كل ما يتعلق باللغة وكتابة شيفراتها البرمجية بدءًا من تعلم المتغيرات وأنواع البيانات والشروط والحلقات وصولًا للمواضيع البرمجية المتقدمة. هل تريد المزيد، ستجد في أكاديمية حسوب الكثير من الدروس والمقالات والسلاسل التعلمية المتكاملة حول PHP إلى جانب كتب البرمجة الشاملة التي تفيدك مهما كان مستواك البرمجي، وأخيرًا يمكنك متابعة صفحة الأكاديمية على يوتيوب وستجد فيها العديد من مقاطع الفيديو المفيدة التي تعرفك على لغة PHP بأسلوب مبسط وسهل، وتوضح أهم الفروقات بينها وبين لغات البرمجة والتقنيات الأخرى. الخلاصة تعرفنا في مقال اليوم على لغة PHP وأبرز مميزاتها واستخداماتها وتعرفنا على أهمية تعلمها لتطوير مواقع ويب ديناميكية، فإذا كنت مهتمًا بمجال تطوير الويب أنصحك أن تبدأ مباشرة بتعلم PHP فهي لغة قوية ومطلوبة في سوق العمل ومن الضروري بعد ذلك أن تتعلم أحد تعلم أطر عمل PHP مثل لارافيل Laravel فهذا يكسبك ميزة تنافسية ويعزز إنتاجيتك في تطوير مواقع احترافية بزمن قياسي. اقرأ أيضًا تعلم PHP اصطلاحات ومواضيع متفرقة مهمة لكل مبرمج PHP التعامل مع الأخطاء في PHP ممارسات الأمن والحماية في تطبيقات PHP دليل مطوّري PHP للبدء في بناء تطبيقات Laravel
-
انتهينا في المقال السابق من إضافة تنسيقات CSS إلى قالب ووردبريس وفي مقال اليوم من سلسلة برمجة قوالب ووردبريس سنتعلم كيفية إضافة أكواد جافا سكريبت إلى قالبنا المخصص لتعزيزه بمميزات ووظائف إضافية وجعله أكثر ديناميكية. هذا المقال هو المقال الأخير من سلسلة المقالات التالية: مدخل إلى برمجة قوالب ووردبريس أساسيات تطوير قالب ووردبريس إنشاء الملفات الأساسية لبرمجة قالب ووردبريس إضافة تنسيقات CSS لقالب ووردبريس إضافة المميزات لقالب ووردبريس باستخدام جافا سكريبت سنشرح اليوم ميزتين مهمتين، الأولى هي تحويل قائمة التنقل الرئيسية للقالب إلى قائمة ذات تصميم متجاوب ولتحقيق ذلك سنحولها إلى ما يعرف بقائمة الهمبرغر Hamburger Menu كي تناسب أحجام الشاشات الصغيرة وتسهل الانتقال السلس بين أقسام الموقع المختلفة عند تصفحه عن طريق الجوال. والميزة الثانية هي إضافة شريط صور منزلق Image Slider أعلى الصفحة الرئيسية للموقع ليعرض شرائح متحركة تضم العناوين والصور المصغرة لأشهر ثلاث مقالات في الموقع أو أكثر المقالات قراءة بشكل جذاب ومميز. فإذا كنت مهتمًا بتعلم الطريقة الصحيحة لإضافة مميزات إلى قالب ووردبريس الخاص بك من خلال لغة جافا سكريبت فتابع قراءة المقال للنهاية. أولاً. ميزة عرض قائمة تنقل متجاوبة في قالب ووردبريس أول ميزة نريد تحقيقها هي تحويل قائمة التنقل الرئيسية إلى قائمة ذات تصميم متجاوب Responsive design عند تغير حجم الشاشة حيث سنغير تصميم القائمة وطريقة عرض عناصرها بناءً على حجم شاشة العرض. فعندما يكون يكون حجم الشاشة كبيرًا تعرض عناصر القائمة بشكل أفقي بجانب بعضها البعض، وعندما يصبح عرض الشاشة صغيرًا (أصغر من أو يساوي 600 بكسل) ستختفي عناصر القائمة وتظهر على شكل ثلاث خطوط أفقية فوق بعضها البعض وهو ما يعرف بزر الهمبرغر Hamburger Button وسيؤدي النقر عليه إلى عرض عناصر القائمة بشكل عمودي كما هو موضح في الصورة التالية: لتحقيق هذه الميزة نحتاج للعمل على ثلاث ملفات الأول هو ملف ترويسة القالب header.php حيث سنضيف له الخطوة التالية هي أيقونة تمثل زر القائمة ثم سنربط حدث النقر فوق هذا الزر مع ربط دالة سنسميها hamFunction سنشرح وظيفتها بعد قليل. دورة تطوير تطبيقات الويب باستخدام لغة PHP احترف تطوير النظم الخلفية والووردبريس وتطبيقات الويب من الألف إلى الياء دون الحاجة لخبرة برمجية مسبقة اشترك الآن fa fa-bars الذي يمثل أيقونة الهمبرغر وهي أحد أيقونات Font Awesome التي استوردناها لقالبنا في مقال إنشاء الملفات الأساسية لبرمجة قالب ووردبريس ضمن القسم rtl-Primary-nav، ستكون مخفية في الشاشات الكبيرة وظاهرة في الشاشات الصغيرة ثم نستدعي الدالة hamFunction عند وقوع حدث النقر فوق هذا الرابط كما يلي: <section class="rtl-Primary-nav"> <?php if (has_custom_logo()) : { $custom_logo_id = get_theme_mod('custom_logo'); $image = wp_get_attachment_image_src($custom_logo_id, 'full'); } ?> <nav id="myTopnav" class="topnav"> <div class="logo"> <a href="<?php echo esc_url(home_url('/')); ?>" class="logo-link"> <img src="<?php echo $image[0]; ?>"> </a> </div> <?php wp_nav_menu(array('theme_location' => 'Primary')); ?> <a href="javascript:void(0);" class="icon" onclick="hamFunction()"> <i class="fa fa-bars"></i> </a> </nav> <?php else : ?> <nav id="myTopnav" class="topnav"> <h2> <a href="<?php echo esc_url(home_url('/')); ?>" rel="home" class="logo-link"><?php bloginfo('name'); ?></a> </h2> <?php wp_nav_menu(array('theme_location' => 'Primary')); ?> <a href="javascript:void(0);" class="icon" onclick="hamFunction()"> <i class="fa fa-bars"></i> </a> </nav> <?php endif; ?> </section> الخطوة التالية هي إضافة تنسيقات لملف style.css حيث سنضيف له استعلام وسائط Media query للتحقق من أن الجهاز الذي نتصفح من خلاله الموقع هو جوال ونطبق عليه تنسيقات عرض الأيقونة بالشكل المطلوب. المطلوب هو إخفاء أيقونة الهمبرغر عند العرض على شاشة كبيرة وتعديل تصميم عناصر القائمة وطريقة عرضها عندما يكون عرض شاشة الجهاز أقل من 600 بكسل لجعلها متجاوبة وذلك من خلال كتابة التنسيقات التالية: .topnav { overflow: hidden; z-index: 10; position: relative; } .topnav .icon { display: none; } @media screen and (max-width: 600px) { .topnav a:not(.logo-link) { display: none; } nav.topnav ul { display: block; background-color: #f6c86c; } nav.dnnav ul { display: block; float: right; background-color: #F9B01B; } nav.dnnav ul li { display: inline-block; margin: 5px; background: #f6c86c; padding: 10px; } .topnav a.icon { float: left; display: block; } .post-qwe { width: 90%; text-align: center; } .topnav .icon { position: absolute; left: 0; top: 25px; } .topnav.responsive { position: relative; } .topnav.responsive ul li a { float: none; display: block; text-align: right; } } الآن سوف نكتب كود جافا سكريبت للتبديل بين التنسيقات من خلال إنشاء ملف جافا سكريبت باسمhamburger-menu.js نضعه في في مجلد فرعي باسم js ننشؤه داخل مجلد القالب، ثم نربط هذا الملف مع قالب ووردبريس الخاص بنا. وهنا نذكر بأن لدينا عدة طرق من بينها الطريقة التقليدية من خلال إضافة الوسم <script> في تذييل الموقع أي قبل الوسم </body> في الملف footer.php كما في الكود التالي: <script type="text/javascript" src="<?php echo get_template_directory_uri(); ?>/js/hamburger-menu.js"></script> لكن الطريقة الأفضل لإضافة السكربتات في قالب ووردبريس والموصى بها من قبل نظام ووردبريس هي باستخدام الدالة wp_enqueue_script() لذا سنكتب الكود التالي في ملف وظائف القالب fumctions.php بدل الكود السابق لربط ملف hamburger-menu.js مع قالب ووردبريس الخاص بنا function modawanaty_scripts() { //.. wp_enqueue_script( 'hamburger-menu', get_template_directory_uri() . '/js/hamburger-menu.js', array(), '1.0', true ); } //.. add_action('wp_enqueue_scripts', 'modawanaty_scripts'); تأخذ الدالة wp_enqueue_script عدة وسطاء وهي: $handle: اسم فريد يمثل الملف الذي تريد تضمينه لتمييزه الملف عن غيره من الملفات. $src: مسار الملف الذي تريد تضمينه. $deps: dependencies التي يحتاج الملف إلى تحميلها قبل تحميل الملف. على سبيل المثال، إذا كنت تستخدم مكتبة jQuery في ملف جافا سكريبت الخاص بك فيجب أن تضيفها ضمن مصفوفة الاعتماديات. $ver: إصدار الملف يمكنك تحديد رقم الإصدار للملف الخاص بك للتحكم في التخزين المؤقت والتحديثات. $in_footer: قيمة بوليانية تأخذ بشكل افتراضي القيمة true وتحدد ما إذا كنت تريد تحميل الملف في تذييل الصفحة أي قبل الوسم </body> ولاستدعائه في ترويسة الصفحة أي قبل الوسم </head> يمكنك عندها تمرير القيمة false لهذا الوسيط. باستخدام هذه الطريقة ستضمن تحميل السكريبت الخاص بك بالترتيب الصحيح وتضمن أنك تتبع أفضل الممارسات لتضمينه في قالب ووردبريس الخاص بك. الآن نفتح الملف hamburger-menu.js في محرر الأكواد ونكتب بداخله الكود التالي الذي ينفذ عند النقر فوق أيقونة القائمة: const hamFunction = () => { // استهداف القائمة var hamburger = document.getElementById("myTopnav"); if (hamburger.className === "topnav") { hamburger.className += " responsive"; } else { hamburger.className = "topnav"; } }; عرفنا في الكود أعلاه دالة باسم ()hamFunction مهمتها التحكم بعرض وإخفاء عناصر القائمة، بداية عرفنا متغير باسم hamburger يستهدف القائمة ثم اختبرنا إن كان صنف التنسيق لها يساوي topnav وذلك يعني أن القائمة ليست مرئية حاليًا وفي هذه الحالة، يتم إضافة الصنف responsive ليصبح تنسيقها topnav responsive مما يؤدي لتطبيق تصميم مختلف للقائمة هو التصميم المتجاوب. أما إذا كانت القيمة المخزنة في الصنف لا تساوي topnav فإن ذلك يعني أن القائمة بالفعل مرئية وفي هذه الحالة يتم إعادة تعيين القيمة topnav لاستعادة التصميم الأصلي للقائمة وإخفائها. هذا كل شيء كل ما عليك هو الانتقال لموقع ووردبريس ومحاولة تصغير حجم الشاشة والتأكد من أن عناصر القائمة الرئيسية متجاوبة بشكل صحيح وأن عناصرها تختفي ويظهر بدلاً منها زر قائمة الهمبرغر. جرب النقر فوق الزر لتظهر لك عناصر القائمة كما توضح الصورة التالية: ثانيًا. تضمين ميزة عرض شريط منزلق للمقالات في قالب ووردبريس الآن سننشئ شريط منزلق في ترويسة الموقع وتحديدًا أعلى الصفحة الرئيسية وتحت قائمة التنقل الرئيسية مهمته عرض عناوين وصور المقالات الثلاث الأكثر قراءة من قبل الزوار، وسنضيف بعض الخواص والتنسيقات المطلوبة لعرض هذا الشريط بشكل أنيق عن طريق أكواد CSS لكي نقوم بذلك نحتاج لعدة ملفات سنشرح كل واحد على حدا. إنشاء ملف جافا سكريبت للتنقل بين الشرائح لعرض منزلق الصور بداية سننشئ ملف جافا سكريبت نسميه slideshow.js ونضعه ضمن المجلد js في مجلد القالب ونكتب ضمنه كود جافا سكريبت اللازم لعرض مجموعة من الصور أو الشرائح بشكل منزلق. سننشئ الملف ونربطه مع قالبنا كما ربطنا الملف السابق من خلال استدعاء الدالة wp_enqueue_script() في ملف وظائف القالب functions.php /** * Enqueue scripts and styles. */ function modawanaty_scripts() { //.. wp_enqueue_script( 'hamburger-menu', get_template_directory_uri() . '/js/slideshow.js', array(), '1.0', true ); //.. } add_action('wp_enqueue_scripts', 'modawanaty_scripts'); ملاحظة: عند استدعاء أكثر من ملف جافا سكريبت ضمن الدالة wp_enqueue_script() يجب الانتباه لترتيب استدعاء الملفات ومراعاة أولوية تحميل وتنفيذ الملفات في صفحات قالب ووردبريس الخاصة بك، على سبيل المثال إذا كنت تعتمد على ملفات جافا سكريبت معينة في ملفات أخرى يجب أن يتم تحميل الملفات التي تعتمد عليها أولاً. بعد ربط الملف مع قالب ووردبريس الخاص بنا سنحرر ملف جافا سكريبت الذي أنشأناه ونكتب بداخله كود جافا سكريبت مهمته الحصول على العنصر الذي يملك الصنف slides-qwe وهو عنصر الحاوية التي تعرض منزلق الصور ونخزنه في متغير slides، كما نحصل على العنصر dot وهو عبارة عن عنصر يعرض ثلاث أيقونات دائرية تعبر عن الشريحة الحالية في المنزلق ونخزنه ضمن متغير dots ثم نعرف مجموعة من الدوال للتبديل بين الشرائح المختلفة. let slideIndex = 1; showSlides(slideIndex); function currentSlide(n) { showSlides((slideIndex = n)); } function showSlides(n) { let i; let slides = document.getElementsByClassName("Slides-qwe"); let dots = document.getElementsByClassName("dot"); if (n > slides.length) { slideIndex = 1; } if (n < 1) { slideIndex = slides.length; } for (i = 0; i < slides.length; i++) { slides[i].style.display = "none"; } for (i = 0; i < dots.length; i++) { dots[i].className = dots[i].className.replace(" active", ""); } slides[slideIndex - 1].style.display = "block"; dots[slideIndex - 1].className += " active"; } عرفنا في هذه الدالة متغير slideIndex قيمته 1 يشير للشريحة الأولى، ثم استدعينا الدالة showSlides مع الوسيط n لتعرض هذه الشريحة وتتحكم بعرض النقاط المرتبطة مع الشرائح. كما عرفنا الدالة currentSlide(n) لتعيين الشريحة الحالية مباشرةً إلى القيمة n وعرضها من خلال الدالة showSlides(). إنشاء ملف slideshow.php لعرض منزلق الصور الخطوة التالية هي إنشاء ملف slideshow.php يجلب بيانات المقالات الثلاث الأكثر قراءة ثم يعرضها ويعرض نقطة موافقة لكل مقال ويربط حدث النقر على النقطة بالدالة currentSlide() لعرض الشريحة المرتبطة بها كما يلي: <!-- Slideshow container --> <div class="slider-container"> <!-- Full-width images with number and caption text --> <?php $county = 0; $popularpost_id = array(); $popularpost = new WP_Query( array( 'posts_per_page' => 3, 'meta_key' => 'wpb_post_views_count', 'orderby' => 'meta_value_num', 'order' => 'DESC' ) ); if ( have_posts() ) : while ( $popularpost->have_posts() ) : $popularpost->the_post(); $popularpost_id[$county] = get_the_ID(); $county++; endwhile; endif; ?> <p class="mostpop"> الأكثر قراءة </p> <div class="Slides-qwe fade"> <?php $url = wp_get_attachment_url( get_post_thumbnail_id( $popularpost_id[0] ), 'thumbnail' ); ?> <img src="<?php echo $url; ?>" /> <div class="text"> <?php echo get_the_title( $popularpost_id[0] ); ?> </div> </div> <div class="Slides-qwe fade"> <div class="numbertext">2 / 3</div> <?php $url = wp_get_attachment_url( get_post_thumbnail_id( $popularpost_id[1] ), 'thumbnail' ); ?> <img src="<?php echo $url; ?>"> <div class="text"> <?php echo get_the_title( $popularpost_id[1] ); ?> </div> </div> <div class="Slides-qwe fade"> <div class="numbertext">3 / 3</div> <?php $url = wp_get_attachment_url( get_post_thumbnail_id( $popularpost_id[2] ), 'thumbnail' ); ?> <img src="<?php echo $url; ?>"> <div class="text"> <?php echo get_the_title( $popularpost_id[2] ); ?> </div> </div> </div> <br> <!-- The dots/circles --> <div class="rel-qwe" > <span class="dot" onclick="currentSlide(1)"></span> <span class="dot" onclick="currentSlide(2)"></span> <span class="dot" onclick="currentSlide(3)"></span> </div> نشئ الكود السابق كائن من الصنف WP_Query يستعلم من قاعدة البيانات ويحسب عدد مرات عرض كل مقال ويعيد أكثر 3 مقالات حصلت على زيارات في الموقع من الأكثر للأقل أي وفق الترتيب التنازلي ويخزن هذه المقالات في المتغير $popularpost_id ثم يعرضها ضمن حاوية رئيسية <div> له الصنف slider-container إذا كان هناك مقالات متاحة سيعرض الكود عنوان وصورة كل مقال من هذه المقالات في حاوية <div> فرعية لها الصنف Slides-qwe، ستظهر العناصر واحدة تلو الأخرى بشكل متتالي كما ستعرض نقاط أو دوائر تمثل الشرائح أو المقالات المختلفة في المنزلق. وكما شرحنا من قبل سنربط حدث النقر على كل نقطة منها بالدالة currentSlide() التي عرفناها في ملف جافا سكريبت slideshow.js لعرض الشريحة الموافقة. الخطوة التالية هي استدعاء الملف في ترويسة القالب ليعرض شريط المنزلق بعد عرض القائمة الرئيسية في الصفحة الأولى للموقع فقط كي لا يظهر في الصفحات الداخلية وصفحات المقالات المفردة. وفي حال عدم وجود مقالات منشورة في الموقع أو لم تتم قراءة أي منها سنعرض صورة ثابتة بدلًا منها وهنا اخترنا عرض الصورة المصغرة للقالب كما شرحنا في درس سابق ويمكنك بالطبع أن تعرض هنا أي صورة أخرى تختارها. <section class="slider"> <?php $args = array( 'post_type' => 'post', // Adjust post type if needed 'posts_per_page' => 3, // Number of posts to retrieve 'meta_key' => 'wpb_post_views_count', // Replace 'post_reads' with the meta key storing the read count 'orderby' => 'meta_value_num', // Sort by numeric value 'order' => 'DESC' // Order in descending order (from most read to least read) ); $popularpost = new WP_Query($args); if ($popularpost->have_posts()) { get_template_part('slideshow'); } else { ?> <img class="slidimg" src="<?php bloginfo('template_url'); ?>/screenshot.png" alt="slider"> <?php } // Restore original post data wp_reset_postdata(); ?> لاحظ أننا أضفنا مجموعة من صفوف التنسيق لعناصر منزلق الصور ، والخطوة الأخيرة التي علينا القيام بها هي تنسيقها لتظهر بالشكل المطلوب. إضافة أكواد CSS لتنسيق عناصر المنزلق كما تلاحظ في الصورة أعلاه عند عرض المنزلق في الموقع ستظهر شرائح الصور الخاصة بالمقالات تحت بعضها البعض كما تظهر باقي عناصر المنزلق بشكل بدائي دون تنسيق لذا من الضروري التحكم في ظهورها وعرض شريحة واحدة فقط وجعل بقية الشرائح مخفية ليتم التحكم في إظهارها واحدة تلو الآخرى بواسطة جافا سكريبت وتنسيق عناصر منزلق الصور بالشكل المناسب، لهذا سنقوم بإضافة الكود التالي إلى ملف تنسيقات القالب style.css. /* تنسيق إضافي للمنزلق */ .slidedots, .Slides-qwe { text-align: center; } div.caption-text:hover { color: #F9B01B; font-weight: bold; } /* Caption text */ .slide-title { text-align: center; padding-top: 2rem; } mark { background: linear-gradient(90deg, rgba(249, 176, 27, 1) 0%, rgba(246, 200, 108, 1) 51%, rgba(249, 176, 27, 1) 100%); color: #000; } /* Caption text */ div .caption-text { font-weight: bold; text-align: center; padding-top: 2rem; } .dot { cursor: pointer; height: 15px; width: 15px; margin: 2px 4px; background-color: #bbb; border-radius: 50%; display: inline-block; transition: background-color 0.6s ease; } .active, .dot:hover { background-color: rgb(255, 145, 0); } /* Fading animation */ .fade { animation-name: fade; animation-duration: 1.5s; } @keyframes fade { from { opacity: .4 } to { opacity: 1 } } الآن إذا استعرضنا الصفحة سيظهر المنزلق بالشكل التالي وبهذا نكون انتهينا من إضافة ميزة الشريط المنزلق للمقالات ويمكنك بنفس الطريقة يمكن أن تطبق ما شرحناه لبرمجة القالب المناسب له وإضافة أي ميزات ترغب بها من خلال شيفرات جافا سكريبت المناسبة. الخلاصة تعرفنا في مقال اليوم على طريقة إضافة ميزات مخصصة إلى قالب ووردبريس من خلال لغة جافا سكريبت ووضحنا الطريقة الأمثل الموصى بها من قبل موقع مطوري ووردبريس الرسمي لإضافة ملفات جافا سكريبت إلى قالب ووردبريس وأهمية ترتيب استدعاء الملفات التي نحتاجها، والآن دورك لتضيف الميزات التي تريدها إلى قالب ووردبريس الذي تطوره. وبهذا نكون وصلنا لنهاية سلسلة المقالات التي شرحنا فيها أهم خطوات برمجة قوالب ووردبريس من الصفر وكما وعدناكم سنتيح لكم الكود البرمجي للقالب للتحميل وتطويره وفق متطلباتك واحتياجاتك، وإذا كانت لديك أي أسئلة أو استفسارات حول برمجة قوالب ووردبريس لا تتردد في طرحها في قسم التعليقات أسفل المقال. كتب المسودة الأولية للمقال هشام حسين. اقرأ أيضًا المقال السابق: إضافة تنسيقات CSS لقالب ووردبريس كل ما تحتاجه لتعلم الووردبريس تعلم برمجة وتطوير مواقع ووردبريس أساسيات لغة جافا سكريبت كيفية البدء في تطوير قوالب ووردبريس
-
انتهينا في المقال السابق إنشاء الملفات الأساسية لبرمجة قالب ووردبريس من سلسلة برمجة قالب ووردبريس من الصفر من مرحلة برمجة الملفات الأساسية لقالب ووردبريس المسؤولة عن تصميم الشكل العام للموقع وعرض المحتويات المطلوبة في ترويسة وتذييل وجسم الصفحات. هذا المقال هو المقال الرابع من سلسلة المقالات التالية: مدخل إلى برمجة قوالب ووردبريس أساسيات تطوير قالب ووردبريس إنشاء الملفات الأساسية لبرمجة قالب ووردبريس إضافة تنسيقات CSS لقالب ووردبريس إضافة المميزات لقالب ووردبريس باستخدام جافا سكريبت إن ملفات القالب التي أنشأناها تعرض المحتوى المطلوب لكن دون أي تنسيقات وشكل الموقع بدائي للغاية، لذا حان الوقت الآن لجعل الأشياء أكثر جمالًا وكتابة كافة التنسيقات التي تجعل القالب يعرض محتوى موقع ووردبريس بشكل يشابه التصميم الذي أنجزناه على فيجما في المقال الأول من هذه السلسلة. يمكن اعتبار هذه الخطوة من أهم خطوات برمجة قالب ووردبريس مخصص، فهي التي تميز قالبًا عن آخر، وتعكس براعة المصمم وذوقه في كتابة تنسيقات احترافية تستهدف عناصر HTML والأصناف والمعرفات الخاصة بها بشكل فعال وضبط عرض عناصر الموقع لتحقيق التصميم بالشكل المطلوب. أين أكتب تنسيقات قالب ووردبريس؟ تكتب تنسيقات CSS للقالب عادة في ملف تنسيق رئيسي باسم style.css وكنا قد أنشأنا هذا الملف داخل مجلد القالب في المقال السابق من السلسلة وكتبنا فيه بعض المعلومات الوصفية حول قالبنا مثل اسم القالب ووصفه وإصداره واسم المؤلف والموقع الخاص بالمؤلف والتي تظهر عند عرض تفاصيل القالب في لوحة تحكم موقع ووردبريس. كما يمكنك كتابة التنسيقات ضمن عدة ملفات أخرى واستدعاء هذه الملفات الإضافية في قالبك عند الضرورة كما يمكنك بالطبع استيراد أي تنسيقات أو سكربتات خارجية أخرى عند الطلب، على سبيل المثال يمكنك أن تضيف ملفات بوتستراب لقالبك وهو إطار عمل CSS يساعدك على تطوير مواقع ويب متجاوبة مع الجوال والاستفادة من الأصناف التي يوفرها لتنسيق قالبك وفق التصميم المطلوب من خلال كتابة الكود التالي في ملف وظائف القالب functions.php دورة تطوير تطبيقات الويب باستخدام لغة PHP احترف تطوير النظم الخلفية والووردبريس وتطبيقات الويب من الألف إلى الياء دون الحاجة لخبرة برمجية مسبقة اشترك الآن هناك عدة طرق لاستيراد التنسيقات للقالب لكن الطريقة الأفضل حسب توصيات ووردبريس هي استخدام الدالة wp_enqueue_style لربط ملفات التنسيقات في القالب لأنها فهي تنظم طريقة تحميل الملفات وتضمن تنفيذها بشكل صحيح في صفحات الموقع المختلفة. نمرر لهذه الدالة عدة وسطاء أهمها $handle وهو معرف فريد يساعدك على تمييز ملف التنسيقات و $src مسار الملف و $dependencies الذي يمثل الاعتماديات أو الملفات التي نحتاج لتحميلها قبل تحميل هذا الملف. على سبيل المثال لتحميل ملف تنسيقات بوتستراب في قالبنا واستخدامه لتنسيق عناصر الموقع نكتب الكود التالي: function enqueue_bootstrap_styles() { wp_enqueue_style( 'bootstrap', 'https://stackpath.bootstrapcdn.com/bootstrap/5.0.2/css/bootstrap.min.css', array(), '5.0.2', 'all' ); } add_action( 'wp_enqueue_scripts', 'enqueue_bootstrap_styles' ); ); كما تلاحظ يتم ربط استدعاء الدالة wp_enqueue_style مع الخطاف wp_enqueue_scripts الذي يقع عند تحميل ملفات التنسيقات والسكربتات في صفحات الموقع وبهذا نتمكن من استخدام تنسيقات بوتستراب في القالب مباشرة. لكننا في هذه السلسلة سنعتمد فقط على تعليمات CSS صرفة لتنسيق قالبنا الحالي بتنسيقات بسيطة لذا سنكتفي فقط بملف التنسيقات الأساسي style.css الذي ربطناه مع القالب في المقال السابق من السلسلة وسنكتب كافة التنسيقات المطلوبة للقالب ضمنه. خطوات تنسيق قالب ووردبريس بعد أن انتهينا من إنشاء كافة الملفات اللازمة للقالب وحددنا و وكتبنا الأكواد والدوال اللازمة لعرض المحتوى المطلوب، تأتي مرحلة تنسيق هذا المحتوى بواسطة أكواد CSS لنحوله من هذا الشكل: إلى هذا الشكل: يفضل أن ننسق العناصر من أعلى لأسفل كي نتمكن من تعيين الأولويات بشكل صحيح في الصفحة. كما يفضل أن نحدد أنماط عامة مشتركة للعناصر لجعل القالب أكثر تنظيمًا وسهولة في الصيانة. سنعمل في الفقرات التالية على تصميم الأقسام الثلاثة لقالبنا وهي الترويسة header وجسم الصفحة body والتذييل footer، وننسق كل العناصر التي تضمها هذه الأقسام لتظهر وفق الشكل المطلوب. لنبدأ بكل جزء على حدا ونشرح أبرز التنسيقات التي استخدمناها فيه. تنسيقات عامة للقالب بداية سنضع مجموعة تنسيقات عامة لكافة العناصر في المستند من خلال المحدد * ونمرر قيم عامة نريد استخدامها بشكل افتراضي في كامل الموقع مثل نوع الخط ولون الخط والمسافة بين الأسطر line-height وقيم الحواشي الداخلية padding والهوامش الخارجية margin للعناصر /** تنسيق عام */ * { padding: 0; margin: 0; font-family: 'Cairo', sans-serif; color: #666571; line-height: 2; box-sizing: border-box } ففي هذا الكود أزلنا الهوامش الداخلية بتعليمة padding: 0 لجميع العناصر كما أزلنا الهوامش الخارجية بتعليمة margin: 0 كما عينا نوع الخط لجميع العناصر إلى الخط Cairo والخط البديل sans-serif وحددنا لون النص رمادي داكن #424149. بعدها سننسق وسم العنصر الجذر html ووسم الحاوية العامة div التي عرفناها في ملف header.php لتضم المحتوى الأساسي للصفحات والتي كنا قد أسندنا لها الصنف wrapper-container وننسق الروابط العامة في الموقع كما يلي: html { position: relative; min-height: 100%; } .wrapper-container { max-width: 100%; } a { text-decoration: none; } حددنا في الكود أعلاه قيمة الخاصية position للعنصر الجذر html لتكون relative أي نسبي كي نتمكن تحديد موضع العناصر الفرعية لهذا العنصر نسبة لوضعية العنصر الجذر كما حددنا قيمة min-height لتكون 100% كي نعين ارتفاع العنصر html ليكون على الأقل 100٪ من ارتفاع الشاشة لنضمن أن العناصر التي يحتويها لن تظهر خارج الشاشة. وبالنسبة للعنصر div الذي له الصنف wrapper-container فقد عينا له الخاصية max-width بالقيمة 100% لتحديد الحد الأقصى لعرض العنصر div بنسبة 100% من العنصر الأم الذي يحتوي عليه وهي تساعد في جعل التصميم مرن ومتجاوب Responsive فالعنصر لن يتجاوز في هذه الحالة عرض العنصر الذي يحتوي عليه وبالتالي عند تصغير حجم الشاشة سيتقلص عرض العنصر div ويتكيف مع الحجم الجديد ويمتد ضمن المساحة المتاحة دون أن يتجاوزها. أخيرًا أزلنا أي زخرفة نصية مطبقة على نصوص الروابط a في صفحات الموقع مثل خاصية التسطير من خلال إعطاء الخاصية text-decoration القيمة none لتوحيد التنسيق بينها وتحسين تجربة المستخدم وبعدها يمكننا أن نطبق تنسيقات مخصصة أخرى على كل رابط في الصفحة حسب الحاجة. تنسيق القائمة الثانوية والأساسية في ترويسة القالب تتضمن ترويسة قالبنا كما تعرف ثلاثة أقسام وهي القائمة الثانوية ثم المنزلق ثم القائمة الرئيسية وسنبدأ بتنسيق القوائم والعناصر التي بداخلها واحدًا تلو الآخر. نبدأ بالقسم section الذي يضم القائمة الرئيسية العلوية ويملك الصنف rtl-Primary-nav والقسم الذي يضم القائمة الثانوية السفلية ويملك الصنف rtl-Secondary-nav ونحدد بعض الخصائص لكل قائمة بما يناسب التصميم. يلزمنا تخصيص لون الخلفية ليكون من درجات اللون الأصفر، وإلغاء التعداد النطقي أو النقاط الافتراضية التي تظهر بجانب عناصر القائمة من خلال الخاصية list-style:none وتخصيص تنسيقات روابط القوائم وقيم الهوامش والمحاذاة المناسبة ومن الضروري كذلك تحديد طريقة تموضع عناصر القوائم من خلال الخاصية display: inline-flex لجعلها تظهر بجانب بعضها على سطر واحد وللقيام بكل ما سبق نضيف كود التنسيق التالي: .rtl-Primary-nav, .rtl-Secondary-nav { width: 100%; } .rtl-Primary-nav { background: #f6c86c; padding-top: 20px; padding-left: 5px; } .rtl-Primary-nav img { max-width: 100px; max-height: 100px; width: auto; height: auto; padding-top: 20px; } .logo-link { margin: 2% 4%; } .rtl-Secondary-nav { background: #F9B01B; } nav ul { display: inline-flex; list-style: none; } nav ul li { padding: 0 5%; } nav ul li a { text-decoration: none; color: black; font-weight: bold; font-size: 14pt; white-space: nowrap; } nav ul li a:hover { color: #fff; } تنسيق المنزلق Slider بعد الانتهاء من القوائم سننسق القسم المخصص لعرض شريط المقالات المتحرك أو المنزلق وهو عبارة عن عنصر section له الصنف slider وبداخله حاوية div لها الصنف slider-container تتضمن حاليًا صورة واحدة ثابتة فقط واخترنا هنا نفس الصورة screenshot.png التي أضفناها في مجلد القالب. في المقال التالي من هذه السلسلة سنغير قليلًا في تنسيقات هذا القسم ونضيف له عناصر إضافية لنحوله إلى منزلق متحرك حيث سنستخدم أكواد جافا سكريبت لجعله يعمل بالشكل المطلوب: /** تنسيق المنزلق */ .slider { background-color: #f1eef6; justify-content: center; align-items: center; } .slider img { display: block; margin: auto; max-width: 60%; } كما تلاحظ في هذا الكود فقد غيرنا لون خلفية القسم section الذي يعرض المنزلق للون الرمادي الفاتح ونسقنا محاذاة العناصر ضمنه لتكون في المركز أفقيًا وعموديًا كما نسقنا الصورة المعروضة ضمن القسم لتظهر بشكل كتلة مستقلة وجعلنا هوامشها margin: auto لتكون متساوية من جميع الجهات وجعلنا العرض الأقصى للصورة هو 80 بالمئة من العرض الكلي للقسم الذي يحتويها لتظهر بحجم مناسب. تنسيق جسم الصفحة الخاصة بقالب ووردبريس إذا استعرضنا الصفحة الرئيسية للموقع سنلاحظ أن المقالات تعرض فيها تحت بعضها البعض وأن الصور تظهر بحجم كبير والمحتوى ملاصق للهامش الأيمن للصفحة كما في الصورة التالية: كذلك الأمر إذا استعرضنا صفحات الأرشيف أو صفحة المقال المفرد أو الصفحات الداخلية للموقع لذا نحتاج لتعديل تنسيق كافة العناصر التي تظهر في جسم الصفحة الرئيسية وبقية صفحات الموقع لتظهر وفق التصميم المقترح. نعرض جسم الصفحة كما وضحنا في المقال السابق في حاوية div لها الصنف main ورغم أن العناصر التي تضمها الحاوية قد تختلف من صفحة لأخرى إلا أنها تنسق بنفس الطريقة التي تنسق بها باقي العناصر، في قالبنا أضفنا التنسيقات التالية لعناصر جسم الصفحة: /** تنسيق محتوى الصفحة */ .main { width: 100%; display: inline-block; padding: 30px 0px; } .main a:hover { text-decoration: underline; color: #F9B01B; } .post-qwe { display: inline-block; width: 30%; margin: 0 1.5%; } .page-title-qwe { font-size: 12pt; font-weight: bold; } .post-qwe img , .post_thumbnail img{ max-width: 90%; height: auto; } .post-qwe p { width: 90%; } .post-qwe img:hover, .slider img:hover { border: solid 2px #F9B01B; } حددنا عرض الحاوية 100% لتكون ممتدة على كامل عرض الصفحة وطريقة عرض العناصر داخلها inline-block لتظهر على نفس السطر واحد لكن كل مقال ضمن بلوك مستقل ثم حددنا الهامش الداخلي لها padding ليكون 30 بكسل في الأعلى والأسفل وصفر على اليمين واليسار اليمنى واليسرى، وأضفنا تأثيرًا على الروابط ليظهر لونها بالأصفر عند مرور الفأرة فوقها كما حددنا طريقة عرض الحاوية التي لها الصنف post-qwe والخاصة بعرض كل مقال لتكون كذلك inline-block لكن كل حاوية 30% من العرض الكلي للحاوية main وبهذا تظهر كل 3 مقالات على سطر مستقل. أضفنا كذلك تنسيقات للصور المصغرة والعناوين والمقتطفات الخاصة بالمقال لتكون النتيجة بعد إضافات التنسيقات كما يلي تنسيق شريط التنقل يعرض شريط التنقل رابط باسم الصفحة السابقة والصفحة التالية وهي تعرض عادة على صفحة المدونة وصفحات الأرشيف وأي صفحات تعرض مجموعة من المنشورات لتسمح لنا بالتنقل فيما بينها. في قالبنا عرضنا روابط شريط التنقل ضمن div لها الصنف pagination بعد عرض أحدث ست مقالات منشورة في المدونة وسوف ننسقها ونغير طريقة عرضها بما يناسب تصميم قالبنا كما يلي: /* تنسيق قسم التننقل */ .pagination { text-align: center; line-height: 5; } .pagination a { color: #000; margin: 10px 20px; } nav.pagination a:hover, nav.pagination a:hover { background-color: #f6c86c; color: white; } من أبرز التنسيقات التي قمنا بها لشريط التنقل هي محاذاة روابط التنقل في الوسط وتحديد ارتفاع السطر لروابط التنقل ليكون 5 أضعاف حجم الخط فإذا كان حجم الخط 10 نقطة سيكون ارتفاع السطر 50 نقطة لتحقيق تباعد أكبر بين الأسطر في قسم التنقل وتسهيل رؤية الروابط فيه، كما حددنا لون نص الرابط ليكون أسود وغيرنا لون الخلفية للأصفر ولون النص للأبيض عند مرور مؤشر الفأرة فوق الرابط. تنسيق تذييل قالب ووردبريس أخيرًا حان دور تنسيق تذييل القالب بشكل جميل وجذاب متوافق مع تصميم الموقع العام ومع بقية أجزاء الموقع. يتضمن التذييل الخاص بقالب ووردبريس الخاص بنا قسمين، القسم الأول section يملك الصنف footer-qwe ويعرض بداخلة مجموعة من الودجات كل منها عبارة عن div لها الصنف widget والقسم الثاني هو section يعرض فقرة p لنص حقوق النشر ورابط للموقع وشكل التذييل قبل التنسيق كما يلي: نضيف له التنسيقات التالية: .footer-qwe { background-color: #f6c86c; width: 100%; display: flex; justify-content: space-around; } .footer-qwe li { list-style: none; color: black; } .footer-qwe li a { color: black; white-space: nowrap; } section.footer-qwe .widget { margin: 2% 4%; } footer a:hover { color: white; } section.copyright { display: flex; background-color: #F9B01B; width: 100%; align-items: center; justify-content: center; } إليك شرحًا لأهم التنسيقات الواردة في الكود أعلاه؛ ففي البداية عينا لون خلفية القسم الأول من التذييل لتكون أصفر فاتح #f6c86c وعرضه 100% من العنصر الحاوي له وحددنا نمط عرض عناصره ليكون من النمط المرن Flexbox مع توزيع المسافات بين العناصر بالتساوي من خلال الخاصية justify-content: space-around. كما حددنا بعض خواص عناصر القوائم والروابط في التذييل لأن بعض عناصر الودجات تظهر بشكل قوائم كل عنصر فيها رابط لصفحة أخرى وأهمها منع نص كل رابط من الانتقال لسطر جديد كي نحافظ على وضع كلمات الروابط على سطر واحد باستخدام الخاصية white-space: nowrap. وعينا كذلك خصائص القسم الثاني في التذييل وهو قسم حقوق النشر ليكون بخلفية أصفر داكن ونمط العرض المرن Flexbox ووسطنا عناصره أفقيًا وعموديًا لتظهر العبارة في وسط القسم تمامًا كما تشاهد في الصورة التالية. الخلاصة إلى هنا نكون قد وصلنا لنهاية هذا المقال الذي شرحنا فيه بالخطوات المصورة كيف يمكننا تنسيق قالب ووردبريس بشكل بسيط من خلال تعليمات CSS صرفة للحصول على مظهر أنيق ومرتب لعناصر الموقع وبالطبع يمكنك أن تطلق العنان لإبداعك وتضيف ما تشاء من تنسيقات وتأثيرات بصرية وألوان جذابة للقالب لتحسين تجربة المستخدم وعرض المحتوى باحترافية يعكس طبيعة علامتك التجارية. في المقال التالي من السلسلة سنتعرف على الطريقة المثلى لإضافة أكواد جافا سكريبت للقالب من أجل تحقيق ميزات إضافية مثل عرض محتوى مخصص أو إضافة شرائح صور متحركة وإضافة المزيد من التخصيص لتصميم قالب ووردبريس. كتب المسودة الأولية للمقال هشام حسين. اقرأ أيضًا المقال السابق إنشاء الملفات الأساسية لبرمجة قالب ووردبريس المقال التالي إضافة المميزات لقالب ووردبريس باستخدام جافا سكريبت تعلم ووردبريس صف وتسجيل ملفات Javascript و CSS في قوالب ووردبريس كيف تحوِّل قالب HTML ساكِن إلى قالب ووردبريس متجاوب: تخصيص الموقع كيفية بناء موقع باستخدام CSS
-
بعد أن وضحنا أهم المعلومات الأساسية التي يجب على مطور قالب ووردبريس معرفتها قبل البدء في برمجة القوالب، سنبدأ في هذا المقال بشكل فعلي بإنشاء كافة الملفات المطلوبة لعمل القالب وبرمجتها باستخدام لغتي PHP و HTML. هذا المقال هو المقال الثالث من سلسلة المقالات التالية: مدخل إلى برمجة قوالب ووردبريس أساسيات تطوير قالب ووردبريس إنشاء الملفات الأساسية لبرمجة قالب ووردبريس إضافة تنسيقات CSS لقالب ووردبريس إضافة المميزات لقالب ووردبريس باستخدام جافا سكريبت لنتعرف على الهيكلية العامة لمجلدت وملفات قالب ووردبريس ونبدأ بإنشاء الملفات الضرورية لقالبنا المخصص. إنشاء مجلد خاص بقالب ووردبريس سنسمي قالبنا الحالي بالاسم modawanty أي مدونتي لذا سننشئ مجلدًا بهذا الاسم على خادم محلي داخلي localhost ولن نحتاج للاتصال بالإنترنت، كما سنعتمد على محرر الأكواد فيجوال ستوديو كود VS Code فهو يحتوي على إمكانيات متعددة لتسهيل العمل فإذا لم تكن قد حولت حاسوبك إلى خادم محلي بعد ولم تنشئ موقع ووردبريس تجريبي بعد لا تقلق يمكنك القيام بذلك من خلال خطوات سهلة وبسيطة مشروحة بالتفصيل في مقال كيفية تثبيت ووردبريس وفي مقال دليلك المصور لتثبيت ووردبريس والبدء بإنشاء متجر ووكومرس. بعدها سيكون عليك إنشاء مجلد خاص بقالب ووردبريس وتسميه modawanty داخل مجلد القوالب themes الموجود كما شرحنا في الدرس السابق ضمن المجلد wp-content داخل الدليل الجذر لموقع ووردبريس الخاص بك، وبعدها سننشئ في هذا المجلد مجموعة ملفات القالب التالية المبينة في الصورة التالية. تذكر أن لكل ملف من هذه الملفات استخدامًا مخصصًا فبعضها ملفات templates تستدعى ضمنيًا من قبل نظام ووردبريس لعرض صفحات الموقع المختلفة مثل index.php و page.php و archive.php وبعضها ملفات قالب جزئية تستخدم لتجميع الأكواد المتكررة في أكثر من مكان في الموقع مثل header.php و footer.php وإليك قائمة مختصرة بأسماء ووصف كل ملف من بينها: index.php: ملف عرض الصفحة الرئيسية للموقع وأي صفحة لا تحوي ملف مخصص لعرضها style.css: ملف تنسيقات القالب الأساسي ويحتوي بعض البيانات التعريفية حول القالب header.php: ملف ترويسة القالب ويعرض عادة قوائم التنقل في الموقع والشعار وعناوين الصفحات وما إلى ذلك وقد يحتوي معلومات عن ملفات خارجية يستخدمها القالب مثل ملفات تنسيق CSS إضافية. footer.php: ملف تذييل القالب يعرض معلومات مثل قائمة التذييل وبعض الودجات وعبارة حقوق النشر وقد يستدعي ملفات JS مستخدمة في الموقع. archive.php: ملف عرض صفحات أرشيف مقالات الموقع. page.php: ملف عرض الصفحات الفردية في الموقع. single.php: ملف عرض المقالات الفردية في الموقع. slideshow.php: ملف لعرض أحدث منشورات الموقع بشكل شريط منزلق screenshot.png: ملف الصورة المصغرة الخاصة بالقالب عند عرضه في لوحة التحكم functions.php: ملف لإضافة وظائف وميزات إضافة للقالب مجلد images: لتخزين صور خاصة بالقالب مجلد js: لتخزين أكواد جافا سكريبت الخاصة بالقالب تذكر أن أول ملفين من بين هذه الملفات كافيان لعمل القالب بالحد الأدنى، لكن لا يوجد قالب ووردبريس فعلي يكتفي بهذين الملفين، فالملفات الأخرى ضرورية لمزيد من التخصيص للقالب وعرض المحتوى في الموقع بأشكال مختلفة ويمكن أن تنشئ هنا ما تشاء من ملفات مخصصة حسب طبيعة موقعك إذا فهمت طريقة استدعاء الملفات وتسلسلها الهرمي بشكل جيد. كما تلاحظ ملفاتنا لا زالت فارغة وخالية من أي كود وفي الفقرات التالية سنتعرف على مزيد من التفاصيل سنكتب كافة الشيفرات الضرورية لعمله بالشكل الصحيح في قالبنا. دورة تطوير تطبيقات الويب باستخدام لغة PHP احترف تطوير النظم الخلفية والووردبريس وتطبيقات الويب من الألف إلى الياء دون الحاجة لخبرة برمجية مسبقة اشترك الآن ملف تنسيقات قالب ووردبريس style.css سنبدأ كخطوة أولى ببرمجة ملف التنسيقات الأساسي للقالب style.css وإضافة البيانات الأولية الوصفية لقالبنا مثل اسم القالب واسم مطور القالب والوصف والإصدار وبعض التفاصيل الأخرى وسنضيف تنسيقات عناصر الموقع لهذا الملف القالب عند تحويل تصميم الموقع إلى أكواد CSS في الأجزاء المقبلة من السلسلة. فكي يتم تثبيت القالب على موقع ووردبريس، يجب أن يظهر القالب في القائمة الفرعية قوالب من التبويب مظهر في لوحة تحكم ووردبريس حيث ستعرض واجهة خاصة بالقالب لتفعيله وعرض معلومات عنه من خلال لوحة تحكم موقع ووردبريس وهذا يتم من خلال كتابة البيانات الوصفية في ملف التنسيقات. سنفتح ملف style.css في محرر الأكواد فيجوال ستوديو كود VS Code ونضيف هذه البيانات في بدايته بشكل تعليق كالتالي: /* Theme Name: modawanty Theme URI: https://www.example.com Author: Hsoub Academy Author URI: https://academy.hsoub.com/ Version: 1.0 Description: هذا قالب لتعليم المبتدئين كيفية برمجة قالب ووردبريس من الصفر License: GPLv3 or later License URI: https://www.gnu.org/licenses/gpl-3.0.html Tags: rtl-language-support, editor-style */ وكما هو واضح فهذه البيانات توضح اسم القالب Theme Name ورابط القالب Theme URI، واسم مطوره Author ورابط المطور Author URI، وإصدار القالب Version ووصف مختصر عن هذا القالب Description ووسوم Tags لأهم مميزاته وخواصه ورخصة استخدامه سواء خاصة أو متاحة للجميع أو أي نوع من التراخيص مثل رخصة GNU وهي رخصة للمشاع الإبداعي وتمكن أي مستخدم للقالب من إعادة استخدامه أو إضافة أكواد له، وفي الدرس التالي من هذه السلسلة سنضيف الكثير من قواعد التنسيق لهذا الملف. برمجة ملف الصفحة الرئيسية index.php ننتقل الآن إلى برمجة ملف القالب الأساسي index.php وهو ملف قالب template لا يمكن الاستغناء عنه عند برمجة قالب ووردبريس، فمن خلاله تتم كتابة الأكواد التي ستعرض الصفحة الرئيسية للموقع وباقي الصفحات الأخرى في حال عدم وجود ملفات أكثر تخصيصًا لعرضها. تكتب الأكواد الخاصة بملف index.php بالطريقة المعتادة لكتابة أي ملف PHP حيث يمكن إضافة أكواد PHP إلى كود HTML ضمن وسمي <?php?> أو إضافة أكواد HTML إلى ملف PHP باستخدام echo أو print. سنبدأ كتابة الأكواد الأساسية في محرر فيجوال ستوديو كود من خلال كتابة html:5 ثم ضغط مفتاح tab على لوحة المفاتيح وهذا الاختصار ينشئ لنا الأكواد الرئيسية لملف HTML بشكل تلقائي وستكون الأكواد الناتجة هي كالتالي: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> </body> </html> لاحظ أن الكود أعلاه يتضمن مجموعة من الوسوم الأساسية للصفحة ويحدد لغة الصفحة لتكون الانجليزية بشكل افتراضي كما يحدد عدة وسوم ميتا التي تحدد نوع ترميز الأحرف والنصوص UTF-8، وتجعل قالب ووردبريس متجاوب مع الجوال من خلال تحديد نسبة التكبير الافتراضية عند تصفح الموقع من خلاله. نحتاج لإجراء مجموعة من التعديلات على الكود السابق، بداية سنعدل العبارة lang="en" السطر الثاني في الكود أعلاه ونستبدلها بالكود التالي: <html <?php language_attributes(); ?> class="no-js"> تعطي الدالة language_attributes() السماحية لقالب ووردبريس بالتحكم في طريقة العرض حسب لغة الموقع الحالية أما الصنف class="no-js" فهو يفيد في المطور في الكشف عن ما إذا كان محرك جافا سكريبت يعمل في المتصفح أو لا وفي حال تعطيله يمكنه استخدام أكواد HTML و CSS خالصة دون استخدام برمجة نصية من جانب العميل لتحديد مظهر القالب. الخطوة التالية هي تبديل قيمة charset="UTF-8" بالدالة bloginfo('charset') التي تستعيد ترميز النصوص المستخدم في الموقع بصورة تلقائيًا فالترميز قد يختلف حسب لغة الموقع لذا نكتب التالي: <meta charset="<?php bloginfo( 'charset' ); ?>" /> وسنستبدل Document بعنوان الصفحة الديناميكي من خلال الدالة wp_title() في ووردبريس كما يلي: <title><?php wp_title(); ?></title> بعد ذلك نستدعي دالة مهمة وأساسية في ترويسة الموقع هي wp_head() وهي دالة جاهزة في ووردبريس تستخدم لإحضار أي أكواد مساعدة إلى ترويسة القالب سواء أكواد من نظام وودبريس نفسه أو الإضافات plugins أو أكواد مخصصة مثل أكواد تتبع البيانات والتنسيقات وغيرها من الأكواد الضرورية التي تحتاج لتنفيذها في ترويسة موقعك. تستدعى هذه الدالة عادة قبل وسم النهاية </head> مباشرة بالشكل التالي: <?php wp_head(); ?> ننتقل الآن للقسم الخاص بالوسم <body>، وفيه سنضيف دالة مهمة هي body_class() هذه الدالة جاهزة في ووردبريس مهمتها إضافة أصناف تنسيق خاصة للوسم <body> بشكل ديناميكي من قبل نظام ووردبريس حسب سياق كل صفحة تستعرضها، على سبيل المثال عندما تستعرض صفحة المدونة في موقعك سيأخذ الوسم<body> الصنف blog وعندما تستعرض صفحة ثابتة كصفحة حولنا سيأخذ الصنف page وهذا يساعدك كمطور قوالب على تنسيق موقعك بسهولة واستهداف الصنف المناسب لكتابة تنسيقات CSS أو معالجة محتواها باستخدام جافا سكريبت. لنفترض مثلًا أنك تريد تصميم صفحتك الرئيسية بشكل مختلف للمستخدمين الذين سجلوا دخول للموقع يمكنك حينها الاعتماد على الصنف home الذي يضيفه ووردبريس للصفحة الرئيسية والصنف logged-in المضاف للمستخدم المسجل فقط، كما يمكنك عند الحاجة إضافة أصناف تنسيق مخصصة بنفسك إذا لم تناسبك الأصناف التي أدرجها لك نظام ووردبريس بشكل تلقائي لتنسيق عناصر الموقع. تضاف هذه الدالة ضمن وسم <body> كالتالي: <body <?php body_class(); ?>> أما الدالة التالية التي سنضيفها فهي wp_body_open() وهي دالة حديثة نوعًا ما فقد تم إدخالها على ووردبريس منذ الإصدار 5.2، وهي مفيدة لإدخال التعليمات البرمجية مباشرة في بداية الصفحة بعد وسم <body> مثل أكواد جوجل أدسنس للإعلانات دون الحاجة إلى تعديل قالب ووردبريس، أضف هذه الدالة لموقعك بعد الدالة السابقة مباشرة كما يلي: <?php wp_body_open(); ?> الآن نحتاج لكتابة بعض وسوم HTML داخل الوسم <body> لننظم الأقسام الرئيسية لصفحة الموقع، وهي قسم الترويسة header وجسم الصفحة main وقسم التذييل footer، كل ذلك داخل حاوية div شاملة لجميع العناصر سنعطيها الصنف wrapper-container ليصبح الكود بالشكل التالي: <!DOCTYPE html> <html <?php language_attributes(); ?> class="no-js"> <head> <meta charset="<?php bloginfo( 'charset' ); ?>" /> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title><?php wp_title(); ?></title> </head> <body <?php body_class(); ?>> <?php wp_body_open(); ?> <div class="wrapper-container"> <header> </header> <div class="main"> </div> <footer> </footer> </div> </body> </html> بالطبع لن يكون من المناسب تضمين كافة أجزاء صفحات الموقع في ملف واحد لأن هذا سيتسبب في تكرار الكود وصعوبة تعديله، لذا سيكون من الأفضل توزيع الشيفرات البرمجية المكررة على الملفات الجزئية لتنظيم الكود بشكل أفضل وإعادة استخدامه في كل صفحة نحتاجها فيها كما شرحنا سابقًا. إذا سنقسم هذا الملف إلى الملفات التالية: ملف ترويسة القالب header.php الذي يبدأ من <!DOCTYPE html> وينتهي عند الوسم </header> ملف تذييل القالب footer.php الذي يبدأ من <footer> وينتهي عند </html> ملف index.php الذي يضم المحتوى الأساسي الذي سنضعه بين الوسم <div class="main"> و </div> وللاستعاضة عن قسمي الترويسة والتذييل المنقولين من الملف الرئيسي سنستدعي في بدايته كود الترويسة من خلال الدالة get_header() وفي نهايته كود ملف التذييل من خلال الدالة get_footer() كما يلي: لنتابع الآن شرح الآن برمجة كل ملف من هذه الملفات بمزيد من التفصيل. برمجة ملف ترويسة قالب ووردبريس تمثل ترويسة القالب الجزء العلوي من موقع ووردبريس الخاص بك وهي تتضمن عادة عدة عناصر وتبدأ بمجموعة من الوسوم غير المرئية على الصفحة وأهمها وسم <head> الذي يحتوي على عنوان الصفحة ومعلومات وصفية meta وبعض روابط التنسيقات والشيفرات الأخرى المهمة المتعلقة بالصفحة: <!DOCTYPE html> <html <?php language_attributes(); ?> class="no-js"> <head> <meta charset="<?php bloginfo('charset'); ?>" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title><?php wp_title(); ?></title> <?php wp_head(); ?> </head> على سبيل المثال سنحتاج في قالب ووردبريس الخاص بنا لتضمين مجموعة أيقونات خاصة بالمكتبة Font Awesome لعرض أيقونات التواصل الاجتماعي والأيقونات الشائعة الأخرى لذا سأستدعيها ضمن هذا الوسم كما يلي: <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" integrity="sha512-iecdLmaskl7CVkqkXNQ/ZH/XLlvWZOJyj7Yy7tcenmpD1ypASozpmT/E0iPtmFIB46ZmdtAc9eNBvH0H/ZpiBw==" crossorigin="anonymous" referrerpolicy="no-referrer" /> بعدها يبدأ القسم المرئي للترويسة بالوسم <body> الذي سنكتب بداخله الوسم <header> لعرض ترويسة موقعنا والتي ستتضمن عدة عناصر وهي شعار الموقع وقائمة تنقل رئيسية وشريط الصور المنزلقة وقائمة تنقل ثانوية. لذا سنوزع عناصر الترويسة ضمن ثلاث أقسام <section> القسم الأول يعرض الشعار والقائمة الثانوية العلوية كما يلي: <section class="rtl-Primary-nav"> <?php if (has_custom_logo()) : { $custom_logo_id = get_theme_mod('custom_logo'); $image = wp_get_attachment_image_src($custom_logo_id, 'full'); } ?> <nav id="myTopnav" class="topnav"> <div class="logo"> <a href="<?php echo esc_url(home_url('/')); ?>" class="logo-link"> <img src="<?php echo $image[0]; ?>"> </a> </div> <?php wp_nav_menu(array('theme_location' => 'Primary')); ?> <a href="javascript:void(0);" class="icon" onclick="myFunction()"> <i class="fa fa-bars"></i> </a> </nav> <?php else : ?> <nav id="myTopnav" class="topnav"> <h2> <a href="<?php echo esc_url(home_url('/')); ?>" rel="home" class="logo-link"><?php bloginfo('name'); ?></a> </h2> <?php wp_nav_menu(array('theme_location' => 'Primary')); ?> <a href="javascript:void(0);" class="icon" onclick="myFunction()"> <i class="fa fa-bars"></i> </a> </nav> <?php endif; ?> </section> والقسم الثاني يعرض الصور المنزلقة Slider لأشهر مقالات الموقع وحاليًا سنكتفي بعرض صورة ثابتة هي الصورة المصغرة للقالب مؤقتًا ضمن هذا القسم ريثما يتم تكويده في الدرس الخامس من هذه السلسلة بواسطة جافا سكريبت: <section class="slider"> <a id="sliderlink" href="https://academy.hsoub.com/" > <img src="<?php bloginfo('template_url'); ?>/screenshot.png" alt="slider"> </a> </section> أما القسم الثالث فسوف يحتوي على القائمة الثانوية للموقع وكما تلاحظ نستدعي هنا الدالة الجاهزة wp_nav_menu() مرة ثانية لكن نمرر لها هذه المرة وسيط القائمة الرئيسية Primary. <section class="rtl-Secondary-nav"> <nav id="mydnnav" class="dnnav"><?php wp_nav_menu(array('theme_location' => 'Secondary')); ?> </nav> </section> سيكون الكود الكامل لملف الترويسة كما يلي: <!DOCTYPE html> <html <?php language_attributes(); ?> class="no-js"> <head> <meta charset="<?php bloginfo('charset'); ?>" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" integrity="sha512-iecdLmaskl7CVkqkXNQ/ZH/XLlvWZOJyj7Yy7tcenmpD1ypASozpmT/E0iPtmFIB46ZmdtAc9eNBvH0H/ZpiBw==" crossorigin="anonymous" referrerpolicy="no-referrer" /> <title><?php wp_title(); ?></title> <?php wp_head(); ?> </head> <body <?php body_class(); ?>> <?php wp_body_open(); ?> <div class="wrapper-container"> <header> <section class="rtl-Secondary-nav"> <?php if (has_custom_logo()) : { $custom_logo_id = get_theme_mod('custom_logo'); $image = wp_get_attachment_image_src($custom_logo_id, 'full'); } ?> <nav id="myTopnav" class="topnav"> <div class="logo"> <a href="<?php echo esc_url(home_url('/')); ?>" class="logo-link"> <img src="<?php echo $image[0]; ?>"> </a> </div> <?php wp_nav_menu(array('theme_location' => 'Secondary')); ?> <a href="javascript:void(0);" class="icon" onclick="myFunction()"> <i class="fa fa-bars"></i> </a> </nav> <?php else : ?> <nav id="myTopnav" class="topnav"> <h2> <a href="<?php echo esc_url(home_url('/')); ?>" rel="home" class="logo-link"><?php bloginfo('name'); ?></a> </h2> <?php wp_nav_menu(array('theme_location' => 'Secondary')); ?> <a href="javascript:void(0);" class="icon" onclick="myFunction()"> <i class="fa fa-bars"></i> </a> </nav> <?php endif; ?> </section> <section class="slider"> <a id="sliderlink" href="https://academy.hsoub.com/" > <img src="<?php bloginfo('template_url'); ?>/screenshot.png" alt="slider"> </a> </section> <section class="rtl-Primary-nav"> <nav id="mydnnav" class="dnnav"><?php wp_nav_menu(array('theme_location' => 'Primary')); ?> </nav> </section> </header> تسجيل قوائم التنقل في ملف وظائف قالب ووردبريس لا يكفي استدعاء الدالة wp_nav_menu() وحدها في ترويسة القالب لعرض القوائم المطلوبة، بل نحتاج إضافة لذلك إلى كتابة كود مخصص في ملف وظائف القالب functions.php لجعل قوائم التنقل تظهر بشكل صحيح في قالب ووردبريس الخاص بنا، حيث نحتاج لاستدعاء الدالة register_nav_menu() التي يوفرها لنا ووردبريس لتسجيل مواضع القوائم في قالبنا وجعلها تظهر من خلال القائمة الفرعية قوائم ضمن التبويب المظهر. للقيام بذلك سنفتح ملف وظائف قالب ووردبريس functions.php في محرر الأكواد ونضيف له الشيفرات التالية: <?php // menus function register_nav_menu_primary_qwe(){ $location='Primary'; $description='Primary menu'; register_nav_menu( $location, $description ); } add_action('after_setup_theme','register_nav_menu_primary_qwe' ); function register_nav_menu_Secondary_qwe(){ $location='Secondary'; $description='Secondary menu'; register_nav_menu( $location, $description ); } add_action('after_setup_theme','register_nav_menu_Secondary_qwe' ); ?> وكما هو موضح بالسطور البرمجية السابقة نجد أن عملية تسجيل القائمتين تقوم هنا بعملية ربط كل قائمة مع لوحة التحكم الرئيسية الخاصة بووردبريس لكنها لا تضيف فعليًا أي عناصر إلى هذه القوائم ليكون بإمكانك إضافة ما تشاء من صفحات أو تصنيفات أو غيرها من الروابط سواء للقائمة الفرعية أو للقائمة الرئيسية من نافذة قوائم ووردبريس الموجودة في التبويب مظهر ضمن لوحة تحكم ووردبريس. لاحظ هنا أننا مررنا دالة تسجيل القوائم الخاصة كوسيط لدالة اسمها add_action() وهذه هي الطريقة المثلى لاستدعاء الدوال وتنفيذها في ووردبريس وهي تعتمد على ربط الدالة بما يعرف بالخطاف hook. الخطافات hooks هي نوع معين من الدوال تستخدم في برمجة القوالب والإضافات وهي توفر لك طريقة تمكنك من ربط واستدعاء الأكواد الخاصة بك ما بأي جزء في نظام ووردبريس الرئيسي ولمعرفة المزيد حول الخطافات وآلية عملها أنصح بقراءة مقال برمجة إضافات ووردبريس: الخطافات (Hooks). إضافة ميزة عرض الشعار المخصص في قالب ووردبريس سنوفر في قالبنا طريقة لوضع شعار مخصص في ترويسة الموقع من لوحة لتخصيص القالب التي تصل لها عادة من خلال لوحة تحكم موقع ووردبريس ثم اختيار التبويب المظهر ثم تخصيص وتحميل الشعار المناسب لعرضه في ترويسة الموقع. تتم إضافة هذه الميزة عبر خطوتين الأولى هي باستدعاء الدالة add_theme_support() وتمرير الوسيط custom-logo لها، ويمكن أن نخصص أبعاد الشعار بقيم محددة من خلال كتابة الكود التالي في ملف وظائف القالب functions.php: add_theme_support( 'custom-logo' ); function themename_custom_logo_setup() { $defaults = array( 'height' => 200, 'width'=> 200, 'flex-height' => true, 'flex-width' => true, 'header-text' => array( 'site-title', 'site-description' ), ); add_theme_support( 'custom-logo', $defaults ); } add_action( 'after_setup_theme', 'themename_custom_logo_setup'); بعدها نكتب كود عرض هذا الشعار في الموضع الذي نريد عرضه فيه وهو في حالة قالبنا قبل عرض القائمة الثانوية في القسم header كما يلي: <?php if ( has_custom_logo() ) { $custom_logo_id = get_theme_mod( 'custom_logo' ); $image = wp_get_attachment_image_src( $custom_logo_id, 'full'); } ?> <img src="<?php echo $image[0]; ?>"> إضافة ميزة الصور المصغرة إلى قالب ووردبريس لا تتوفر ميزة الصورة المصغرة أو الصورة البارزة للمقال (Post Thumbnail) بشكل تلقائي في ووردبريس ولتنشيط هذه الميزة في قالب ووردبريس الخاص بنا نحتاج من جديد إلى كتابة كود مخصص في ملف وظائف قالب ووردبريس functions.php. يتم ذلك من خلال استدعاء الدالة add_theme_support() مع الوسيط post-thumbnails كما يمكن أثناء قيامنا بتنشيط الصور المميزة أن نحدد أن يتم تحجيم كل صورة نحملها إلى مكتبة الوسائط في ووردبريس وإنشاء إصدارين أو نسختين مختلفتين بحجم صغير وكبير ويمكن أن نحدد أبعادهما كما يلي: add_theme_support('post-thumbnails'); add_image_size('small',300,300, true); add_image_size('large',600,600, true); هذا يساعدنا على عرض الصورة بالحجم الذي نرغبه والجدير بالملاحظة أن بإمكانك كتابة دالة إضافة الميزات add_theme_support() ضمن ملف وظائف قالب ووردبريس functions.php مباشرة ليضيف الميزة التي تريدها للقالب مباشرة دون الحاجة لربطه بأي خطاف hook، كما يمكنك بشكل اختياري ربطها بدالة الخطاف after_setup_theme الذي يقع أو يحدث بعد تحميل القالب كما شرحنا سابقًا ففي الحالتين ستعمل الدالة بشكل صحيح: // thumbnile connection function post_thumbnails_qwe() { // add_theme_support( $feature, $arguments ); add_theme_support( 'post-thumbnails', array( 'post','page') ); } add_action( 'after_setup_theme', 'post_thumbnails_qwe' ); ربط ملف التنسيقات بترويسة القالب نتجه إلى شيء أخير قبل إنهاء شرح ترويسة القالب وهو ربط ملف التنسيق الرئيسي للقالب style.css مع قالب ووردبريس، هناك عدة طرق للقيام ومنها تضمين رابط هذا الملف في ملف الترويسة لكن الطريقة الأفضل والموصى بها من قبل نظام ووردبريس هي عن طريق استخدام الدالة wp_enqueue_style() التي تعمل على وضع ملف التنسيق في قائمة انتظار وريطها بخطاف اسمه wp_enqueue_scripts. توضع تلك الأكواد في ملف وظائف قالب ووردبريس functions.php بالشكل التالي: /** * Enqueue scripts and styles. */ function modawanaty_scripts() { wp_enqueue_style( 'modawanaty-style', get_stylesheet_uri(), array(), wp_get_theme()->get( 'Version' ) ); } add_action( 'wp_enqueue_scripts', 'modawanaty_scripts' ); برمجة ملف الصفحة الرئيسية لقالب ووردبريس index.php نقوم بعد ذلك باستدعاء دالة the_post() ضمن الحلقة لتعيد لنا المقال الحالي، ثم نستدعي مجموعة من الدوال الجاهزة التي تعيد لنا معلومات كل مقال فهنا سنستدعي الدالة the_title() لعرض عنوان المقال والدالة the_excerpt() لإظهار مقتطفات المقال ودالة the_post_thumbnail() لعرض الصورة المصغرة للمقال، وبما أن هذه الدوال تستدعى ضمن حلقة while loop فسوف تظهر لك كل معلومات المقالات المنشورة في الموقع تباعًا على الصفحة الرئيسية حسب تاريخ نشرها من الأحدث للأقدم. سوف يكون الملف النهائي index.php كالتالي: <?php get_header(); ?> <div class="main"> <?php if (have_posts()) { while (have_posts()) { the_post(); ?> <div class="post-qwe"> <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>> <?php if (has_post_thumbnail()) { echo '<a href="' . get_permalink($post->ID) . '" >'; echo get_the_post_thumbnail($post->ID,); echo '</a>'; } ?> <p class="page-title-qwe"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p> <?php the_excerpt(); ?> </div> </div> <?php } ?> <br> <?php } get_footer(); بالطبع هناك العديد من المعلومات الأخرى التي يمكن عرضها حول كل مقال من خلال مجموعة دوال مخصصة تسمى وسوم القالب Template tags تجدها في التوثيق الرسمي للوردبريس template tags. يعتمد عدد المقالات المنشورة الظاهرة على صفحتك على الخيار عدد الموضوعات المعروضة في الصفحة والذي يمكنك تحديده من خلال لوحة التحكم ثم الإعدادات ثم اختيار البند قراءة كما يلي: ففي حال حددت هنا عدد المقالات ليكون 6 مثلًا، عندها ستظهر لك فقط أحدث ستة مقالات منشورة في الموقع، وكي تتمكن من عرض بقية المقالات عليك إضافة روابط تنقل لنتمكن من رؤية المقالات الأقدم والأحدث من خلال الدالتين previous_posts_link و next_posts_link. لتحقيق ذلك كل ما عليك هو كتابة الكود التالي في الملف index.php قبل استدعاء الدالةget_footer() كما يلي: <nav class="pagination"> <?php previous_posts_link('< الصفحة السابقة'); next_posts_link('الصفحة التالية >'); ?> </nav> </div> لاحظ أننا أضفنا في الكود العديد من أصناف التنسيقات classes الخاصة بـ CSS حتى نستفيد منها لاحقًا في الجزء الثالث من هذه السلسلة وأضفنا كذلك دالتين the_ID() و post_class() وفائدة الأولى إعادة معرف كل منشور على حدة والثانية إضافة بعض أصناف التنسيق لوسم HTML الذي يعرض المقالات لتساعد على تنسيقها وعرض محتوياتها وهي تعمل بطريقة مشابهة للدالة body_class() التي شرحناها سابقًا. تعديل طريقة عرض مقتطف المقالات أخيرًا سنعدل الرابط الذي تعرضه الدالة the_excerpt() فهذه الدالة تعرض بشكل افتراضي نص رابط مكون من ثلاث نقاط … في نهاية المقتطفات التي تزيد عن 55 كلمة وبالنقر فوق النقاط يتم تحويل المستخدم لصفحة قراءة المقال الكامل. للقيام لذلك سنكتب دالة تعدل على طريقة عمل هذه الدالة وتجعلها تعرض كلمة المزيد بدل النقاط الثلاث وتعدل طول المقتطف ليكون 20 حرفًا فقط، لذا سنكتب دالة خطاف تعديل للدالة excerpt_more() في ملف وظائف قالب ووردبريس functions.php كما يلي: /** * the excerpt "read more" */ function new_excerpt_more_qwe($more) { return ' <a class="read-more" href="' . get_permalink(get_the_ID()) . '">' . __('[المزيد]', 'your-text-domain') . '</a>'; } add_filter('excerpt_more', 'new_excerpt_more_qwe'); function mytheme_custom_excerpt_length($length) { return 20; } add_filter('excerpt_length', 'mytheme_custom_excerpt_length', 999); برمجة ملف تذييل قالب ووردبريس يتضمن ملف footer.php كافة الشيفرات البرمجية الموجودة في منطقة التذييل بصفحتك وهو يتضمن وسوم فيه علامات الإغلاق </body> و </html> كما يمكنك هنا أيضًا استدعاء ملفات جافا سكريبت مخصصة في حال كنت تريد تحميلها بعد اكتمال تحميل الصفحة واستدعاء أي شيفرات يحتاج ووردبريس لوضعها تلقائيًا في التذييل. سيتضمن تذييل قالب ووردبريس الخاص بنا قسمين أساسيين الأول يعرض مجموعة من الودجات التي يضيفها المستخدم من داخل لوحة التحكم والثاني يعرض عبارة حقوق النشر الخاصة بالموقع. الودجات هي عناصر واجهة رسومية تعرض جزء صغير من المحتوى ويمكنك أن تضيفها في أي مكان ضمن موقعك لكن المكان الأكثر شهرة لإضافتها هو في الشريط الجانبي والتذييل ولعرض أي ودجات تمت إضافتها نستدعي الدالة dynamic_sidebar()، وللمزيد من المعلومات حول مفهوم الودجات وآلية عملها يمكنك مطالعة مقال دليل ودجات ووردبريس. <footer> <section class="footer-qwe"> <?php dynamic_sidebar('footer 1'); ?> </section> يمكن الوصول لصفحة إدارة الودجات وإضافتها لموقعك من لوحة التحكم من خلال التبويب مظهر ثم ودجات، وعند فتح صفحة الودجات ستجدها مقسمة إلى قسمين الأول على اليسار يحتوي على مناطق عرض الودجات وهي في قالبنا منطقة واحدة فقط اسمها footer 1. تختلف هذه المناطق من قالب لآخر حسب برمجته فيمكن أن يحتوي القالب على عدة مناطق لعرض الودجات وقد تكون الودجات جاهزة ومضمنة نظام ووردبريس نفسه، كما يمكن كتابة أكواد مخصصة لعرض الودجات الخاصة بك. نحتاج لأمر إضافي لعرض الودجات وهو تعريف مناطق الودجات الخاصة بقالب ووردبريس في ملف وظائف القالب function.php وسنقوم بذلك من خلال تعريف دالة مخصصة باسم qwe_register_footers() نُعرِّف من خلالها وسطاء منطقة عرض الودجات ثم نربطها مع الخطاف widgets_init الذي يقع عند تهيئة الودجات في ووردبريس كما يلي: function qwe_register_footers() { $args2 = array('name' =>'footer 1', 'id'=>'footer' , 'description'=> 'عرض الودجات في التذييل', 'class' => '', 'before_widget' => '<div class="widgeth"><li id="%1$s" class="widget %2$s">', 'after_widget' => '</li></div>', 'before_title' => '<h2 class="widgettitle">', 'after_title' => '</h2>' ); register_sidebars(1,$args2); } add_action('widgets_init','qwe_register_footers'); ?> من المفيد أن نشرح دلالة كل وسيط من الوسطاء التي مررناها لهذه الدالة: name وسيط يمثل اسم منطقة عرض الودجات وهي footer 1 id معرف فريد لمنطقة عرض الودجات description وصف منطقة عرض الودجات class صنف تنسيق CSS للمنطقة before_widget وسم HTML الذي سيتم وضعه قبل كل ودجت after_widget وسم HTML الذي سيتم وضعه بعد كل ودجت before title وسم HTML الذي سيتم وضعه قبل عنوان كل ودجت after_title وسم HTML الذي سيتم وضعه بعد عنوان كل ودجت في القسم الثاني من التذييل سنكتب جملة جميع الحقوق محفوظة ويليه اسم المدونة الذي نحصل عليه بشكل ديناميكي من خلال الدالةget_bloginfo('name'). أخيرًا لا ننسى استدعاء الدالة wp_footer() الأساسية لاستدعاء جميع أنواع السكريبتات الخاصة المرتبطة بالإضافات Plugins وكذلك الأكواد الخاصة بنظام ووردبريس والتي تستدعى في تذييل الصفحة لذا نكتب الأكواد التالية نهاية ملف index.php قبل وسم الإغلاق</body> مباشرة: <section class="copyright"> <p><a href="<?php echo home_url(); ?>">©<?php echo date('Y'); ?> جميع الحقوق محفوظة لـ <?php echo get_bloginfo('name'); ?></a></p> </section> </footer> </div> <?php wp_footer(); ?> </body> </html> بهذا نكون قد انتهينا من إنشاء كامل الكود المطلوب لملف index.php وفصلنا أكواد الترويسة والتذييل header.php و footer.php التي تتضمن أجزاء مكررة لنتمكن من استدعائها من خلال الدوال get_header() و get_footer() ضمن الملف index.php أو ضمن أي ملف آخر يحتاجها مثل ملفات page.php و single.php و category.php حيث أن كل الملفات تقريبًا ستحتوي على هذين القسمين. إذًا سيكون كود ملف footer.php النهائي كالتالي: <footer> <section class="footer-qwe"> <?php dynamic_sidebar('footer 1'); ?> </section> <section class="copyright"> <p><a href="<?php echo home_url(); ?>">©<?php echo date('Y'); ?> جميع الحقوق محفوظة لـ <?php echo get_bloginfo('name'); ?></a></p> </section> </footer> </div> <?php wp_footer(); ?> </body> </html> وسيكون الملف النهائي لوظائف القالب بعد أن أضفنا كافة الميزات المطلوبة كما يلي: <?php // menus function register_nav_menu_primary_qwe(){ $location='Primary'; $description='Primary menu'; register_nav_menu( $location, $description ); } add_action('after_setup_theme','register_nav_menu_primary_qwe' ); function register_nav_menu_Secondary_qwe(){ $location='Secondary'; $description='Secondary menu'; register_nav_menu( $location, $description ); } add_action('after_setup_theme','register_nav_menu_Secondary_qwe' ); /** * Enqueue scripts and styles. */ function modawanaty_scripts() { wp_enqueue_style( 'modawanaty-style', get_stylesheet_uri(), array(), wp_get_theme()->get( 'Version' ) ); } add_action( 'wp_enqueue_scripts', 'modawanaty_scripts' ); // thumbnail connection function post_thumbnails_qwe() { // add_theme_support( $feature, $arguments ); add_theme_support( 'post-thumbnails', array( 'post','page') ); // Posts and pages add_image_size('small',300,300, true); add_image_size('large',600,600, true); } add_action( 'after_setup_theme', 'post_thumbnails_qwe' ); // custom logo add_theme_support( 'custom-logo' ); function themename_custom_logo_setup() { $defaults = array( 'height' => 200, 'width'=> 200, 'flex-height' => true, 'flex-width' => true, 'header-text' => array( 'site-title', 'site-description' ), ); add_theme_support( 'custom-logo', $defaults ); } add_action( 'after_setup_theme', 'themename_custom_logo_setup'); // the excerpt "read more function new_excerpt_more_qwe( $more ) { return ' <a class="read-more" href="'. get_permalink( get_the_ID() ) . '">' . __('[المزيد]', 'your-text-domain') . '</a>'; } add_filter( 'excerpt_more', 'new_excerpt_more_qwe' ); function mytheme_custom_excerpt_length( $length ) { return 20; } add_filter( 'excerpt_length', 'mytheme_custom_excerpt_length', 999 ); // add Footers function qwe_register_footers() { $args2 = array('name' =>'footer 1', 'id'=>'footer' , 'description'=> 'add another footer', 'class' => '', 'before_widget' => '<div class="widgeth"><li id="%1$s" class="widget %2$s">', 'after_widget' => '</li></div>', 'before_title' => '<h2 class="widgettitle">', 'after_title' => '</h2>' ); register_sidebars(1,$args2); } add_action('widgets_init','qwe_register_footers'); إنشاء ملف single.php وملف page.php ذكرنا سابقًا أن الملف single.php هو المسؤول عن عرض المقال المفرد ونحن هنا نقصد المنشور الافتراضي post في ووردبريس أو المنشور المخصص custom post لكن هذا الملف ليس مسؤولًا عن عرض الصفحات الثابتة page فهذه الصفحات لها ملف خاص مسؤول عن عرضها وهو page.php. سنكتب في كلا الملفين كود مشابه لما كتبناه في ملف index.php مع تغيير طفيف في الشيفرات البرمجية حيث سنعمل على استبدال الدالة the_excerpt() التي تعرض مقتطف من المقال بالدالة the_content() التي تعرض المحتوى الكامل للمقال وتغيير أصناف التنسيقات class الرئيسية وحجم الصورة المصغرة كما يلي: <?php get_header(); ?> <div class="main"> <?php if(have_posts()) { while ( have_posts() ) { the_post(); echo '<div id="post-';the_ID();echo '"';post_class();echo '>'; echo '<div class="rect">'; echo '<h1 class="qwe-page-title"><a href="'; the_permalink(); echo'"> '; the_title(); echo '</a></h1>'; if ( has_post_thumbnail() ) { the_post_thumbnail('large'); } the_content(); echo '</div>'; } } ?> </div> <?php get_footer(); ?> إنشاء ملف الأرشيف archive.php يعرض ملف الأرشيف archive.php المقالات المؤرشفة وفق أي معيار سواء وفق تاريخ نشر المقال أو وفق التصنيف المضاف للمقال أو وفق اسم الكاتب …إلخ. لبرمجة ملف أرشيف قالب ووردبريس سنجعل هذا الملف نسخة طبق الأصل من ملف index.php مع تغيير صغير كذلك وهو عرض التصنيف الخاص بالمقالات أعلى الصفحة من خلال الدالة the_archive_title() التي توضح اسم التصنيف الخاص بأرشفة هذه المقالات كما يلي: <?php get_header(); ?> <div class="main"> <section id="page-title"> <div class="container clearfix"> <h1><?php echo the_archive_title(); ?></h1> </div> </section><!-- #page-title end --> <?php if(have_posts()) { while ( have_posts() ) { the_post(); echo '<div id="post-';the_ID();echo '"';post_class();echo '>'; echo '<div class="rect">'; echo '<h1 class="qwe-page-title"><a href="'; the_permalink(); echo'"> '; the_title(); echo '</a></h1>'; if ( has_post_thumbnail() ) { the_post_thumbnail('small'); } the_excerpt('<br/><p class="push_button">المزيد </p>'); echo '</div>'; } } ?> </div> <?php get_footer(); ?> بهذا نكون قد انتهينا من برمجة كامل الملفات التي تحدد هيكلية أو بنية قالب ووردبريس المخصص وتجلب لنا المحتوى المطلوب عرضه في كل صفحة من صفحات الموقع. لكن قالب ووردبريس حاليًا يعرض المحتوى بشكل بدائي للغاية وهذا أمر طبيعي لأننا لم نضف بعد أي تنسيقات للعناصر التي عرضناها وهو ما سنقوم به في الدرس التالي من هذه السلسلة. مصادر إضافية لتعلم برمجة قوالب ووردبريس من الصفر إذا كنت مهتمًا بمعرفة المزيد من التفاصيل حول مميزات بناء قالب وردبريس وأهم خطوات برمجة قالب ووردبريس أنصح بمشاهدة الفيديو التالي: وفي كنت تبحث عن دورة متكاملة تعلمك تطوير قوالب ووردبريس بطريقة احترافية ومتقدمة تمكنك من تطوير قوالب مميزة وبيعها في المتاجر المتخصصة أنصحك بمطالعة دورة تطوير تطبيقات الويب باستخدام لغة PHP التي توفرها أكاديمية حسوب، ستجد في هذه الدورة الكثير من المسارات المتخصصة في تعليم ووردبريس من الصفر حتى الاحتراف وتتبع منهجيات وطرق متعددة في التطوير. الخلاصة تعلمنا في درس اليوم إنشاء الملفات الأساسية لقالب ووردبريس وقد اكتفينا بالملفات الأساسية للقالب وبالطبع هناك الكثير من الملفات الأخرى التي يمكنك إضافتها لجعل قالب ووردبريس أكثر تخصيصًا لكن تطويرها يعتمد على نفس الأفكار التي طرحناها في هذا الدرس. وسنقوم في الدرس الرابع من هذه السلسلة بخطوة مهمة جدًا وهي تنسيق محتوى الموقع لنجعل طريقة عرضه موافقة بالضبط لتصميم القالب المطلوب. كتب المسودة الأولية للمقال هشام حسين. اقرأ أيضًا المقال السابق: أساسيات تطوير قالب ووردبريس المقال التالي: إضافة تنسيقات CSS لقالب ووردبريس كيفية البدء في تطوير قوالب ووردبريس استخدام قوالب ووردبريس
-
في مقال اليوم سنتحدث عن أهمية تطوير قالب ووردبريس مخصص ونوضح الخطوات الأساسية التي علينا اتباعها كي نحول قالب ووردبريس من تصميم أساسي مرسوم باستخدام فيجما يتضمن تخطيط وتموضع العناصر ضمن الموقع إلى قالب فعلي يمكن تثبيته على موقع ووردبريس. هذا المقال هو المقال الثاني من سلسلة المقالات التالية: مدخل إلى برمجة قوالب ووردبريس أساسيات تطوير قالب ووردبريس إنشاء الملفات الأساسية لبرمجة قالب ووردبريس إضافة تنسيقات CSS لقالب ووردبريس إضافة المميزات لقالب ووردبريس باستخدام جافا سكريبت بعد الانتهاء من تصميم الموقع ستكون الخطوة التالية هي برمجة هذا التصميم وتحويله إلى قالب ووردبريس فعلي وهو ما سنبدأ بتعلمه في هذا المقال والمقالات التي تليه، لكن قبل البدء فعليًا ببرمجة القالب وإنشاء ملفاته الضرورية يجب أن تطلع على بعض المعلومات الأساسية حول بنية قوالب ووردبريس وتكون على دراية بكافة الطرق المختلفة التي يمكنك من خلالها تطوير قالب ووردبريس والتمكن من القواعد الأساسية المطلوبة لعملية التطوير وهو ما سنناقشه في مقال اليوم. بالطبع هناك الكثير من التفاصيل التي عليك الإلمام بها، ولكننا سوف نوضح في هذا الدليل أهم الجوانب والنقاط التي تحتاجها بصورة ملخصة كي تتمكن من بدأ العمل بشكل سريع وتبني قالب مدونة بسيط خطوة بخطوة وللاستزادة يمكنك الرجوع إلى الدليل الرسمي لمطوري ووردبريس حيث ستجد فيه الكثير من التفاصيل المشروحة عن برمجة قوالب ووردبريس. طرق تطوير قالب ووردبريس مخصص قبل البدء بالتعرف على الهيكل التنظيمي لمجلدات وملفات قوالب ووردبريس ومعرفة ما هي الملفات المطلوبة التي ينبغي وجودها في أي قالب تطوره ودور كل ملف منها وهرمية استدعاء هذه الملفات عند تفعيل القالب على موقع ووردبريس فعلي دعنا نتعرف على كافة الطرق والخيارات المتاحة أمامك لتطوير قالب ووردبريس. في الواقع إذا أعجبك تصميم لموقع ما ورغبت في تحويله إلى قالب ووردبريس فسيكون أمامك عدة خيارات ممكنة لإنجاز العمل، تشمل هذه الخيارات: برمجة قالب ووردبريس من الصفر برمجة قالب ووردبريس بالاعتماد على قوالب البدء الحصول على قالب ستاتيكي وتحويله إلى قالب ووردبريس تطوير قالب ووردبريس ابن من قالب أب برمجة قالب ووردبريس بالاعتماد على أطر عمل القوالب تطوير قالب ووردبريس باستخدام أحد إضافات بناء الصفحات توظيف مطور ليصمم قالب ووردبريس مخصص لنشرح باختصار آلية عمل كل طريقة من هذه الطرق وأهم مميزاتها ومحدوديتها. 1. تطوير قالب ووردبريس من الصفر يمكنك اتباع هذه الطريقة إذا كنت تريد تجربة كتابة كل شيء بنفسك بدون الاعتماد على أي حلول مساعدة، حيث سيتوجب عليك أن تكتب كل الشيفرات البرمجية اللازمة من الصفر وتحرص على استخدام أفضل الممارسات في كتابة الكود. وبالرغم من صعوبة القيام بكتابة كافة الأكواد المطلوبة لعمل القالب من الصفر ثم تنسيق عناصر القالب بالشكل المطلوب وعدم اعتماد المطورين على هذه الطريقة عمليًا في سوق العمل نظرًا لكون الحلول الأخرى أسهل وأسرع إلا أننا سنعتمد على هذه الطريقة في سلسلة مقالاتنا الحالية لغرض التعلم فقط. فتطوير قالب ووردبريس من الصفر كفيل بجعلك تفهم بشكل أفضل آلية عمل ملفات قالب ووردبريس وتفاعلها مع بعضها البعض وطريقة استدعائها في الموقع. وفي مرحلة لاحقة يمكنك استخدام الطرق الأخرى في التطوير. 2. برمجة قالب ووردبريس بالاعتماد على قوالب بادئة قالب البدء أو قالب التمهيد starter theme هو عبارة عن قالب ووردبريس بسيط يوفر للمطور أهم الشيفرات البرمجية اللازمة لعمل القالب ويحقق له الوظائف المتكررة التي يحتاجها كل قالب بالحد الأدنى لكنه لا يتضمن في العادة تنسيق عناصر القالب أو المحتوى الذي يعرضه القالب وقد يتضمن بعض التنسيقات لكنها تكون بسيطة للغاية. تستخدم قوالب البدء كأساس لإنشاء قوالب ووردبريس مثالية واحترافية مخصصة وهناك العديد من القوالب التي يمكنك الاعتماد عليها كأساس لبرمجة قالب ووردبريس مخصص مثل قالب Underscores المطور من قبل شركة أوتوماتيك Automattic وهي نفس الشركة التي طورت منصة wordpress.com كل ما عليك هو تحميل هذا القالب وإضافة الأكواد الخاصة بك لتخصيص طريقة عمله بما يلائم متطلبات موقعك. ملاحظة: قد تجد بعض قوالب البدء الأخرى التي تتضمن العديد من مكتبات الأكواد والتنسيقات والعناصر المتقدمة الجاهزة التي يمكنك استخدامها في بناء موقعك، لكن يفضل معظم المطورين الاعتماد على قوالب بدء بعناصر أساسية وبأقل الميزات لتطويعها حسب حاجتهم. لمزيد من التفاصيل حول قالب البدء يمكنك مطالعة مقال مدخل إلى تطوير قوالب ووردبريس باستخدام إطار underscores، كما توفر أكاديمية حسوب في دورة تطوير التطبيقات باستخدام PHP مسار كامل لشرح طريقة تطوير قالب ووردبريس بالاعتماد على قالب underscores. 3. تحويل قالب ستاتيكي إلى قالب ووردبريس ديناميكي يمكن اعتبار هذه الطريقة عكس الطرق السابقة فأنت تبدأ بتصميم القالب بالكامل بشكل ستاتيكي أي تصممه بداية بحيث يعرض محتوى ثابت باستخدام لغات الواجهة الأمامية للويب فقط HTML و CSS وجافا سكريبت، وتهتم بكل تفاصيل التصميم من البداية كما يمكنك مباشرة أن تعتمد على تصميم جاهز مطور مسبقًا وتحوله لقالب ووردبريس إذا كان يلائم متطلباتك. وعندما تنتهي من برمجة وتصميم كل ما يتعلق بالواجهة الأمامية الموقع بالكامل تبدأ بتحويله إلى قالب ديناميكي يعرض المحتوى المضاف من لوحة تحكم ووردبريس بالاعتماد على تقسيم الملفات بالشكل المعتمد في ووردبريس واستدعاء الدوال الجاهزة التي يوفرها لك نظام ووردبريس وكتابة دوال php واستعلامات WP_Query لعرض محتوى مخصص عند الحاجة. تستخدم هذه الطريقة بكثرة لدى مطوري قوالب ووردبريس وتطلب من قبل العديد من العملاء على مواقع العمل الحر فإذا كنت مهتمًا بالتعرف على طريقة تحويل أي قالب HTML ثابت إلى قالب ملائم للعمل على نظام ووردبريس ستجد في دورة تطوير تطبيقات الويب باستخدام لغة PHP التي توفرها أكاديمية حسوب مسارًا متكاملاً يعلمك طريقة تطوير قالب ووردبريس إخباري بالاعتماد على قالب HTML. 4. تطوير قالب ووردبريس ابن من قالب أب عند تطوير قالب فرعي أو قالب ابن child theme من قالب أب أو أساسي parent theme فإنه سيرث خصائص وتنسيقات القالب الأصل ويضيف التنسيقات والوظائف الخاصة به دون إجراء أي تعديلات برمجية على ملفات القالب الأب، لكنك في هذه الحالة بحاجة في كل مرة لتثبيت القالب الابن والأب معًا في موقعك. تعد هذه الطريقة مثالية عندما تجد قالب ووردبريس يتضمن معظم المميزات التي ترغب بها لكنه يحتاج لبعض التعديلات الطفيفة كي يناسب متطلباتك، لكن في حال كانت التغييرات التي تحتاج لأن تجريها على القالب كثيرة وجذرية يفضل أن تقوم بتطويره بشكل مستقل ولن يكون من المجدي في هذه الحالة أن تستنسخه من قالب آخر. ولمطالعة المزيد من التفاصيل حول خطوات بناء قوالب فرعية في ووردبريس أنصح بمطالعة مقال كيف تنشئ قالب ووردبريس فرعي. 5. برمجة قالب ووردبريس الاعتماد على أطر عمل القوالب توفر أطر عمل القوالب theme frameworks طريقة فعالة وسريعة لتطوير قوالب أبناء مخصصة من قالب ووردبريس أساسي فإطار العمل يعمل كوسيط بين القالب الأب والابن ويوفر لك قالب أساسي مطور وفق أفضل الممارسات ومجموعة من الدوال والأدوات الخاصة بالإطار وكل ما عليك هو إنشاء قالب ابن من إطار العمل واستدعاء ما يناسبك من هذه الدوال من أجل إضافة أو إزالة المحتوى الذي تريده ومن أشهر الأمثلة على أطر عمل قوالب ووردبريس نذكر Genesis و Thesis. بهذه الطريقة يمكنك تخصيص القالب الابن بسهولة دون الحاجة لكتابة الكثير من الأكواد البرمجية وكل ما عليك هو استدعاء دوال محددة تجعل موقع الويب يبدو بالطريقة التي تناسبك وبهذا يمكنك تخصيص القالب المطور بناء على إطار العمل بسهولة ودون الحاجة لتحرير ملفات القالب مباشرة. 5. تطوير قالب ووردبريس باستخدام إضافات بناء الصفحات في هذه الحالة لن تحتاج لكتابة أي كود برمجي لبناء قالب ووردبريس مخصص لموقعك بل ستأخذ التصميم المطلوب من المصمم وتعمل على محاكاته بالاعتماد على أحد إضافات بناء الصفحات page builder والتي تعرف كذلك باسم إضافات إنشاء المواقع وهي كثيرة ومتنوعة. وهذه الطريقة سهلة للغاية ولا تتطلب منك أي معرفة برمجية بل تعتمد على واجهات مرئية تستخدم تقنية السحب والإفلات لتصميم كل شيء تريده حيث توفر لك هذه الإضافات الكثير من خيارات التصميم وعناصر واجهة المستخدم المضمنة لكل شيء تحتاجه كالأزرار والجداول والصور المنزلقة وأشرطة التمرير والنماذج وغيرها. لكن المشكلة الأبرز في هذه الطريقة على سهولتها أنك تضطر لتثبيت إضافة الباني على موقعك كي تتمكن من تحرير أجزاء القالب المبنية من خلالها، كما أنها قد تنتج كمية كبيرة من الشيفرات البرمجية وتتسبب في بطء الموقع بشكل ملحوظ لاسيما إن كانت استضافتك محدودة الموارد. 6. توظيف مطور ليصمم لك قالبًا إذا لم تكن مطورًا متمرسًا ولديك المعلومات الكافية حول تطوير الواجهات الأمامية والخلفية لمواقع الويب فلن تتمكن من برمجة قالب ووردبريس الخاصة بك وتطويره من البداية بشكل احترافي ووفق أفضل الممارسات والتحديثات التي توصي بها ووردبريس. فإذا كنت تجد الخيارات السابقة كلها صعبة ومربكة ولا تود أن ترهق نفسك بتطوير قالب مخصص لشركتك من الصفر لكنك تريد في نفس الوقت الحصول على تصميم مميز وفريد وغير مكرر على عشرات المواقع الأخرى، يمكنك البحث عن مطور قوالب ووردبريس متمكن في مواقع العمل الحر مثل مستقل وتطلب منه أن يصمم لك قالبًا يعكس طبيعة نشاطك التجاري أو تحصل على قالب يناسب متطلبات موقعك من متجر متخصص في بيع القوالب مثل بيكاليكا وتجد مطورًا متمرسًا يساعدك في متابعة العمل خطوة بخطوة وتخصيص قالبك وفق ما يناسبك. استعرضنا لك أبرز الخيارات المتاحة التي يمكنك من خلالها تطوير قالب ووردبريس مخصص لتختار منها ما يناسبك، وسنبدأ في الفقرات التالية بشرح الطريقة الأولى والأكثر بدائية كما ذكرنا وهي تطوير قالب ووردبريس من الصفر حيث سنبدأ بملفات فارغة ونكتب فيها كل الأكواد المطلوبة لعمل قالبنا. أهم ملفات قالب ووردبريس قبل أن تتمكن من برمجة قالب ووردبريس الخاص بك من الصفر ستحتاج إلى فهم بنيته ومعرفة الملفات الأساسية التي يتكون منها القالب وكيف تعمل وتتفاعل مع بعضها البعض لتحدد تخطيط وشكل المحتوى على موقعك. يتم تخزين كافة قوالب ووردبريس عادة ضمن المجلد themes الموجود داخل المجلد wp-content ضمن المجلد الجذر لموقع ووردبريس. ستجد في المجلد themes جميع القوالب المتاحة على موقع الويب الخاص بك حيث يكون لكل قالب منفصل مجلده الخاص. إذا فتحت أي مجلد خاص بقالب ووردبريس معين ستلاحظ أنه يتكون بشكل أساسي من مجموعة من ملفات بالامتداد php تعرف باسم هذه الملفات باسم ملفات نماذج القالب template files كما ستجد بعض ملفات التنسيق بالامتداد css أو scss وملفات جافا سكريبت js وبعض ملفات الصور والوسائط وغيرها من الملفات الأخرى المنظمة ضمن مجلدات فرعية والتي تتعاون مع بعضها البعض لتحدد مظهر موقع ووردبريس الخاص بك. ومن أهم ملفات قالب ووردبريس نذكر: index.php: وجود هذا الملف أساسي لأي قالب ووردبريس ويستخدم لعرض الصفحة الرئيسية لموقع ووردبريس التي تعرض افتراضيًا أحدث مقالات موقعك، كما أنه الملف الاحتياطي الذي سيعتمد عليه ووردبريس لعرض أي صفحة لا تملك ملفًا مخصصًا لعرضها وستفهم هذه الجزئية بشكل أفضل عندما نشرح التسلسل الهرمي لملفات قالب ووردبريس. style.css: وهو ملف أساسي لعمل قالب ووردبريس ويتضمن معلومات تعريفية حول القالب كما يتضمن تنسيقات عناصر القالب. page.php: يعرض هذا الملف الصفحات الداخلية الثابتة للموقع مثل صفحة من نحن وصفحة سياسة الخصوصية. single.php: يستخدم هذا الملف لعرض الصفحات التي تعرض مقالًا واحدًا. archive.php: يعرض صفحات الأرشيف في الموقع سواء أرشيف التصنيفات أو الوسوم أو التاريخ. search.php: هذا الملف مخصص لعرض صفحة نتائج البحث ضمن الموقع. front-page.php: ملف لعرض الصفحة الرئيسية للموقع إذا كانت صفحة ثابتة ولم تكن صفحة عرض أحدث المقالات الافتراضية. 404.php: ملف مخصص لعرض صفحة الخطأ التي تظهر عند عدم العثور على الصفحة المطلوبة. screenshot.png: ملف الصورة الذي يظهر عند عرض قالب ووردبريس في لوحة التحكم والحجم المفضل له هو 1200 × 900 بكسل، يكفي أن تنشئ صورة بهذا الاسم وتضعها في مجلد القالب لتظهر تلقائيًا عن عرض القالب في لوحة التحكم. functions.php: ملف وظائف القالب المسؤول عن إضافة العديد من الميزات والإعدادات داخل قالبك مثل دعم الصور المصغرة للمقالات وتحديد أحجام الصور التي يدعمها القالب وتعريف مواضع عرض القوائم في القالب وغيرها من الميزات. كما يمكن إنشاء العديد من الملفات الأخرى المخصصة لتخصيص عرض أي صفحة أو جزء معين في موقعك إذا تعرفت أكثر عن طريقة كتابة أسماء الملفات في بنية قالب في ووردبريس ومتى يتم استدعائها. إذا كنت مهتمًا بالمزيد من التفاصيل حول هذا الموضوع أنصحك بمطالعة الرابط التالي. التسلسل الهرمي لملفات نماذج قالب ووردبريس من المفاهيم الأساسية التي يجب فهمها عند برمجة قالب ووردبريس مفهوم التسلسل الهرمي لملفات نماذج القالب template hierarchy وهو طريقة ضمنية يستخدمها ووردبريس لتحديد ما هي ملفات php التي سوف يستخدمها عند عرض كل صفحة من صفحات الموقع وهي تسهل على مطوري قوالب ووردبريس تخصيص مواقع الويب كما يريدون. تعمل هذه الطريقة بمثابة شجرة قرار تساعد نظام ووردبريس على تحديد الملف الأنسب الذي سيعتمده لعرض أي صفحة من صفحات موقعك، فعند عرض محتوى معين في الموقع يبحث ووردبريس في تسلسل هرمي محدد ليعثر على اسم أكثر ملف قالب مخصص مناسب لعرض هذا المحتوى وإذا لم يتمكن من العثور على الملف المطابق ينتقل لمسار أعلى في الهرمية وهكذا حتى يصل في النهاية لملف نموذج القالب الأساسي وهو الملف index.php الذي يجب أن يكون موجودًا في أي قالب ووردبريس كي يعمل. على سبيل المثال تنقسم المدونة التي سوف ننشئها إلى عدة صفحات منها الرئيسية وهي في حالتنا صفحة المدونة التي تحتوي على المقتطفات الخاصة بالمنشورات أو المقالات معروضة وفق الترتيب التنازلي لتاريخ نشرها من الأحدث للأقدم والمسؤول عن عرضها ملف نموذج القالب الرئيسي index.php. عندما تنقر على كل رابط من روابط المقالات ستصل لصفحة تعرض المقال فقط وهي صفحة مفردة خاصة به والمسؤول عن عرض هذه الصفحة هو ملف نموذج القالب single.php لكن ماذا لو لم يوجد هذا الملف في مجلد قالبك؟ عندها سيعتمد ووردبريس على ملف نموذج القالب الرئيسي index.php الأكثر عمومية لعرضها. هناك أيضًا عدة صفحات أخرى مهمة سنقوم بإنشائها، مثل صفحة عني وسياسة الخصوصية وتواصل معي، وهي كذلك تعتبر صفحات داخلية ثابتة في الموقع والملف المسؤول عن عرضها هو page.php فإذا لم يوجد هذا الملف يتم الاعتماد من جديد على ملف نموذج القالب الرئيسي index.php. وكذلك لدينا صفحات التصنيفات التي تحتوي مقالات محددة لها تصنيف محدد، فعلى سبيل المثال إذا كانت مدونتنا مختصة بالتقنية وتصنيفاتها الأساسية هي الهواتف والتطبيقات والبرمجة وما إلى ذلك، وبالتالي فإن صفحات التصنيفات ستكون أحدها الهواتف وما يندرج تحتها من مقالات بهذا التصنيف وأحدها للتطبيقات وما يندرج تحتها من مقالات …إلخ. عند عرض صفحة المقالات التي تختص بتصنيف البرمجة وليكن اسمه المختصر أو slug هو programming والمعرف الخاص به هو 5 سيبحث ووردبريس عن أكثر ملف مخصص لعرض هذه المقالات وهو في هذه الحالة category-programming.php المخصص لعرض كافة المقالات المنظمة تحت تصنيف برمجة كي يعرض هذه الصفحة، وفي حال لم يجده يبحث عن الملف الأقل تخصيصًا في الهرمية وهو category-5.php ثم عن category.php ثم عن archive.php وهو الملف العام لعرض كافة المقالات المنظمة تحت أي نوع من التصنيفات أو الوسوم أو سواء المقالات المنشورة وفق تاريخ معين أو التي لها تصنيف معين أو كاتب معين وإذا لم يجده سيعود في النهاية للملف الأكثر عمومية وهو index.php لهذا يعتبر هذا الملف أساسي لأي قالب ووردبريس ويجب ان يكون موجود في مجلد كل قالب وإلا فلن يعمل القالب بصورة صحيحة. الملفات الجزيئة لقالب ووردبريس Template Partials من الملفات المهمة الأخرى في قالب ووردبريس الملفات الجزئية template partials وهي ملفات مخصصة لبرمجة أجزاء صغيرة من الموقع تظهر في عدة أماكن فهي تستدعى في ملفات النماذج الأخرى مثل ملفات header.php و footer.php و sidebar.php ويوجد ملفات أخرى شبيهه ويمكن معرفتها من خلال الدليل الرسمي لمطوري قوالب ووردبريس. تكمن فائدة تلك الملفات في تجميع الأكواد المكررة وإعادة استخدامها عند الحاجة، مثلًا في ملف header.php نضع كل الكود المخصص للعرض في ترويسة الموقع مثل شعار الموقع وقائمة التنقل الرئيسية وصندوق البحث وأيقونات التواصل الاجتماعي، وفي ملف footer.php نكتب مثلًا كود عرض عبارة حقوق النشر وبيانات التواصل وقد نضع قائمة تنقل فرعية، وفي ملف sidebar.php نضع الكود الذي نريد عرضه في الشريط الجانبي للموقع وهو عادة يعرض عناصر واجهة مستخدم تسمى الودجات widgets. بعدها يمكن أن نستورد هذه الملفات الجزئية عند الحاجة لعرضها في أي ملف ضمن قالبنا من خلال دوال جاهزة في ووردبريس تسمى وسوم النموذج أو وسوم القالب template tags. استخدام وسوم النماذج لتطوير قالب ووردبريس ستحتاج للتعرف على مفهوم وسوم القالب template tags عند تطوير قالب ووردبريس مخصص وهذه الوسوم هي هي دوال php تستخدم لجلب البيانات ديناميكيًا وعرضها في الملفات التي تحتاجها، على سبيل المثال: الدالة get_header: تضمن كود الترويسة في الملف الرئيسي الذي يستدعيها الدالة get_sidebar: تضمن كود الشريط الجانبي في الملف الرئيسي الدالة get_footer: تضمن كود التذييل في الملف الرئيسي الدالة get_search_form: تضمن نموذج البحث الخاص بووردبريس في الملف الرئيسي الدالة get_template_part: تستخدم لتضمين أكواد مخصصة في الملف الرئيسي حيث نمرر لها اسم ملف الكود المطلوب كوسيط وللاطلاع على بكافة دوال الوسوم التي يمكنك استخدامها في تطوير قالب ووردبريس وأمثلة على استخدامها أنصحك بمطالعة التوثيق الرسمي List of Template Tags من ووردبريس. ملاحظة: هناك نوع حديث من قوالب ووردبريس تسمى قوالب الكتل block themes وهذه القوالب تعتمد على ملفات HTML تمثل الكتل وليس على ملفات php وهي بالتالي لا تستخدم الدوال المذكورة أعلاه بل تستخدم أساليب أخرى لتضمين هذه الأجزاء لكننا لن نتطرق لشرحها في سلسلتنا الحالية لأننا نشرح تطوير قالب كلاسيكي classic theme يعتمد البنية التقليدية. ما هي حلقة ووردبريس the loop وأهميتها في برمجة قالب ووردبريس من الأمور الضرورية التي تحتاج لفهمها بشكل جيد عند برمجة قالب ووردبريس من الصفر هو حلقة ووردبريس WordPress Loop أو تدعى the loop وهي كود برمجي بلغة php يستخدم بشكل أساسي لعرض المحتوى الديناميكي من قاعدة بيانات ووردبريس على الصفحة التي تستعرضها. ستجد في الدروس القادمة أننا سنحتاج لاستدعاء حلقة ووردبريس في كافة ملفات القوالب التي تعرض لنا محتوى المقالات أو الصفحات أو أي نوع من أنواع المنشورات الأخرى في كثير من الملفات مثل ملف الصفحة الرئيسية index.php أو ملف الشريط الجانبي sidebar.php. فيما يلي مثال بسيط يوضح الشكل العام لحلقة ووردبريس: <?php if ( have_posts() ) { while ( have_posts() ) { the_post(); // عرض محتوى المنشور هنا } // end while } // end if ?> يتحقق الكود بداية من وجود أي منشورات وفي حال وجودها تبدأ الحلقة التكرارية التي تنتقل عبر جميع المنشورات التي يجب عرضها وتستدعى الدالة the_post() التي تعيد دليل المنشور الحالي وتمكننا من عرض أي بيانات حول هذا المنشور مثل العنوان واسم الكاتب وتراي النشر والمحتوى وما إلى ذلك، وللمزيد حول مفهوم حلقة ووردبريس والاطلاع على أمثلة منوعة حولها أنصح بمطالعة مقال فهم الحلقة The loop وطريقة ووردبريس في عرض المنشورات. لاحظ أنه إذا احتجت للاستعلام عن بيانات أكثر تعقيدًا من قاعدة بيانات ووردبريس وتخصيص حلقة ووردبريس بشكل أكبر يمكنك الاستعانة بالصنف البرمجي WP_Query للحصول على منشورات أو صفحات تحقق شروط مخصصة وعرضها على موقعك. على سبيل المثال لعرض كافة المقالات التي لها نفس نفس التصنيف ونفس اسم الكاتب يمكن كتابة الكود التالي: <?php $args = array( "category_name" => "programming", "author_name" => "Ola", "posts_per_page" => 3, ); $posts = new WP_Query($args); ?> أهم دوال قالب ووردبريس هناك الكثير من الدوال الجاهزة التي يوفرها لك نظام ووردبريس والتي عليك التعرف عليها وتعرف طريقة عملها لاستخدامها في الملفات الخاصة ببرمجة قالب ووردبريس، ولكي تكون قادرًا على معرفة ما تعنيه هذه الدول وإتقانها، يجب أن يكون لديك مرجعية خاصة لها. على سبيل المثال: الدالة have_posts() التي استخدمناها في الكود السابق تحدد فيما إذا كان هناك مقالات منشورة على الموقع أم لا الدالة the_content() تعرض محتوى الصفحة أو المقال الحالي الدالة bloginfo() تعرض لك العديد من المعلومات حول موقعك على سبيل المثال للحصول على اسم الموقع نمرر لها الوسيط التالي bloginfo('name') وللحصول على رابط الموقع نكتب bloginfo('url'). الدالة get_template_directory_uri() من الدوال المفيدة كذلك لأي مطور ووردبريس التي تسمح لك بالاتصال بعنوان الويب الخاص بالقالب المفعل في الموقع واستدعاء أي ملفات تنسيق CSS أو ملفات جافا سكريبت أو غيرها من الملفات الموجودة في مجلد القالب. لحسن الحظ يوفر لك موقع مطوري ووردبريس شرحًا مرجعيًا مفصلًا لكل تلك الدوال بالتفصيل الممل ويوفر أمثلة توضيحية جيدة حولها تجده على الرابط التالي، وهو لا يشرح لك للدوال فقط بل أيضا للخطافات Hooks و الأصناف Classes. كما يوجد أيضا مرجعًا آخر مهم لشرح كل شيء عن برمجة قوالب ووردبريس من الصفر تجده في التوثيق الرسمي لتطوير قوالب ووردبريس ومن الضروري أن تتعرف على هذه الدوال كي تتمكن من التعامل باحترافية مع برمجة قالب ووردبريس ومعرفة كل ما يدور خلف الكواليس. بالطبع لن يتسع المقال للتعرف على كل هذه الدوال لكن سنشرح كل دالة نستخدمها في حينها ويمكنك العودة للمراجع التي ذكرناها لتتعرف على المزيد من التفاصيل حولها. فهم بنية ملفات قالب ووردبريس عندما نفكر في تطوير قالب ووردبريس من الصفر فأول ما يجب فعله هو إنشاء مجلد يحتوي على كافة الملفات المهمة لهذا القالب، ويحتوي أيضا على مجلدات فرعية مختلفة لحفظ الصور والوسائط الخاصة وحفظ ملفات CSS لتنسيق القالب وملفات جافا سكريبت المستخدمة في برمجة القالب، وأي ملفات فرعية أخرى. يمكن أن تعتمد على هذا التنظيم من خلال تنظيم ملفات القالب على موقع ووردبريس الرسمي للمطورين وهي كالتالي (dir تعني مجلد): فأول خطوة عليك القيام بها لبرمجة قالب مخصص هو إنشاء مجلد باسم القالب في المسار \wp-content\themes ضمن المجلد الجذر لموقعك والعمل على إنشاء الملفات الضرورية، بالطبع لست مضطرًا لإنشاء كافة الملفات الواردة أعلاه في قالبك أنت حر في تنظيم القالب وإنشاء الملفات والمجلدات التي تريدها وتخصيصها حسب متطلبات قالبك. لكن كما ذكرنا هناك ملفان على الأقل يجب أن يتضمنهما أي قالب ووردبريس على الأقل كي يعمل وهما ملف index.php الذي يعتبر الأساس الذي تبنى منه معظم الملفات الأخرى المكونة للقالب الخاص بالموقع، وملف style.css لتصميم مظهر القالب وتحديد بياناته التعريفية مثل اسم القالب واسم مطوره وما إلى ذلك بعدها أنت حر في إنشاء ما تريده من ملفات أخرى في قالبك حسب الحاجة وحسب درجة التخصيص التي ترغب بها. سنتيح لك الملف النهائي للقالب لتحميله في نهاية هذه السلسلة فإذا كنت مهتمًا بالحصول على هذا القالب فتابع الدروس القادمة لترى كيف ننشئ كامل ملفات القالب وننسقها بالشكل المطلوب. الخلاصة تعرفنا في مقال اليوم على مجموعة من المفاهيم الأساسية حول تطوير قالب ووردبريس واستعرضنا كافة الطرق المتاحة التي تمكنك من تطوير قالب ووردبريس مخصص وبينا لماذا اخترنا طريقة تطوير قالب ووردبريس من الصفر من بين هذه الطرق. كما تعرفنا كذلك على أهم ملفات قوالب ووردبريس ومهمة كل ملف من بينها وأولوية استدعائها وفق التسلسل الهرمي لقالب ووردبريس، بعد هذه المعلومات الأساسية يتكون جاهزً للبدء بإنشاء ملفات القالب الخاص بك وبرمجتها لتعرض المحتوى المطلوب وهو ما سنبدأ به في الدرس القادم من السلسلة. كتب المسودة الأولية للمقال هشام حسين. اقرأ أيضًا المقال السابق: مدخل إلى برمجة قوالب ووردبريس المقال التالي: إنشاء الملفات الأساسية لبرمجة قالب ووردبريس تعلم ووردبريس Wordpress كيفية تخصيص قالب ووردبريس ملفات القالب والتنسيق في قالب Underscores لووردبريس
-
هل تتساءل كيف يمكن برمجة قالب ووردبريس وتصميم الموقع الخاص بك بالشكل الذي ترغب به من الصفر دون الاعتماد على قوالب جاهزة؟ في هذه السلسلة المكونة من خمسة أجزاء سنوضح لك الخطوات الأساسية اللازمة لعمل ذلك، وسوف تضعك على بداية الطريق الصحيح للتعلم كيفية تصميم وبرمجة قالب ووبرديس بتطبيق عملي على بناء قالب لمدونة. هذا المقال هو المقال الأول من سلسلة المقالات التالية: مدخل إلى برمجة قوالب ووردبريس أساسيات تطوير قالب ووردبريس إنشاء الملفات الأساسية لبرمجة قالب ووردبريس إضافة تنسيقات CSS لقالب ووردبريس إضافة المميزات لقالب ووردبريس باستخدام جافا سكريبت مفاهيم أساسية حول ووردبريس بما أنك أتيت للمقال فلابد أنك مطور ووردبريس وتملك خبرة مسبقة عن نظام ووربرديس كمطور لذلك لن نتحدث عن شهرة وأهمية ووردبريس، أما إن كنت جديدًا، فننصح أن تتعرف على نظام ووردبريس ومكوناته أكثر قبل البدء في هذه السلسلة المتقدمة. سوف نستعرض معًا في هذه المقالة بعض المعلومات المهمة عن ووردبريس وبنية قالب ووردبريس الأمر الذي سيسهل عليك التعامل مع تصميم وتطوير قوالب ووردبريس ويوضح لك الصورة العامة لكيفية إنشائه. يعد ووردبريس أشهر نظام إدارة محتوى CMS وهو نظام مطور بالاعتماد على لغة PHP ويعد أداة قوية وسهلة الاستخدام لإنشاء مواقع الويب المختلفة دون خبرة مسبقة بالبرمجة كما تمنح الإضافات plugins والقوالب themes قوة إضافية لنظام ووردبريس، فالإضافات هي بمثابة تطبيقات صغيرة تقوم بتثبيتها في موقعك لتضيف عليه وظائف أو مميزات جديدة، أما القوالب وهي موضوع سلسلة مقالاتنا الحالية فهي المسؤولة عن تحديد شكل وتصميم موقع الويب الخاص بك. دورة تطوير تطبيقات الويب باستخدام لغة PHP احترف تطوير النظم الخلفية والووردبريس وتطبيقات الويب من الألف إلى الياء دون الحاجة لخبرة برمجية مسبقة اشترك الآن هناك مئات القوالب الجاهزة المجانية والمدفوعة يمكنك اختيار ما يناسبك من بينها ولكن تعلم برمجة قوالب ووردبريس من الصفر يعطيك القدرة على إنشاء قالب خاص بك أو تعديل قالب موجود بما يتناسب مع طبيعة موقعك بشكل مثالي وهو الذي يميز مبرمج ووردبريس المحترف عن غيره المبتدئ. لماذا يجب علي تطوير قالب ووردبريس مخصص؟ قد تتساءل، لماذا لا أستعمل قالب جاهز؟ أليس هذا أسهل من تطوير قالب من الصفر؟ والجواب على هذا السؤال يحتمل عدة أوجه: قد لا تفي القوالب الجاهزة بالمطلوب تفرد موقعك بتصميم خاص سهولة تعديل القوالب الجاهزة فرص عمل أكثر لنناقش كل نقطة من النقاط الواردة أعلاه بمزيد من التفصيل ونتعرف أكثر على الفوائد العديدة التي تعود لنا من برمجة قالب ووردبريس مخصص. 1. قد لا تفي القوالب الجاهزة بالمطلوب قد لا تفي القوالب الجاهزة على كثرتها بالغرض المطلوب فالقوالب المجانية منها قد تحتوي بعض العيوب منها عدم تجاوبها مع الهاتف المحمول أو وجود أخطاء برمجية فيها بسبب عدم تحديثها باستمرار وتوافقها مع أحدث إصدارات ووردبريس، أما القوالب المدفوعة فقد تكون باهظة الثمن ناهيك على أن البعض يلجأ لتحميل هذه القوالب المدفوعة من مواقع غير موثوقة وليس من المتاجر الرسمية لتوفير تكاليفها متجاهلًا بأنها قد تتضمن الكثير من الثغرات البرمجية وتهدد أمن موقعه! 2. تفرد موقعك بتصميم خاص فالمواقع التي تعتمد على قوالب جاهزة سوف تتشابه بشكل كبير مع بعضها البعض ففي النهاية القوالب المجانية محدودة ومستهلكة بكثرة مما يفقد الموقع خاصية التميز والتفرد، ويمكِّنك تصميم قالب مخصص من تطوير قالب يتلاءم مع متطلبات عملك أو الهوية البصرية لنشاطك التجاري، كما يمكنك أن تبرمج قالبًا خاصًا بك يكون بمثابة علامة تجارية مميزة لك وتثبته على مواقع عملائك فقط. 3. سهولة تعديل القوالب الجاهزة تعلم برمجة قالب ووردبريس من الصفر يسهِّل عليك كمطور مواقع التعامل مع موقع ووردبريس بمرونة كبيرة، على سبيل المثال ماذا لو طلب منك صاحب مؤسسة تطوير قالب بمواصفات خاصة، مثل وجود حسابات للمخزون وحساب سعر أي طلبية جديدة من أحد أنواع البضائع التي قاربت على الانتهاء ويريد شراء كمية جديدة منها. في هذه الحالة ستحتاج لبرمجة نظام حسابي دقيق للكمية المطلوبة ومن هم أفضل الموردين سعرًا وغيرها من الحسابات التي قد تكون معقدة بعض الشي، وهنا يأتي دور المبرمج الذي يعرف كيف يتعامل مع كود ووردبريس لينشئ ما يريده العميل بالضبط من ميزات وتضمينها في الموقع. كما أن تعلم برمجة قوالب ووردبريس سيفيدك حتى إن اعتمدت على قوالب مدفوعة فقالبك قد يتضمن عدة ميزات لا تحتاجها وتتسبب في إبطاء موقعك، ويمكنك إن كنت خبيرًا في برمجة القالب إزالة كافة الميزات غير الضرورية للقالب أو إضافة ميزات جديدة بمرونة وكفاءة. 4. فرص عمل أكثر أخيرًا فإن تعلم تطوير قوالب ووردبريس يفتح أمامك فرصة جيدة للربح المادي حيث يمكنك الاستفادة من بيع القوالب على المتاجر المتخصصة في بيع المنتجات الرقمية وكسب زبائن مع ضمان عدم وجود ثغرات نظرًا لخضوع القوالب للعديد من الاختبارات على مواقع بيعها المشهورة والمعتمدة فهذا المجال مربح ومطلوب في سوق العمل. على سبيل المثال يعتبر متجر بيكاليكا لبيع المنتجات الرقمية من أكبر المواقع العربية المتخصصة في بيع القوالب الجاهزة المختبرة من قبل كفاءات رفيعة المستوى. لذلك، فإن تعلم ووردبريس يحتاج منك فهم ما يجري وراء الكواليس كي تتمكن من إنتاج قالب مميز أو حتى عمل إضافة لقالب مسبق التجهيز أو حتى قالبك الخاص. متطلبات مسبقة لتطوير قالب ووردبريس يستخدم ووردبريس مجموعة مختلفة اللغات والتقنيات البرمجية الأساسية التي يفيدك تعلمها في التقدم خطوة للأمام في التعامل مع ووردبريس من مجرد إنشاء وتخصيص مواقع بنظام الووردبريس إلى مطور للوردبريس. فإذا كنت مطور مواقع ووردبريس فقد تتساءل عن المتطلبات المسبقة التي عليك معرفتها كي تتمكن من برمجة وتطوير القالب الخاص بموقعك أو تخصيص قالب لأحد عملائك. لتطوير قالب ووردبريس يجب أن تكون على دراية كافية بكل من التقنيات التالية: لغة HTML ولغة CSS اللتان تعملان من طرف العميل وتستخدمان لتصميم واجهة الموقع فلغة HTML هي المسؤولة عن تحديد هيكلية الموقع، ولغة CSS هي المسؤولة عن تنسيق وتصميم عناصره. معرفة في لغة جافا سكريبت لإضفاء التأثيرات التفاعلية والحركية المتقدمة على موقعك مثل الصور المنزلقة ومشغلات الفيديو وما إلى ذلك. لغة PHP التي تعمل من طرف الخادم وتستخدم من أجل جعل الموقع قادرًا على التفاعل مع قاعدة البيانات وجلب البيانات منها ل عرض محتوى ديناميكي التعامل مع لغات قواعد البيانات مثل MySQL أو MariaDB لأنها تساعد في إنشاء وتحديث وإضافة وحذف البيانات من قاعدة البيانات الخاصة بالموقع. تحتاج أيضًا إلى التعامل مع أحد محررات الأكواد مثل Visual Studio Code. وأخيرًا تحتاج لمعرفة مسبقة بنظام ووردبريس وكيفية إنشاء المواقع باستخدامه والتعامل مع لوحة تحكمه ورفع وتثبيت القوالب والإضافات إليه فكل هذه معلومات أساسية لابد من امتلاكها كي تبدأ ببرمجة قالب ووردبريس مخصص. بخصوص بووردبريس: سوف تحتاج أيضا إلى تحويل حاسوبك إلى خادم أو مستضيف محلي Localhost باستخدام برامج مساعدة مثل برنامج XAMPP أو Wamp لسهولة العمل وتثبيت ووردبريس على جهازك وإعداد البنية التحتية لتشغيل الموقع وتطوير وتصميم القالب المطلوب مع القدرة على مشاهدة التغيرات بصورة واضحة وسريعة. ولمطالعة المزيد من المعلومات حول تثبيت ووردبريس على خادم محلي أنصح بمطالعة مقال دليل إعداد خادم ويب محلي خطوة بخطوة ومقال كيفية تثبيت ووردبريس. ملاحظة: يمكنك بالطبع برمجة قالب ووردبريس بالاعتماد على خادم خارجي على استضافة فعلية على الانترنت لكن في هذه الحالة سيكون عليك الوصول إلى ملفات موقع ووردبريس البعيد والانتظار ليتم تحميل الملفات للاستضافة مع كل تغيير أو تحديث للشيفرات البرمجية وقد يبطّئ من عملية التطوير ويضيف عليها عمليات يدوية مملة لهذا فمن المستحسن استخدام خادم محلي، مع وجوب معرفة بعض الأشياء المهمة مثل كيفية إيقاف التخزين المؤقت للمتصفح حتى يحدث التحديث اللحظي مع كل كود تقوم بكتابته. ملاحظة: يمنع التخزين المؤقت للمتصفح Browser cache ظهور ما تقوم به من تغيرات وإضافات على الشيفرات البرمجية والناتج منها في كثير من الأحيان، لهذا فيجب إيقافه عند العمل على مشروع جديد، ويتم عمل ذلك عن طريق الدخول لوضع المطور من خلال الضغط على مفاتيح Ctrl+Shift+I أو الضغط على مفتاح F12 عند عرض الموقع ضمن متصفح chrome وإيقاف التخزين المؤقت من خلال تفعيل خيار Disable cache في التبويب Network كما هو مبين في الصورة التالية: بعد التأكد من أن برنامج XAMPP يعمل بطريقة صحيحة وأنه قد تم تثبيت أحدث إصدار ووردبريس عليه من موقعه الرسمي وإعداد موقع ووردبريس تجريبي على جهازك ستكون الآن جاهزًا للبدء بالخطوات العملية لبرمجة قالب ووردبريس من الصفر. خطوات برمجة قالب ووردبريس من الصفر يتكون قالب ووردبريس من مجموعة من الملفات البرمجة التي تتفاعل مع بعضها البعض كي تحدد شكل ومظهر موقعك، وتمر برمجة قالب ووردبريس بعدة مراحل فأنت لن تفتح محرر الأكواد وتشرع بالبرمجة مباشرة بل عليك المرور بعدة خطوات لإنجاز العمل على أكمل وجه. وتشمل برمجة قالب ووردبريس الخطوات الأساسية التالية: وضع متطلبات الموقع وتحديد كافة الوظائف والمميزات التي تحتاج لوجودها فيه إنجاز تصميم أولي يحدد شكل الموقع وتوزع العناصر وتنسيقها وتحديد الألوان والخطوط وما شابه بما يلائم متطلباتك وهويتك البصرية. البدء بتحويل التصميم إلى قالب فعلي يعمل على الاستضافة المحلية من خلال كتابة شيفراته البرمجية باستخدام HTML و PHP و CSS وجافا سكريبت. تصدير القالب بشكل ملف zip ورفعه على الموقع على الاستضافة الفعلية واختبار أدائه والتأكد من أنه يعمل بالشكل الصحيح. وفي مقال اليوم سنهتم بخطوة تحديد متطلبات موقعنا وتصميمه على فيجما وسنشرح خطوات برمجة القالب في الدروس اللاحقة من السلسلة. تصميم قالب ووردبريس حتى تبدأ بإنشاء قالب موقعك بصورة صحيحة يفضل أن ترسم تخطيطًا أوليًا سريعًا للموقع توضح البنية العامة له بشكل إطارات wireframes، أو التوجه مباشرةً لتصميمه على أحد برامج التصميم لمزيد من الدقة مثل فيجما Figma أو أدوبي XD أو Sketch أو غيرها من أدوات تصميم واجهة المستخدم، تسهل تلك البرامج تصور شكل القالب النهائي والوصول لتصميم مناسب في النهاية. تصميم الشكل النهائي الذي سيظهر عليه القالب خطوة مهمة جدًّا، فهي توضح لصاحب المشروع الشكل النهائي الذي سوف يكون عليه شكل الموقع للتأكد من أنه يلبي المتطلبات كما أنه سيكون نقطة قانونية مهمة لك، فربما يعود صاحب المشروع في رأيه ويطلب شيء آخر لأي سبب من الأسباب، ولكن مع وجود التصميم سيكون ضمان كبير لعدم تغيير رأيه. ملاحظة: إذا كان هناك مطالب أخرى لاحقة من صاحب المشروع بإضافة وتعديل بعض الأمور الموجودة في التصميم فلا تتشدد، وتحلى بالمرونة لأن هذا يفيدك مستقبلًا إما بعودته لطلب خدماتك مرة أخرى، أو بإعطائك تقييم جيد يفيدك في المشاريع الأخرى وسيزيد ذلك من ثقة الآخرين بك. تصميم قالب ووردبريس بواسطة برنامج فيجما سوف نشرح في هذه السلسلة كيفية بناء قالب ووردبريس لموقع مدونة بسيط يعرض المقالات، وسنبدأ أولًا بشرح كيفية إنجاز التصميم بواسطة فيجما Figma وذلك لوضع اللبنة الأساسية لتصميم الموقع، ونكمل خطوات برمجة القالب وتنسيقه وفق هذا التصميم في المقالات اللاحقة. نريد تصميم قالب بسيط يمثل مدونة لذا سنوجه مباشرة لتصميمه على وقع فيجما ووضع التصميم الذي نراه مناسبًا. سوف نقوم بتصميم الموقع كمدونة بها قائمتان أحدهما رئيسية والأخرى ثانوية في القسم العلوي للموقع أو ترويسة الموقع Header، وسنضع بينهما شريط صور منزلق Slider يعرض أهم مقالات الموقع وسنكتب الأكواد الخاصة بهذا المنزلق في القسم الأخير من السلسلة باستخدام لغة جافا سكريبت، ثم سنحدد ما يحتويه القسم الأوسط الخاص بعرض جسم الصفحة على سبيل المثال في صفحة المدونة سيعرض هذا القسم عناوين وصور ومقتطفات من أحدث المقالات المنشورة في المدونة معروضة وفق الترتيب التنازلي لتاريخ نشرها، ثم سننتهي بالقسم السفلي وهو التذييل الخاص بالمدونة Footer. تصميم القسم العلوي Heade نبدأ تصميم الموقع بإنشاء خلفية الصفحة الرئيسية وستكون باللون الأبيض، ثم ننشئ الخلفية الخاصة بالقائمة الثانوية في أعلى الصفحة وستكون باللون الأصفر، بعد ذلك ننشئ القسم الخاص بالمنزلق باللون الرمادي الفاتح ونضيف صورة واحدة له، ثم نختار في القسم الثالث اللون الأصفر للقائمة الرئيسية كما هو موضح بالشكل التالي: بعد ذلك نحدد ما ستحتويه القائمة العلوية الثانوية من قوائم فرعية أو صفحات، وستكون على سبيل المثال صفحة من نحن وسياسة الخصوصية واتصل بنا، يتبع ذلك البدء بوضع ما ستحتويه القائمة الرئيسية من محتويات وهي الصفحة الرئيسية، وبعض التصنيفات الأساسية مثل تقنية وهواتف وتطبيقات وحاسبات ووردبريس، وتصمم كلا القائمتين كما بالشكل التالي: تصميم جسم الصفحة Page في الخطوة التالية ننشئ جسم الصفحة وهو القسم الأوسط الذي سيعرض محتوى الصفحة والذي يختلف حسب نوع الصفحة ففي حالتنا تعرض الصفحة الرئيسية المقالات الحديثة المنشورة في المدونة سنقسم هذه الصفحة إلى قسمين، علوي وسفلي، يتكون القسم العلوي من صورتين للمقالات الأكثر قراءة مع مقتطفاتهم، أما القسم السفلي فيحتوي على مقتطفات كل المقالات التي يتم نشرها على المدونة وفق تاريخ نشرها من الأحدث للأقدم، يصمم الجزء الأول كالتالي: والجزء الثاني كالتالي: تصميم القسم السفلي للصفحة أو التذييل Footer سيكون القسم التالي هو التذييل الخاص بالصفحة، ويصمم بوضع خلفية بنفس اللون الرئيسي للمدونة ثم يعرض قائمة في التذييل تضم مجموعة من العناصر هي على سبيل المثال أحدث المقالات، والأكثر قراءة، والوسوم والتصنيفات وطرق التواصل وتحت قائمة التذييل سنعرض عبارة جميع الحقوق محفوظة واسم المدونة كما هو موضح بالشكل التالي: تصميم الموقع النهائي للصفحة على الحاسب يظهر في الشكل التالي التصميم النهائي للصفحة الرئيسية للمدونة: تصميم الموقع النهائي للصفحة على الشاشات الصغيرة يتم بعد ذلك عمل تصميم بشكل يناسب الحاسوب اللوحي وآخر للجوال كما بالشكل النهائي التالي لهما. التصميم مع وجود شريط جانبي Sidebar إن أردت أن يكون هناك شريط جانبي في الصفحة الرئيسية، فيمكنك عمل ذلك كما بالشكل التالي: وستجد في المقالات التالية أن عملية إضافة شريط جانبي تشابه عملية إضافة التذييل للصفحة فكلاهما يحتاج نفس الدوال الجاهزة التي توفرها ووردبريس. يمكنك متابعة تصميم باقي صفحات الموقع مثل صفحة من نحن، وصفحات الأرشيف، وصفحة نتائج البحث لكننا سنكتفي بتصميم الصفحة الرئيسية لموقعنا وستكون باقي الصفحات بتصميم مشابه مع بعض الاختلافات الطفيفة التي سنشرحها في حينها. خاتمة بهذا نكون وصلنا لنهاية هذه المقالة من سلسلة برمجة قالب ووردبريس من الصفر والتي بدأناها بتصميم الشكل العام للموقع والأقسام المهمة له بداية من الترويسة إلى المحتوى الأساسي للصفحة وانتهاء بالتذييل والشريط الجانبي وما يحتويه كل قسم من مكونات، سوف يكون الجزء الثاني في السلسلة هو شرح كيفية برمجة ملفات القالب الأساسية التي تعرض هذا المحتوى المطلوب وسنخصص الجزء الثالث والرابع لتنسيق طريقة عرض هذا المحتوى بالشكل المناسب لهذا التصميم. كتب المسودة الأولية للمقال هشام حسين. اقرأ أيضًا المقال التالي: أساسيات تطوير قالب ووردبريس تعلم برمجة وتطوير مواقع ووردبريس إنشاء قاعدة بيانات لووردبريس الدليل الشامل لودجات ووردبريس
-
لا شك تعلم الخوارزميات أحد النصائح المهمة التي وجهت لك إذا قررت تعلم البرمجة فكلمة خوارزمية تتردد كثيرًا في مجال البرمجة وغيرها من المجالات مثل الرياضيات والعلوم والمنطق وكل ما يتعلق بالحاسوب خصوصًا، فهي من أهم المفاهيم التي لا يمكن أن يستقيم لك تعلم البرمجة والرياضيات وعلوم الحاسب بدونها. إذا كنت تتساءل ما هي الخوارزمية، وكيف أتعلم الخوازميات، وما أهمية الخوارزميات في علوم الحاسب وفي البرمجة بشكل خاص، وما هي أنواع الخوارزميات التي علي تعلمها، وكيف أكتب أفضل خوارزمية فهذه المقالة لك، حيث سنستعرض في سياقها كل ما تحتاج معرفته عن الخوارزميات، ونوفر لك مجموعة من المصادر التعليمية العربية الغنية التي تساعدك على تعلم رموز الخوارزميات وطرق حل الخوارزميات في الحاسوب بأفضل طريقة. ما هي الخوارزمية؟ الخوارزمية algorithm هي مجموعة من التعليمات المرتبة لحل مشكلة ما في الرياضيات أو أي مشكلة تواجهك في الحياة اليومية خلال زمن محدد وعدد خطوات محدود. ينبغي أن تكون خطوات وتعليمات الخوارزمية واضحة ومُرتّبة بحيث تنتهي بحل المشكلة. فكّر في الخوارزمية كما لو كانت وصفة طبخ، إذ تقدّم الوصفة طريقة تحضير وجبة ما خطوة بخطوة، ابتداءً بالمقادير الضرورية للوجبة، وحتى آخر خطوة من تحضير الوجبة وتقديمها. ورغم أن مفهوم الخوارزميات يمكن أن يطبق في كل مجالات الحياة لكن تبرز أهمية الخوارزميات في علوم الحاسب بشكل خاص فهي تنظم عمل المبرمج وتعزز تفكيره المنطقي والرياضي وتمكنه من فهم المشكلات وتصورها بشكل أفضل قبل حلها وتطبيقها فعليًا على برامج حاسوبية مكتوبة بإحدى لغات البرمجة. تاريخ الخوارزميات تُعزى أقدم الخوارزميات المعروفة إلى البابليين، إذ عُثِر على أقدم لوح يحتوي تعليمات خوارزمية لإجراء عملية القسمة، ويعود تاريخه لسنة 2500 قبل الميلاد. وقد عثِر كذلك على خوارزميات حسابية تعود إلى المصريين القدامى تعود إلى سنة 1550 قبل الميلاد. ازداد استخدام الخوارزميات في حقبة اليونان، حيث ظهرت الكثير من الخوارزميات الرياضية التي ما تزال تُستخدم حتى يومنا هذا، مثل خوارزمية قسمة إقليدس التي تحسب خارج وباقي عملية القسمة. تطور مفهوم الخوارزميات في عصر الحضارة الإسلامية، إذ استخدم المسلمون الخوارزميات لحل المعادلات والمسائل الرياضية. ولعل أشهر هذه الخوارزميات هي خوارزمية حل المعادلات من الدرجة الثانية التي ذُكِرت في كتاب "حساب الجبر والمقابلة" لعالم الرياضيات المسلم محمد بن موسى الخوارزمي مؤسس علم الجبر، والذي تُنسب إليه كلمة خوارزمية في اللغة العربية، وكذلك الكلمة المقابلة لها في اللغات اللاتينية algorithm المُشتقة من الكلمة al-Khwārizmī، وهو الاسم الرومي للخوارزمي -وأيضًا كلمة الجبر algebra. استخدم الأوروبيون كلمة algorithm للدلالة على القواعد والتقنيات التي استخدمها الخوارزمي لحل المعادلات الجبرية، ثمّ عُمِّم هذا المصطلح ليشمل أيّ مجموعة من القواعد والتقنيات الساعية لحل مشكلة ما. استمر مفهوم الخوارزميات في التطور بعد الحقبة الإسلامية إبّان عصر النهضة، خصوصًا مع تطوّر أسس علم الحوسبة في القرن التاسع عشر وإنتاج أول خوارزمية يمكن تنفيذها على الحاسوب سنة 1840 على يد آدا لوفانس Ada Lovelace. ثمّ الصياغة النهائية لمفهوم الخوارزمية على يد آلان تورنغ Alan Turing عبر آلته الشهيرة آلة تورنغ (Turing machine). دورة علوم الحاسوب دورة تدريبية متكاملة تضعك على بوابة الاحتراف في تعلم أساسيات البرمجة وعلوم الحاسوب اشترك الآن أركان الخوارزمية تملك أي خوارزمية ثلاثة أركان رئيسية وهي: الدخل أو المدخلات: تمثل البيانات أو الأشياء الضرورية والمطلوبة التي تعمل عليها الخوارزمية وإن كان الدخل مؤلفًا من عدة عناصر، فإنّ تعداد عناصره يسمى حجم الدخل، مثلًا إن كان الدخل عبارة عن مصفوفة أو سلسلة نصية مؤلفة من n عنصر، فإنّ حجم الدخل سيساوي n. لو عدنا إلى مثال الطبخ فإنّ دخل خوارزمية طهي وجبة معينة ستكون هي المقادير المُستخدمة لإعداد الوجبة. متن الخوارزمية: تأخذ الخوارزمية الدخل، وتطبّق عليه سلسلة من خطوات المعالجة المتتابعة والمُحدّدة سلفًا. مثلًا، يشمل متن خوارزمية الطبخ كل عمليات تجهيز المقادير وإعدَادها وخطوات طهيها. الخرج أو المُخرجات: بعد أن تنتهي الخوارزمية من تنفيذ كافة الخطوات، تُنتج لنا خرجًا يمثل حل المشكلة. مثلًا خرج خوارزمية طهي وجبة سيكون هو الوجبة نفسها جاهزة ومطهيّة. على سبيل المثال إذا أردنا كتابة خوارزمية جداء عددين صحيحين ستكون أركان هذه الخوارزمية كالتالي: الدخل: هو العددان الصحيحان المطلوب حساب ناتج جدائهما x, y الخرج: هو ناتج الجداء z متن الخوارزمية: الخطوة 1: ابدأ الخطوة 2: قم بالتصريح عن ثلاثة أعداد صحيحة x و y و z الخطوة 3: أدخل قيم المدخلات x و y الخطوة 4: اضرب قيم x بـ y الخطوة 5: خزّن ناتج الضرب في z الخطوة 6: اعرض قيمة z الخطوة 7: توقف خطوات حل الخوارزميات عندما تواجهك أي مشكلة وتريد كتابة خوارزمية لحلها عليك أن تفكر في العثور على إجابات للأسئلة التالية: ما هو دخل الخوارزمية أي ما هي المعلومات التي أحتاج إلى الحصول عليها من المستخدم؟ ما هو خرج الخوارزمية أي ما هي المعلومات التي أحتاج لعرضها على المستخدم؟ ما هي الخطوات الرئيسية المطلوبة لحل هذه المشكلة؟ ما هو ترتيب تنفيذ هذه الخطوات؟ ما هي القرارات أو الشروط التي أحتاج مراعاتها عند معالجة المعلومات؟ هل هناك تعليمات بحاجة لأن أكررها عدة مرات؟ طرق تمثيل الخوارزميات يمكنك ثمثيل الخوارزمية أو التعبير عنها بعدة طرق: الطريقة الأولى من خلال الكلام المبعثر الذي يصف حل المشكلة بلغتك المحكية دون اتباع أي قواعد في الوصف. الطريقة الثانية من خلال ما يسمى الشيفرة الوهمية أو الزائفة pseudocode وهي مجموعة من التعليمات التي تحاكي في طريقة كتابتها لغات البرمجة لكنها لا تلتزم بقواعد البرمجة التي يجب الالتزام بها عندما تكتب شيفرات برمجية فعلية. الطريقة الثالثة تسمى المخططات الانسيابية Flowcharts، والمخطط الانسيابي هو تمثيل رسومي للخوارزمية يرسم باستخدام أنواع مختلفة من الرموز لكل رمز غرض معين وهو في تقسيم المشكلة الكبيرة إلى مشاكل صغيرة سهلة الفهم ويعد طريقة مناسبة للتواصل بين الأشخاص غير التقنيين. تتوافر عدة برامج مساعدة تساعدك على رسم المخططات الانسيابية، وللمزيد يمكنك مطالعة مقال كيفية رسم مخطط انسيابي Flowchart باستخدام PowerPoin. دورة الذكاء الاصطناعي احترف برمجة الذكاء الاصطناعي AI وتحليل البيانات وتعلم كافة المعلومات التي تحتاجها لبناء نماذج ذكاء اصطناعي متخصصة. اشترك الآن مثال على استخدام الخوارزمية في حياتنا اليومية على سبيل المثال إذا طلب منك كتابة خوارزمية توضح طريقة التعامل مع آلة صنع القهوة والشاي ستكون الخطوات التي عليك اتباعها كالتالي: معرفة إن كان الزبون يريد شرب الشاي أم القهوة إضافة الشاي أو القهوة إلى الكوب معرفة إن كان المستخدم يريد إضافة السكر للكوب إذا كان الجواب نعم أضف السكر إلى الكوب سكب الماء الساخن في الكوب للتعبير عن هذه الخوارزمية باستخدام الشيفرة الزائفة سنكتب التالي: START; /Would you like Tea or Coffee?/; if tea { Add Tea in cup; } else { Add Coffee in cup; } /Would you like Sugar?/; if Sugar { Add Sugar in cup; } Pour boiling water in cup END; وللتعبير عنها باستخدام المخطط الانسيابي سنرسم المخطط التالي: أمثلة على الخوارزميات لنفهم بشكل أفضل ما هي الخوارزميات دعنا نستعرض بعض الأمثلة الإضافية على خوارزميات لحل مسائل رياضية بسيطة ونتعرف على أركانها المختلفة وخطوات حلها ونعبر عنها بالطرق المختلفة. خوارزمية لحساب قيمة مضروب عدد في الرياضيات المضروب factorial أو عاملي العدد الصحيح n الذي يعبر عنه بالشكل التالي n! هو جداء كل الأعداد الطبيعية المساوية أو الأصغر من n ما عدا الصفر ولكتابة خوارزمية تحل هذه المسألة الرياضية علينا اتباع الخطوات التالية: الدخل: هو العدد الصحيح المطلوب حساب مضروبه n. الخرج: هو ناتج المضروب factorial المتن: الخطوة 1: إدخال العدد n المراد حساب مضروبه الخطوة 2: تعريف متغير مساعد وليكن i وهو عبارة عن عدد صحيح يأخذ قيمة متغيرة بين الواحد والعدد نفسه ويساعدنا على حساب القيمة المطلوبة. الخطوة 3: تهيئة المتغير factorial الذي يمثل القيمة المؤقتة للمضروب، والمتغير i الذي يمثل المرحلة التي نحن فيها أثناء تنفيذ الخوارزمية بالقيمة واحد أي نجعل factorial = 1 و i = 1 الخطوة 4: إعادة تعيين قيم المتغير factorial بالقيمة factorial*i والمتغير بالقيمة i+1 الخطوة 5: كرر الخطوة 3 حتى تصبح قيمة المتغير i أكبر تمامًا من n الخطوة 6: قم بإيقاف الخوارزمية وإعادة قيمة factorial التي تمثل مضروب العدد n الصورة التالية توضح طريقة رسم المخطط الانسيابي لحل خوارزمية حساب مضروب عدد: هل تعرف طرقًا أو أساليب أخرى لحل هذه المسألة؟ شاركنا إياها في قسم التعليقات أسفل المقال. خوارزمية للعثور على أكبر عدد من بين ثلاثة أعداد سنكتب حل هذه المسألة بأكثر من خوارزمية أو طريقة: طريقة 1: الدخل: 3 أرقام a و b و c الخرج: العدد الأكبر من بينها a أو b أو c المتن: الخطوة 1: أدخل الأرقام الثلاثة وخزنها في المتغيرات a و b و c على التوالي. الخطوة 2: تحقق من كون الرقم الأول a أكبر من الرقم الثاني b و الثالث c عندها اطبع أن a هو العدد الأكبر بين الكل وأنهي التنفيذ الخطوة 3: تحقق من كون b أكبر من a و c عندها اطبع أن b هو العدد الأكبر بين الكل وأنهي التنفيذ الخطوة 4: تحقق من كون c أكبر من a و b عندها اطبع أن c هو العدد الأكبر بين الكل وأنهي التنفيذ الكود الزائف للتعبير عن خوارزمية أكبر عدد بين 3 أعداد: Step-1 Start Step-2 Read three numbers a,b,c Step-3 If a>b then go to step-5 Step-4 IF b>c THEN print b is largest ELSE print c is largest ENDIF GO TO Step-6 Step-5 IF a>c THEN print a is largest ELSE print c is largest ENDIF Step-6 Stop والمخطط الانسيابي للتعبير عن الخوارزمية هو كما يلي: لعلك لاحظت أن الطريقة أعلاه تتطلب اختبار الكثير من الشروط حتى نصل لقرار حول العدد الأكبر من بين الأعداد الثلاثة، دعنا نحاول حلها بطريقة أبسط. كما تلاحظ فإن خوارزمية مقارنة ثلاثة أعداد حتى نصل لقرار حول العدد الأكبر من بين الأعداد الثلاثة تطلبت إجراء خطوتين والمرور مرتين على كل عدد، ولكن ماذا لو كان لدينا 10 أعداد أو أكثر ستزداد الخطوات ومرات المرور على الأعداد وسيزاد زمن الحل وتعقده لذا من الأفضل أن نفكر بطريقة أفضل تمكننا من المرور مرة واحدة على الأعداد ومعرفة العدد الأكبر من بينها. يمكن أن نخزن الأعداد في بنية واحدة مثل المصفوفة ثم نقرأها واحدًا تلو الآخر ونعتبر أن أول عدد هو الأكبر من بين كل الأعداد وكلما قرأنا عددًا جديدًا نقارنه بالذي قبله مباشرة فإن كان أكبر منه نبدل بينهما وإن كان أصغر منه أو يساويه لا نقوم بأي إجراء. لنطبق هذه الطريقة لإيجاد العدد الأكبر من بين ثلاثة أعداد طريقة 2: الدخل: 3 أرقام a و b و c الخرج: max الذي يمثل العدد الأكبر المتن: الخطوة 1: أدخل الأعداد الثلاثة وخزنها في a و b و c على التوالي الخطوة 3: افترض أن العدد الأول a هو الأكبر max = a الخطوة 4: إذا كان العدد الثاني b أكبر من max اجعل max = b الخطوة 5: إذا كان العدد الثالث c أكبر من أكبر من max اجعل max = c الخطوة 6: اعرض قيمة max الكود الزائف للتعبير عن هذه الخوارزمية لإيجاد أكبر عدد من بين 3 أعداد: Step-1 Start Step-2 Read three numbers: a,b,c Step-3 max = a Step-4 IF b > max THEN max = b ENDIF Step-5 IF c > max THEN max = c ENDIF Step-6 print max Step-7 Stop والمخطط الانسيابي للتعبير عن الخوارزمية هو كما يلي: هل لديك خوارزمية أخرى أفضل لحل هذه المسألة؟ يمكن أن تشاركنا إياها لنتناقش حولها. كما تلاحظ فقد مررنا مرة واحدة على الأعداد وعرفنا أيها أكبر، وهذا لن يختلف لو كان لدينا قائمة تحوي 100 عدد أو أكثر، هذا المفهوم ببساطته يسمى بكفاءة الخوارزمية أو تعقيد الخوارزمية والذي يشار إليه برمز Big O وستجده دومًا في أي موضوع يتناول الخوارزميات، لأن من شروط كتابة الخوارزميات أن تكون ذات كفاءة وأقل تعقيدًا ممكنًا. فكل الخوارزميات تعطي في النهاية الخرج الصحيح نفسه ولكن تتميز عن بعضها بكفاءة وكيفية وسرعة الوصول للخرج الصحيح، وهنا تبرز أهمية التفكير المنطقي وضرورة دراسة الخوارزميات وبنى المعطيات لمعرفة الحل الأكثر كفاءة لحل أي مسألة برمجية تواجهها وسنتحدث عن هذا الموضوع بالتفصيل تاليًا في فقرة "تحليل الخوارزميات". هل ترغب في تطوير موقع إلكتروني احترافي؟ وظّف مطور ويب خبير لبرمجة موقعك من مستقل أضف مشروعك الآن تحويل الخوارزمية إلى برنامج حاسوبي إن طرق تمثيل الخوارزمية مفهومة وواضحة لنا كبشر لكنها في الواقع غير قابلة للاستخدام والتطبيق على الحاسوب، لأنّ الخوارزميات خطط عامة ومجرّدة لحل المشاكل. فإن أردنا استخدام الخوارزمية لحل مشكلة ما، فسيكون علينا ترجمتها أو التعبير عنها بإحدى لغات البرمجة كي يفهمها الحاسوب ويعيد لنا النتائج المطلوبة، هذه العملية تُسمّى تحقيق الخوارزمية أو تنفيذ الخوارزمية implementation وينتج عن تحويل الخوارزمية إلى إحدى لغات البرمجة شيفرة برمجية قابلة للتنفيذ execution على الحاسوب. لنضرب مثالًا على ذلك سنحول الخوارزمية التي ذكرناها آنفًا والتي تحاول إيجاد أكبر عدد من بين ثلاثة أعداد إلى برنامج مكتوب بلغة بايثون حتى يتسنّى لنا تنفيذها على الحاسوب. تنفيذ خوارزمية إيجاد أكبر عدد من بين ثلاثة أعداد في لغة بايثون برنامج بايثون لإيجاد أكبر عدد من بين ثلاثة أعداد a = int(input('a= ')) b = int(input('b= ')) c = int(input('c= ')) max = a if b > max : max = b if c > max : max = c print(max, "هو العدد الأكبر") يمكنك الآن تنفيذ هذه الشيفرة على أيّ حاسوب وستعمل كما هو متوقع. كما يمكنك بالطبع تحقيق الخوارزمية بأيّ لغة برمجة أخرى تريدها مثل C أو C++ أو جافا أو جافا سكريبت أو R …إلخ. تمرين ما رأيك أن تجرب تحويل الخوارزمية السابقة إلى برنامج حاسوبي يطلب من المستخدم إدخال مجموعة أعداد تفصل بينها فراغات مثل 4 9 8 7 10 ليحللها البرنامج بتلك الخوارزمية ويعطي العدد الأكبر من بينها (مساعدة: ستحاول استعمال حلقات التكرار loops) مجالات استخدام الخوارزميات كانت الخوارزميات تُستخدم طوال آلاف السنوات من قبل علماء الرياضيات لحل المعادلات والمسائل الرياضية وما تزال إلى يومنا هذا. فالخوارزميات جزء لا يتجزأ من الرياضيات ابتداءً من حل المعادلات الجبرية، وحتى كتابة البراهين المنطقية. وتستخدم الخوارزميات اليوم على نطاق واسع في مجال البرمجة وعلوم الحاسب، فالحاسوب ليس سوى آلة تنفذ الأوامر بكفاءة وسرعة على عكس البشر، الذين يفهمون المطلوب ويحللونه ويفكرون بأدمغتهم لوضع الخوارزميات ثم ينفذونها بواسطة الحاسوب. لذلك، تحتاج إلى تبسيط ووضع خوارزمية للحاسوب لينفذها لك بحذافيرها وبأفضل أداء ممكن. وكل البرامج والتطبيقات وأنظمة التشغيل تعتمد على الخوارزميات وتستخدمها من أجل معالجة البيانات وإجراء الحسابات وحلّ مشكلات العمل كما تستخدم الخوارزميات في عدة مجالات أخرى مثل الفيزياء وتحليل اللغات والاقتصاد وغيرها من مناحي الحياة وهي تطبق اليوم في كل شيء نستخدمه من حولنا ومن أبرز الأمثلة على مجالات استخدام الخوارزميات في حياتنا اليومية نذكر: خوارزميات التواصل الاجتماعي التي تتحكم فيما تراه على مواقع التواصل الاجتماعي خاصتك خوارزميات محركات البحث التي تحسن عمليات البحث وتتنبأ بما سيكتبه المستخدمون. خوارزميات كشف الجرائم باستخدام تقنيات التعرف على الوجه ورسم الخرائط التنبؤية لتوقع الجرائم واتخاذ الإجراءات لمنعها. خوارزميات التشفير التي تقوم بتحويل نص مفهوم إلى نص غير مفهوم وتُستخدم لحماية البيانات المهمة بحيث لا يفهمها إلّا الأشخاص الذين وجهت إليهم. خوارزميات التنبؤ بحالة الطقس ودرجة الحرارة بمساعدة البيانات السابقة وهي تفيد في عدة مجالات أهمها الزراعة والطيران والاتصالات والحروب. خوارزميات تحديد مواعيد وصول الحافلات وجدولتها بأفضل طريقة. خوارزميات تحديد مواقف السيارات المتاحة لمساعدة السائقين على العثور على وجهتم بسرعة وسهولة. خوارزميات توجيه المركبات إلى أفضل طريق. خوارزميات تعديل مسارات الصواريخ. وغيرها الكثير من مجالات الحياة المختلفة في الاقتصاد والعلوم والإعلام وما شابه التي تلعب فيها الخوارزميات دورًا فعالًا وحيويًا، على سبيل المثال عرضت نيتفليكس جائزة قدرها مليون دولار لمن يطور خوارزميتها المستخدمة في اقتراح الأفلام والمسلسلات على الزوار ويجعلها أفضل بنسبة 10%. مواصفات الخوارزمية الجيدة قد تتساءل وهل هناك خوارزمية جيدة وأخرى ليست كذلك؟ وما الذي يجعل الخوارزمية جيدة؟ والجواب هو نعم فكما أنّ هناك وصفات طبخة سيئة ولا تنجح، فكذلك هناك خوارزميات سيئة وغير عملية ولا تصلح للتطبيق، فليست كل سلسلة متتابعة من الخطوات والتعليمات خوارزمية، بل لابد أن تتوفر فيها شروط خاصة تجعلها عملية وقابلة للتطبيق مثل: الوضوح: ينبغي أن تكون كل خطوة من خطوات الخوارزمية واضحة ومفهومة ولا لبس فيها. المحدودية: يجب أن تكون الخوارزمية محدودة، أي أن تكون خطواتها منتهية، وتُنفّذ في مدة زمنية منتهية. فإن كان عدد الخطوات غير منته، أو كان بإمكان إحدى الخطوات أن تستغرق مدة لا منتهية، فإنّها ليست خوارزمية. البساطة والواقعية: ينبغي أن تكون الخوارزمية قابلة للتطبيق بالموارد والتقنيات المتاحة، ولا ينبغي أن تعتمد على تقنية مستقبلية أو غامضة. قابلية التطبيق: يعني الاستقلالية عن لغات البرمجة أي لا ينبغي أن تكون الخوارزمية مرتبطة بلغة برمجة محددة، ويجب أن تكون مجردة وعامّة بحيث تركز على العمل الأساسي للبرنامج بدلًا من التركيز على خصائص لغة برمجة معينة وبعدها يمكن تطبيقها عبر أي لغة برمجة. صحة النتائج: يجب أن تقوم الخوارزمية بتنفيذ المهمة المطلوبة منها دون أخطاء في التنفيذ أو عدم دقة في النتائج. الكفاءة والفعالية: ينبغي أن تستخدم الخوارزمية أفضل الطرق لحل المشكلة بأسرع وقت تنفيذ أو ما يعرف بالتعقيد الزماني للخوارزمية وأقل مساحة ذاكرة أو ما يعرف بالتعقيد المكاني للخوارزمية. هل أحتاج إلى معرفة الرياضيات لتعلم الخوارزميات؟ الجواب هو نعم ولا، وكي أوضح إجابتي أكثر ، فالخوارزميات تُستخدم أساسًا لحل مشاكل حسابية، مثل متوسط مجموعة من القيم، أو أقصر مسار بين نقطتين في شعبة، أو أسهل طريقة لرسم شكل هندسي، أو ترتيب عناصر مصفوفة. كل هذه المشاكل تنطوي على قدر من الرياضيات الأساسية، لذلك فالجواب هو نعم. لكن إن كنت تقصد بمعرفة الرياضيات أنّه ينبغي أن تكون لك شهادة جامعية في الرياضيات، أو تكون لك معرفة عميقة أو حتى متوسطة بها، فالجواب سيكون لا لأنّ الخوارزميات لا تتطلب معرفة عميقة بمفاهيم الرياضيات. تذكر أنّ الخوارزميات هي طرق عامة لحل المشاكل والمسائل الحسابية، لذلك فمقدار الرياضيات التي تحتاجها يتعلق بنوع المشكلة التي تريد حلها، إن كنت تريد حل مشكلة معقدة، مثل التنبؤ بالمناخ، فعلى الأرجح أنّ الخوارزمية ستكون معقدة وتحتاج إلى معرفة متقدمة بالرياضيات لكن لا تدع هذا يخيفك ويصدّك عن تعلم الخوارزميات، إذ أنّ معظم المسائل التي ستُواجهها هي مشاكل لا تحتاج إلا إلى معرفة بسيطة بأساسيات الرياضيات، مثل العمليات الحسابية البسيطة. خلاصة القول هو أنك لا تحتاج إلى تعلم الرياضيات لكي تتعلم الخوارزميات، فما دمت تفهم كيف تجري العمليات الحسابية البسيطة، مثل الجمع والضرب، وبعض المفاهيم البسيطة، مثل المجموعات والدوال وطرق حل المعادلات فيمكنك أن تتعلم الخوارزميات بسهولة. لكن النقطة الأهم هي الارتباط بين التفكير المنطقي أو طرق حل المشكلات وبين الخوارزميات والبرمجة، فالتفكير المنطقي هو بلا شك مهارة ضرورية للبشر عمومًا وللمبرمجين على وجه الخصوص ومن الضروري تعليمه للأطفال من سن مبكرة لمنحهم هذه المهارة المهمة والضرورية جدًا لنجاحهم في مستقبلهم المهني. تحليل الخوارزميات الخوارزمية هي في الأصل خطة لحل مشكلة حسابية فإن لم تكن تملك خطة مُسبقة لحل مشكلة معقدة، فستفشل محاولاتك على الأرجح لحل تلك المشكلة وحتى لو كانت المشكلة بسيطة، فقد يكون هناك العديد من الحلول، وبعض هذه الحلول أسرع وأكفأ من بعض. من هنا تأتي أهمية تحليل الخوارزميات الذي يهتم بدراسة كفاءة الخوارزميات من ناحية الوقت والذاكرة التي يحتاجها تنفيذ الخوارزمية واختيار الحل الأبسط والأسرع والأقل استهلاكًا للموارد، أو بلغة الحوسبة، تريد أن تخفض تعقيد الخوارزمية Algorithms Complexity إلى أقصى حد ممكن. يشمل تعقيد الخوارزمية كل الموارد الضرورية لحل المشكلة، إن كانت الخوارزمية خوارزميةَ طبخ، فإنّ تعقيدها سيكون الوقت والطاقة اللازمة لإعداد الوجبة. أما إن كانت الخوارزمية تسعى لحل مشكلة في الرياضيات، سيكون تعقيدها هو الوقت اللازم لإجراء خطوات الخوارزمية. أما إن كانت الخوارزمية حاسوبية، فإنّ تعقيدها سيكون الوقت ومساحة الذاكرة الضروريان لتنفيذ خطوات الخوارزمية. لهذا السبب ابتكر العلماء فرعًا كاملًا في علم الخوارزميات مُخصّصًا لتقدير تعقيد الخوارزميات يُسمّى نظرية التعقيد، والذي يصنّف الخوارزميات إلى أصناف بحسب تعقيدها الزماني Time Complexity الذي يصف مقدار الوقت الذي يستغرقه تنفيذ الخوارزمية. وتعقيدها المكاني أو ما يسمى بتعقيد المساحة Space Complexity الذي يمثل عدد خلايا الذاكرة اللازمة لتنفيذ عمليات الخوارزمية مع استثناء المساحة المخصصة لدخل الخوارزمية. يتم التعبير عن تعقيد الخوارزمية بتدوين خاص يسمى Big O notation وهو طريقة لوصف تعقيد الخوارزمية الزمني باستخدام مصطلحات جبرية وأدنى هذه الأصناف هو الصنف O(1)، والذي يعني أنّ الخوارزمية تستغرق وقتا ثابتًا لحل المشكلة مهما كان حجم الدخل كما في خوارزمية معرفة كون العدد فردي أم زوجي مثلًا أو خوازرمية طباعة أول رقم من بين قائمة من الأرقام، أما الصنف O(n) فَيعني أنّ مدة تنفيذ الخوارزمية متناسبة مع حجم الدخل n كما في خوارزمية حساب مضروب العدد وخوازمية إيجاد أكبر عدد من بين مجموعة من الأعداد. وإليك قائمة مختصرة بأشهر أنواع تعقيد الخوارزميات وفق تدوين Big O ودلالة كل منها: O(1) تعقيد زمني ثابت: أي تستغرق الخوارزمية نفس الزمن مهما كان حجم الدخل. O(n) تعقيد زمني خطي: أي يتناسب زمن تنفيذ الخوارزمية بشكل خطي مع حجم الدخل، بمعنى آخر إذا كان حجم الدخل n فإن عدد الخطوات المطلوب لحلها سيكون n على الأكثر. O(sqrt(n)) تعقيد جذر تربيعي: أي إذا كان حجم دخل الخوازرمية هو n سوف يتناسب زمن تنفيذ الخوارزمية مع الجذر التربيعي لقيمة الدخل. O(n^c) تعقيد كثير الحدود: يتناسب زمن تنفيذ الخوارزمية مع حجم الدخل مرفوع للأس c وله أنواع فقد يكون تعقيد زمني تربيعي O (n^²) أي يتناسب زمن تنفيذ الخوارزمية مع مكعب حجم الدخل أو تعقيد زمني تكعيبي O(n^3) أي يتناسب زمن تنفيذ الخوارزمية مع مكعب حجم الدخل. O(log n) تعقيد لوغاريتمي: تناسب زمن تنفيذ الخوارزمية مع لوغاريتم حجم الدخل. O(n log n) تعقيد لوغاريتمي خطي: وهو أبطأ قليلاً من الخطي O(2^n) تعقيد أسي: وفيه تتضاعف خطوات الخوارزمية بشكل أسي مع زيادة حجم الدخل. O(n!) تعقيد عاملي: أي يتناسب زمن الخوارزمية مع قيمة عاملي الدخل أي ضرب جميع الأعداد الصحيحة الموجبة الأصغر من قيمة الدخل. يمكنك أن تجد حلًا للمشاكل بدون الخوارزميات، لكن من النادر أن يكون ذلك الحل الذي وجدته هو الحل الأفضل والأكفأ، وهذه فائدة تحليل الخوارزميات فهو يمكّنك من العثور على الحل الأمثل والأنسب والأقل استهلاكًا للموارد. للمزيد من المعلومات أنصح بمطالعة مقال مدخل إلى تحليل الخوارزميات ومقال الدليل الشامل عن تعقيد الخوارزميات أنواع الخوارزميات البرمجية الخوارزميات هي خطط عامة لحل المشاكل وتتنوع أساليب وأنواع الخوارزميات بحسب الأسلوب الذي تتبعه الخوارزمية لحل المشكلة أو بحسب نوع المشكلة التي تحلها، وبناء على ذلك يمكن أن نجد أنواعًا مختلفة من الخوارزميات ومن أبرزها: خوارزميات القوة الغاشمة Brute force algorithms : تحاول الخوارزميات من هذا النوع حل المشكلة بطريقة مباشرة وتمر بجميع الخيارات الممكنة حتى تتمكن من العثور على حل لهذه المشكلة. الخوارزميات الجشعة Greedy algorithms: تحاول الخوارزميات الجشعة حل المشكلة خطوة فخطوة، بحيث تقترب رويدًا رويدًا من الحل العام للمشكلة. خوارزميات البرمجة الديناميكية Dynamic Programming: تقسّم خوارزميات البرمجة الديناميكية المشكلة إلى مشاكل فرعية أبسط، ثمّ تحل تلك المشاكل الفرعية لاستنتاج الحل النهائي خوارزميات فرق تسد Divide and conquer algorithms: تقسِّم خوارزميات فرِّق تسد المسألة إلى مسائل فرعية تشبه المسألة الأصلية، ثمّ تحلها وتدمج الحلول لتقديم حلٍّ المسألة الأصلية. خوارزميات التعقب الخلفي Backtracking algorithms: تحاول خوارزميات التعقب الخلفي حل المشكلة تعاوديًا عبر بناء الحل تصاعديًا خطوة فخطوة، مع حذف الحلول التي لا تستجيب للقيود التي تفرضها المسألة المُراد حلها في أيّ وقت أثناء تنفيذ الخوارزمية. خوارزميات الترتيب Sort algorithms: هي خوارزميات ترتب مجموعة من العناصر القائمة في ترتيب معين رقمي أو هجائي. والفرز هو أحد الخطوات الهامة في الخوارزميات الأكثر تعقيدًا، توجد عدة خوارزميات تمكننا من تحقيق عملية الفرز ولكل منها ميزاتها ومحدوديتها. خوارزميات البحث Search algorithms: هي خوارزميات تقوم بتحديد موقع بيانات محددة بين مجموعة من البيانات أي أنها تبحث عن البيانات المخزنة ضمن بعض الهياكل أو بنى البيانات وتقوم باستردادها. خوارزميات التعلم الآلي: هي خوارزميات تحاول التعلم بناءً على مجموعة من حالات اتخاذ القرار السابقة كي تتمكن من اتخاذ قرارات معقدة بناءً عليها. خوارزميات التشفير: هي الخوارزميات التي تقوم بتحويل نص مقروء إلى نص غير مقروء يُعرف باسم النص المشفر بحيث يمكن للأطراف المصرح لهم فقط بفهم المعلومات الموجودة في هذا النص وهي خوارزميات هامة جدًا في مجال أمن البيانات الحساسة والحفاظ على الخصوصية. كانت تلك بعض أنواع وتصنيفات الخوارزميات الأكثر شيوعًا وهناك بالطبع العديد من الخوارزميات الأخرى للعديد من الحالات المختلفة. هناك أيضًا طرق أخرى يمكن تطبيقها بسهولة في التطبيقات مثل خوارزمية Dijkstra و Cycle Detection و Kruskal Minimum Spanning Trees فهي من الخوارزميات الأساسية للمبتدئين للتعلم منها. أهمية الخوارزميات في البرمجة هناك من قد يقول أنّ تعلم الخوارزميات تَرفٌ، وهو غير ضروري لكتابة البرامج والتطبيقات، وأنّه يمكن للمبرمج أن يكتب برامجه مباشرة دون الحاجة إلى مفاهيم الخوارزميات. صحيح أنّه ليس عليك أن تكون خبيرًا في الخوارزميات لتَكون مبرمجًا، لكن لا يمكنك أن تكون مبرمجًا بارعًا ومحترفًا دون أن تتعلم فن تصميم الخوارزميات. يوفر تعلم الخوارزميات للمبرمج العديد من الفوائد أبرزها: القدرة على حل المشكلات بشكل أفضل الاستخدام الفعال للموارد الحاسوبية يوفر وقت البرمجة يجعل منك مبرمجًا أفضل لنناقش كل فائدة منها بمزيد من التفصيل ونتعرف كيف يسهم تعلم الخوارزميات في تعزيزها. القدرة على حل المشكلات بشكل أفضل سيحسن تعلمك لطرق حل الخوارزميات من قدرتك على حل المشكلات بصورة عامة والمشكلات البرمجية على وجه الخصوص، ويكسبك مرونة ذهنية في التفكير في الحلول ويساعدك لاحقًا في كتابة البرامج الحاسوبية المتنوعة أيًا كانت اللغة البرمجية المستخدمة خصوصًا بأنّ الخوارزميات مستقلة عن لغات البرمجة، لذا يمكنك استخدامها مهما كانت لغة البرمجة التي تعمل عليها. الاستخدام الفعال للموارد يضمن لك اختيار الخوارزمية الصحيحة الاستخدام المناسب للموارد مثل الذاكرة والتخزين والشبكة وغيرها. فلا يكفي أن تكون الفكرة التي بنيت عليها البرنامج أو التطبيق مفيدة ومبتكرة، ينبغي أن تكون عملية بحيث ينفّذها الحاسوب أو الجوال في وقت معقول وموارد محدودة، فما فائدة تطبيق رسم يحتاج دقيقة كاملة ليرسم مربعًا، وما فائدة برنامج يحتاج إلى 10 جيجابايت من الذاكرة ليعمل! توفير وقت البرمجة يوفر عليك تعلم الخوارزميات الكثير من الوقت، إذ أنّ معظم المشاكل والمسائل التي قد تعترضك أثناء كتابة البرامج لها حلول جاهزة على هيئة خوارزميات مُحسّنة وسريعة، ما يغنيك عن إعادة اختراع العجلة في كل مرة تعترضك مشكلة ما، لأنّ هناك من حلّها قبلك على الأرجح وأعدّها على هيئة خوارزمية وكل ما عليك فعله هو تحويلها إلى لغة البرمجة التي تستعملها ثم تنفّذها وقد لا تضطر حتى إلى تنفيذها فمعظم الخوارزميات الشهيرة والفعالة مثل خوارزميات البحث والفرز تدمج في لغات البرمجة بشكل مكتبات جاهزة يمكنك استخدامها في شيفراتك البرمجية. الخوارزميات تجعل منك مبرمجًا أفضل تعلم الخوارزميات سيجعلك مبرمجًا أفضل وأكثر احترافية، فسَواء كنت متخصصًا في تطبيقات الجوال أو تطبيقات سطح المكتب، أو في بناء المواقع أو تصميم الألعاب أو غيرها من مجالات البرمجة، فإنّ تعلم الخوارزميات سيوسع أفق تفكيرك البرمجي ويساعدك على تطوير برامج أجود وأسرع وأكثر موثوقية. أهم مصادر تعلم الخوارزميات هناك للأسف ضعف في المحتوى العربي التقني، هذا الضعف يظهر أكثر ما يظهر في مجالات الخوارزميات. ولسدّ هذا القصور في المحتوى العربي فقد وفرت أكاديمية حسوب العديد من مصادر التعلم القيمة باللغة العربية. فنظرًا للأهمية الكبيرة للخوارزميات في كافة مجالات البرمجة، وفي غيرها من المجالات مثل الرياضيات والتنمية وغيرها، فقد وفرت لك أكاديمية حسوب دورة علوم الحاسب والتي تتضمن مسارات متعددة يحتاجها أي مبتدئ في تعلم البرمجة من أهمها مسار الخوارزميات وبنى المعطيات الذي يعلمك خطوة بخطوة كيفية كتابة الخوارزميات وتحليلها ويعرفك على أهم الخوارزميات التي تفيدك في عملك البرمجي مثل خوارزميات البحث والترتيب والخوارزميات الرياضية وخوارزميات الرسوم البيانية وغيرها الكثير. كما نشرت الأكاديمية سلسلة الخوارزميات للمحترفين التي تشرح الخوارزميات بالتفصيل وتغطّي كافة مفاهيمها الأساسية مثل مفهوم التعقيد لتقدير الموارد التي تستهلكها البرامج كالوقت والذاكرة. إضافة إلى مفاهيم البرمجة الديناميكية، وبعض أنماط الخوارزميات العامة. تلك السلسلة غنية بالأمثلة التطبيقية، إذ تستعرض الكثير من الخوارزميات لحل بعض المشاكل التقليدية في علم الحاسب خصوصًا تلك المتعلقة بالأشجار وترتيب المصفوفات والبحث، علاوة على طائفة من الخوارزميات المتنوعة في مجالات الجبر والهندسة ونظرية الأعداد. كما أن السلسلة تنفذ الخوارزميات التي تستعرضها من خلال العديد من لغات البرمجة، فمهما كانت لغة البرمجة خاصتك، سواء كانت بايثون أو جافا أو C++/C أو #C أو جافا سكريبت، فستجد أمثلة بهذه اللغات وغيرها في هذا الكتاب. وستجد كذلك توثيقًا شاملًا عن الخوارزميات في موسوعة حسوب يضم توثيقات لأهم الخوارزميات المُستخدمة في البرمجة. وننصحك كذلك بأن تشترك في قناة أكاديمية حسوب على يوتيوب وستجد فيها الكثير من الدروس المفيدة والمواضيع الشيقة حول البرمجة والخوارزميات والتفكير المنطقي وغيرها الكثير. وأخيرًا إذا كنت تتساءل هل يجب علي كمبتدئ أن أتعلم الخوارزميات أولًا أم أتعلم إحدى لغات البرمجة أولًا فنصيحتي لك أن تبدأ كخطوة أولى بالتعرف على أساسيات البرمجة وبعد التمكن منها يمكنك البدء بتعلم الخوارزميات وتطوير تفكيرك البرمجي والخوارزمي على التوازي في رحلة التعلم حتى تصل للاحتراف في كليهما. إذا أتقنت تعلم الأساسيات يمكن أن تنتقل لتعلم الأمور المتقدمة وستجد في قسم البرمجة ضمن وتحديدًا في قسم "مقالات برمجة متقدمة" في أكاديمية حسوب مجموعة متنوعة من المقالات المتقدمة التي تزيد معرفتك وخبرتك في مجال الخوارزميات وفي حال واجهك أي سؤال يمكنك طرحه في قسم الأسئلة والأجوبة في الأكاديمية. الخلاصة تعرفنا في مقال اليوم ما هي الخوارزمية وأهمية الخوارزميات في علوم الحاسب وهندسة البرمجيات، وتعرفنا على خطوات حل الخوارزمية وطرق التعبير عن الخوارزميات بالشيفرة الوهمية والمخططات الانسيابية ثم تحويلها بعد ذلك إلى برامج حاسوبية من خلال الأمثلة العملية البسيطة التي تناسب المبتدئين. كما تعرفنا في الختام على أبرز الفوائد التي تجنيها كمبرمج من تعلم الخوارزميات، وأهم المراجع العربية التي تشرح الخوارزميات من الصفر للاحتراف، فإذا كنت تسعى لتكون مبرمجًا محترفًا فتعلم الخوارزميات أحد الأمور المهمة التي ينبغي أن تضعها في الحسبان لتساعدك على تحقيق هذا الهدف. اقرأ أيضًا أمثلة عن أنواع الخوارزميات تعرف على تخصص هندسة البرمجيات مهندس البرمجيات من هو وما هي مهامه ما هي مدة تعلم البرمجة؟
-
تبرز أهمية قواعد البيانات في عالم الأعمال اليوم أكثر من أي وقت مضى، حيث يعد استخدام قواعد البيانات أمرًا ضروريًا في معظم القطاعات التي تتطلب تخزين كم هائل من المعلومات المختلفة مثل البنوك والدوائر الحكومية المدنية مثل مكاتب السجل المدني والجامعات ومراكز التسوق والمتاجر الرقمية كي تتمكن من أداء خدماتها على أكمل وجه. سنطلعك في مقال اليوم على أهمية قواعد البيانات ومميزاتها ودورها الفعال في تنظيم وجمع كل بياناتك في مكان واحد وتسهيل البحث عن أي بيانات تحتاجها بسرعة وسهولة، أو حتى تحليلها واستنتاج معلومات قيمة لتحسين عملك منها وغيرها الكثير من الفوائد. ما هي قاعدة البيانات؟ قبل أن نتحدث عن أهمية قواعد البيانات دعنا نفهم أولاً ما هي قاعدة البيانات بالأساس وما هي أنواعها ومكوناتها؟ قاعدة البيانات Database أو ما يعرف اختصارًا DB هي مجموعة من البيانات المخزنة إلكترونيًا والمنظمة في تنسيق معين يسهل البحث فيها ومعالجتها. يمكن أن تصمم قواعد البيانات وفق عدة نماذج تختلف في طريقة تخزين البيانات، أشهرها هو تنظيمها على شكل مجموعة جداول مرتبطة ببعضها، على سبيل المثال لدينا هنا مثال بسيط على نموذج لقاعدة بيانات تخزن معلومات عن الطلاب والدورات التي يتبعونها. لاحظ أنك تستطيع البحث عن عدة معلومات من قاعدة البيانات أعلاه، كما يمكنك العثور على إجابات حول عدة أسئلة منها العدد الكلي للطلاب المسجلين، وعدد الطلاب المنتسبين إلى دورة معينة، ومعرفة الدورة الأكثر شعبية …إلخ. دورة علوم الحاسوب دورة تدريبية متكاملة تضعك على بوابة الاحتراف في تعلم أساسيات البرمجة وعلوم الحاسوب اشترك الآن أهمية قواعد البيانات إذا كنت تتساءل عن أهمية قواعد البيانات، ولماذا يتوجب عليك استخدام قواعد البيانات في المشاريع والأعمال؟ فإليك قائمة بأبرز فوائد استخدام قواعد البيانات: تخزين قدر كبير من البيانات تخزين البيانات بطريقة منظمة تسهيل البحث عن البيانات ومعالجتها تمكين النسخ الاحتياطي البيانات توفير إمكانية تحليل البيانات واستخراج المعلومات المفيدة منها تطوير البرامج والتطبيقات التفاعلية دعنا نناقش كل فائدة من بينها بمزيد من التفصيل. تخزين قدر كبير من البيانات يزداد الاعتماد على جمع البيانات بشكل كبير في الآونة الأخيرة ولك أن تتخيل كمية البيانات المتراكمة التي تجمعها الأعمال يوميًا والتي تعد أحد أصولها المهمة والقيمة التي عليها الحفاظ عليها وتخزينها بأفضل طريقة. وتعد قاعدة البيانات الوسيلة المناسبة لتخزين هذه البيانات بحيث يمكن العثور على المعلومات المطلوبة بسرع. تخزين بيانات سليمة ومنظمة تمكن قاعدة البيانات من تنظيم البيانات المخزنة بطريقة تساعدك على الاستفادة منها وإدارتها بأفضل طريقة. وهناك عدة طرق لتنظيم أو نمذجة البيانات في قاعدة البيانات وأشهرها النموذج العلائقي الذي يخزن البيانات ضمن جداول مرتبطة ببعضها البعض وتسمى قاعدة البيانات التي تتبع هذا النموذج قاعدة البيانات العلائقية. أضف إلى ذلك أن قواعد البيانات تفرض على المدخلات أن تكون سليمة وبشروط محددة مسبقًا، مثل أن يكون الاسم بعدد حروف لا تقل عن 4 أو أن يكون رقم الهاتف المدخل بعدد أرقام 7 بالضبط أو البريد الإلكتروني صالح وهكذا، وللمزيد حول هذه النقطة انظر مقال قواعد السلامة وقيودها لضمان سلامة البيانات في قواعد البيانات تسهيل البحث عن البيانات ومعالجتها إن تخزين البيانات بطريقة منظمة ضمن قاعدة البيانات يسهل عملية البحث عن البيانات التي تحتاجها من البيانات المحفوظة واستعادتها وتعديلها عند الحاجة، كما يمكنك من إضافة شروط وفلاتر للعثور على البيانات التي تحقق شروطًا معينة. ويمكن بالطبع تخزين البيانات في أي وسيط رقمي مثل الحاسوب عبر نظام الملفات وناقشنا ذلك مع مقارنة مع قاعدة البيانات في مقال تحليل نظام الملفات لإدارة البيانات وتخزينها واختلافه عن نظام قاعدة البيانات فارجع إليه للمزيد. الحفاظ على تناسق البيانات عادة ما تُمنح صلاحية الوصول لقاعدة البيانات وتحرير بياناتها لعدة أشخاص فإذا قام أكثر من شخص بتحرير نفس البيانات على التزامن وفي ذات اللحظة قد تحدث أخطاء في صحة وتناسق البيانات وهنا تبرز أهمية استخدام قواعد البيانات التي تحتوي على تحكم في التزامن يمنع المستخدمين الآخرين من تعديل أي بيانات أثناء قيام أحد المستخدمين بتعديلها وهذا يحافظ على بياناتك متسقة وصحيحة. تمكين النسخ الاحتياطي للبيانات تبرز أهمية قواعد البيانات في توفير ميزة النسخ الاحتياطي للبيانات مما يحافظ على البيانات الهامة ويمكننا من استردادها في حال حذفها أو تخريبها نتيجة أي عطل أو خطأ مقصود أو غير مقصود. توفير إمكانية تحليل البيانات واستخراج المعلومات المفيدة منها لم تعد الشركات اليوم تهتم فقط بتخزين البيانات في قواعد البيانات للبحث فيها ومعالجتها، بل أصبحت تهتم بأكثر من ذلك وهو فهم البيانات المخزنة لديها، فالبيانات اليوم تعد بمثابة النفط الجديد في عالم الأعمال ويمكن من خلال جمعها وتنظيفها وحفظها في قواعد بيانات مخصصة وتحليلها استخراج معلومات قيمة تساعد الشركات على اتخاذ قرارات مفيدة لتطوير أعمالها وتحسين إنتاجيتها. تطوير البرامج والتطبيقات التفاعلية تعد قواعد البيانات أحد العناصر الضرورية أيضًا في عملية تطوير التطبيقات والمواقع التفاعلية للشركات، ففيها يتم تخزين جميع البيانات المتعلقة بالتطبيق ويتم تطوير واجهات مخصصة للتعامل معها من خلال التطبيق، فإذا كنت مهتمًًا بتطوير التطبيقات سيكون عليك الاهتمام بقواعد البيانات كجزء من عملية التطوير. ما هو نظام إدارة قواعد البيانات DBMS وما أهميته؟ لا يسمح للمستخدمين الوصول مباشرة إلى بيانات قاعدة البيانات والتعامل معها بل يتم التعامل مع البيانات المخزنة في قاعدة البيانات عادة من خلال نظام وسيط يسمى نظام إدارة قواعد البيانات Database Management System أو اختصارًا DBMS. يعد نظام إدارة قاعدة البيانات بمثابة برج التحكم في قاعدة البيانات فمن خلاله يمكن للمستخدمين التعامل مع بيانات قاعدة البيانات وإدارتها بكفاءة، وفي حال تم ارتكاب أي خطأ مثل تخزين بيانات غير صحيحة فسيقوم نظام إدارة قاعدة البيانات بمعنك من ذلك للحفاظ على تناسق البيانات وصحتها. كما يساهم نظام إدارة قواعد البيانات في الحفاظ على أمن البيانات ويتولى مهمة تشفير البيانات وإدارة المستخدمين الذين يمكنهم التعامل مع البيانات ومنع أي محاولات للوصول غير المصرح به للبيانات ويوفر آليات من أجل النسخ الاحتياطي واستعادة البيانات في حالة حدوث أي عطل طارئ فيها. تتوافر العديد من أنظمة إدارة قواعد البيانات منها أنظمة تجارية توفرها الشركات بمقابل مادي مثل أوراكل Oracle و Microsoft SQL Server و IBM DB2، وأخرى مجانية ومفتوحة المصدر طورتها مجتمعات المطورين المتطوعين مثل MySQL و PostgreSQL. إذَا قواعد البيانات لا تعمل لوحدها وإنما تعمل ضمن منظومة متكاملة يوفرها نظام إدارة قواعد البيانات ويمكن أن نخلص أهمية نظام إدارة قواعد البيانات بالنقاط التالية: توفير الوظائف الأساسية للتعامل مع البيانات مثل تخزين البيانات وتحديثها وحذفها توفير آليات لفرز البيانات والبحث فيها بسهولة وسرعة. التحقق من القيود المفروضة على البيانات المراد تخزينها في قاعدة البيانات ومنع أي أخطاء في عملية إدخال البيانات. حماية البيانات من الوصول غير المصرح به. تشفير البيانات المخزنة لحمايتها من الاختراق. منع أكثر من مستخدم من تحرير نفس البيانات في نفس الوقت للحفاظ على اتساقها وتجنب حدوث أي تضارب. توفير آلية لاستعادة البيانات في حال حدوث أي فشل أو تلف فيها. أهمية الأنواع المختلفة لقواعد البيانات كنا قد تحدثنا في مقال دليلك الشامل إلى قواعد البيانات DataBase عن الأنواع المختلفة لقواعد البيانات والتي تعتمد نماذج مختلفة لتخزين البيانات وتنظيمها ضمن قاعدة البيانات وفي هذه الفقرة سنسلط الضوء على اثنين من أهم أنواع قواعد البيانات ونوضح أهميتهما ومجال استخدامها في مجال التطوير. أهمية قواعد البيانات العلائقية Relational databases تنظم العناصر الموجودة في قاعدة البيانات العلائقية بشكل مجموعة من الجداول المرتبطة بحيث يخزن كل جدول مجموعة البيانات ذات الصلة ببعضها ويتم ربط المعلومات من جداول متعددة من خلال تضمين معرف فريد يسمى المفتاح الأساسي في الجدول الرئيسي وإضافته إلى أي جدول آخر نريد ربطه مع هذا الجدول وحينها يسمى مفتاح خارجي وبهذا ينشئ الربط بين المفتاح الأساسي والمفتاح الخارجي علاقة بين الجدولين. [قاعدة بيانات علائقية.PNG] تبرز أهمية قواعد البيانات العلائقية عند الحاجة لبناء أنظمة برمجية تتطلب صرامة وتنظيم في تنسيق البيانات مثل الأنظمة المحاسبية وأنظمة إدارة المخزون وأنظمة المبيعات حيث تخزن البيانات بشكل جداول بهيكلية محددة. على سبيل المثال يمكن أن تتضمن قاعدة بيانات شركة مبيعات مجموعة جداول مثل جدول المنتجات وجدول الموظفين وجدول المبيعات …إلخ وترتبط البيانات الموجودة في هذه الجداول ببعضها البعض. وكما تلاحظ في المثال أعلاه تنظم قواعد البيانات العلائقية المعلومات بطريقة فعالة ومتكاملة وتمنع تكرار البيانات وتسهل لك التعامل مع هذه البيانات ومعالجتها والبحث فيها، لكن القصور في هذا النوع هو بطء سرعة المعالجة نظرًا لضرورة الحفاظ على تكامل البيانات وصعوبة التعامل مع البيانات الضخمة. أهمية قواعد البيانات غير العلائقية NoSQL Databases توفر قواعد البيانات غير العلائقية أو ما يعرف بقواعد بيانات NoSQL طريقة مناسبة لتخزين البيانات غير المنظمة التي يصعب تخزينها في جداول منظمة مثل بيانات تطبيقات الويب وتطبيقات التعرف على الصور والتعرف على الصوت باستخدام الذكاء الاصطناعي وتطبيقات إنترنت الأشياء والأنظمة التي تستخدم البيانات الضخمة أو تتطلب معالجة كميات كبيرة من البيانات. تخزن قواعد البيانات غير العلائقية البيانات وفق 4 نماذج وهي قاعدة بيانات قيمة مفتاح Key-value ومخزن العمود الموسع Wide-column Store وقاعدة بيانات المستند Document وقاعدة بيانات الرسم البياني Graph. وتبرز أهمية قواعد البيانات غير العلائقية في كونها سريعة ومرنة ومناسبة للتعامل مع البيانات كبيرة الحجم وتخفف القيود المفروضة على تناسق وتنظيم البيانات المفروضة في أنواع قواعد البيانات الأخرى وهي مناسبة لتوسع الأعمال حيث يمكنك زيادة أدائها بسهولة عند الحاجة لتلائم متطلبات عملك. استعرضنا لك اثنين من أشهر أنواع قواعد البيانات واستعرضنا أهم حالات استخدامهما، وتذكر أنه من الضروري أن تختار نوع قاعدة بيانات الأنسب لمشروعك كي تستفيد من مميزاته بالشكل الصحيح وتنجز مشروعك بأفضل أداء. هناك بالطبع العديد من الأنواع الأخرى مثل قواعد البيانات الهرمية والشبكية وقواعد البيانات كائنية التوجه ومستودعات البيانات…إلخ. ولمطالعة مزيد من التفاصيل حول ميزات كل نوع منها يمكنك قراءة مقال أنواع قواعد البيانات وأهم مميزاتها واستخداماتها. أهمية قواعد البيانات في سوق العمل إن فهمك لأساسيات قواعد البيانات ومهارات التعامل معها في المشاريع العملية يوفر لك العديد من الفرص في سوق العمل الكبير المتعلق بقواعد البيانات -نظرًا للطلب الشديد- ويمكنك من شغل عدة أدوار وظيفية ذات رواتب مجزية سنذكر أهمها. مسؤول قاعدة البيانات Database administrator مسؤول قاعدة البيانات DBA هو المسؤول عن تصميم وإنشاء قاعدة البيانات وإنشاء حسابات مستخدمي قاعدة البيانات ومنح صلاحيات الوصول المناسبة إليها هذه حسب الحاجة، إضافة إلى إدارة قاعدة البيانات وإصلاحها وصيانة حلول النسخ الاحتياطي لقواعد البيانات الخاصة بالعمل لمنع فقدان البيانات، وحذف قاعدة البيانات عند الضرورة والتأكد من أن قواعد بيانات العمل والتطبيقات التي تتعامل معها تعمل بالشكل المطلوب. مدير قاعدة البيانات Database manager هو المسؤول عن إدارة وصيانة وحماية كافة قواعد البيانات المستخدمة في مقر العمل كما أنه يشرف ويدرب الموظفين الذين يتعاملون مع قواعد البيانات هذه للتأكد من أن التعامل معها يتم بطريقة صحيحة وآمنة. محلل بيانات Data analyst هو المسؤول عن جمع البيانات المرتبطة بالعمل وتنظيفها من أي بيانات خاطئة أو مكررة وتحليلها إلى معلومات مفيدة وعرضها بشكل تقارير مفهومة وسهلة القراءة وعرضها على أصحاب القرار في العمل. وللتعرف على المزيد من المعلومات حول هذا التخصص أنصح بقراءة مقال الدليل الشامل إلى تحليل البيانات عالم بيانات Data scientists عالم البيانات هو شخص محترف في تحليل البيانات ويملك مهارات عالية في البرمجة والإحصاء والرياضيات والتعلم الآلي لتحليل البيانات واستنتاج المعلومات القيمة منها ومهارات تقنية لحل المشكلات المعقدة واستكشاف المشكلات التي يجب حلها. وهو مسؤول عن إنشاء نماذج التعلم الإحصائي وإيجاد وسائل جديدة لتحليل بيانات الشركة التي يعمل بهما والعمل على إيجاد أفضل الحلول لمشاكل العمل. وللاطلاع على مزيد من المعلومات حول هذا التخصص يمكنك مطالعة مقال الدليل الشامل إلى علم البيانات كانت هذه نبذة عن أهم الأدوار الوظيفية التي تتعامل مع قواعد البيانات إلى جانب العديد من الأدوار الأخرى التي قد تختلف تسميتها من جهة لأخرى لكنها ترتبط بشكل أساسي بتطوير وتصميم قواعد البيانات أو بإدارة قاعدة البيانات أو بتشغيل قاعدة البيانات أو بتحليل البيانات المحفوظة في قواعد البيانات. كيف أتعلم قواعد البيانات؟ بعد أن تعرفت على أهمية قواعد البيانات والطلب عليها في سوق العمل قد تتساءل ما هي الخطوات التي علي اتباعها كي تتعلم قواعد البيانات وإليك أهم الخطوات: تعلم المفاهيم والمصطلحات الأساسية حول قواعد البيانات وأنواعها وطرق تصميمها ومتى تستخدم كل نوع منها. تعلم التعامل مع أنظمة إدارة قواعد البيانات مثل MySQL و Oracle أو PostgreSQL و Ruby on Rails. توفر هذه الطرق طرقًا سريعة وفعالة للاستعلام عن قاعدة البيانات من الواجهة الخلفية الخاصة بك. يجب أن يعرف كل شخص من محللي الأعمال إلى خبراء إدارة قواعد البيانات هذه المهارات. تعلم برمجة قواعد البيانات من خلال مشاريع وتطبيقات عملية فهي تعزز فرصتك في الحصول على فرص أكبر في سوق العمل. طور مهاراتك الشخصية مثل مهارات التحليل المنطقي ومهارات التواصل الفعال لأن العمل في مجال قواعد البيانات يتطلب منك التعاون والتواصل مع باقي أعضاء فريق التطوير. اختر مصادر تعليمية مفيدة والتزم بها ولا تشتت نفسك بكثرة المصادر. ستجد في أكاديمية حسوب الكثير من مصادر تعلم قواعد البيانات وهي: الدروس والمقالات التي تشرح أساسيات قواعد البيانات كتاب تصميم قواعد البيانات من الصفر للاحتراف متاح للتحميل مجانًا دورة علوم الحاسوب ستجد مسارًا كاملًا يعرفك على قواعد البيانات بمختلف أنواعها وستتعمق بمختلف جوانب لغة الاستعلام SQL، وستطبقها عمليًا خطوةً بخطوة على قواعد بيانات SQLite، وستتطلع على مفاهيم قواعد بيانات NoSQL. الخلاصة تعرفنا في مقال اليوم على أهمية قواعد البيانات التي تعد أحد المفاهيم المهمة في عالم البرمجة وتقنية المعلومات وتعرفنا على أهم خصائصها واكتشفنا أنواع قواعد البيانات ومميزات كل نوع منها، واستعرضنا أهم الوظائف المرتبطة بتخصص قواعد البيانات. وختمنا المقال بجملة من النصائح التي تساعدك على تعلم قواعد البيانات ودخول سوق العمل بأفضل الطرق وأسرعها ونرحب بأن تشاركنا أي أسئلة أو استفسارات تتعلق بأهمية قواعد البيانات في قسم التعليقات أسفل المقال. اقرأ أيضًا عملية تطوير قواعد البيانات Database Development تعرف على مكونات قاعدة البيانات
-
سنتعرف في مقال اليوم على تخصص برمجة تطبيقات سطح المكتب بالتفصيل وهو أحد تخصصات البرمجة المطلوبة في سوق العمل والذي يمكنك من تطوير تطبيقات للحاسوب سريعة وعالية الأداء بعد أن تعرفنا في المقال السابق دليلك الشامل إلى برمجة التطبيقات على التطبيقات وأنواعها المختلفة وطرق برمجتها. وسنستكشف أيضًا كافة أنواع تطبيقات سطح المكتب والفرق بين تطبيقات سطح المكتب وتطبيقات الويب ونستعرض في الختام أهم الخطوات التي ينبغي اتباعها لتعلم برمجة هذا النوع من التطبيقات وأهم لغات البرمجة وأطر العمل المستخدمة في تطويرها. ما هي تطبيقات سطح المكتب؟ تطبيقات سطح المكتب هي تطبيقات مستقلة بذاتها مصممة للعمل على أجهزة الحاسوب المكتبية والحواسيب المحمولة التي تعمل عادة بأنظمة تشغيل ويندوز أو لينكس أو ماك. عندما تشتري جهاز الحاسوب لأول مرة ستجد مجموعة من تطبيقات سطح المكتب المثبتة بالفعل على جهازك مثل تطبيق الآلة الحاسبة ومشغل الوسائط، كما يمكنك أيضًا تنزيل تطبيقات سطح مكتب لاستخدامات مختلفة وتثبيتها على نظام التشغيل من خلال تحميل حزم التثبيت الخاصة بالتطبيق إما من شبكة الانترنت أو من الأقراص المضغوطة أو شراؤها من موردي البرامج وتثبيتها على نظام التشغيل كي تتمكن من استخدامها، وأحيانًا سيكون عليك تثبيت تحديثات هذه التطبيقات عند صدورها بنفسك بشكل يدوي فهي لا تتحدث تلقائيًا أو سيثبتها مدير التطبيقات تلقائيًا. يمكن لتطبيقات سطح المكتب أداء مهام متنوعة مثل تحرير الصور أو معالجة النصوص أو تشغيل الوسائط أو اللعب ومن أشهر الأمثلة على تطبيقات سطح المكتب مستكشف ملفات ويندوز وتطبيقات مايكروسوفت أوفيس وتطبيقات تصفح الإنترنت مثل متصفح كروم ومتصفح فايرفوكس وتطبيقات تحرير الصور مثل أدوبي فوتوشوب وتطبيقات تشغيل الوسائط مثل Windows Media Player ومشغل الفيديو والوسائط VLC …إلخ. أهمية تطبيقات سطح المكتب بعد ظهور الإنترنت وشيوع استخدام الهواتف الذكية واللوحية تراجع استخدام أجهزة الحواسيب المكتبية وزادت شعبية برمجة تطبيقات الويب وتطبيقات الهاتف المحمول مقارنة ببرمجة تطبيقات سطح المكتب، لكن هذا لا ينفي أن الحواسيب المكتبية لازالت تستخدم بكثرة على الصعيد التجاري والشخصي وبالتالي لا يزال الطلب على تطبيقات سطح المكتب في سوق العمل قائمًا لاسيما أن هذه التطبيقات تنفرد بجملة من الفوائد قد لا تتوافر في أنواع التطبيقات الأخرى. وهناك العديد من المجالات التي يفضل المستخدمون فيها تطبيقات سطح المكتب المحلية على أنواع التطبيقات الأخرى ومن أهمها: المجالات التي تتطلب عرض رسومات عالية الدقة مثل تصميم الجرافيك وتحرير الفيديو وتطبيقات الهندسة المعمارية فهي تتطلب موارد عالية لتعمل بكفاءة وسرعة، لذا يفضل تطويرها كتطبيقات سطح المكتب لأنها ستكون أسرع بكثير من تطبيقات الويب مثلًا القائمة على المتصفح. الصناعات التي تتطلب وجود اتصال مباشر بين جهاز الحاسوب والأجهزة الإلكترونية لإجراء مراقبة أو ضبط إعدادات معينة لهذه الأجهزة. المجالات التي تتطلب التحكم الكامل في التطبيقات ففي هذه الحالة من الأفضل اللجوء لتطوير تطبيقات سطح المكتب بشكل محلي بدلًا من تشغيلها على خادم بعيد كي تتمكن من التحكم الكامل بالتطبيق وتقوم بتخصيصه وإدارته بالكامل. الأعمال التي تتطلب قدرًا من السرية والخصوصية وحماية المعلومات الشخصية من محاولات الاختراق، فبقاء التطبيق غير متصل بالإنترنت وتخزين كافة البيانات على جهازك يرفع من درجة أمان التطبيق ويحميه من المخترقين والمتطفلين. تعد تطبيقات سطح المكتب أكثر أمانًا وسرية كما أنها تتواصل مع الحاسوب وعتاده مباشرةً دون وسيط أي أنها تتخاطب بالطبع مع نظام التشغيل الذي يُشغِّل عتاد الحاسوب وهذا يمنع أي تأخير في التواصل على عكس تطبيقات الويب مثلًا التي تعمل ضمن المتصفح وهو في الأساس تطبيق سطح مكتب يتواصل بدوره مع نظام التشغيل ثم مع العتاد. وتجدر الإشارة لحاجة تثبيت تطبيقات سطح المكتب من مواقعها أو مصادرها الرسمية فقط لضمان خلوها من أي فيروسات أو برامج ضارة ولا تحتاج إلى اتصال بالإنترنت لكي تعمل وهذه إحدى ميزات الأمان كما أن لبعض التطبيقات درجة أمان أعلى مثلًا لا تعمل إلا بوجود جهاز USB أو لاسكلي موصول بالحاسوب أو قراءة بصمة الإصبع أو العين وغيرها من الطرق. أنواع تطبيقات سطح المكتب كما شرحنا سابقًا فإن تطبيقات سطح المكتب بالأساس هي تطبيقات مستقلة بذاتها ويمكنها العمل على على أجهزة حاسوب محلية تعلم بأنظمة تشغيل معينة، وفي هذه الفقرة سنوضح الفرق بين نوعين من تطبيقات سطح المكتب. تطبيقات سطح المكتب الأصيلة Native Desktop Application تطبيقات سطح المكتب متعددة المنصات Cross-platform Desktop Application وإليك الفرق بين هذين النوعين ومميزاتهما وطريقة برمجة تطبيقات سطح المكتب لكل منهما. 1. تطبيقات سطح المكتب الأصيلة Native Desktop Application تطبيقات سطح المكتب الأصيلة أو ما يعرف بتطبيقات سطح المكتب التقليدية أو الكلاسيكية هي تطبيقات تستخدم على نظام تشغيل أساسي أو جهاز معين مثل ويندوز أو ماك او إس أو لينكس وتتميز هذه التطبيقات بسرعة أدائها وإمكانية تضمينها لطيف واسع من الوظائف والميزات من خلال الاستفادة من قدرات الجهاز الأساسي الذي تعمل عليه. تحدد أنظمة التشغيل كيفية تشغيل هذا النوع من التطبيقات حيث تحتاج بعض البرامج فقط إلى الأذونات الأساسية التي يسمح بها نظام التشغيل ويحتاج بعضها الآخر للحصول على المزيد من التحكم من خلال الامتيازات الإدارية للنظام، فقد لا تعمل التطبيقات التي تحتاج إلى إجراء تغييرات على الملفات الخاصة بنظام التشغيل أو تتطلب الوصول إلى المجلدات الآمنة بالشكل صحيح إذا لم يتم منحها الصلاحيات المطلوبة ولا تعطى بعض تلك الصلاحيات إلا من مدير النظام وليس من أي مستخدم عادي. يمكن أن تتطلب تطبيقات سطح المكتب الأصيلة كذلك توافر خصائص معينة في الجهاز أو وجود إصدارات معينة لأنظمة التشغيل يحددها المطورون عند برمجة تطبيقات سطح المكتب كي تعمل بشكل صحيح. على سبيل المثال تتطلب أحدث نسخة من تطبيق تحرير الفيديو الاحترافي أدوبي بريمر برو احتواء جهاز الحاسوب على ذاكرة وصول عشوائي RAM بسعة 8 جيجابايت على الأقل ووحدة معالجة رسومات GPU بسعة 2 جيجابايت ومعالج جيل سادس والإصدار ويندوز 10 بمعمارية 64 بت. تعتمد برمجة تطبيقات سطح المكتب المحلية بشكل أساسي على لغات برمجة عالية المستوى مثل جافا وبايثون وروبي و C++ و C# لكن أبرز عيوب تطوير التطبيقات المحلية هو أنك ستحتاج لكتابة شيفرات برمجية منفصلة لتطوير تطبيقات سطح المكتب مخصصة لكل نظام تشغيل. هذا يعني أنك إذا احتجت لبرمجة تطبيق سطح مكتب يعمل على كافة أنظمة التشغيل الرئيسية وهي ويندوز ولينكس وماك ستضطر حينها لإنشاء ثلاث نسخ منفصلة من هذا التطبيق بأدوات وتقنيات مختلفة، ولابد أنك استنتجت بنفسك كم سيكلفك تطوير تطبيق كهذا من وقت وجهد في كتابة النسخ لكل منصة منفصلة تستهدفها فضلًا عن الوقت المستغرق في إجراء عمليات الصيانة والتحديث وإضافة ميزات جديدة لكل تطبيق منها على حدة. 2. تطبيقات سطح المكتب متعددة المنصات Cross-platform Desktop Application تطبيقات سطح المكتب متعددة المنصات أو التطبيقات العابرة للأنظمة هي تطبيقات تُبرمَج مرة واحدة وتعمل على كافة أنظمة التشغيل خلافًا تطبيقات سطح المكتب الأصيلة المبرمجة للعمل على نظام أساسي واحد فقط، ويعمل هذا النوع من التطبيقات بكفاءة على الحواسيب الشخصية والمحمولة والأجهزة اللوحية على حد سواء حيث يُكتب الكود البرمجي لتطبيق سطح المكتب متعدد الأنظمة مرة واحدة فقط ويكون قادرًا على العمل على أنظمة التشغيل المختلفة. وميزة الشيفرة الواحدة التي تعمل على مختلف أنظمة التشغيل تأتي مع قيود تكثر أو تقل بحسب كيفية برمجتها والأدوات المستخدمة في برمجتها وتتصف أحيانًا بأداء أقل من التطبيقات الأصيلة ووصول أقل أو محدود إلى موارد الحاسوب مثل الكاميرا أو ماسح البصمة وقد تكون أقل أمانًا أيضًا لذا لن تجد مثلًا أي لعبة -وهي نوع من أنواع تطبيقات سطح المكتب- تستهلك موارد الحاسوب استهلاكًا كاملًا تُبرمَج بهذه الطريقة ولا التطبيقات ذات الأمان المرتفع مثل تطبيقات البنوك أو التطبيقات الحكومية وهكذا. تستفيد هذه التطبيقات من تقنيات الويب وهي لغة HTML و CSS وجافا سكريبت لتطوير هذا النوع التطبيقات مع أداة تعمل على تحويل الشيفرة لكي تعمل على نظام التشغيل مباشرة أو عبر وسيط مثل متصفح الويب. وتلجأ معظم الشركات اليوم للاستفادة من مميزات هذا النوع من التطبيقات لأنها أقل كلفة في التطوير والصيانة ولا تحتاج أغلبها إلى أداء مرتفع ووصول إلى كامل عتاد الحاسوب ومن أبرز الأمثلة على تطبيقات تم إنشاؤها باستخدام هذه التقنية نذكر تطبيق ووردبريس لسطح المكتب WordPress Desktop app الذي يمكنك من إدارة موقع ووردبريس الخاص بك مثل إضافة المنشورات وتحديث الإضافات والرد على التعليقات من حاسوبك المحلي دون فتح متصفحك، وتطبيق سلاك Slack لسطح المكتب وتطبيق واتساب الشهير لسطح المكتب …إلخ. فإذا كنت على معرفة بتقنيات الويب أو كنت مطور ويب أو تنوي دخول كلا المجالين مجال تطوير الويب ومجال تطوير تطبيقات سطح المكتب فيمكنك الاستفادة من هذا النوع من التطبيقات وبرمجة تطبيقات سطح مكتب لمختلف أنظمة التشغيل إلى جانب تطوير تطبيقات الويب وتطبيقات الجوال أيضًا، فتعلم تطوير هذه التطبيقات سيكون الخيار الأفضل والأسرع بالنسبة لك من تطوير تطبيقات سطح المكتب الأصلية لأنك لن تضطر لكتابة كود برمجي مخصص لكل منصة ويمكنك أن بنفس الكود البرمجي أن تضمن تشغيل تطبيقك على أنظمة ويندوز ولينكس وماك دون أن تتأثر وظائف التطبيق أو جودته. الفرق بين تطبيقات الويب وتطبيقات سطح المكتب كما شرحنا سابقًا فإن تطبيق سطح المكتب هو برنامج يتم تثبيته باستخدام حزمة التثبيت ثم تشغيله على جهاز الحاسوب المحلي الخاص بك ويجب أن تتوافق مواصفات العتاد مثل حجم الذاكرة وسرعة المعالج ونظام التشغيل وإصداره مع المتطلبات الخاصة بالتطبيق كي يُثبت ويعمل بنجاح. بينما تطبيق الويب هو برنامج يتم توفيره على متصفح الويب وهو في الأساس تطبيق سطح مكتب -أو تطبيق جوال- عن طريق الاتصال بالإنترنت وطلب ملفاته من خادم بعيد، ولا يتطلب تشغيل هذا التطبيق توفر أي موارد أو متطلبات في جهازك أو نظام التشغيل الذي تستخدمه فكل ما تحتاجه لتشغيل تطبيق الويب هو مستعرض واتصال بالإنترنت وبكتابة عنوان URL الخاص بالتطبيق ضمن نافذة المتصفح ستتمكن من الولوج له وبدء استخدامه والاستفادة من مميزاته. تعتمد برمجة تطبيقات الويب على تقنيات الويب التي ذكرناها آنفًا في تطوير تطبيقات سطح المكتب متعددة الأنظمة بالإضافة إلى لغات وتقنيات برمجة الويب المختلفة مثل لغة PHP ولغة Ruby وحتى لغة بايثون Python وسنتحدث بمزيد من التفصيل عن تقنيات ولغات برمجة تطبيقات سطح المكتب في الفقرة التالية. تجدر الإشارة لأن لكل من تطبيقات الويب وتطبيقات سطح المكتب ميزاته وعيوبه واختيار نوع التطبيق المناسب يعتمد على احتياجات العمل والجمهور المستهدف والموارد المطلوبة للتطبيق ومستوى الأمان وغيرها من العوامل، لكن يمكننا القول بصفة عامة بأن تطبيقات سطح المكتب هي الأنسب للاستخدام الداخلي في المؤسسات والدوائر الحكومية وفي برمجة الألعاب في حين تعد التطبيقات المستندة إلى الويب في هي الخيار المفضل عندنا تحتاج إلى توسيع نطاق وصول التطبيق وتوفير إمكانية استخدامه من مواقع وأجهزة مختلفة فلا يكاد يخلو أي جهاز أو جوال اليوم من متصفح ويب. تقنيات ولغات برمجة تطبيقات سطح المكتب قد تتساءل ما هي أفضل لغات البرمجة لبرمجة تطبيقات سطح المكتب؟ في هذه الفقرة نوفر لك قائمة بأهم هذه التقنيات ومميزات كل منها. هناك العديد من لغات البرمجة المناسبة لتطوير تطبيقات سطح المكتب المختلفة وهذا بحسب نوع التطبيق ونظام التشغيل المستهدف. لغات برمجة تطبيقات ويندوز فإذا أردت برمجة تطبيقات أصيلة مخصصة للعمل على نظام التشغيل ويندوز فعليك استخدام لغات برمجة مثل C# و C++. لغات برمجة تطبيقات ماك macOS وأما لبرمجة تطبيقات خاصة بنظام التشغيل ماك أو إس فعليك استخدام لغة Objective C. لغات برمجة تطبيقات لينكس وأما لتطوير تطبيقات سطح مكتب موجهة لنظام التشغيل لينكس فيمكنك استخدام لغة C أو لغة C++ أو لغة Bash. كما أنك تحتاج للاستعانة بأدوات خاصة ومكتبات رسم الواجهات وحزم أدوات تطوير البرمجيات SDKs متوفرة لكل نظام تشغيل على حدة. وأما إن أردت برمجة تطبيقات عابرة للمنصات وتعمل على أنظمة التشغيل الثلاثة السابقة وغيرها فهنا توجه إلى تقنيات الويب ولغاتها التي أشرنا إليها في الأعلى. وعمومًا، يمكنك تطوير تطبيقات سطح المكتب بالاعتماد على إحدى لغات البرمجة سواءً أصيلة أو عابرة للمنصات فقط لكن هذا قد يتطلب منك الكثير من الوقت والجهد لذا يفضل الاعتماد على إطار عمل framework مساعد تقلل التعليمات البرمجية وتوفر عليك الوقت وتساعد في زيادة إنتاجيتك. أدوات وأطر عمل لبرمجة تطبيقات سطح المكتب فيما يلي قائمة بأشهر أدوات وأطر عمل تطوير تطبيقات سطح المكتب: إلكترون Electron js هو إطار عمل برمجي يستخدم في برمجة تطبيقات سطح مكتب عابرة للمنصات تبدو وكأنها تطبيقات أصيلة native-feeling لكنها تعتمد بالأصل على تقنيات الويب الأساسية HTML و CSS وجافا سكريبت وتستخدم متصفح الويب مفتوح المصدر كروميوم Chromium لعرض محتوى التطبيق كما أنها تستخدم بيئة التشغيل Node.js للوصول إلى نظام الملفات المحلي ونظام التشغيل وبهذا يمكن للتطبيقات العمل على أي نظام تشغيل بكل سلاسة. ومن أشهر تطبيقات سطح المكتب المطورة باستخدام إطار عمل إلكترون نذكر تطبيق سلاك Slack وتطبيق واتساب WhatsApp ومحرر الأكواد الشهير فيجوال ستوديو كود Visual Studio Code. إذا كنت مهتمًا بتطوير تطبيقات سطح المكتب باستخدام إطار عمل إلكترون فقد وفرت لك أكاديمية حسوب مسارًا متكاملًا ضمن دورة تطوير التطبيقات باستخدام JavaScript ستتعلم من خلاله إنشاء تطبيق Electron JS لسطح المكتب. كاكاو Cocoa هو إطار عمل مخصص لتطوير تطبيقات سطح المكتب التي تعمل على نظام تشغيل macOS ويمكن استخدامه كذلك لإنشاء تطبيقات مخصصة للأجهزة المحمولة، يوفر هذا الإطار العديد من عناصر واجهة المستخدم التي تتيح لك إنشاء واجهات مستخدم احترافية كالحقول النصية وأشرطة التنقل وأزرار الاختيار كما يساعدك على تحسين أداء تطبيقاتك من خلال توفير ميزات إدارة الذاكرة والتحميل الكسول Lazy loading. إطار العمل WPF هي اختصار لعبارة Windows Presentation Foundation وهو إطار عمل يتيح لك إنشاء واجهة مستخدم لتطبيقات ويندوز باستخدام لغة XAML متوافق مع إطار عمل .NET ويحتوي مكتبات وأدوات لبرمجة الألعاب والويب وتطبيقات الهاتف المحمول ويساعدك في تضمين العديد من الميزات في تطبيقاتك مثل التخطيطات المتجاوبة مع كافة أحجام الشاشات وعناصر التحكم والنماذج وغيرها من الأدوات التي تجعل تجربة برمجة التطبيقات احترافية وسريعة. منصة UWP هي اختصار لعبارة Universal Windows Platform وهي منصة متخصصة في برمجة تطبيقات سطح المكتب متوافقة مع نظام التشغيل ويندوز 10 وويندوز 11 وتتميز التطبيقات المطورة بهذه المنصة بكونها متوافقة مع كافة أحجام الشاشات وقادرة على التحكم بالموارد المختلفة للجهاز كالفأرة ولوحة المفاتيح وكاميرا الويب وأجهزة التحكم في الألعاب وشاشات اللمس. إطار العمل WinForms هو إطار عمل مخصص لبناء واجهات المستخدم لتطبيقات سطح المكتب التي تعمل على نظام التشغيل ويندوز بسهولة من خلال تقنية السحب والإفلات التي تساعد مطوري البرامج على برمجة التطبيقات بسرعة وكفاءة، كما يسمح WinForms للمطورين باسترداد البيانات من واجهة برمجة التطبيقات API أو ملفات JSON أو XML أو غيرها من مصادر البيانات وعرضها ضمن التطبيقات. خطوات تعلم برمجة تطبيقات سطح المكتب إن كنت مهتمًا ببرمجة تطبيقات سطح المكتب ومتحمسًا جدًا لتعلمها لكنك لا تعلم من أين تبدأ، حسنًا دعنا نستعرض مجموعة من الخطوات التي تساعدك في تعلم تطوير تطبيقات سطح المكتب من الصفر للاحتراف. 1. حدد هدفك حدد طبيعة ونوع تطبيقات سطح المكتب التي ترغب بتطويرها، واختر منصة التطوير التي تستهدفها في تطبيقاتك فهناك كما ذكرنا العديد من الخيارات المتاحة مثل ويندوز ولينكس وماك وكل منصة لها مميزاتها وتقنياتها وكي لا تضيع بين هذه الخيارات من الأفضل أن تحدد وجهتك من البداية. 2. حدد لغة البرمجة حدد لغة البرمجة الأنسب التي تمكنك من برمجة تطبيقات سطح المكتب المخصصة للمنصة التي اخترتها وضع خطة لتعلمها والتزم بها قدر المستطاع. 3. حدد الأدوات وأطر العمل تعلم استعمال إطار العمل المناسب للغة البرمجة أو المنصة التي اخترتها فهي تسرع عملك وتمكنك من تطوير تطبيق سطح مكتب عالي الجودة على سبيل المثال يمكنك استخدام إطار عمل إلكترون مع لغة جافاسكربت لبرمجة تطبيقات سطح مكتب عابرة للمنصات، واستخدام إطار عمل Cocoa لإنشاء تطبيقات خاصة بنظام التشغيل macOS. 4. طبق ما تعلمته لن تستفيد مما تعلمته من تقنيات إذا لم تطبق ما تعلمته على مشاريع فعلية، وأول خطوة في التطبيق العملي هي تحديد فكرة وهدف التطبيق والمميزات التي تريد تنفيذها في هذا التطبيق ومحاولة تنفيذها. 5. حضر التصميمات الأولية لواجهة التطبيق قبل البدء بالتنفيذ من المهم تصميم نماذج أولية لواجهات التطبيق فهي تساعدك على توسيع أفكارك وتحديد طريقة عمل التطبيق بشكل أفضل، ويمكنك في هذه المرحلة أن ترسم نماذج تطبيقك بشكل بدائي على الورق أو تعتمد أدوات احترافية مثل Adobe XD أو أو Mockplus أو Moqups وأيًا كانت الطريقة المتبعة في التصميم احرص على أن تراعي تجربة المستخدم وسهولة الاستخدام، وإن كنت تعمل مع فريق، فهذه العملية سيستلمها فريق التصميم عادةً. وللمزيد من التفاصيل، اطلع على مقال تصميم النماذج الأولية للواجهات الرسومية ومقال المرحلة الرابعة في عملية التفكير التصميمي: مرحلة بناء النماذج الأولية. 6. ابدأ عملية البرمجة بعدها ابدأ في برمجة تطبيق سطح المكتب مستعينًا بالأدوات التي تعلمتها، وفي هذه المرحلة ليس عليك تحقيق جميع الميزات في وقت واحد بل نفذها واحدة تلو الأخرى. 7. احترف حل المشكلات ستصادف الكثير من الأخطاء والمشكلات خلال كتابة الكود، لا تقلق فهذا أمر طبيعي ومحاولة اكتشاف سبب وقوع الأخطاء والعمل على تصحيحها جزء مهم في تنمية مهاراتك البرمجية. للاستزادة، ارجع إلى مقال حل المشكلات وأهميتها في احتراف البرمجة. 8. اختبر التطبيق بعد الانتهاء من برمجة التطبيق قم بإطلاق التطبيق للاستخدام بشكل تجريبي واختبر أدائه وخلوه من أي أخطاء بمساعدة أدوات الاختبار الآلي وأدوات تحليل التعليمات البرمجية وأدوات تصحيح الأخطاء كما ينبغي عليك اختبار التطبيق على مختلف الأنظمة والأجهزة للتأكد من أنه يعمل كما هو متوقع. 9. انشر التطبيق بعد التأكد من أن تطبيقك يعمل على ما يرام يمكنك البدء في إصدار ونشر تطبيق سطح المكتب الخاص بك على المستخدمين، وبمجرد أن يصبح جاهزًا للعمل يمكنك إنشاء حساب مطور ورفعه على أحد المتاجر المتخصصة مثل متجر مايكروسوفت لتطبيقات ويندوز Windows ومتجر Apple لمستخدمي ماك أو يمكنك تحميله في GitHub أو في موقع الويب الخاص بك لبناء معرض أعمال خاص بك يساعدك في دخول سوق العمل بسرعة أكبر. لا تنتهي العملية عند نشر التطبيق بل يتوجب عليك كمبرمج العمل بصورة مستمرة على متابعة أداء التطبيق والاهتمام بأي ملاحظات أو مشكلات يواجهها مستخدموا التطبيق بعد نشره والحرص على صيانة التطبيق وحل مشكلاته وتحسينه بشكل دوري لتلبية المتطلبات الجديدة وإصلاح أي أخطاء تظهر لاحقًا لضمان المحافظة على جودته وقابليته للاستخدام. 10. استمر في التعلم أنت كمبرمج لن تتوقف على التعلم لأن هذا مجال تطوير تطبيقات سطح المكتب سريع التطور وشديد التقلب، لذا عليك أن تبقى على اطلاع مستمر على أحدث الاتجاهات والتقنيات وأطر العمل في هذا المجال وتحرص على اتباع قواعد البرمجة وأفضل ممارسات كتابة الكود لتضمن التميز والنجاح في سوق شديد التنافسية. وأنصحك بقراءة مقال كيف تتعلم البرمجة: نصائح وأدوات لرحلتك في عالم البرمجة لبعض النصائح في هذه الرحلة، رحلة تعلم البرمجة وبرمجة تطبيقات سطح المكتب. الخلاصة تعرفنا في مقال اليوم على أحد مجالات تطوير البرمجيات الهامة في سوق العمل وهو برمجة تطبيقات سطح المكتب وتعرفنا على أهم لغات برمجة هذه التطبيقات وأشهر أطر العمل التي تسهل عملية تطويرها، وختمنا المقال بأهم الخطوات والنصائح التي عليك اتباعها لبدء حياتك المهنية في مجال تطوير تطبيقات سطح مكتب احترافية وذات جودة عالية. إذا كان لديك أي تساؤل أو مشكلة تتعلق بموضوع برمجة تطبيقات سطح المكتب لا تتردد في كتابتها في قسم التعليقات أسفل المقال أو يمكنك إضافة استفسارك في قسم الأسئلة البرمجية لتحصل على إجابة بأسرع وقت ممكن وإذا كنت بدأت بالفعل في تطوير تطبيقات سطح المكتب الخاصة بك ولديك نصائح أو توجيهات مساعدة يسرنا أن تشاركها معنا للمزيد من الفائدة. اقرأ أيضًا برمجة تطبيقات الجوال تطوير التطبيقات
-
مصطلح إطار العمل أو الفريم وورك Framework يعد أحد المصطلحات الفنية والبرمجية التي تربك المبتدئين على وجه الخصوص في بداية مشوار تعلم البرمجة والتي لا يستطيع فهم دلالتها ولا إدراك مدى أهميتها بشكل جيد. وكثيرًا ما يتساءل المبرمج المبتدئ عن معنى إطار العمل Framework وعن مزايا ومحدويات استخدام أطر العمل Frameworks في عمله البرمجي وعملية البرمجة عمومًا، وهل يتوجب عليه تعلم إطار عمل للغة برمجة محددة، أم أن تعلمه للغة البرمجة نفسها يكفيه في سوق العمل، وهل تعلم إطار العمل صعب ويستغرق وقتًا، ومالفرق بين إطار العمل والمكتبة، وغيرها من الأسئلة من هذا القبيل. فإذا كنت مهتمًا بعرفة الإجابة على كل هذه التساؤلات فتابع قراءة هذا المقال للنهاية. ما هو إطار العمل Framework؟ إطار العمل Framework في البرمجة هو ببساطة آلية يتم من خلالها إعداد وتجهيز كافة الوظائف الضرورية والشائعة التي تستخدم بكثرة عند تطوير التطبيقات والأنظمة وإتاحتها للمبرمج ليستخدمها ويستفيد منها في عمله دون أن يحتاج لإعادة كتابة هذه الوظائف بنفسه من الصفر وبهذا نستنتج أن استخدام إطار العمل يختصر الكثير من الوقت ويجعل العمل البرمجي أكثر كفاءة. لتفهم الأمر بصورة أفضل تخيل أنك تحتاج لكتابة سيرتك الذاتية، سيكون أمامك خياران إما أن تفتح مستندًا فارغًا وتبدأ بكتابة كل شيء وتنسيقه بنفسك من الصفر، أو تعتمد على قالب جاهز للسيرة الذاتية يكون مقسمًا ومنسقًا وكل ما عليك هو ملء البيانات الضرورية الخاصة بك فقط دون أن تشغل بالك بالكثير من التفاصيل الأخرى سيكون الخيار الثاني أفضل وأسرع بالتأكيد. يساعدك إطار العمل في مشروعك البرمجي بطريقة مشابهة فهو يعمل كقالب أو هيكل أساسي عليك الالتزام به لإنشاء التطبيقات الخاصة بك، ويوفر لك مجموعة من الأدوات أو المكونات أو الحلول البرمجية الجاهزة لبناء تطبيقات مخصصة بطريقة آمنة وسريعة ومنظمة. ستجد الكثير من أطر عمل لكل لغات البرمجة الشائعة مثل جافاسكريبت وبايثون و PHP وجافا، ومن أجل استخدام أي إطار منها عليك بداية تعلم كيفية تطوير المشاريع في كل إطار منها والاستفادة من التسهيلات الكثيرة التي توفرها لك هذه الأطر. ما الفرق بين إطار العمل والمكتبة؟ كثيرًا ما يتم الخلط بين مفهوم إطار العمل Framework ومفهوم مشابه له في البرمجة وهو المكتبة Library ورغم التشابه بينهما في طريقة العمل واستخدامهما بالتبادل في بعض الأحيان، إلا أن مفهوم المكتبة أبسط وأكثر محدودية فالمكتبة تركز على توفير وظيفة محددة في حين يوفر إطار العمل مجموعة متكاملة من الميزات التي تمكنك من برمجة تطبيقات في مجال محدد. تُعرَّف المكتبة بأنها عبارة عن مجموعة من التعليمات البرمجية المختبرة القابلة لإعادة الاستخدام والتي تنفذ وظيفة معينة وتحل مشكلة محددة، في حين ينفذ إطار العمل حزمة وظائف متكاملة أو يوفر مخططًا عامًا لبناء التطبيقات في حين لا توفر المكتبات هذه الميزة كما تحدد أطر العمل قواعد وإرشادات كتابة التعليمات البرمجية الخاصة بك وتنظم الملفات والمجلدات الخاصة بمشاريعك، ويمكن أن تتضمن مجموعة من المكتبات وتستخدمها لتنفذ مهام معينة. على سبيل المثال من بين المكتبات الشائعة نذكر مكتبة ريآكت React وهي مكتبة برمجية مبنية بلغة جافاسكربت ومتخصصة في بناء واجهات المستخدم ومكتبة jQuery التي تختصر العديد من الأكواد والتعليمات البرمجية المكررة في جافا سكريبت لتسهيل عملية البرمجة، ومن بين أطر العمل الشائعة نذكر أنجولار Angular وفيو Vue.js وهما إطارا عمل بلغة جافا سكريبت مختصان في تصميم واجهات مواقع الويب. ما الفرق بين إطار العمل ولغة البرمجة؟ يمكن للمطور أن يستخدم لغة البرمجة ويكتب كافة التعليمات البرمجية اللازمة لبناء التطبيقات من الصفر كما يمكنه إن شاء الاستعانة بإطار عمل Framework مخصص لتطوير برامجه وتطبيقاته. ورغم أن استخدام إطار العمل يفيد المطورين ويسرع وتيرة عملهم، إلا أنه يحد من حريتهم في كتابة التعليمات البرمجية ويقيد إمكانيات التطوير ويمكنهم من بناء تطبيقات لأغراض محددة فقط، في حين أن استخدام لغة برمجة يمكنهم من تطوير ما يشاؤون من تطبيقات متنوعة، حتى إطار العمل نفسه تم بناؤه في النهاية بإحدى لغات البرمجة. باختصار لغة البرمجة هي الأساس ومن خلال تعلمها يمكنك بناء ما تشاء من تطبيقات، أما إطار العمل فهو مصمم لنوع محدد من التطبيقات مثل تطبيقات الويب أو تطبيقات الجوال أو تطبيقات علم البيانات أو الذكاء الاصطناعي وإنترنت الأشياء …إلخ ويفضل أن تتعلم استخدامه بعد أن تتعلم البرمجة وتتمكن من أساسياتها. أهمية إطار العمل في البرمجة تبرز أهمية إطار العمل framework بشكل أساسي في كونه يتيح لك إعادة استخدام التعليمات البرمجية بدلًا من إعادة كتابتها من جديد، وفيما يلي جملة من الفوائد التي يمكن أن يوفرها استخدام إطار العمل: يساعد على توفير كود أكثر أمانًا لكونه يتضمن شيفرات تتحقق من المصادقات والصلاحيات وتحمي تطبيقك من الاختراق وتعالج الكثير من الثغرات الأمنية الشائعة مثل CSRF و XSS و SQL Injection. تركيز الجهود على كتابة التعليمات البرمجية الخاصة بالمشروع فقط بدلًا من برمجة وظائف متكررة وشائعة الاستخدام. توحد أنماط وقواعد كتابة التعليمات البرمجية وتوفر مخططًا عامًّا يمكن لكافة الفرق البرمجية فهمه بسهولة. يساعد في تطوير مشروعك وإضافة ميزات جديدة له بسهولة دون الحاجة للتعديل على الكود الأساسي لإطار العمل. يغني عن إعادة اختراع العجلة ويوفر لك الوقت والتكلفة اللازمين لتطوير المشاريع والتطبيقات. يساعد في كتابة كود نظيف وغير مكرر. يسهل عملية اختبار الكود وتصحيح الأخطاء البرمجية. يقلل بالعموم من كمية الأخطاء البرمجية لأنك ستكتب كود أقل وبالتالي ستنتج لديك أخطاء برمجية أقل. محدوديات إطار العمل لا شكَّ أن استخدام إطار العمل يفيدك كمطور ويساعدك على تسريع وتحسين العمل البرمجي، إلا أن الاعتماد على أطر العمل وحدها يفرض عليك بعض القيود وإليك أبرزها: يوفر وظائف محددة ويختص في بناء تطبيقات في مجالات معينة فقط. الاعتماد عليها قد يعيق المبرمج من فهم لغات البرمجة بشكل متعمق وواضح. بعض أطر العمل معقدة ويستغرق تعلمها وفهمها بشكل جيد وتطوير التطبيقات باستخدامها الكثير من الوقت. نحتاج إلى اختيار إطار العمل المناسب للتطبيق فاختيار الإطار غير الملائم قد يؤثر سلبًا على أداء تطبيقاتك وتجربة المستخدمين. تصدر لها تحديثات جديدة بشكل دوري، لذا سيتوجب عليك البقاء على اطلاع دائم على كل جديد ومعرفة كل الميزات الجديدة المضافة للإطار والمميزات التي تم الاستغناء عنها في كل إصدار. توقف تحديث إطار العمل أو تغيره ينعكس على سير عملية تطوير التطبيق المبرمج فيه وأمانه مثلما حصل مع إطار العمل AngularJS عندما قررت غوغل التوقف عن تطويره وإطلاق نسخة عنه مختلفة تمامًا. صفات إطار العمل الجيد تتوافر عشرات أطر العمل في المجالات البرمجية المختلفة الأمر الذي يشعرك بالحيرة في تحديد الإطار الأفضل لمشروعك ويجعلك تتساءل كيف أختار إطار العمل المناسب؟ بالعموم يتصف إطار العمل الجيد بثلاث صفات أساسية وهي: التوثيق الجيد توفير الوظائف المطلوبة لعملك الشهرة والدعم المجتمعي لنوضح بمزيد من التفصيل كل صفة من هذه الصفات وأهميتها في اختيار إطار العمل الأفضل. التوثيق الجيد اختر إطار عمل موثقًا بشكل جيدًا كي تتمكن من العودة إليه عندما تحتاج لمعرفة المزيد من المعلومات حول استخدام ميزة معينة أو حل مشكلة تواجهك في استخدامه، فالتوثيق الجيد يوفر عليك الكثير من الوقت والجهد. توفير الوظائف المطلوبة لعملك ضع في اعتبارك أن لكل إطار عمل حدود معينة لذا من الضروري أن تبحث بشكل جيد في ميزات الإطار الذي تريد اعتماده وتتأكد من أنه يلبي متطلبات مشروعك ويحقق لك كافة الوظائف والميزات التي تحتاج لتحقيقها بالشكل الأنسب، وبنفس الوقت لا تختر إطار عمل شديد التعقيد أو مكتظًا بالميزات التي قد لا تحتاجها على الإطلاق! الشهرة والدعم المجتمعي لاشك أن شهرة إطار العمل ووجود مجتمع داعم له يدل على قوته والطلب الكبير عليه في سوق العمل، لذا احرص على استخدام إطار عمل معروف وله قاعدة مستخدمين نشطة ويفضل بعض المبرمجين الاعتماد على أطر عمل حرة ومفتوحة المصدر وغير مقيدة أو مدعومة من شركات معينة لتخوفهم من انعكاس أي طارئ يحصل لها أو تغير في سياستها على إطار العمل. ولذلك السبب ترى البعض يميل إلى استخدام إطار العمل Vue.js الذي انبثق من أروقة المجتمع الحر بدلًا من إطار العمل Angular الذي ولد بين أروقة شركة غوغل مثلًا، ولكن هنالك طرف مقابل يشير إلى تنظيم وقوة وسرعة تطوير أطر العمل التي تقف خلفهم الشركات نظرًا لدعمهم السخي طويل الآجل عادةً خصوصًا إن وقفت شركات تقنية كبيرة خلفهم والحديث يطول في هذه النقطة وهي خارج موضوع المقال فقط أحببت الإشارة إليها نظرًا لأهميتها في أي نقاش يدور حول المفاضلة بينها. أنواع أطر العمل frameworks في البرمجة هناك عدة أنواع من أطر العمل حيث يختص كل إطار بمجال استخدام معين، وفيما بعض أهم أنواع أطر العمل حسب التطبيقات أو الوظائف التي يؤديها: 1. أطر عمل تطوير الويب Web development frameworks تستخدم هذه الأطر في تطوير تطبيقات الويب ومن أشهرها إطار عمل أنجولار Angular وفيو جي إس Vue.js وهي أطر عمل جافا سكريبت شائعة تستخدم لتطوير الواجهات الأمامية للويب، وإطاري عمل إكسبرس Express و NestJS وهي أطر عمل Node.js لتطوير الواجهات الخلفية للويب، وإطاري عمل جانغو Django وفلاسك Flask وهي أطر عمل مفتوحة المصدر مكتوب بلغة بايثون مخصصة لتطوير الواجهات الخلفية للويب، وإطار عمل Ruby on Rails الذي يوفر لك كل ما تحتاجه لإنشاء تطبيق ويب بسهولة وسرعة وأمان وإطار عمل لارافيل Laravel المبني بالاعتماد على لغة PHP. 2. أطر عمل تطوير الجوال Mobile development frameworks من أشهرها في تطوير تطبيقات الجوال نذكر إطار عمل React Native مفتوح المصدر مكتوب بلغة جافا سكريبت طورته فيسبوك لتطوير تطبيقات جوال متوافقة مع كافة الأنظمة الأساسية، وإطار أيونيك Ionic الذي يستخدم تقنيات الويب HTML و CSS وجافا سكريبت من أجل تطوير تطبيقات الجوال وهو يتكامل مع أطر تطوير الواجهات الأمامية مثل Angular و Vue، وإطار عمل فلاتر Flutter وهو إطار عمل مفتوح المصدر للغة دارت Dart من جوجل لتطوير تطبيقات الجوال وهو يدعم أنظمة iOS و Android ويحتوي على عناصر واجهة مستخدم قابلة للتخصيص بالكامل، وإطار عمل أباتشي كوردوفا Apache Cordova الذي يمكنك من تطوير تطبيقات هجينة للهاتف الجوال. 3. أطر عمل علم البيانات Data science frameworks تعرف هذه الأطر كذلك بأطر التعلم الآلي Machine Learning Frameworks وهي تساعد علماء البيانات على إنشاء نماذج تعلم آلي وتصميمها بشكل أسرع وأسهل واستخراج المعلومات المفيدة من مجموعات البيانات بالاستفادة من تقنيات البرمجة والذكاء الاصطناعي والتعلم الآلي. وهناك العديد من أطر عمل علم البيانات ومن ضمنها scikit-Learn و XGBoost و TensorFlow و PyTorch. 4. أطر إدارة المحتوى Content management frameworks تعرف أيضًا باسم نظم إدارة المحتوى Content Management Systems أو اختصارًا CMS هي برمجيات توفر مكونات قابلة لإعادة الاستخدام لإنشاء وإدارة محتوى الويب وعرضه ضمن مدونات أو مواقع إلكترونية أو تطبيقات جوال وهي توفر ميزات أخرى مثل سهولة الاستخدام وتحسين محركات البحث والأمان. ومن أشهر هذه النظم نذكر نظام ووردبريس WordPress الشهير المستخدم في إنشاء ما يقارب من نصف المواقع الإلكتروني ودروبال Drupal الذي يعد نظام مثالي لتطوير المواقع التي تحتوي على الكثير من المحتوى وهو يتطلب معرفة تقنية أكثر من بقية نظم إدارة المحتوى. 5. أطر عمل أتمتة الاختبار Test Automation frameworks يستخدم مطورو البرمجيات أطر عمل الأتمتة من أجل إنشاء حالات اختبار التطبيقات والتأكد من سير عملها بكفاءة وتوفر لهم أدوات وتوصيات للتحقق من جودة البرمجيات واتباع معايير الترميز المناسبة. من أشهر أطر الاختبار نذكر سيلينيوم Selenium وهو إطار مفتوح المصدر لأتمتة اختبار تطبيقات الويب، وCypress المبني بجافا سكريبت والمخصص لاختبار الواجهة الأمامية لتطبيقات الويب، و Playwright للاختبار الشامل لتطبيقات الويب. هل يمكن البدء باستخدام إطار العمل دون تعلم لغة البرمجة؟ لاشك أن إطار العمل يوفر لك كمطور أداة قيمة لتطوير البرامج التطبيقات المختلفة، لكن السؤال الذي يطرح نفسه هل يغني تعلم أطر العمل واستخدامها في بناء التطبيقات العملية عن تعلم لغات البرمجة وفهمها بشكل متعمق؟ في الواقع حتى لو لم تكن ترغب في تطوير التطبيقات بإحدى لغات البرمجة وتميل للاستفادة من ميزات أحد أطر العمل فلا غنى لك عن تعلم لغة البرمجة وفهم أساسياتها إلى جانب إطار العمل فكلما فهمت لغة البرمجة بشكل أفضل سيسهل عليك فهم أطر العمل. كما أن تعلّم البرمجة يوسع أفق عملك ويمكنك من بناء العديد من التطبيقات في مختلف المجالات، أما إطار العمل فهو مصمم كما ذكرنا سابقًا لغرض واحد فقط وبالتالي سيقيدك بنوع محدد من التطبيقات. ويمكن باختصار أن نلخص الإجابة على هذا السؤال بجملة واحدة: يمكنك استخدام أطر العمل، لكن قبل ذلك تعلم أساسيات لغة البرمجة واتقنها ثم استفد من ميزات إطار العمل الخاص بتلك اللغة كما يحلو لك. الخلاصة تعرفنا اليوم على مفهوم إطار العمل Framework ودوره المهم في توفير الوظائف القياسية وتحديد الخطوط العريضة التي تنظم المشاريع البرمجية وتوفر وقت وجهد المطورين والمبرمجين، واكشتفنا أهم الفروقات بين أطر العمل وبين أدوات تطوير البرامج الأخرى مثل المكتبات ولغات البرمجة، وتعلمنا طريقة اختيار أفضل إطار عمل يناسب متطلباتنا وعددنا أهم صفات إطار العمل الجيد، وأخيرًا استعرضنا قائمة بأهم أطر العمل المستخدمة في مجالات مختلفة كتطبيقات الويب وتطبيقات الجوال وغيرها من المجالات. هل تستخدم في عملك أحد أطر العمل التي وردت في سياق المقال أو أطر عمل أخرى؟ ما هو هذا الإطار وفي أي مجال تستخدمه؟ هل هناك أي مشاكل تواجهها في التعامل مع هذا الإطار أم أنك راضٍ عن أدائه. شاركنا تجربتك في التعليقات أسفل المقال. اقرأ أيضًا تعلم أساسيات البرمجة قواعد البرمجة ببساطة للمبتدئين أسهل لغات البرمجة مهندس البرمجيات من هو وما هي مهامه تعرف على تخصص هندسة البرمجيات