لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 04/07/23 في كل الموقع
-
كيف يُمكن إنشاء مُستخدمين و تقسيمهم حسب صلاحيات مُحددة وتوجيهم لصفحاتهم.... مثلاً إنشاء مُستخدمين لهم دور مدير و مستخدمين لهم دور طبيب ومستخدمين لهم دور ممرض ومرضى في النظام المستخدمين العاديين ... الخ بااستخدام لغة php2 نقاط
-
ماهو الهدف من دورة علوم الحاسوب ؟ وهل هي كافية للبدء بالعمل بعد انهائها ام هي مجرد معلومات واساسيات تساعد لاحقا في اختيار مجال ما للبدء بالبرمجة ؟ شكرا.2 نقاط
-
تلعب برمجة التطبيقات دورًا مهمًا في توفير خدمات وأدوات تساعدنا وتحسن من إنتاجية أعمالنا اليومية سواء على الصعيد الشخصي أو على صعيد الشركات والمؤسسات، فنحن نتعامل يوميًا مع عدد كبير من التطبيقات على حواسبنا وهواتفنا الذكية وغيرها من الأجهزة، وهذه التطبيقات تلبي مختلف متطلبات حياتنا كالبرامج المكتبية ومشغلات الوسائط وتطبيقات المتاجر الإلكترونية ووسائل التواصل الاجتماعي والألعاب وحتى تطبيقات الطبخ والرياضة والبودكاست وغيرها، ولا نستطيع أن نتخيل حياتنا اليوم دونها والفضل يعود إلى تخصص علوم الحاسوب وهندسة البرمجيات -وضمنها البرمجة- المصانع التي تُنتج لنا تلك التطبيقات المختلفة. سنسلط الضوء في مقال اليوم على كل ما يخص مجال برمجة التطبيقات باختلاف أنواعها، ونتعرف على أهم التقنيات والأدوات المستخدمة في تطوير كل نوع من هذه الأنواع، ونختم بأهم النصائح والمصادر المفيدة التي تساعدك في تعلم برمجة التطبيقات بسرعة واحترافية. ما هي التطبيقات؟ التطبيق application أو ما يعرف باسم البرنامج التطبيقي application program أو اختصارًا برنامج program هو نوع خاص من البرامج مصمم ليساعدك على أداء وظيفة محددة ومباشرة بواسطة جهاز الحاسوب أو الجوال أو غيرها من الأجهزة القابلة للبرمجة فهو يُبرمج أساسًا باستخدام حاسوب، وبدون وجود التطبيقات على هذه الأجهزة لن تتمكن من الاستفادة من الحاسوب وعتاده المكون أساسًا من معالج وذاكرة ووحدة تخزين ولن تستطيع أداء المهام والعمليات بالاستعانة بذلك العتاد. على سبيل المثال بدون تطبيقات متصفح الإنترنت على حاسوبك لن تتمكن من البحث عبر الإنترنت وبدون تطبيق المنبه على جوالك لن تتمكن من ضبط ساعة جوالك على تنبيهك في وقت محدد وبدون تطبيقات الشبكات الاجتماعية المختلفة لن يكون بإمكانك تصفح حسابات التواصل الاجتماعي الخاصة بك…إلخ. فلكل مهمة محددة تقوم بها على أجهزتك هناك تطبيق محدد يساعدك. ما الفرق بين البرمجيات وبين التطبيقات والبرامج؟ قد يكون هناك فارق بين مصطلح تطبيق application أو برنامج program المستخدمين غالبًا بشكل متبادل للدلالة على الأمر نفسه وبين مصطلح برمجية software الذي يُطلق أحيانًا على التطبيق وأحيانًا على برمجية مكونة من عدة تطبيقات أو منتج إلكتروني يوفر مجموعة حلول متكاملة مثل نظام التشغيل. كما أن مصطلح برمجيات softwares يستخدم للدالة على الأجزاء غير الملموسة للحاسب ومنها نظام التشغيل وهو معاكس لمصطلح hardware الذي يعني عتاد الحاسب أو الأجزاء المادية الملموسة التي يتكون منها الحاسب. ولمعرفة المزيد من المعلومات حول الفرق بينهما يمكنك مطالعة المناقشة ما هو الفرق بين Software و Hardware وما هي العلاقة بينهما؟. برمجة التطبيقات وسوق العمل تعد برمجة التطبيقات أحد مجالات البرمجة الرائجة والمطلوبة بكثرة في سوق العمل فمعظم الشركات في جميع المجالات تبحث اليوم عن مبرمجي تطبيقات للعمل لديها لبرمجة التطبيقات الخاصة بها أو لصيانة تحسين التطبيقات الجاهزة التي تستخدمها. وقد بين الاستبيان الذي أصدره موقع Stack Overflow الشهير نهاية عام 2022 الذي شارك به آلاف المبرمجين والمطورين حول العالم أن أول أكثر خمس مهن يعمل بها التقنيون حول العالم متعلقة ببرمجة التطبيقات وشملت تطبيقات الويب باختلاف أنواعها كتطوير الواجهة الأمامية أو الخلفية أو التطوير الكامل وتطبيقات سطح المكتب وتطبيقات الجوال وهذا إن دل على شيء فإنما يدل على أهمية هذا التخصص وطلبه المتنامي في سوق العمل. كما أن برمجة التطبيقات تخصص مربح وعالي الأجر فبحسب نفس الاستبيان يمكن أن يصل متوسط الراتب السنوي لمطور التطبيقات في الولايات المتحدة الأمريكية لغاية 68 ألف دولار وهذه الأرقام تتفاوت بالطبع حسب المنطقة الجغرافية وسنوات الخبرة إلا أنها تبقى مرتفعة مقارنة ببقية المهن والوظائف الأخرى، ففي حال قررت التخصص في برمجة التطبيقات على اختلاف أنواعها فستضمن بلا شك الحصول على وظيفة مجزية وتكسب امتيازات وظيفية رائعة وتحقق الأمان الوظيفي. فإذا كنت تحب تخصص البرمجة وكتابة الشيفرات وتملك تفكيرًا إبداعيًا وقدرة على حل المشكلات وتفضل نظام العمل المعتمد على المشاريع أو العمل عن بعد في بيئة عمل مرنة فإن برمجة التطبيقات مسار وظيفي مناسب لك حتمًا لذا لا تضيع وقتك وابدأ بتحديد نوع التطبيقات التي تفضلها وابدأ فورًا بتعلم أدواتها وتقنياتها. أهمية برمجة التطبيقات برمجة التطبيقات واحدة من أهم التخصصات في عالمنا الحديث فلا غنى عنها في عصر التطور التقني الذي نشهده اليوم، وتأتي أهمية التخصص في مجال برمجة التطبيقات من أهمية التطبيقات نفسها والفوائد التي تعود بها على الأفراد والأعمال التجارية على حد سواء. وفيما يلي قائمة ببعض الفوائد التي يمكن أن تعود على الأعمال التجارية من برمجة التطبيقات: تساهم التطبيقات في أتمتة أعمال الشركات وتنظمها وتبسط إجراء الحسابات والمعاملات المعقدة. تساعد برمجة تطبيقات الويب والجوال الشركات على توسيع نطاق عمل الشركات والوصول إلى المستخدمين عبر كافة المنصات ومختلف الأسواق. تساهم التطبيقات المعتمدة على الإنترنت في بناء قناة اتصال فعالة مع العملاء وإطلاعهم على آخر العروض والمستجدات. تحسن التطبيقات تجربة العملاء وتمكنهم من إنجاز معاملاتهم بسرعة وسلاسة ما يساهم بدوره في كسب مزيد من العملاء وزيادة الإيرادات. تساعد التطبيقات في جمع البيانات المختلفة حول العمل وتمكن من تحليل هذه البيانات باستخدام أدوات التحليل المناسبة والحصول على معلومات قيمة لتطوير العمل واستهداف الأسواق المناسبة. خطوات برمجة التطبيقات رغم التنوع الكبير في أنواع التطبيقات وخصائصها إلا أن برمجة التطبيقات تتبع دومًا نفس الخطوات في برمجتها وهذه الخطوات هي كالتالي وضع متطلبات التطبيق: تحدد هذه الخطوة كافة الوظائف والميزات التي تريد تضمينها في التطبيق وتحتاج للمناقشة مع العميل أو صاحب التطبيق لتحديد كافة المواصفات بدقة. تصميم واجهات التطبيق: في هذه الخطوة عليك وضع نماذج أو تصاميم أولية لتطبيقك بالاستعانة ببرامج تصميم واجهات المستخدم UI مثل فيجما Figma أو أدوبي إكس دي Adobe XD. برمجة التطبيق: وهي أهم خطوة ففيها يبدأ العمل الفعلي لتطوير التطبيق وتتم كتابة الأكواد البرمجية التي تحقق تصميم التطبيق ووظائفه التي تم تحديدها في الخطوات السابقة. اختبار التطبيق ونشره: بعد الانتهاء من برمجة التطبيق تبدأ مرحلة اختباره والتأكد من أنه خالي من الأخطاء ويعطي نتائج صحيحة وبعدها يتم نشره وإتاحته للاستخدام من قبل المستخدمين. الفرق بين برمجة التطبيقات وتطوير التطبيقات قد تتساءل عن الفرق بين برمجة التطبيقات وتطوير التطبيقات وهل هما الشيء نفس الشيء؟ الجواب نعم تقريبًا فمصطلح برمجة التطبيقات ومصطلح تطوير التطبيقات يستخدمان بالتبادل ويعنيان في الواقع الأمر ذاته ويشيران إلى عملية تصميم وإنشاء واختبار وتشغيل تطبيقات تلبي احتياجات المستخدمين. وأحيانًا يشير مصطلح تطوير التطبيقات إلى عملية تطوير التطبيق ككل وهي الخطوات السابقة الذي ذكرناها للتو كلها بينما تقتصر برمجة التطبيقات على الخطوة الثالثة فقط لذلك ستجد في مقال تطوير التطبيقات أنه يركز على منهجيات تطوير التطبيقات وطرقها أكثر من تركيزه على الجانب البرمجي ولغات البرمجة. وتجدر الإشارة لأن برمجة التطبيقات لا تشير بشكل محدود إلى تطبيقات الهواتف الذكية فقط بل يشمل على اختلاف أنواعها والتي سنتطرق لها بالتفصيل في فقرتنا التالية. أنواع التطبيقات قبل أن نشرح تقنيات برمجة التطبيقات من المهم معرفة الأنواع المختلفة للتطبيقات التي نحتاج إلى استخدامها فكما هو معروف هناك طيف واسع من التطبيقات المتنوعة التي تعمل على أنظمة ومنصات مختلفة وبرمجة التطبيق ولغات البرمجة والأدوات المستعملة تختلف باختلاف النوع. عند برمجة التطبيقات ستلاحظ أن وجود عدة أنواع من التطبيقات وهي: تطبيقات الحاسوب (سطح المكتب) تطبيقات الويب تطبيقات الجوال والأجهزة المحمولة تطبيقات الأجهزة الملبوسة دعنا نستكشف في فقراتنا التالية مميزات كل نوع من هذه التطبيقات وآلية عملها والفروقات الأساسية فيما بينها وأهم لغات البرمجة والتقنيات المستخدمة في برمجة التطبيقات على اختلاف أنواعها. تطبيقات الحاسوب (سطح المكتب) تعرف تطبيقات البرامج باسم تطبيقات الحاسوب أو الاسم الشائع سطح المكتب -إشارة إلى الحاسوب المكتبي والذي يدخل ضمنه الحاسوب المحمول أيضًا- وهي برامج مصممة للعمل على أجهزة الحاسوب وهي تعمل مع نظام التشغيل مباشرة وتُثبَّت عليه. لذا فإن برمجة تطبيقات سطح المكتب تعني إنشاء برامج مخصصة لأجهزة الحاسوب المكتبية والمحمولة. تستخدم هذه التطبيقات موارد النظام لأداء وظائفها وتخزن كل ملفاتها وبياناتها على الحاسوب نفسه وتعمل بشكل منفصل على أنظمة تشغيل الحواسيب مثل ويندوز Windows ولينكس Linux وماك أو إس macOS حيث يحتوي كل نظام من أنظمة التشغيل هذه على مجموعة أوامر خاصة به للوصول إلى موارد وخدمات الجهاز كما أنها تخزن البيانات بشكل محلي مما يسمح للمستخدمين بالوصول إلى كامل وظائف التطبيق دون الحاجة إلى الاتصال بالإنترنت. تُبرمج هذه التطبيقات لكل نظام تشغيل على حدة مثلًا تطبيق ويندوز وهو ملف ينتهي غالبًا بالامتداد exe. لن يعمل على تطبيق ماك الذي ينتهي بالامتداد app. أو حتى لينكس ولو كان التطبيق نفسه ويحتاج إلى برمجة كاملة من جديد، وأحيانًا يُلجأ إلى أدوات برمجة قادرة على برمجة تطبيق واحد ونشره على مختلف أنظمة التشغيل وهذا ما سنتطرق إليه في قسم البرمجة. توجد أمثلة كثيرة على تطبيقات سطح المكتب تتفاوت فيما بينها من حيث التعقيد والوظائف التي تؤديها، مثل مايكروسوفت أوفيس Microsoft Office والرسام والآلة الحاسبة ومشغل الوسائط ومكافح الفيروسات أمثلة على تطبيقات سطح المكتب كما أن الألعاب تندرج ضمن هذه الفئة فهي في النهاية برامج تؤدي وظيفة معينة وهي اللعب والترفيه. تتطلب بعض تطبيقات سطح المكتب مواصفات وموارد معينة للمعالج أو وحدة معالجة رسومات GPU أو سعة ذاكرة الوصول العشوائي أو إصدار محدد من نظام التشغيل وتوفر مساحة تخزين كافية كي تتمكن من العمل على حاسوبك. ولاستخدام تطبيق سطح المكتب عليك أولًا تنزيل البرنامج المتوافق مع نظام تشغيلك وموارد جهازك على جهاز الحاسوب الخاص بك من المتجر المخصص، فلكل نظام متجره الخاص مثل متجر تطبيقات مايكروسوفت المخصص لنظام ويندوز Windows App Store أو متجر تطبيقات ماك Mac App Store أو تبحث عن الإصدار المناسب لك للتطبيق من داخل موقعه الرسمي ثم تقوم بتثبيت هذا التطبيق على جهازك وبعد اكتمال عملية التثبيت يمكنك تشغيله ولتسهيل العثور على التطبيق وتشغيله بسرعة تضع معظم تطبيقات سطح المكتب أيقونات خاصة بها على سطح المكتب. تطبيقات الويب تطبيق الويب web application أو اختصارًا web app هو برنامج تفاعلي تم إنشاؤه باستخدام تقنيات الويب الأساسية HTML و CSS وجافا سكريبت JavaScript وهو يخزن ملفات التطبيق والبيانات فيه على خادم ويب بعيد ويعالج هذه البيانات. تُشغَّل تطبيقات الويب عبر أحد متصفحات الإنترنت مثل جوجل كروم أو فايرفوكس والانتقال إلى عنوان URL محدد خاص بالتطبيق ويعد محرر مستندات جوجل مثالًا على تطبيق ويب. قد يملك تطبيق الويب بعض القيود على استخدام الموارد مثل قيود على استخدام الكاميرا أو الميكروفون على أجهزة معينة، وقد يمنع من التفاعل مع جوانب معينة من نظام التشغيل مثل منع التطبيق من إرسال الإشعارات هذا لأنه يُشغل ضمن حاوية وسيطة تصله مع نظام التشغيل وهو المتصفح ويحتاج إلى اتصال بالإنترنت على عكس تطبيقات سطح المكتب التي تتواصل مباشرة مع نظام التشغيل ولا تحتاج إلى اتصال إنترنت -عادةً- لذلك فهي أسرع تفاعلًا وأكثر أمانًا. كي تتمكن من برمجة تطبيقات الويب يجب أن تضع بالحسبان أن هذه التطبيقات لها طرفان أو جهتان هما طرف العميل أو ما يعرف بالواجهة الأمامية للتطبيق وهي تتضمن المحتوى الذي تراه عند التفاعل مع تطبيقك مثل القوائم والأزرار والرسوم المتحركة، وطرف الخادم أو ما يعرف بالواجهة الخلفية للتطبيق وهي المسؤولة عن إدارة الخادم وإدارة البيانات عبر قواعد البيانات وتحقيق وظائف الموقع. يمكنك تعلم برمجة الواجهة الأمامية Front-End Developer أو برمجة الواجهة الخلفية Back-End Developer فلكل منهما تقنيات وأدوات مخصصة سنفصلها في الفقرة التالية وفي حال كنت مسؤولًا عن برمجة كل من الواجهة الأمامية والخلفية بذات الوقت سيطلق عليك اسم مطور كامل Full Stack Developer. تطبيقات الويب التقدمية PWAs تطبيقات الويب التقدمية Progressive Web Apps أو اختصارًا PWA ويطلق عليها أيضًا اسم تطبيقات الويب للجوال Mobile web apps هي نوع حديث من تطبيقات الويب طورتها شركة جوجل كي تسمح لتطبيقات الويب بالعمل بطريقة مشابهة لتطبيقات الأجهزة المحمولة إلا أنها تطبيقات تعمل على المتصفح وهي بالأساس تطبيقات ويب مُغلفة بحاوية ويب مخصصة تُسمى على أجهزة الجوال عادة WebView توفر لها هذه الميزات يتم تحميلها فورًا بغض النظر عما إذا كنت متصلاً أو غير متصل بالإنترنت. وهي متوافقة مع كافة أنواع الأجهزة وأنظمة التشغيل ولكنها تسمح بالوصول فقط إلى ميزات النظام الأساسي التي توفرها المتصفحات. يسمح لك بتحميل هذه التطبيقات على المتاجر الرسمية مثل متجر جوجل بلاي ومتجر تطبيقات آبل وتثبيتها على أنظمة التشغيل ويندوز وماك بخلاف تطبيقات الويب العادية، وعند تشغيلها لا يبدو لك أنك في المتصفح بل يبدو أنك تشغل تطبيق جوال أو سطح مكتب عادي ومن الأمثلة على هذا النوع من التطبيقات نذكر Google Office Suite وتويتر لايت Twitter Lite وأوبر Uber و Pinterest …إلخ. وانظر مقال جعل تطبيق الويب التقدمي PWA يبدو كتطبيق أساسي في نظام التشغيل لمزيد من التفاصيل. يمكن لهذه التطبيقات العمل في الخلفية إذا توفر اتصال بالإنترنت من خلال تقنية خاصة تسمى منجز الخدمة service worker وهي تستفيد من ميزة ذاكرة التخزين المؤقت في المتصفحات، وقد بدأ هذا النوع من التطبيقات يلقى رواجًا بين أوساط المستخدمين لا سيما أصحاب الأعمال الصغيرة ورغم ذلك لا يزال دعم نظام التشغيل لهذه التطبيقات محدودًا عند مقارنتها بتطبيقات الأجهزة المحمولة أو سطح المكتب كما أن العديد من الأجهزة والمتصفحات لا تدعم جميع وظائف التطبيقات التقدمية. ولمعرفة المزيد حول تطبيقات الويب التقدمية وفوائدها يمكنك الاطلاع على مقال ما هي تطبيقات الويب التقدمية PWA؟ تطبيقات الجوال والأجهزة المحمولة Mobile Apps تطبيقات الجوال Mobile applications أو ما يعرف اختصارًا بالتطبيقات apps هي تطبيقات مصممة للعمل على الأجهزة المحمولة مثل الهواتف الذكية أو الأجهزة اللوحية ويتم تحميلها من متاجر التطبيقات الرسمية مثل جوجل بلاي Google Play ومتجر تطبيقات آبل App Store التي تضم ملايين التطبيقات المتنوعة التي تخدم كافة الأغراض والاستخدامات مثل تطبيقات شبكات التواصل الاجتماعي والأخبار والألعاب والصحة والرياضة والطبخ والتعليم وغيرها. تتضمن متاجر التطبيقات الرسمية ملايين التطبيقات المتنوعة التي تخدم كافة الأغراض والاستخدامات مثل تطبيقات شبكات التواصل الاجتماعي والأخبار والألعاب والتغذية والرياضة والصحة والتعليم والخرائط والتنقل GPS …إلخ. تقسم تطبيقات الجوال إلى عدة أنواع هي: تطبيقات الجوال الأصيلة Native mobile apps وهي تطبيقات مخصصة للعمل على جهاز محمول معين ولنظام تشغيل معين فقط. تطبيقات الجوال الهجينة Hybrid mobile apps وهي تطبيقات تستخدم تقنيات الويب لبناء تطبيقات الجوال وتعد بمثابة حل وسط بين التطبيقات الأصيلة وتطبيقات الويب. تطبيقات الأجهزة الملبوسة Wearable Devices App هي تطبيقات مخصصة للعمل على الأجهزة القابلة للارتداء وأشهرها الساعات الذكية والنظارات الذكية وكاميرات المراقبة وسماعات الرأس الذكية وتعتمد على تقنية إنترنت الأشياء IoT. شاعت هذه التطبيقات حديثًا بسبب الانتشار الكبير للأجهزة الإلكترونية الذكية القابلة للارتداء وتُصنف أحيانًا ضمن تطبيقات الأجهزة المحمولة لأننا تتشابه نوعًا ما بعملية البرمجة فغالبية أنظمة تشغيل الأجهزة الملبوسة هي آندرويد حاليًا وبعضها له نظام تشغيل خاص مثل المنتجات التي تصدرها شركة آبل وغيرها. لغات برمجة التطبيقات في هذه الفقرة سنوضح أهم التقنيات والأدوات التي تستخدم في برمجة التطبيقات على اختلاف أنواعها فلكل نوع من أنواع التطبيقات التي ذكرناها سابقًا لغات وأدوات برمجية متخصصة. لغات برمجة تطبيقات سطح المكتب كي تتمكن من برمجة تطبيقات سطح المكتب عليك تعلم إحدى لغات البرمجة المتخصصة مثل: #C ++C Objective-C جافا Java بايثون Python روبي Ruby جافا سكريبت JavaScript سويفت Swift جو Go يمكنك برمجة تطبيق سطح مكتب بالكامل من البداية بالاعتماد على إحدى لغات البرمجة فقط كل ما عليك هو تحديد نظام التشغيل الذي تريد تطوير تطبيقك له ثم تختار إحدى لغات البرمجة المناسبة لذلك النظام حيث تعد لغات مثل C++ و C# مفضلة عند برمجة تطبيقات ويندوز، بينما تستخدم Objective-C في برمجة تطبيقات ماك أو إس macOS …إلخ. لكن انتبه إن برمجة التطبيقات بهذه الطريقة قد يستغرق منك وقتًا طويلاً وجهدًا مضاعفًا إن كنت تريد برمجة تطبيق يعمل على نظامي تشغيل مثل ويندوز وماك، لذا يمكنك الاعتماد على خيار آخر وهو تعلم المنصات أو أطر العمل المساعدة التي تسرع من مهمة تطوير تطبيقات سطح المكتب وتحسن عملك من خلال توفير الكثير من العناصر الجاهزة وقد تمكنك من تطوير التطبيقات مرة واحدة متوافقة مع عدة أنظمة تشغيل ومن أبرز هذه المنصات: منصة إلكترون Electron JS وهي منصة مخصصة لتطوير تطبيقات تعمل على أنظمة ويندوز ولينكس وماك باستخدام نفس الكود البرمجي فهي تستخدم تقنيات تطوير الويب لتطوير تطبيقات سطح المكتب، ومن أشهرها تطبيق سلاك Slack و Visual Studio Code. منصة Universal Windows Platform أو اختصارًا UWP وهي منصة متخصصة في برمجة التطبيقات المخصصة للعمل على نظام التشغيل Windows10 و Windows11 تتيح لك تحقيق الدخل من تطبيقك من خلال تقنيات مثل عمليات الشراء والإعلانات داخل التطبيق أو عن طريق تحديد رسوم تنزيل قياسية على متجر تطبيقات مايكروسوفت. إطار عمل Cocoa الذي يستخدم لإنشاء تطبيقات سطح مكتب خاصة بأنظمة التشغيل iOS و OS X و macOS. لغات برمجة تطبيقات الويب هناك مجموعة من المهارات الفنية ولغات البرمجة المطلوبة في برمجة التطبيقات المخصصة للويب وفيما يلي نذكرها لكم حسب تخصص التطوير. لغات برمجة الواجهة الأمامية لتطبيقات الويب تستخدم ثلاث لغات أساسية في تطوير الواجهة الأمامية وهي: لغة HTML لإنشاء بنية موقع الويب لغة CSS لتغيير مظهر موقع الويب لغة جافا سكريبت JavaScript لإضفاء التفاعلية على صفحة الويب. وهناك عدة مكتبات وأطر عمل مساعدة تسهل على المطورين مهمة برمجة وتطوير الواجهات الأمامية لتطبيقات الويب نذكر منها: Next.js المبني على مكتبة React إطار عمل أنغولار Angular إطار عمل فيو Vue هذه أشهرها وهنالك غيرها الكثير. لغات برمجة الواجهة الخلفية لتطبيقات الويب يتضمن تطوير الواجهة الخلفية المهام التي لا يراها المستخدم والتي تعمل على الخوادم وتتعامل مع قواعد البيانات وخيارات تطوير الواجهة الخلفية كثيرة وليس محصورة بلغة برمجة معينة وهذا ما يميزها عن عملية تطوير الواجهات الخلفية لأن عملية البرمجة تعتمد على التواصل مع نظام التشغيل مباشرة وأغلب لغات البرمجة تفعل ذلك (باستثناء لغة جافا سكريبت إلا عبر بيئة Node.js التشغيلية)، لذا الخيار متاح أمامك لاختيار اللغة التي تعرفها أو تحب تعلمها، وكل لغة بطبيعة الحال لها أدوات ومكتبات وأطر عمل مساعدة ولن تكتب كل شيء من الصفر. ومن بين لغات برمجة الواجهات الخلفية لتطبيقات الويب نذكر: لغة بايثون Python مع إطار العمل جانغو Django أو فلاسك flask لغة PHP مع إطار العمل لارافل Laravel الشهير. لغة جافا سكريبت JavaScript مع بيئة Node.js لغة روبي Ruby مع إطار العمل ريلز Rails لغة جافا Java يمكن أيضًا أن تستخدم بشكل فعال في برمجة تطبيقات الويب لغات برمجة تطبيقات الويب التقدمية يتوقع أن تحظى برمجة تطبيقات الويب التقدمية بمستقبل باهر لكونها تطبيقات تعمل على أي متصفح ويب على أجهزة سطح المكتب والأجهزة المحمولة وتستخدم في برمجتها نفس التقنيات المستخدمة في تطوير تطبيقات الويب الأساسية HTML و CSS وجافا سكريبت. ولا تختلف برمجة تطبيقات الويب التقدمية عن برمجة تطبيقات الويب بالعموم فتطبيق الويب التقدمي ليس في نهاية المطاف سوى تطبيق ويب له ضبط مخصص بسيط فقط. عمومًا، ننصحك بالرجوع إلى مقال المدخل الشامل لتعلم تطوير الويب وبرمجة المواقع لتفاصيل أوسع حول هذا المجال. لغات برمجة تطبيقات الجوال والأجهزة المحمولة من أبرز لغات برمجة تطبيقات الجوال الأصيلة نذكر: لغة جافا Java أو كوتلن Kotlin لتطبيقات أندرويد لغة Objective-C أو Swift لتطبيقات iOS لغات C# و C++ وفيجوال بيزك لهواتف ويندوز كما توفر آبل Apple وغوغل Google أيضًا أدوات وحزم تطوير البرمجيات SDK التي يمكن للمطورين استخدامها لإنشاء تطبيقات الأجهزة المحمولة الأصيلة. ومن أجل برمجة تطبيقات الجوال الهجينة يمكنك استخدام لغات HTML و CSS وجافا سكريبت وبمجرد الانتهاء من عملية البرمجة يتم تجميع الكود البرمجي الخاص للاستخدام على Android و iOS أي يتم توفير تطبيق مخصص لكل نظام تشغيل أو منصة محددة تجميع خاص بها. كما يمكنك الاستعانة بأطر عمل مساعدة لبرمجة التطبيقات وتصديرها للعمل على مختلف المنصات مثل فلاتر Flutter و ريآكت نيتف React Native برمجة تطبيقات الأجهزة الملبوسة وكي تتخصص في برمجة تطبيقات الأجهزة الملبوسة عليك بدايةّ تحديد نظام التشغيل للجهاز المستهدف الذي تريد أن تطور له تطبيقك وتحدد لغات البرمجة والتقنيات المتاحة لهذه المنصة وبعدها يمكنك استخدام محاكي لاختبار تطبيقك وتصحيح أخطائه كما يمكنك اختبار تطبيقك على جهاز فعلي باستخدام USB أو Wi-Fi أو Bluetooth لتتمكن من تقييم تجربة المستخدم بشكل أفضل. ومن أبرز تقنيات برمجة التطبيقات المخصصة للأجهزة الملبوسة نذكر لغة سي C و PHP وجافا Java ولغة بايثون Python التي تعتبر لغة مثالية لتطوير تطبيقات إنترنت الأشياء، كما تعد جافا سكريبت JavaScript إحدى لغات البرمجة الأكثر شيوعًا لتطوير أجهزة iOS الملبوسة. وأخيرًا وليس آخرًا وفي هذا الصدد، يمكنك الرجوع إلى مقال برمجة تطبيقات الجوال لمزيد من التفاصيل أو إن أردت التخصص في هذا المجال. كيف أتعلم برمجة التطبيقات إذا كنت تنوي العمل كمبرمج تطبيقات وتتخصص في كتابة الأكواد البرمجية لإنشاء برامج تؤدي مهام محددة بناءً على متطلبات العملاء وصيانة هذه البرامج وتحسينها فلا بد أنك لاحظت مدى التنوع الكبير في هذا المجال وتتساءل كيف أتعلم برمجة التطبيقات في كل هذا الزخم من لغات البرمجة والتقنيات والأدوات؟ بالطبع لا يتوجب عليك تعلم كل هذه التقنيات وإنما عليك أن تركز جهودك بحسب نوع التطبيقات التي ترغب بتطويرها والعمل فيها ويفضل بدايةً أن تُحدد المجال الفرعي ضمن نوع التطبيق نفسه مثلًا في تطبيقات سطح المكتب حدد نظام التشغيل أو في تطبيقات الويب حدد إن كنت تريد التخصص في الواجهات الأمامية أم الخلفية وهكذا لأنه سيسهل عليك تحديد اللغات والتقنيات من البداية ويجنبك الضياع والتشتت. بعد تحديد التخصص بالضبط، يمكنك بدء رحلتك والبحث عن مصادر تعلم إذ سواءً اتبعت المسار الجامعي الذي لا تُدرَّس عملية برمجة التطبيقات بشكل مخصص أو يتم التطرق لأحد أنواعها بسطحية أو كنت تريد تعلم المجال بمفردك، فستحتاج إلى مصادر خارجية ومواد تخصصية وربما تكون هذه الحلقة الأصعب لذلك توفر أكاديمية حسوب العديد من مصادر التعلم المفيدة والمقالات والدروس المجانية لمعظم التقنيات ولغات البرمجة والأطر المنوعة التي ذكرناها في سياق مقالنا. توفر أكاديمية حسوب أيضًا دورات تدريبية متخصصة تساعدك على تعلم برمجة التطبيقات بسرعة من خلال التدرب العملي على برمجة تطبيقات حقيقية مثل دورة تطوير التطبيقات باستخدام جافا سكريبت التي توفر العديد من المسارات التي تعلمك طريقة استخدام تقنيات الويب من أجل برمجة التطبيقات الهجينة مثل تطبيق مشاركة وصفات باستخدام أيونيك Ionic مع React.j وتطبيق طبيبي باستخدام React Native وتطبيق محادثة يشبه واتس أب باستخدام React Native وغيرها من المسارات. كما توفر الأكاديمية دورة تطوير تطبيقات الويب باستخدام لغة Ruby التي تعلمك برمجة تطبيقات الويب وتطوير الواجهات الخلفية باستخدام إطار العمل Rails من بينها تطبيق شبكة اجتماعية وتطبيق مجتمع إلكتروني وغيرها من التطبيقات التي تؤهلك لدخول سوق العمل بسرعة واحترافية. وتقدم الأكاديمية كذلك دورة تطوير التطبيقات باستخدام لغة Python والتي ستتمكن من خلالها من تطوير تطبيق لإدارة المهام و متجر إلكتروني متكامل باستخدام إطار العمل جانغو Django وهو إطار قوي يمكنك من تطوير مواقع الويب وتطبيقات ويب آمنة وسهلة الصيانة بسرعة كبيرة. نصائح لتعلم برمجة التطبيقات دعنا نختم مقالنا الشامل هذا بأهم النصائح والخطوات التي يمكنك اتباعها للبدء في برمجة التطبيقات أيًا كان نوعها: حدد فكرة التطبيق وكافة الميزات التي ستحققها في هذا التطبيق. صمم التطبيق وحدد النماذج الأولية له بمساعدة أدوات مثل Adobe XD و Moqups. اختر لغة البرمجة أو إطار العمل الأنسب لتطوير تطبيقاتك وتحقيق الأهداف المطلوبة منها. 4.استخدم بيئة تطوير متكاملة IDEs تسهل عليك كتابة التعليمات البرمجة وإكمالها وتوفر لك أدوات التصحيح. تعلم استخدام المنصات والأطر التي تسرع من وتيرة عملك وتوفر عليك الكثير من الوقت والجهد. تدرب على برمجة التطبيقات الخاصة بك بشكل عملي ونفذ الميزات واحدة تلو الأخرى وتدرب على حل المشكلات والأخطاء التي تواجهك في عملية التطوير كي تكتسب الخبرة. بعد الانتهاء من برمجة تطبيقاتك احرص على اختبارها جيدًا والتأكد من أن جميع الميزات تعمل كما هو متوقع قبل نشرها بشكل نهائي. الخلاصة بهذا نكون قد وصلنا لنهاية مقالنا الشامل الذي تعرفنا فيه على كل ما يخص مجال برمجة التطبيقات أحد مجالات البرمجة الرائجة والمطلوبة بكثرة في سوق العمل فلا غنى عن التطبيقات على اختلاف أنواعها سواء تطبيقات الويب أو الهاتف المحمول أو سطح المكتب في بيئة الأعمال لذا إذا كنت مهتمًا بالبرمجة والتطوير يمكنك بدء مسارك المهني في تطوير التطبيقات ما يضمن لك فرصة عمل مميزة. وشرحنا كذلك العديد من الطرق المختلفة التي تمكنك من برمجة التطبيقات المتنوعة وتأدية الوظائف المفيدة من خلالها لذا من الضروري أن تحدد بدقة نوع التطبيقات الذي تنوي التخصص فيه كي تكون خطة تعلم واضحة ولا تتشتت بين التقنيات المختلفة. إذا كان لديك أي تساؤل حول تعلم برمجة التطبيقات يسرنا أن تكتبه في التعليقات أسفل المقال، وإذا كنت قد بدأت بالفعل في العمل كمطور تطبيقات فما هو نوع التطبيقات التي تهتم ببرمجتها، وما هي التقنيات التي تستخدمها في عملك؟ يسرنا أن تشاركنا تجربتك ونصائحك. اقرأ أيضًا أسهل لغات البرمجة دليلك الشامل لتعلم البرمجة تعلم البرمجة من الصفر برمجة تطبيقات الأندرويد2 نقاط
-
"أريد تعلم البرمجة لكنني لا أعرف من أين أبدأ!" هذه هي أكثر عبارة تتردد على سمعي من حديثي العهد بالبرمجة، إذ يأتيني هذا السؤال مرارًا وتكرارًا؛ وفي كل مرة أحاول أن أجيب عنه في سياقه، أجد أنني أضيف معلومات جديدة على إجاباتي السابقة، لذا قررت كتابة هذا المقال بعنوان "تعلم البرمجة" لعله يفيد الراغبين في تعلم تطوير التطبيقات في بدء رحلتهم مع تعلم البرمجة من الصفر. جدول المحتويات حرصًا على تنظيم المقالة ولتسهيل الوصول إلى القسم الذي تريده بسهولة، سنذكر هنا جدول المحتويات باختصار: ما هي البرمجة؟ لماذا تتعلم البرمجة؟ ما عليك معرفته لتصبح مبرمجًا الأدوات اللازمة للبدء في تعلم البرمجة لماذا هناك العديد من لغات البرمجة؟ مفاهيم البرمجة مصادر تعلم البرمجة تطوير واجهات المستخدم تطوير الواجهات الخلفية تعلم تطوير تطبيقات الجوال تطوير الألعاب تطوير الأنظمة المدمجة تطوير تطبيقات سطح المكتب كيفية اختيار لغة البرمجة التي تناسبك نصائح لتعلم البرمجة ما هي البرمجة؟ البرمجة هي عملية تقسيم مهمة معينة يراد تنفيذها عبر الحاسوب إلى أجزاء صغيرة ومترابطة وقابلة للتنفيذ بأوامر بسيطة. بعد ذلك، تجري كتابة هذه الأوامر والتعليمات بإحدى لغات البرمجة، والتي هي وسيلة للتخاطب مع الحاسوب. إليك المثال العملي التالي الذي يشرح ماهية البرمجة: إن كنت تتوقع زيارة صديق لك اليوم، واتصل بك ليقول لك: "أنا واقف بجانب الحديقة ولا أعرف كيف أصل إلى منزلك". أنت عادةً تمر كل يوم من جانب الحديقة وتعرف الطريق بينها وبين منزلك شبرًا بشبر. برأيك هل ينفع إن قلت له: "منزلي معروف وقريب من الحديقة وأنا كل يوم أمر من جانبها"؟ لا، بالتأكيد. تحتاج إلى أن تقسِّم المشكلة إلى أجزاء تمثل خطوات بسيطة يستطيع صديقك فهمها وتنفيذها. مثلًا، أخبره أن ينفذ الأوامر التالية: "سر إلى الأمام عشرة أمتار" ثم "اتجه إلى اليمين" ثم "سر إلى نهاية الشارع" ثم "اتجه إلى اليسار". أخبره بعد ذلك: "عُدَّ الأبنية الموجودة على اليسار حتى تصل إلى البناء الرابع" ثم "اصعد إلى الطابق الثاني" ثم "اطرق على الباب الذي سيظهر أمامك". مبارك! بهذه الطريقة، تستطيع أن تدل صديقك على منزلك بدقة. البرمجة هي الشيء نفسه تمامًا. فهل ترى التعابير المكتوبة بين علامتي الاقتباس؟ إنها التعابير التي تكتب بإحدى لغات البرمجة والتي تخاطب الحاسوب بدلًا من صديقك السابق. لغات البرمجة هي مجموعة من المفردات والقواعد اللغوية التي تشكل لغةً وسيطةً للتخاطب مع الحاسوب وأمره بتنفيذ تعليمات وأشياء محدَّدة. فلا الحاسوب يفهم لغة البشر ولا البشر يفهمون لغة الحاسوب، لذا كان هنالك حاجة ملحة لوجود لغة وسيطة يفهمها كلاهما؛ نتيجةً لذلك، انبثق مفهوم لغة البرمجة. بعبارة أخرى، لو أردنا أن نقول للحاسوب "افعل كذا"، فسنحتاج إلى لغةٍ مشتركةٍ بيننا وبينه ليفهم ما نبتغيه، وهنا يأتي دور لغات البرمجة، إذ يمكنك أن تعدّ لغات البرمجة على أنها وسيط بين المبرمج والحاسوب. يهتم المبرمج بالتفكير في تسلسل الخطوات التي على الحاسوب القيام بها لإتمام العمل المطلوب منه (مثل حساب العمر اعتمادًا على تاريخ الولادة)، ثم كتابة هذه الخطوات بترتيب منطقي بإحدى لغات البرمجة. ربما لاحظتَ في الجملة السابقة أن جزءًا من مهمة المبرمج هو التفكير المنطقي، وهذا يجعلنا ننتقل إلى السؤال الشائع "هل أستطيع تعلم البرمجة وأصبح مبرمجًا؟" أو "هل أنا مؤهل لأصبح مبرمجًا؟". لماذا تتعلم البرمجة؟ يبدو أن تعلم البرمجة من الصفر ليس بالصعوبة التي توقعتها، لكنك تريد حافزًا يجعلك تتعلم البرمجة. تسمع كثيرًا أن البرمجة هي مجال المستقبل، وأن وظائف المبرمجين ستكتسح مجال التوظيف في السنوات القادمة؟ أستطيع أن أؤكد لك ذلك، كما أنَّ وظائف البرمجة هي من أعلى الوظائف دخلًا. فلو كنت تريد بدء مشوارك الاحترافي وتريد عملًا مستقرًا وذا دخلٍ ممتاز، فإن تعلم البرمجة والعمل بها هو أفضل خيارٍ أمامك. وظائف البرمجة مريحة عمومًا، فالعمل كله مكتبي أمام حاسوب في بيئة مريحة ومناسبة، وأغلبية الشركات تتبع نظام العمل 40 ساعة في الأسبوع (أي 5 أيام لمدة 8 ساعات يوميًا)، ولا تغفل عن قدرتك على العمل عن بعد من خلال الانترنت أو كمستقل في أوقات فراغك. تعلم البرمجة سيوسع أفق تفكيرك كثيرًا، خصوصًا أن تعاملك مع الحاسوب يتبع إلى التفكير المنطقي، وستجد أن البرمجة ستسهل لك القيام بأمور أخرى في الحاسوب. ما عليك معرفته لتصبح مبرمجًا يتردد الكثيرون في تعلم البرمجة متذرعين بأن مستواهم في الرياضيات ليس ممتازًا، وهذا ليس صحيحًا، فصحيحٌ أنَّ هنالك أمور تعترضك أثناء أداء عملك كمبرمج تتطلب خبرة في الرياضيات، إلا أنَّه قد تمر عليك فترات طويلة لا تحتاج فيها إلى مسائل رياضية. كل ما يلزمك للبدء في تعلم البرمجة هو الأساسيات التي يعرفها الجميع. إلى حين اعتراضك أية مسألة أو مشكلة تتطلب مهارة في الرياضيات، هنالك الكثير من المصادر والمراجع التي تستطيع الرجوع إليها آنذاك. بعبارة أخرى، أجِّل هذا الأمر قليلًا ولا تخف. الأهم من ذلك هو أن تكون قادرًا على التفكير بشكل منطقي. التفكير المنطقي التفكير المنطقي هو المهارة التي تجمع كافة المبرمجين تحت مظلة واحدة، وهي أساس كتابة الخوارزميات، إذ يجب أن تكون قادرًا على اكتساب هذه المهارة وتطويرها. الخوارزميات كلمة "الخوارزميات" هي الكلمة المرعبة التي ينفر منها البعض، فكل ما يتخيلونه عند ذكرها هو الرياضيات المعقدة والمعادلات الطويلة والرموز العجيبة، لكن الأمر بسيط جدًا؛ فالخوازرميات هي تطبيقٌ للتفكير المنطقي في خطوات متسلسلة واضحة تمامًا لحل مشكلة ما. لكي أوضِّح لك أن الخوارزميات ليست أمرًا معقدًا، سأخبرك بكيفية كتابة برنامج يسأل المستخدم عن سنة ميلاده، ثم يعيد عمره الحالي بالسنوات. الخطوة الأولى: إظهار رسالة نصية نطلب فيها من المستخدم إدخال تاريخ ميلاده. الخطوة الثانية: تخزين سنة الميلاد التي أدخلها المستخدم. الخطوة الثالثة: الحصول على السنة الحالية. الخطوة الرابعة: طرح مدخلات المستخدم من السنة الحالية. الخطوة الخامسة والأخيرة: إظهار الناتج. ما سبق هو خوارزمية بسيطة تتألف من خطوات متسلسلة، لكن إذا أمعنّا النظر فيها سنجد خللًا في حال أدخل المستخدم تاريخًا أكبر من التاريخ الحالي، أي لو أدخل 2050 مثلًا بدلًا من 1995. عندها سيصبح العمر المعاد من الخوارزمية سالبًا، ويمكننا أن نحل هذه الإشكالية منطقيًا بوضع شرط يمنع المستخدم من إدخال تاريخ أكبر من التاريخ الحالي. إطارات العمل كلمة أخرى شائعة جدًا في عالم البرمجة هي "إطارات العمل" frameworks، إطارات العمل هي مجموعة من الشيفرات البرمجية التي تسهل على المبرمج إنشاء التطبيقات، بتوفير وحدات جاهزة تقدم خدمات متنوعة مثل تسجيل المستخدمين، وإرسال البريد الإلكتروني، والتعامل مع قواعد البيانات. أي يمكنك أن تعدّها أدوات برمجية تساعدك في برمجة تطبيقك وتسهِّل لك فعل ذلك. الأدوات اللازمة للبدء في تعلم البرمجة تحتاج إلى حاسوبٍ بمواصفات جيدة (ليس من الضروري أن يكون من أفضل الحواسيب، وإنما أن يمتلك مقدارًا جيدًا من الذاكرة العشوائية). لا ننصح بمواصفات معينة أو نظام تشغيل معين، استعمل ما يحلو لك وما ترى نفسك معتادًا عليه (سواءً كان ويندوز أو لينكس أو ماك). ستحتاج أيضًا إلى اتصالٍ جيد بالإنترنت للوصول إلى المواد التعليمية، ولتنزيل البرمجيات والمكتبات اللازمة للتطوير. أما بخصوص أدوات التطوير، فستحتاج إلى برمجية لكتابة الشيفرات، وهنالك نوعان رئيسيان لها: المحررات النصية: مثل Visual Studio Code أو Atom أو Sublime Text أو Bracktes أو Notepad++. وهذه المحررات النصية تكون بسيطة في أغلبها، وتوفر ميزات أساسية مثل تلوين الشيفرات، وبعض ميزات الإكمال التلقائي، وتدعم أغلبيتها إضافات لزيادة وظائفها. وظيفة هذه المحررات النصية عمومًا هي تعديل الشيفرات بسهولة وسرعة. ننصحك بتجربة Visual Studio Code لشهرته حاليًا وكثرة إضافاته ودعمه الممتاز من شركة Microsoft. بيئات التطوير المدمجة: مثل Visual Studio و Eclipse و Android Studio و NetBeans و Apple Xcode وغيرها. وهذه البيئات توفر ميزات أكثر بكثير من المحررات النصية، مثل تشغيل الشيفرات وتنقيحها (debugging) وميزات التحكم بالإصدارات (version control) والاتصال بقواعد البيانات وخلاف ذلك. لماذا هناك العديد من لغات البرمجة؟ قد تتساءل، لماذا هناك العديد من لغات البرمجة؟ أليست هذه اللغات كلها تنفذ الهدف ذاته؟ لماذا لا يكون هنالك لغة موحدة بين المبرمجين والحاسوب؟ الحقيقة أنّه توجد لغة برمجة واحدة ولكن ليست إحدى اللغات التي تراها أمامك في الصورة. اللغة التي نشير إليها هي لغة الآلة التي يستطيع معالج الحاسوب قراءتها وفهمها. أتتساءل ما هي لغة الآلة وكيف تبدو؟ إليك مقطعًا منها: معلومٌ أنّ معالج الحاسوب لا يفهم شيئًا سوى الأصفار والواحدات، وهذه اللغة -أي لغة الآلة- هي تمثيل للأصفار والواحدات بطريقة تخبر الحاسوب بما يجب عليه فعله. الجدير بالذكر أن هذه اللغة عصية الفهم على البشر، وحتى إن استطعت كتابة شيفرة مثل الشيفرة الموضحة بالصورة (كما في السنوات الأولى من بداية اختراع الحاسوب)، لن يفهمها الآخرون ولن يستطيع أحد التعديل على الشيفرة وتطويرها لاحقًا باستثنائك. سعيًا لإيجاد لغة قريبة من لغة البشر، انقسمت لغات البرمجية إلى قسمين: لغات البرمجة منخفضة المستوى، ولغات البرمجة عالية المستوى وذلك تبعًا لمدى قربها من لغة الآلة أو لغة البشر على التوالي. أي أنّ لغات البرمجة منخفضة المستوى هي اللغات الأقرب للغة الآلة آنفة الذكر مثل لغة التجميع Assembly language، ولغات البرمجة عالية المستوى هي اللغات الأقرب للغة البشر مثل لغة بايثون وجافا. تنفيذ البرامج المكتوبة بلغات برمجة عالية المستوى يقودنا الحديث عن اللغات عالية المستوى واللغات منخفضة المستوى إلى الحديث عن كيفية تنفيذ المعالج للشيفرة المكتوبة بلغة عالية المستوى لا يفهمها المعالج (أليس هذا ما تفكر به الآن؟). عرفنا أن المعالج يفهم الأوامر والتعليمات المكتوبة بلغة منخفضة المستوى (لغة الآلة)، فمَثَلُ هذه العملية كمَثَلِ شخصٍ أجنبي تعلم اللغة العربية وبدأ التحدث مع ناطقٍ باللغة العربية، إذ يمكن لهما التواصل مباشرةً - ليخبر كل منها ما يريد من الآخر فعله - دون وسيط. أمَّا مَثَلُ كتابة برنامج بلغة عالية المستوى أقرب إلى لغة البشر والطلب من الحاسوب تنفيذه كمثل ناطق باللغة الهندية يريد التخاطب مع ناطق باللغة العربية دون أن يفقه أحدهما لغة الآخر. في هذه الحالة، لن يستطيع أحدهما فهم ما يتكلم به الآخر وستفشل عملية التواصل. قد تقول: لماذا لا يحضران مترجمًا يترجم ما يقوله كل منها للآخر؟ حسنًا، هذا ما يحصل تمامًا عندما يراد تنفيذ برنامج بلغة لا يفهمها معالج الحاسوب. في اللغات البشرية، هنالك نوع واحد من المترجمين يعرفه الجميع للترجمة من لغة إلى آخرى؛ أما في لغات البرمجة، هنالك نوعان من المترجمين بين اللغات هما: المفسر interpreter، والمترجم compiler. بناءً على ذلك، تنقسم لغات البرمجة إلى لغات مفسرة ولغات مترجمة. (من الآن وصاعدًا، كلما ذكرنا لغات البرمجة، فنحن نشير إلى لغات البرمجة عالية المستوى.) -المفسر (interpreter): وهو برنامج خاصٌ يفسِّر الشيفرة المصدرية لبرنامج مكتوب بلغة عالية المستوى سطرًا بسطر ويحولها إلى لغة منخفضة المستوى لينفذها الحاسوب مباشرةً. -المترجم (compiler): وهو برنامج خاصٌ يحوِّل الملفات المصدرية لبرنامج مكتوب بلغة عالية المستوى إلى ملف تنفيذي مكتوب بلغة الآلة دفعةً واحدةً، ثم يمكن تشغيل الملف التنفيذي على الحاسوب للقيام بالمهمة المطلوبة. لماذا يوجد الكثير من لغات البرمجة عالية المستوى؟ الآن وبعد أن عرفت الفرق بين لغة الآلة ولغة البشر، لربّما ما زلت تتساءل عن كثرة اللغات البرمجية عالية المستوى المتوافرة وعدم وجود لغة واحدة. نستطيع القول أنك خطوت خطوةً جيدةً للأمام إذ أصبحت الآن أكثر دقة. جواب سؤلك هو أنّ كل لغات البرمجة تُستخدم لتحويل فكرة منطقية إلى سلسلة أوامر يمكن للحاسوب أن ينفذها. فعلى سبيل المثال لا الحصر يمكنك استخدام أي من Ruby أو Java أو Python أو C# أو Go أو JavaScript لبناء موقع ويب. لكن يمكنك أن تعدّ لغات البرمجة على أنها أدوات، وكل أداة تسهّل مهمة دونًا عن أخرى. فعلى سبيل المثال، السيارة والحافلة والدراجة والمحراث الزراعي كلها وسائط نقل، لكنها مختلفة الاستخدام؛ فلا يمكنك أن تذهب وعائلتك لقضاء إجازة صيفية مستخدمين المحراث الزراعي، كما لا يمكنك استخدام سيارة سباق في مدينة مكتظة ذات شوارع ضيقة للذهاب بها إلى العمل. مع أن آلية عمل هذه المركبات متشابهة. والأمر سيانٌ بالنسبة إلى البرمجة. خلاصة القول أنّ هنالك لغات برمجة متخصصة بإنشاء تطبيقات سطح المكتب، وأخرى متخصصة بإنشاء تطبيقات الجوال، وأخرى تستعمل خصيصًا لمواقع الويب، وأخرى لبرمجة العتاد، وهذا ما يحيلنا إلى الحديث عن مجالات البرمجة واللغات الأنسب لكلٍ منها. مفاهيم البرمجة "حسنًا، اقتنعتُ أن البرمجة مناسبة لي وليست صعبة كما كنتُ أتخيل، من أين أبدأ طريقي في تعلم البرمجة إذًا؟" قبل الإجابة عن السؤال السابق، سآخذ وقتي لأشرح لك بعض المفاهيم الخاصة بالبرمجة، ثم سنتحدث عن مجالات العمل فيها وما المسار الأفضل لتعلمك كلًا منها. أنت تعلم أن البرنامج هو سلسلة أوامر ينفذها الحاسوب لحل مشكلة ما، والبرنامج نفسه مكتوب بلغة يفهمها الحاسوب تسمى لغة الآلة. من الأمور الملحوظة التركيز كثيرًا على لغة البرمجة ذاتها أثناء بداية تعلم البرمجة. سأخبرك حقيقةً صادمةً: "لغة البرمجة التي تستعملها ليست بتلك الأهمية التي تتوقعها"، أنا لا أقول لك أن جميع لغات البرمجة متماثلة أو تُستعمل لنفس الاستعمالات، لكن لا تركِّز كثيرًا على تعلم كيفية الكتابة في لغة برمجة ما وتهمل المفاهيم البرمجية التي تقف وراءها. المتغيرات والثوابت عليك أن تتعرف على مفهوم المتغيرات variables المستعمل في جميع لغات البرمجة، والذي يعني إسناد قيمة ما إلى رمز أو كلمة وتخزين هذه القيمة في الذاكرة. فلو أردنا أن نخزن العبارة "Hello World" في متغير ما فنكتب شيئًا شبيهًا بما يلي: var variable_name = "Hello World"; أي أننا نسند الجزء الموجود على يمين إشارة المساواة إلى المتغير المذكور على يسار إشارة المساواة. يمكننا أن نستنتج من اسم "المتغيرات" أن قيمتها قابلة للتغيير خلال تنفيذ البرنامج، فيمكننا في مكانٍ ما من الملف المصدري أن نعيد تعريف المتغير السابق بكتابة: var variable_name = "New value"; أما الثوابت فهي تتشابه مع المتغيرات في كثيرٍ من النواحي، إلا أنك لا تستطيع إعادة تعريف قيمتها بعد تعريفها أول مرة. قد تستفيد من الثوابت عندما تكون متأكدًا تمامًا من عدم تغيير القيمة خلال فترة تنفيذ البرنامج. فلو أردنا تعريف ثابت اسمه pi يحتوي على القيمة 3.14 (والتي سنعرف أنها لن تتغير مطلقًا)، فيمكننا أن نكتب: const pi = 3.14; وإذا حاولتَ تغيير قيمة الثابت بعد تعريفه فستحصل على رسالة خطأ. الشروط تدعم جميع لغات البرمجة تعريف شروط تُنفَّذ في حالات معينة. ففي الخوازرمية السابقة التي شرحنا فيها حساب العمر، يمكننا أن نكتب الشرط بالعربية كما يلي: إذا كان (تاريخ الميلاد أكبر من التاريخ الحالي): نقول للمستخدم أن هنالك خطأ وإلا: سنحسب العمر بطرح تاريخ الميلاد من التاريخ الحالي وإذا أردنا كتابتها بإحدى لغات البرمجة فستبدو شبيهةً بما يلي: if ( user_birth > current_year ) { // ERROR! } else { age = current_year - user_birth; } لا تلقِ للأقواس بالًا، فهي جزء من لغة البرمجة، وقد تختلف من لغة لأخرى، وليست موضع اهتمامنا حاليًا. حلقات التكرار ماذا لو كانت لدينا قاعدة بيانات فيها أكثر من مستخدم ولكل مستخدم تاريخ ميلاد. لا تقل لي سنأخذ التواريخ يدويًا وندخلها إلى البرنامج! هذا مضيعةٌ للوقت، والصواب هو إنشاء حلقة تكرار تأخذ قيمة تاريخ الميلاد الخاص بكل مستخدم ثم تحسب عمره كما أسلفنا في القسم السابق. دعنا نعدل الخوارزمية البسيطة لنضيف تكرارًا فيها: ما أجمل البرمجة! تخيل لو كان عندك ألف مستخدم، وكان عليك حساب أعمارهم، يمكنك بضغطة زر أن تحسبها كلها. الدوال الدالة function هي مجموعة من التعليمات البرمجية التي تقبل مدخلات وتعيد القيمة المطلوبة. تكون الدوال عادةً قصيرةً وتقوم بمهمة وحيدة فقط. فمثلًا لو أردنا تعريف دالة باسم divide تقبل عددين، وتعيد ناتج قسمة العدد الكبير على الصغير، فيمكننا أن نكتب الخورزمية الآتية: مصادر تعلم البرمجة للمبتدئين أول ما سيتبادر إلى ذهنك بعد قرارك تعلم البرمجة هو من أين سأتعلم؟ هنا يأتي دور القسم التعليمي المتكامل في حسوب ليقدم للمبتدئ (والمحترف على حدٍ سواء) محتوى علمي مميز ومبسط. تزخر أكاديمية حسوب بالمحتوى المفيد عن تعلم البرمجة للمبتدئين وحتى الخبراء أي على كافة المستويات، ستجد فيها أقسامًا تشرح لغات البرمجة وتقنياتها كلها. ولدينا قسم للأسئلة البرمجية التي يمكنك أن تطرح فيه سؤالك وسيجيب عليه أحد أفراد مجتمع أكاديمية حسوب. أضف إلى ذلك أن الأكاديمية توفر قسمًا للدورات المتخصصة التي تبدأ معك من الصفر وحتى احتراف لغة البرمجة التي تريد تعلمها مع كادر من المدربين المختصين الذي يقدمون لك المساعدة ويجيبون عن جميع استفساراتك. وهنالك قناة للأكاديمية على يوتيوب ننشر فيها دوريًا دروسًا قصيرةً عن تساؤلات محددة ومفاهيم البرمجة وخلافه. لا تنسَ الاشتراك في قناة الأكاديمية لتصلك الفيديوهات الجديدة. ماذا لو أردتَ التعمق أكثر في لغة معيّنة؟ تأتي هنا موسوعة حسوب التي توفِّر توثيقًا عربيًا كاملًا وعالي الجودة، مدعّمًا بالأمثلة لمختلف لغات البرمجة وتقنيات تطوير الويب والجوال. ستكون الموسوعة مرجعًا تعود إليه في مسيرتك البرمجية، وتستعين بها لمعرفة التفاصيل الدقيقة عن لغات البرمجة. فأنت لست مضطرًا لحفظ كل شيء في لغة البرمجة، إذ حتى المبرمجون المختصون ذوو الخبرة يعودون إلى التوثيقات بين الفينة والأخرى أثناء عملهم. لننطلق الآن للتحدث عن مجالات البرمجة الأساسية وما اللغات والتقنيات المستعملة فيها. تطوير واجهات المستخدم يبدأ أغلبية المطورين مشوارهم من خلال تعلم تطوير واجهات المستخدم عند اتخاذ قرارهم لدخول مجال تطوير وبرمجة مواقع الويب، وذلك لسهولة اللغات المستعملة في هذا المجال. هدف هذا المجال هو تطوير صفحات الويب التي تعرض محتوى مختلف مواقع الويب، وهي الصفحات التي تراها عند زيارتك لموقع أكاديمية حسوب أو موسوعة حسوب أو مستقل أو أي موقع آخر. تتألف صفحة الويب من مجموعة من المكونات، وتُكتَب هذه المكونات باستخدام لغة HTML، وبعد كتابة البنية الهيكلية للصفحة سنأتي على تنسيقها باستخدام لغة CSS، وهي اللغة المستعملة لإضفاء شكل وهيئة على عناصر HTML. أي أن عناصر HTML تصف محتوى الصفحة (مثل الترويسات والقوائم والمحتوى الرئيسي والفقرات والروابط والصور والفيدوهات)، وقواعد CSS تُعرِّف كيف يجب أن تبدو هذه العناصر (سواءً من ناحية الألوان أو المساحات أو الخلفيات أو الخطوط أو خلاف ذلك). تأتي لغة JavaScript مكملةً لهما وتستعمل لإعطاء بعض عناصر الصفحة صفاتٍ تفاعلية، مثل شريط متحرك من الصور أو قوائم تظهر عند وقوع حدث معيّن …إلخ. هنالك تقنيات كثيرة تستعمل في تسهيل إنشاء الواجهات الأمامية وسنذكر بعضها: إطار Bootstrap لتسهيل تنسيق عناصر الصفحة. مكتبة jQuery لتسهيل التعامل مع عناصر الصفحة باستخدام JavaScript. مكتبة React JS: لتسهيل تطوير واجهات المستخدم بالاعتماد على مكونات قابلة لإعادة الاستخدام. لغة Sass لإنشاء ملفات CSS بسرعة وسلاسة. أدوات بناء مثل Webpack الذي يسهِّل تحويل الملفات المصدرية للتطبيق إلى النسخة النهائية التي ستعرَض للمستخدم. لتعلم تطوير واجهات المستخدم، ننصحك بالتسجيل في دورة تطوير واجهات المستخدم المقدمة من أكاديمية حسوب، والتي تحتوي على أكثر من 72 ساعة فيديو تتوزع على ثمانية مسارات تعليمية تشرح أمثلة عملية تطبيقية شرحًا مفصلًا. أثناء مشاهدتك للدورة، يمكنك أن تعود إلى موسوعة حسوب لتتعرف على توثيق لغات البرمجة المذكورة، وذلك للاطلاع على تفاصيل وأمثلة أكثر عن كل جزئية من الجزئيات المشروحة في دورة تطوير واجهات المستخدم. اللغات والتقنيات المستخدمة في تطوير واجهات المستخدم: HTML و CSS و JavaScript و Bootstrap و Sass و jQuery و Webpack. تطوير الواجهات الخلفية قد تتساءل: ماذا يعني تطوير الواجهات الخلفية (backend)؟ وما الفرق بينه وبين تطوير واجهات المستخدم (frontend)؟ الفرق بينهما هو أن الواجهات الخلفية هي البرمجيات التي تُنفَّذ على الخوادم وتجري عمليات عليها مثل التعامل مع قواعد البيانات والملفات والخدمات الخارجية، أما واجهات المستخدم فهي الصفحات التي تظهر على شاشة الزائر في متصفحه. سأطرح عليك الخيارات المتاحة أمامك للبدء في مجال تطوير الواجهات الخلفية، وجميع اللغات المذكورة هنا هي لغات ناجحة وقوية ولا يهم أي لغة تختار منها، المهم أن تتطلع على شيفرات بسيطة من كل لغة وتتخذ قرار تعلمها، واحذر من تضييع وقتك في التنقل بين لغات البرمجة والبحث عن أفضلها، فكلُ لغةٍ ممتازةٌ في مجالها. تعلم البرمجة باستخدام لغة PHP بعد تبيان الفرق بين واجهات المستخدم والواجهات الخلفية، يمكن القول بأن أشهر لغة لتطوير الواجهات الخلفية هي لغة PHP، وتتفوق على اللغات المنافسة لها أضعافًا مضاعفة. تعلم البرمجة بلغة PHP أمر سلس، فهي لغة سهلة التعلم وبسيطة الشكل، والمجتمع حولها كبير وتطويرها مستمر. هذه اللغة هي خيار استراتيجي لمن يريد الدخول إلى مجال تطوير الواجهات الخلفية. هنالك عدد من البرمجيات المكتوبة بلغة PHP مثل ووردبريس WordPress ودروبال Drupal وميدياويكي MediaWiki (التي تشغِّل ويكيبيديا وموسوعة حسوب) وغيرها الكثير؛ إضافةً إلى عددٍ كبير من إطارات العمل مثل Laravel و CodeIgniter و Symfony و CakePHP و Yii وغيرها، وهذا ما يدل على إمكانيات اللغة الكبيرة والمجتمع الكبير الذي يحيط بها. لتعلم تطوير الواجهات الخلفية باستخدام PHP، ننصحك بالتسجيل في دورة تطوير تطبيقات الويب باستخدام PHP المقدمة من أكاديمية حسوب، والتي تحتوي على 75 ساعة فيديو تتوزع على اثني عشر مسارًا تعليميًا تبدأ بأساسيات لغة البرمجة PHP للمبتدئين، مرورًا بشرح أمثلة عملية تطبيقية بالتفصيل، ووصولًا لتطوير التطبيقات باستخدام إطار العمل Laravel، وشرح تطوير ووردبريس. أثناء مشاهدتك للدورة، يمكنك أن تعود إلى موسوعة حسوب للاطلاع على توثيق لغة PHP وإطار العمل Laravel. اللغات والتقنيات المستخدمة في تطوير تطبيقات الويب باستخدام PHP هي: PHP و Laravel وقواعد البيانات (مثل MySQL و PostgreSQL وغيرها). تعلم البرمجة باستخدام لغة روبي - Ruby إذا كنتَ تبحث عن لغةٍ أنيقة وسهلة الاستعمال فستجد ضالتك في لغة روبي Ruby فهي من أجمل اللغات وأسلسها كتابةً، وهي لغة برمجة عامة يمكن استخدامها لتطوير مختلف أنواع التطبيقات ومن ضمنها تطوير تطبيقات الويب. ذاع صيت روبي في تطوير الويب بعد نشر إطار العمل Ruby on Rails (يشار إليه اختصارًا "ريلز"). هنالك إطارات عمل أخرى مثل سيناترا Sinatra لكن يبقى ريلز أشهرها. لتعلم تطوير الواجهات الخلفية باستخدام روبي، ننصحك بالتسجيل في دورة تطوير تطبيقات الويب باستخدام روبي المقدمة من أكاديمية حسوب، والتي تحتوي على 20 ساعة فيديو تتوزع على أربعة مسارات تعليمية تشرح أمثلة عملية تطبيقية شرحًا مفصلًا، وتشرح تطوير التطبيقات باستخدام إطار العمل ريلز. أثناء مشاهدتك للدورة، يمكنك أن تعود إلى موسوعة حسوب للاطلاع على توثيق لغة روبي وإطار العمل ريلز. اللغات والتقنيات المستخدمة في تطوير تطبيقات الويب باستخدام روبي: روبي و ريلز وقواعد البيانات (مثل MySQL و PostgreSQL وغيرها). تعلم البرمجة باستخدام لغة جافا سكربت - JavaScript نعم! تستعمل JavaScript في تطوير الواجهات الخلفية أيضًا. الفضل يعود لبيئة Node.js التي تسمح للمطورين باستخدام JavaScript لكتابة برمجيات تعمل من جهة الخادم وذلك لتوليد صفحات ويب ديناميكية قبل إرسالها إلى المتصفح، وتستطيع Node.js التعامل مع الملفات وقواعد البيانات ومختلف أنظمة الشبكات وخدمات أنظمة التشغيل. هل يوجد أجمل من استخدام نفس اللغة لبرمجة الواجهات الأمامية لمواقع الويب والواجهات الخلفية؟ وكل ذلك باستخدام لغة سهلة التعلم والاستعمال ومدعومة دعمًا ممتازًا من المجتمع. تعلم لغة JavaScript لتطوير الواجهات الخلفية من خلال التسجيل في دورة تطوير التطبيقات باستخدام JavaScript المقدمة من أكاديمية حسوب، والتي تحتوي على 69ساعة فيديو تتوزع على أحد عشرمسارًا تعليميًّا تشرح أمثلة عملية تطبيقية شرحًا مفصلًا، وتشرح تطوير الواجهة الخلفية باستخدام Node.js. أثناء مشاهدتك للدورة، يمكنك أن تعود إلى موسوعة حسوب للاطلاع على توثيق لغة JavaScript وبيئة العمل Node.js. اللغات والتقنيات المستخدمة في تطوير تطبيقات الويب باستخدام JavaScript: لغة JavaScript وبيئة Node.js وإطار العمل Express.js وقواعد البيانات (مثل MongoDB و MySQL و PostgreSQL وGraphQL وغيرها). تعلم البرمجة باستخدام لغة بايثون - Python لغة بايثون متعددة الاستعمالات، ويمكن عدّها على أنها أسهل لغة برمجة على الإطلاق، إذ تبدو شيفرتها البرمجية كأنها مقالة مكتوبة باللغة الإنكليزية. إذا أردتَ لغةً سهلةً ومدعومةً دعمًا ممتازًا ولها أطر عمل كثيرة فأنت تبحث عن لغة بايثون. الخيارات المتاحة أمامك هي إطار العمل جانغو (Django) وفلاسك (Flask) وغيرها، يمكنك تعلم لغة البرمجة بايثون لتطوير الواجهات الخلفية من خلال قراءة سلاسل المقالات عن تعلم بايثون في قسم البرمجة في أكاديمية حسوب، ثم الانتقال إلى تعلم إطار العمل جانغو أو فلاسك. يمكنك أن تعود إلى موسوعة حسوب للاطلاع على توثيق لغة بايثون. تعلم لغة بايثون لتطوير الواجهات الخلفية من خلال التسجيل في دورة تطوير التطبيقات باستخدام Python المقدمة من أكاديمية حسوب، والتي تحتوي على 69 ساعة فيديو تتوزع على عشرةمسارات تعليمية تشرح أساسيات لغة بايثون للمبتدئين، ثم تطبق عمليًا بأمثلة واقعية، وتشرح إطار العمل جانغو Django وفلاسك Flask. اللغات والتقنيات المستخدمة في تطوير تطبيقات الويب باستخدام بايثون: لغة بايثون وإطارات العمل المبنية عليها (مثل جانغو وفلاسك) وقواعد البيانات (مثل MySQL و PostgreSQL وغيرها). تعلم تطوير تطبيقات الجوال ازداد عدد تطبيقات الجوال لأنظمة أندرويد و iOS ازديادًا كبيرًا في الفترة الماضية، وأصبح لكل شركة أو خدمة تطبيق خاص بها يسهِّل على مستخدميها الوصول إلى الخدمات التي توفرها. النظامان الرئيسيان المسيطران على سوق الجوال حاليًا هما أندرويد ثم iOS. يمكن برمجة تطبيقات أندرويد بلغة Java أو Kotlin (أو غيرهما) وبرمجة تطبيقات iOS باستخدام Swift (وغيرها). ستكتشف أنَّ عليك تطوير تطبيقين منفصلين تمامًا، واحد لهواتف أندرويد وآخر لهواتف iOS، وذلك يسبب زيادةً في حجم العمل المطلوب وصعوبةً في إدارة التغييرات. بسبب ذلك، ظهر مفهوم "التطبيقات متعددة المنصات"، وهي تطبيقات تعمل على نظام أندرويد و iOS دون أي تعديلات، وذلك باستخدام تقنيات مشتركة وهي في الغالب تقنيات الويب. أي أصبح بإمكان مطوري الويب الاستفادة من معلوماتهم في تطوير تطبيقات الجوال باستخدام منصات مثل آيونيك Ionic. تسمح آيونيك Ionic للمبرمجين بالتعامل مع مختلف وظائف الجهاز باستخدام لغة JavaScript، مثل الوصول إلى الموقع الجغرافي، والتقاط صور بالكاميرا، والتعامل مع الملفات وخلاف ذلك. طوِّرت في الفترة الماضية تقنيات أخرى مبنية على JavaScript مثل React Native المبنية على مكتبة React.js والتي تسمح للمطورين بكتابة تطبيقات أصيلة باستخدام تقنيات الويب. تستطيع تعلم تطوير تطبيقات الجوال عبر Ionic وعبر React Native من خلال التسجيل في دورة تطوير التطبيقات باستخدام لغة JavaScript المقدمة من أكاديمية حسوب، والتي تحتوي على 69 ساعة فيديو تشرح أمثلة عملية تطبيقية شرحًا مفصلًا. وكالعادة يمكنك أثناء مشاهدتك للدورة أن تعود إلى موسوعة حسوب للاطلاع على التوثيقات اللازمة. اللغات والتقنيات المستخدمة في تطوير تطبيقات الجوال: Java و Swift و Kotlin و Ionic و React Native وغيرها. تطوير الألعاب تطوير الألعاب هو المجال الذي يحلم جميع مستخدمي الحاسوب بالدخول إليه. فالأغلبية تعرفوا على الحاسوب من خلال ألعاب الفيديو ومن ثم بدؤوا برحلة الاستكشاف عن البرمجة والتطوير. أغلب من يجيب عن تطوير الألعاب يقول "عليك بتعلم لغة C++" لكن دعني أفصِّل لك الأمر قليلًا. برمجة الألعاب تتطلب عملًا كثيرًا من فريق عمل كبير، مدعوم من شركة تجارية. من الصعب على مطوِّر وحيد أن ينشئ لعبة كاملة من الصفر دون فريق. تُطور أغلبية الألعاب باستخدام محرِّك ألعاب Game Engine والذي يسهِّل الأمر على المطورين ويتيح بيئة تطوير مناسبة للألعاب، ويتيح الميزات الأساسية لجميع الألعاب مثل التحكم بالكاميرا ونمذجة الشخصيات ثلاثية الأبعاد وتحريكها والأمور الفيزيائية الأخرى. هنالك عدد كبير من محركات تطوير الألعاب، ومن المرجح أنك شاهدت شعارها في الألعاب التي لعبتها من قبل، ومن أشهرها: Unreal Engine و Unity و Godot. يمكن التعامل مع هذه المحركات باستخدام عدِّة لغات، مثل C++ (وهي أشهرها)، وجافا (خصوصًا للألعاب على هواتف أندرويد) وحتى يمكن استخدام JavaScript في التعامل مع بعضها. تذكر أنّ الألعاب غير محدودة بتطبيقات سطح المكتب أو الهواتف، فهنالك ألعاب كثيرة تعمل على المتصفحات باستخدام تقنيات HTML5 و JavaScript. اللغات والتقنيات المستخدمة في تطوير الألعاب: C++ و Java و JavaScript ومحركات Unity و Unreal Engine و Godot. برمجة الذكاء الاصطناعي يُعد الذكاء الاصطناعي (AI) من المجالات الرائدة والمطلوبة بكثرة في سوق العمل اليوم، لاسيما بعد أن أصبحت تطبيقاته في متناول الجميع وبات يستخدم في العديد من المجالات فتعلمك لهذا المجال الرائد يعزز قدراتك كمبرمج ويساعد على تعزيز تطبيقاتك بقدرات الذكاء الاصطناعي القوية. يتفرع الذكاء الاصطناعي لعدة مجالات من أبرزها تعلم الآلة والتعلم العميق التي تُمكّن الحواسيب من التعلم من البيانات وتحسين أدائها بمرور الوقت دون الحاجة لبرمجة تقليدية. كي تتعلم برمجة الذكاء الاصطناعي تحتاج لامتلاك فهم جيد للبرمجة وتحليل البيانات ويمكنك استخدام لغات برمجة متعددة في هذا المجال أشهرها لغة البرمجة بايثون التي توفر الكثير من المكتبات والأطر المساعدة مثل تنسرفلو TensorFlow وكيراس Keras وبايتورش PyTorch وباندا Pandas. إذا كنت مهتمًا بتعلم هذا الاختصاص القوي فستوفر لك دورة الذكاء الاصطناعي من أكاديمية حسوب التي تحتوي على 58 ساعدة تدريبية ممتدة على ثمانية مسارات تدريبية شاملة كل ما تحتاج إليه للبدء بتطوير تطبيقات ذكاء اصطناعي قوية واكتساب مهارة في تحليل البيانات من الصفر ودون الحاجة لامتلاك معرفة مسبقة. اللغات والتقنيات المستخدمة في برمجة الذكاء الاصطناعي هي Python و MongoDB وPymongo و TensorFlow و Keras و Pandas والنماذج اللغوية الكبيرة LLMs المختلفة. تطوير الأنظمة المدمجة الأنظمة المدمجة هي أنظمة حاسوبية شبيهة بالحاسوب ولكنها لا تملك كل ميزات الحاسوب الذي تراه أمامك الآن. بعبارة أخرى، النظام المدمج هو حاسوب صغير مبرمج لأداء مهام محددة فقط ومدمج ضمن الجهاز أو البيئة المراد استخدامه فيها. أنت الآن محاط بالكثير من الأنظمة المدمجة الآن مثل جهاز مقياس مستوى المياه وجهاز التحكم بالتلفاز وجهاز إنذار الحريق وأجهزة المراقبة …إلخ. حتى إشارات المرور وتنظيم السير وألعاب الأطفال الآلية تصنَّف على أنها أنظمة مدمجة. هل سمعت أيضًا بمصطلح "إنترنت الأشياء"؟ إنترنت الأشياء هو نظام مدمج متصل بالإنترنت. نعم، بهذه البساطة! لابد الآن أن يتبادر إلى ذهنك الساعات والثلاجات والغسالات الذكية وطائرات الدرون وأنظمة المراقبة عن بعد وأنظمة البيوت الذكية، إذ كلها أمثلة على إنترنت الأشياء. كيفية برمجة الأنظمة المدمجة أشهر وأكثر لغة برمجة تستعمَل في برمجة الأنظمة المدمجة وإنترنت الأشياء هي لغة C (أي لغة سي) وكل اللغات المشتقة منها (مثل لغة أردوينو C). تُستعمَل لغة C++ كثيرًا في هذا المجال، إذ تعدُّ لغة ذات مستوى أعلى من لغة C لدعمها للبرمجة كائنية التوجه. أضف إلى ذلك أنه بدأ حديثًا استعمال لغة بايثون في برمجة تطبيقات الأنظمة المدمجة مع أنها لم ترتبط تقليديًّا بهذا المجال سابقًا. صحيح أنَّ لغة بايثون ليست بقوة لغة C و C++ في هذا المجال إلا أنها تستمد ميزاتها وفعاليتها من المكتبات الهائلة المتوافرة فيها. بعيدًا عن C وبايثون، تستعمل في مجال الأنظمة المدمجة أيضًا لغات أخرى تنضوي ضمن "لغات توصيف العتاد" (Hardware Description Languages)؛ لغتي VHDL و Verilog هما من أشهر لغات توصيف العتاد المستعملة في هذا المجال. تُستعمَل مثل هذه اللغات في برمجة "مصفوفة البوابات المنطقية القابلة للبرمجة" (FPGA أي Field Programmable Gate Array). أخيرًا، قد تجد بعض المراجع تشرح برمجة الأنظمة المدمجة بلغة أخرى تدعى "لغة التجميع" (Assembly Language) التي تصنف من اللغات منخفضة المستوى. يتطلب تعلم البرمجة باستخدام هذه اللغة فهمًا واسعًا بمعمارية وحدة التحكم المركزية والمعالج بالمجمل لأنها أقرب لغة يفهمها الحاسوب. الانتقال إلى هذه اللغة قد يكون في مستويات متقدمة من تعلمك لبرمجة الأنظمة المدمجة وتطبيقات إنترنت الأشياء. من ميزات البرمجة بهذه اللغة هي التحكم الواسع بالعتاد والمعالج الذي لا توفره لغات أخرى. يقال أن هذه اللغة صعبة بعض الشيء ومعقدة، ولكن لا أرى ذلك! قد يكون سبب قول ذلك هو أن لغة التجميع هي لغة منخفضة المستوى وأقرب شيء إلى لغة الآلة ولا يستطيع من يلقي نظرة على شيفرة مكتوبة فيها فهمها مطلقًا إن لم يعرفها. تطوير تطبيقات سطح المكتب مجال تطوير تطبيقات سطح المكتب كالمحيط الواسع؛ إن لم تملك بوصلة وتعرف إلى أين تريد الاتجاه، ستضيع فيه حتمًا. هنالك الكثير من أنظمة التشغيل أشهرها - وأكثرها سيطرةً على السوق حاليًا - هي: نظام التشغيل ويندوز، ولينكس، وماك (macOS)، ويملك كل نظام تشغيل تطبيقات مكتبية خاصة به. لذلك، يجب عليك أولًا -قبل الدخول إلى سوق برمجة تطبيقات سطح المكتب- تحديد نظام التشغيل المستهدف. أي يجب الإجابة على السؤال التالي: هل يستهدف تطبيقك نظام تشغيل محدد، أم تريد لتطبيقك أن يعمل على عدة أنظمة تشغيل في آن واحد؟! بعد تحديد نظام التشغيل المستهدف، اطلع على اللغات المفضل استعمالها في ذلك النظام لبرمجة تطبيقاته؛ فعلى سبيل المثال، اللغات C و C++ و C# و VB.NET هي الأكثر استعمالًا في برمجة تطبيقات نظام التشغيل ويندوز، واللغات C و C++ و Bash هي الأكثر استعمالًا في برمجة تطبيقات توزيعات نظام التشغيل لينكس. أمَّا نظام الشغيل ماك، فينفرد باستعمال لغة Objective-C. حسنًا، دعني أخبرك الحقيقة، كل لغة برمجة عامية الغرض يمكن استعمالها في برمجة التطبيقات، إذ أشهر اللغات التي تُدرَّس أكاديميًّا في هذا المجال هي لغة جافا (Java). لا يخفى على القارئ دخول لغة بايثون بقوة على هذا المجال نظرًا لامتلاكها الكثير من المكتبات الرائعة وسهولة صياغتها. دخلت مؤخرًا لغة جافاسكريبت على سوق برمجة تطبيقات سطح المكتب عبر إطار العمل Electron (إلكترون)، إذ توظف في هذا المجال تقنيات تطوير الويب (HTML و CSS و JavaScript …إلخ.). بدأ هذا الإطار ينتشر كالنار في الهشيم مما دفع شركات كبيرة لتطوير تطبيقات سطح المكتب الخاصة بها باستعمال هذا الإطار ومنها شركة Slack التي استعملت هذا الإطار لتطوير تطبيقها المكتبي. أعلم أنك الآن تشعر بالضياع من كثرة لغات البرمجة والتقنيات المستعملة في هذا المجال؛ معك حق، فقد أخبرتك بذلك منذ قليل. دخول هذا السوق يحتاج منك تحديد هدفك منه بالضبط. هل لديك فكرة تطبيق وتريد إنشاءه والربح منه؟ هل تريد العمل لدى شركة محددة؟ ما هي مواصفات التطبيق الذي تريد إنشاءه أو تريد العمل على تطويره؟ كل ذلك يلعب دورًا في تحديد لغة البرمجة الأنسب لك لتعلمها. في النهاية، إن تعلمت أساسيات البرمجة وأتقنت العمل على لغة برمجية محددة، سيسهل عليك الانتقال إلى لغة برمجة أخرى، إذ أغلب لغات البرمجة تشبه بعضها بعضًا من ناحية المفهوم والمضمون وتختلف بعض الشيء من ناحية الصياغة والشكل. لذلك، اطمئن من هذه الناحية. كيفية اختيار لغة البرمجة التي تناسبك يمكنك اختيار لغة البرمجة اعتمادًا على المجال الذي تحب العمل فيه، سألخص لك مسار التعلم لمختلف مجالات العمل: العمل كمطور ويب full-stack: يعني ذلك تعلم تطوير واجهات المستخدم أو الواجهات الأمامية، وتطوير الواجهات الخلفية. يمكن التخصص بمجال واحد من هذين المجالين فقط، إذ يُطلَب كثيرًا في سوق العمل مبرمجين متخصصين في واجهات المستخدم أو الواجهات الخلفية. العمل كمطور تطبيقات للهواتف المحمولة: يمكنك تعلم برمجة تطبيقات أندرويد أو iOS كلًا على حدة، أو استعمال تقنيات مثل كوردوفا لتطوير لكلا النظامين معًا. العمل كمطور تطبيقات سطح المكتب: يمكنك البدء بالتخصص في تطوير تطبيقات مكتبية لنظام تشغيل محدَّد (مثل نظام التشغيل ويندوز أو لينكس) عبر تعلم لغة البرمجة المستعملة في ذاك المجال (كما أشرنا إلى ذلك في قسم تطوير تطبيقات سطح المكتب)؛ خيار آخر هو تعلم اللغات والتقنيات التي تمكنك من تطوير تطبيقات عابرة للمنصات (تعمل على عدة أنظمة تشغيل) مثل استعمال إطار العمل Electron. العمل كمطور للأنظمة المدمجة والأنظمة الذكية: لغة C هي أساس هذا المجال، سواءً كنتَ تتعامل مع المتحكمات مباشرةً، أو تتعامل مع شريحة مثل أردوينو (والتي تمتلك لغةً مشتقةً من C). يساعدك هذا الفيديو على معرفة المعايير التي من خلالها ستتمكن من اختيار لغة البرمجة التي تتناسب مع تطلعاتك وأهدافك المستقبلية. نصائح لتعلم البرمجة مشوار تعلم البرمجة من الصفر طويل وشائق، ولكنه جميل ومسلٍ بذات الوقت، قد تصاب بالإحباط في بداية طريقك لكثرة الأمور التي عليك الإلمام بها، لذا جهزت إليك النصائح الآتية من تجربتي في البرمجة: حدد هدفك من تعلم لغة البرمجة وسوق العمل الذي تريد دخوله واجعله واقعيًا. بدون هدف، أبشرك بأنك ستتخلى عن فكرة تعلم البرمجة بعد حين. انتبه إلى أن يكون هدفك واقعيًا وقابلًا للقياس والتجزيء على مراحل. بدون ذلك، ستفشل من أول عقبة وتترك تعلم البرمجة. أعرف نفسك جيدًا ونقاط قوتك وضعفك. كلنا لديه نقاط قوة وضعف، ولكن المفلح من عمل على ترميم وتحسين نقاط ضعفه في المجال الذي يرغب بتعلمه. رشح دورة واحدة وكتابًا واحدًا وابدأ بقراءة الكتاب ومتابعة الدورة تدريجيًّا ثم انتقل بعد الانتهاء إلى دورة أخرى وكتاب آخر، إذ سيجنبك ذلك التشتت بين الدورات الكثيرة والكتب العديدة. الشيء الذي أفعله قبل بداية تعلم شيء جديد هو ترشيح قائمة من عدة كتب ودورات ثم ترتيب هذه الكتب والدورات بحسب جودتها ومدى بساطتها وتعقيدها. أرقم الكتب والدورات وأبدأ بالخيار الأول منها. أحدد الوقت التقريبي الذي يأخذه كل خيار لدراسته وأجدول الخيارات البقية على رزنامتي الخاصة. لا تأخذ العلم إلا ممن تثق بعلمه، فالكثير من المبتدئين يحاولون مساعدة غيرهم وقد يضعون معلومات مغلوطة دون قصد. طبق ما تعلمته مباشرة، وأنشئ أي شيء من كل أمر جديد تتعلمه حتى لو كان رسمة بسيطة أو شيفرة من عدة أسطر فقط. فرحة إنجاز شيء مما تعلمته تدفعك لتعلم المزيد والاستمرار في طلب العلم. نظم وقتك بورقة وقلم، حدد بداية كل أسبوع خطةً لسائره والتزم بتنفيذها. أخبر أصدقائك أن لديك التزامات وأمور مهمة عليك إنجازها. خصص وقتًا للاستراحة بالطبع ولا تنسَ نصيبك منها. في نهاية كل أسبوع، وازن مدى الإنجاز الذي حققته ومدى تطبيق الخطة التي وضعها وحاول أن تصل النسبة إلى 100%. أنصحك بقراءة ومتابعة استراتيجيات تنظيم الوقت ورفع الإنتاجية. تمرس على حل المشكلات وتحدى نفسك باستمرار وتابع المسابقات البرمجية واشترك بها إن استطعت، أنصحك بقراءة مقالة حل المشكلات وأهميتها في احتراف البرمجة بعد هذه المقالة. لا تنسَ أن تكافئ نفسك في كل مرة تنهي فيها كتابًا أو تكمل العمل على مشروع. لا تنسَ حظك من الاستراحة، لأن طريق البرمجة قد يكون له بداية ولكن النهاية بعيدة ومتعبة -مثله مثل أي مجال آخر-. في النهاية أرجو لك كل التوفيق في مشوارك البرمجي. وأرجو منك أن تشاركنا تجربتك في تعلم البرمجة، لعل غيرك يستفيد منها. اقرأ أيضًا كيف تتعلم البرمجة المدخل الشامل إلى تعلم علوم الحاسوب المرجع الشامل إلى تعلم لغة بايثون تعرف على أعلى تخصصات البرمجة أجرا تعلم لغة HTML قواعد البرمجة ما هي فوائد تعلم البرمجة؟ أسهل لغات البرمجة أهمية البرمجة1 نقطة
-
1 نقطة
-
من فضلكون نصيحة . صرلي اربع شهور مبلش درس بالبرمجة درست سكراتش بالبداية من جامعة هارفرد ( اونلاين) وبعدا وقفت الكورس واتعلمت لمدة شهر HTML, CSS ورجعت وقفت ،وبعدا اشتريت كورس علوم الحاسوب من أكاديمية حاسوب وبعدني عم ادرس بالكورس و وصلت لعند انظمة التشغيل ونظام لينكس ، بس حسيت انو هاد الكورس مطوول وانا بصراحة هدفي اني ادرس شي هي السنة وبلش شغل . حاليا عم اشتغل ٣ ايام بالاسبوع وبالباقي عم جرب ادرس قد مافيي بجانب حياتي الزوجية . هل من الأفضل وقف كورس علوم الحاسوب واشتري كورس بايثون مثلا واتعلم هي اللغة بالوقت المتبقي من هي السنة ؟ انا جربت Wep development انشاء مواقع ، بس سمعت من معظم اليوتيوبر انو بايثون افضل للمبتدئين و لغة متداولة كتير ولغة المستقبل. فشو بتنصحونا . شكرا.1 نقطة
-
أريد شراء كورس php, وواحد اضافي ولا أعلم ما هو أفضل خيار، الواجهات ام علوم الحاسوب ام كورس اخر1 نقطة
-
1 نقطة
-
1 نقطة
-
هدف دورة علوم الحاسوب هو تعريف المتعلمين بأساسيات علوم الحاسوب وتزويدهم بالمفاهيم والأدوات اللازمة للبدء في مجال البرمجة وتطوير البرمجيات. يتم تغطية موضوعات متعددة تتضمن البرمجة، وأنظمة التشغيل، وقواعد البيانات، والشبكات والأمن والحماية. لا يمكن اعتبار دورة علوم الحاسوب كافية للبدء بالعمل بعد انتهائها، ولكنها تزود المتعلمين بالمعرفة اللازمة للاستمرار في تعلم مجال البرمجة وتطوير مهاراتهم فيه، ومن المهم أيضًا بعد الدورة العمل على تطبيق المفاهيم والمهارات التي تم اكتسابها عبر القراءة والتدريبات العملية ومشاريع التطبيق العملية. بمعني أبسط، سيتم تأهيلك لتتمكن من دخول مجال البرمجة على أساس صحيح، ولا مشكلة إذا كانت هناك أمور تجدها غير مفهومة أو مبهمة في ذلك المسار، فالغرض هو تعريفك بالمجالات والمفاهيم. وستتمكن من استيعاب تلك الأمور لاحقًا عند إختيار المجال الذي تريد التخصص به، مثل مجال تطوير الويب. وقد تم الإيضاح بشكل أكبر في السؤال التالي:1 نقطة
-
دورة علوم الحاسوب دورة شاملة للعديد من المعلومات والأمور المهمة في كثير من المجالات مثل مكونات الحاسوب والتفكير المنطقي مروراً بأساسيات البرمجة ولغة JavaScript وبايثون Python ومفاهيم البرمجة الكائنية OOP والخوارزميات وبنى المعطيات، وحتى المواضيع الأكثر تقدماً مثل أنظمة التشغيل، وقواعد البيانات وعالم الويب وأنماط تصميم البرمجيات. وكل هذه المجالات ممكن أن تضعكِ على بداية الطريقة لتخصص في المجال الذي رائيتِ أنه ممكن أن تبدعِ به والبدء في التعمق به كثيراً ، وممكن في الخبرة التي سوف تتحصلين عليها من الدورة الحصول على بعض الأعمال والمشاريع الصغيرة . للإطلاع على تفاصيل الدورة كاملة من هنا1 نقطة
-
مهارة Web Scraping مطلوبة بشكل أكبر على مواقع العمل الأجنبية لذلك عليك بتعلم الإنجليزية بشكل جيد للتواصل. وتعلُّم مهارة Web Scraping يتطلب بعض المعرفة الأساسية بالبرمجة والتقنيات الحديثة المستخدمة في تطوير مواقع الويب والتطبيقات. ويمكن البدء بتعلُّم هذه المهارة من خلال الخطوات التالية: 1- الاطلاع على مفهوم Web Scraping وماهيتها والأدوات التي يمكن استخدامها في عمليات الاستخراج وجمع البيانات من الويب. 2- دراسة لغة البرمجة Python ومكتبات الويب المختلفة مثل BeautifulSoup وScrapy و Requests و Selenium التي تساعد على إجراء عمليات ال Web Scraping. 3- القيام بتجربة عمليات ال Web Scraping على مواقع الويب الشائعة والبسيطة أولاً ومن ثم التحرك إلى مواقع أكثر تعقيدًا. 4- متابعة المجتمعات المهتمة ب Web Scraping والأدوات المختلفة المستخدمة فيها، مثل مجتمع Scrapy ومنتدى BeautifulSoup ومنتدى Python. وهناك دورة خاصة بتطبيقات بايثون في أكاديمية حسوب. Web Scraping||ما هي افضل مكتبه في بايثون لهذا الغرض1 نقطة
-
نعم، خدمة (Web Scraping) هي خدمة مطلوبة في مجال العمل الحر. يتم استخدامها لاستخراج البيانات من مواقع الويب وتحويلها إلى بيانات مفيدة للأعمال والبحوث والتحليلات. يستخدم Web Scraping بشكل شائع في عدة مجالات مثل التسويق الرقمي وتحليل البيانات والأبحاث والتعلم الآلي والعمليات الأعمالية وغيرها. يمكن للعمل الحر في هذا المجال تقديم الخدمة للشركات والأفراد الذين يحتاجون إلى هذه الخدمة لتحسين عملياتهم أو الحصول على بيانات مفيدة لأعمالهم. ولكن ، يجب الانتباه إلى أن استخدام Web Scraping يتطلب المهارات الفنية اللازمة لإجراء العملية بطريقة فعالة وصحيحة، بما في ذلك المعرفة بالبرمجة وتقنيات الويب وقواعد البيانات. كما يجب احترام حقوق الملكية الفكرية وقوانين الخصوصية عند استخدام Web Scraping ، لذلك ينبغي التأكد من الامتثال للقوانين واللوائح المعمول بها في المجتمع المحلي والدولي.1 نقطة
-
يتناول هذا المقال، الأول من سلسلة دروس عن لغة الاستعلام البنائية Structured Query language التي تعرف بالاختصار المشهور SQL، مفهوم قواعد البيانات، وماذا نقصد بأنظمة إدارة قواعد البيانات، وما هو الجدول، وما هي خصائص قواعد البيانات العلاقية. ما هي قاعدة البيانات؟ بطريقة بسيطة مجرّدة من مفاهيم التقنية، قاعدة البيانات هي مكان لحفظ بيانات معينة على نحو مستمر بهدف الرجوع إليها وقت الحاجة، فدفتر أرقام الهواتف الذي كنا نستعمله في الماضي يُعدّ قاعدة بيانات؛ والكم الهائل من الفواتير المحاسبية الورقية المحفوظة في خزانات الأقسام المالية في الشركات قديماً، أيضاً هو قاعدة بيانات. وقِس على ذلك العديد من الأمثلة الواقعية والملموسة. نستنبطُ من هذا التعريف البسيط وجود خاصية هامة لقاعدة البيانات، ألا وهي “الاستمرارية” أو “الدوام” في حفظ البيانات. في الجانب التقني والبرمجي، فإن قاعدة البيانات Database هي عبارة عن مستودع تُحفظ البيانات فيه داخل جهاز الحاسوب أو الخادوم، ويتمتع هذا المستودع بخاصية الاستمرارية في حفظ البيانات. ونعني بخاصية الاستمرارية هنا أنه في حال إطفاء جهاز الحاسوب أو إعادة تشغيله أو انقطاع التواصل معه، فإن قاعدة البيانات وما تحتويه من بيانات تبقى موجودة ومحفوظة دون أي خلل. أنظمة إدارة قواعد البيانات العلاقية تُسمى البرمجيات التي تنشئ وتدير قواعد البيانات بأنظمة إدارة قواعد البيانات (Databases Management Systems) وتكتب بالاختصار DBMS. ما هي أنواع أنظمة إدارة قواعد البيانات؟ تختلف وتتعدد تسميات أنواع أنظمة إدارة البيانات، وهذا الاختلاف نابع بالدرجة الأولى من تقدم الزمن وما صاحبه من تقدم في العلوم والتقنيات، ومن ثم بالدرجة الثانية، ينبع الاختلاف من التقنيات والخصائص المتعددة لهذه الأنظمة وما تقدمه من خدمات. تنقسم أنواع أنظمة قواعد البيانات إلى ثلاثة أنواع رئيسية. نظام قاعدة البيانات الملف والواحد Flat File Database: يعدّ هذا النوع من الأنظمة قديما ومن النادر أن تجد أحدا يعمل عليه إلى الآن، وهو ببساطة قاعدة بيانات من ملف واحد كبير يحتوي على كل البيانات، وهو يشبه جدول واحد به كل البيانات. نظام إدارة قاعدة البيانات غير العلاقية Non-Relational DBMS :ظهر هذا النوع من أنظمة قواعد البيانات في ظل عصر تضخم البيانات وزيادة حجمها، وخاصة مع انتشار ما يسمى بالمواقع الاجتماعية وتطبيقات الجوال وصفحات الوب الحديثة، فهذا النوع من الأنظمة يسمح بحفظ بيانات غير مرتبة وفق بنية معينة Unstructured Data، وليس من الشرط أن تترابط هذه البيانات Not relational، كما يطلق عليها No-SQL Databases. نظام إدارة قاعدة البيانات العلاقية Relational DBMS: وهو النوع الأشهر والأكثر استخداما منذ بداية ظهوره والذي سنعتمده في هذه السلسلة لشرح SQL، حيث تُجمَّع في هذا النوع من الأنظمة البيانات التي لها علاقة ببعضها البعض في مكان واحد يسمى الجدول، مع وجود الإمكانية لربط الجداول مع بعضها البعض بعلاقات ترابط. دورة علوم الحاسوب دورة تدريبية متكاملة تضعك على بوابة الاحتراف في تعلم أساسيات البرمجة وعلوم الحاسوب اشترك الآن ما هو الجدول؟ يُعدّ الجدول العنصر الأساسي في قواعد البيانات العلاقية، وعليه تعتمد أغلب مكونات قاعدة البيانات من مشاهد Views ودوال Functions وحِزم Packages وغيرها من العناصر الأخرى. يتكون الجدول من أعمدة Columns وصفوف Rows، حيث تمثل الأعمدة ما يسمى بالخصائص Features، والصفوف عبارة عن القيم التي تأخذها الأعمدة وتسمى بالسجلات Records. يوضح الشكل التالي مثالا لجدول يحتوي على بيانات تواريخ ميلاد وأسماء طلاب في مدرسة، وفي المثال نوضح مكونات الجدول في قاعدة البيانات. خصائص قواعد البيانات العلاقية ومميزاتها ظلت قواعد البيانات العلاقية مسيطرة منذ بدايات ظهور النموذج الأساسي لها عام 1970 على يد عالم الحاسوب Frank Codd أثناء عمله لصالح شركة IBM، ولم تكن هذه الأفضلية التي يتمتع بها نظام قواعد البيانات العلاقية تأتي من فراغ، بل من الخصائص التي تتمتع بها. البساطة تُرتَّب البيانات في أنظمة قواعد البيانات العلاقية وتُحفَظ بطريقة بعيدة عن التعقيد، حيث يعدّ الجدول الذي تُحفظ فيه البيانات مفهوما لأغلب المستخدمين وخاصة الذين مارسوا أعمالا في مجال البيانات المجدولة أو مراجعة السجلات. سهولة الاستعلام عن البيانات بعد عمليات الإضافة على قاعدة البيانات، وعند الحاجة للرجوع لها، فإن نظام قواعد البيانات العلائقية يوفر آلية سهلة للاستعلام عن هذه البيانات واستردادها، وذلك عن طريق لغة SQL، بالإضافة إلى وجود الإمكانية للمستخدم أن يستعلم عن البيانات من أكثر من جدول في نفس الوقت باستخدام جمل الربط Joins. كما أن خاصية ترشيح Filtering البيانات وتحديد شروط خاصة لظهور سجلات معينة هو أمر متاح بكل سهولة. سلامة البيانات تعدّ هذه الخاصية أساسية في أي نظام قواعد بيانات بغض النظر عن نوعه. ونعني بهذه الخاصية أن تتوفر جميع القدرات والإمكانات في نظام قواعد البيانات لضمان دقة وصحة المعلومات الموجودة فيه. ويندرج تحت هذه الخاصية ما يسمى بقيود التكامل Integrity constraints والتي هي عبارة عن مجموعة من القيود التي يجب الالتزام بها عند التعامل مع البيانات في الجدول، وسنتكلم عنها في مقال متقدم. المرونة تتمتع قواعد البيانات العلاقية بطبيعتها بالمرونة والقابلية للتطوير، مما يجعلها قابلة للتكيف مع طلبات التغيير والزيادة في كم البيانات. وهذا يعني مثلا أنك تستطيع التغيير على هيكلية جدول معين دون التأثير على البيانات الموجودة فيه أو على قاعدة البيانات ككل، كما أنك – مثلا - لن تحتاج إلى وقف قاعدة البيانات وإعادة تشغيلها مرة أخرى لتنفيذ بعض لتغييرات عليها. ما هي البرمجيات التي تقدم قواعد البيانات العلاقية؟ تَتَعدد الشركات والبرمجيات التي تُقدم أنظمة إدارة قواعد البيانات، وكل منها له سوقه ومجاله الذي يشتهر به. نُقدم لكم في الفقرات القادمة بعضًا من أشهر أنظمة إدارة قواعد البيانات العلاقية. قواعد بيانات MySQL أحد أشهر أنظمة قواعد البيانات العلاقية مفتوحة المصدر. تستطيع إنشاء العديد من قواعد البيانات بداخلها، وتستطيع الوصول لها عبر الوِب. تَعمل MySQL على هيئة خِدمة Service تُتيح لأكثر من مستخدم الوصول إلى أكثر من قاعدة بيانات، وتشتهر بين معشر مبرمجي تطبيقات الوِب لارتباطها الشائع مع لغة البرمجة PHP، ويمكن تنصيبها على أكثر من نظام تشغيل مثل وندوز أو لينكس أو ماك. تعدّ MySQL الخيار المفضل للشركات الناشئة أو المتوسطة وذلك لسهولة التعامل معها وانخفاض تكاليف تشغيلها مقارنة بخيارات أخرى. قواعد بيانات أوراكل Oracle تعدّ شركة أوراكل عملاق الشركات البرمجية التي تقدم أنظمة إدارة قواعد البيانات العلاقية، وتأتي قاعدة البيانات أوراكل بأكثر من إصدار (حسب البيئة والغرض) تبدأ من الإصدار الشخصي والخفيف، وتنتهي بالإصدار المتقدم Enterprise. تتميز قواعد بيانات أوراكل بكم كبير من الإمكانات التي تسهل عليك حل العديد من المشاكل والعقبات في التطبيقات التي تديرها وتنشئها، مع وجود دعم فني قوي عبر مجتمع أوراكل، لذلك فهي تعتبر الخيار الإستراتيجي (البعيد المدى) للعديد من الشركات الكبيرة والجامعات والحكومات. قواعد بيانات مايكروسوفت Microsoft SQL Server من قواعد البيانات الشهيرة، والذي تأتي أيضا بأكثر من إصدار، لتلبي احتياجات المستخدمين المختلفة وبيئات عملهم، ولكي تتعامل مع البيانات في هذا النوع تحتاج لاستخدام النسخة الخاصة من SQL والمسماة T-SQL اختصارا ل Transact SQL والتي هي عبارة عن نسخة SQL مضاف عليه ادوال خاصة وتعديلات على طريقة حذف وتعديل السجلات. قواعد بيانات PostgreSQL قواعد بينات PostgreSQL من قواعد البيانات العلاقية المفضلة لدى بعض مطوري تطبيقات الوِب وتطبيقات سطح المكتب، وهو نظام إدارة قواعد بيانات مفتوح المصدر. توجد الكثير من الشركات الكبيرة والعاملة في مجال نطاقات إنترنت تعتمد على هذا النوع من قواعد البيانات.1 نقطة
-
تَعرفنا في المقال السابق على مفهوم قواعد البيانات وما هي أنواعها. سوف نبدأ في هذا المقال أُولى خطواتنا في شرح لغة الاستعلام البنائية SQL، حيث سنتكلم عن لغة SQL ونعطي لمحة عن دورها وعلاقتها بقاعدة البيانات، ومن ثم سوف نبدأ بشرح أساسيات وجمل بناء قاعدة البيانات والجداول الخاصة بها باستخدام لغة SQL. لغة SQL وماذا تقدم SQL هي اختصارٌ لـ Structured Query language وترجمتها هي “لغة الاستعلام البنائية” وتنطق بطريقتيْن؛ إما حرفًا حرفًا S Q L، أو تنطق كلمة واحدة “سيكيوال”. لغة SQL هي لغة ذات غرض متخصص هدفها إعطاء القدرة على إدارة البيانات الموجودة في قواعد البيانات العلاقية والتعامل معها، وتخضع هذه اللغة لمعايير دولية متفق عليها، ويقوم المعهد الوطني الأمريكي للمعايير (ANSI) بإدارة وإصدار المعايير الخاصة ب SQL. لا يعني ما سبق أن كل برمجيات إدارة قواعد البيانات التي ذكرناها في المقال السابق والتي لم نذكرها، لا يعني بأن SQL لديها موحدة، ولا يعني أنك تستطيع تماما أن تُنفذ نفس جملة SQL في جميع تلك البرمجيات بنجاح. فمن المهم أن نذكر هنا أن الشركات المسؤولة عن تلك البرمجيات الخاصة بإدارة قواعد البيانات، اعتمدت نسخًا مطورة من SQL المعيارية لتصبح خاصة بها وبأنظمتها مع اعتماد حد أدنى في التوافقية مع SQL المعيارية. تستطيع باستخدام لغة SQL أن تقوم بالتالي: الاستعلام عن البيانات وجلبها من قاعدة البيانات. إضافة، تعديل السجلات في قاعدة البيانات وحذفها منها. الحفاظ على سلامة ودقة البيانات في قاعدة البيانات. تحديد الصلاحيات والأذونات الخاصة بمستخدمي قاعدة البيانات. دورة علوم الحاسوب دورة تدريبية متكاملة تضعك على بوابة الاحتراف في تعلم أساسيات البرمجة وعلوم الحاسوب اشترك الآن أنواع أوامر SQL تنقسم جمل وأوامر SQL إلى ثلاث مجموعات، وذلك حسب الدور الذي يقوم به الأمر: لغة التعامل مع البيانات Data Manipulation Language: تحتوي هذه المجموعة على جمل غرضها إعطاء القدرة على التعامل مع البيانات دون التأثير على هيكليتها وشكلها العام، بحيث تستطيع الاستعلام عن البيانات، إضافة سجلّات، حذفها أو تعديلها. لغة تعريف البيانات Data Definition Language: تُقدم الأوامر التي تندرج تحت هذه المجموعة القدرة على تعريف البيانات وشكلها وطريقة ربطها ببعضها عبر استخدام أوامر لإنشاء الجداول وإنشاء قاعدة البيانات. لغة التحكم بالبيانات Data Control Language: تساعد هذه المجموعة من الأوامر في تحديد الصلاحيات التي يمكن منحها أو سلبها من المستخدمين الموجودين في قاعدة البيانات. يسرد الجدول التالي أهم الأوامر التي تُمَكّن المبرمج من إنشاء قاعدة البيانات الخاصة به وتنفيذ الجمل الخاصة بإدارتها وإدارة بياناتها. جملة إنشاء قاعدة البيانات في الواقع لا يوجد معيار لأمر إنشاء قاعدة البيانات في معيار SQL المقدم من معهد ANSI ولكن برمجيات قواعد البيانات العلاقية تقدم نسخة من هذا الأمر، وتختلف الصيغة من نظام إلى آخر. الصيغة العامة لأمر إنشاء قاعدة البيانات هي كالتالي: CREATE DATABASE database_name; ملاحظات هامة يُنشئ الأمر السابق قاعدة بيانات فارغة بالاسم المُمَرَّر (أي database_name في الجملة أعلاه). تتطلب أغلب نظم إدارة قواعد البيانات وجود صلاحيات المسؤول للمستخدم الذي ينشئ قاعدة البيانات. بمجرد إنشاء قاعدة البيانات، يستطيع المستخدم أو من له صلاحية، البدء بإضافة عناصر إلى قاعدة البيانات من جداول Tables، مشاهد Views، دوال وحزم، وإضافة سجلات وبيانات إلى الجداول المُنشأة. أثناء تنفيذ أمر إنشاء قاعدة البيانات وبعده، تُنشَأ ملفات خاصة بقاعدة البيانات الجديدة حسب النظام المستخدم، وتُدار هذه الملفات وتُسمَّى إما تلقائيًّا أو من قبل المستخدم. لأن أمر إنشاء قاعدة البيانات غير معياري، فإن خيارات هذا الأمر متعددة وكثيرة وتأتي حسب نوع النظام المستخدم، وحسب نوع نظام إدارة قواعد البيانات. يظهر أمر الإنشاء بأحرف كبيرة Upper case. ليس هذا ضروريّاً في أغلب برامج إدارة قواعد البيانات، إلا أنها عادة في التوثيقات Documentations لتمييز الكلمات المفتاحية التي تعدّ جزءًا من SQL. جملة إنشاء جدول يُعد إنشاء الجدول في قاعدة البيانات أول الخطوات في طريق بناء قاعدة البيانات وملئها بالسجلات، وهذا الأمر يقوم به مسؤول قواعد البيانات أو المبرمج على حد سواء. ستحتاج قبل أن تتمكّن من البدء في تنفيذ أوامر على القاعدة إلى تحديد قاعدة البيانات التي تريد العمل عليها، أي تلك التي ستُنشِئ الجداول فيها. تختلف طريقة تحديد قاعدة البيانات حسب طريقة الاتصال ببرنامج إدارة قواعد البيانات: في سطر أوامر MySQL يُنفَّذ الأمر بالطريقة التالية: USE database_name; في سطر أوامر PostgreSQL: \connect DBNAME الصيغة العامة لجملة إنشاء الجدول في SQL: CREATE TABLE table_name ( column1 datatype [constraint], column2 datatype [constraint], column3 datatype [constraint], .... ); شرح الصيغة: CREATE TABLE table_name ( CREATE تعني إنشاء العنصر (الجدول هنا) وهي بداية الأمر. TABLE لتحديد أن هذه الجملة لإنشاء جدول. table_name وهو الاسم الذي نريد إطلاقه على الجدول الجديد الذي نريد بناءه. القوس المفتوح باتجاه اليسار يعني البدء بكتابة هيكل الجدول والذي يتضمن الأعمدة ونوعها والقيود التي من الممكن أن نضيفها وبعض الإعدادات الأخرى. column1 datatype [constraint], column1: هو الاسم الذي سوف نعطيه للعمود الأول. Datatype:يعني نوع العمود (نصي, رقم, تاريخ. الخ). [Constraint]:تعني – اختيارياً - تستطيع تحديد قيود على مستوى هذا العمود (سنتكلم لاحقا بالتفصيل عن القيود). الفاصلة تعني وجود عمود آخر سوف نعرّفه بعد هذا العمود. عند كتابة العمود الأخير لا نضيف فاصلة، ومن ثم نضيف القوس المعاكس للقوس الذي فُتح عند بداية كتابة الأعمدة، ونختم الأمر بقاصلة منقوطة. ملاحظات هامة تبدأ أسماء الجداول والأعمدة عموما بحرف وليس برقم (بعض نظم إدارة قواعد البيانات تسمح بذلك)، ومن الممكن أن تُتبع بعد ذلك بالأرقام. يُفضَّل ألا يتجاوز طول اسم الجدول أو العمود30 محرفا Characters، حيث إن بعض النظم تمنع أن تتجاوز ذلك مثل نظام إدارة قواعد البيانات أوراكل. يجب ألا تُستخدَم كلمات محجوزة في تسمية الجدول أو العمود. جملة تعديل الجدول بعد أن تكلمنا عن جملة إنشاء الجدول، يجب علينا توضيح جملة تعديل الجدول بعد إنشائه، حيث إن إجراء عمليات التغيير على الجدول يُعد أمراً مهما للمبرمج ومسؤول قواعد البيانات إذ يُنفَّذ باستمرار أثناء وفي بداية بناء النظم البرمجية والبرامج نظرا لتغير المتطلبات وعدم اكتمالها. تُستخدَم جملة تعديل الجدول Alter Table عموما في الحالات التالية: إضافة عمود للجدول. حذف عمود من الجدول. تغيير نوع عمود في الجدول. إضافة قيد على العمود. حذف قيد عن العمود. نسرُد في ما يلي الصيغ العامة لجملة تعديل الجدول. إضافة عمود ALTER TABLE table_name ADD column_name datatype; حذف عمود ALTER TABLE table_name DROP COLUMN column_name; تعديل عمود ALTER TABLE table_name MODIFY | ALTER COLUMN column_name datatype; إنشاء جداول وتعديلها لإنشاء جدول باسم Persons يحتوي على 5 أعمدة تمثل معلومات أشخاص مثل رقم الشخص واسمه وعنوانه، نُنَفذ الجملة التالية (اختبرناها على MySQL 5.7 و Oracle XE 11.2): CREATE TABLE Persons ( PersonID int, Last_Name varchar(255), First_Name varchar(255), Address varchar(255), City varchar(255) ); يتكوّن الجدول السابق: من العمود PersonID الذي هو من النوع int، أي أن قيم هذا العموم يجب أن تكون أرقامًا؛ الأعمدة City، Last_Name، First_Name وAddressالتي هي من النوع varchar، أي سلسلة محارف، بطول 255 محرفا. بعد تنفيذ جملة إنشاء الجدول السابقة، ينتج لدينا جدول فارغ بالشكل التالي: +--------------+------------------+------------------+-------------+--------+ | PersonID | Last_Name | First_Name | Address | City | +--------------+------------------+------------------+-------------+--------+ نستطيع أن نملأ الجدول بالبيانات باستخدام جملة الإضافة والتي سوف نتكلم عنها في مقال قادم. لإنشاء نفس الجدول السابق بحيث يتضمن وجود قيود على مستوى الأعمدة، ننفذ الجملة التالية: CREATE TABLE Persons ( PersonID int PRIMARY KEY, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255) NOT NULL, City varchar(255) ); أضفنا في الجملة السابقة، قيودا على مستوى أعمدة الجدول، بحيث يُعرَّف العمود PersonID بأنه المفتاح الرئيسي للجدول، والأعمدة Last_Name و Address بأنها لا تستقبل القيم الفارغة. في حال أردنا أن نضيف عمودًا جديدًا للجدول باسم Age (العمر) ومن نوع البيانات رقم نستخدم جملة التعديل التالية: ALTER TABLE Persons ADD Age int; تمكن ترجمة الأمر على النحو التالي: “عدّل الجدول Persons بإضافة عمود اسمه Age ونوعه int“. في حال أردنا أن نحذف عمود City من الجدول نستخدم الجملة التالية: ALTER TABLE Persons DROP COLUMN City; أي: “عدّل الجدول Persons بحذف العمود City“. إذا أردنا تعديل نوع عمود Age إلى نص بدلا من رقم نستخدم الجملة التالية: ALTER TABLE Persons MODIFY Age varchar(10); ذكرنا خلال هذا المقال مصطلحي القيود ونوع البيانات في العمود. ولكن ما هي القيود؟ وماذا نستفيد منها في قواعد البيانات؟ وما هي أنواع البيانات التي من الممكن التعامل معها؟ يقدّم المقال القادم شرحا تفصيليا عن القيود وأنواعها، وكذلك سيشرح المقال الأنواع التي من الممكن أن نتعامل معها. اقرأ أيضًا دليلك الشامل إلى أنواع البيانات1 نقطة
-
إن دفع الناس إلى التسجيل في تطبيقك الخاصّ أمر صعب للغاية، إذ أنّه يتطلب الكثير من الوقت والجهد والمال، ومع ذلك فهناك الكثير من الشركات التي تخسر هؤلاء العملاء بعد تجربتهم الأولى للبرنامج مباشرة، ومن المؤكّد أنّك لا ترغب في أن تكون شركتك من ضمن هذه الشركات. لنتعرف معًا على بعض الأخطاء الشائعة في تهيئة العملاء الجدد (user onboarding) والتي يمكن أن تكون سببًا في إلحاق الضرر بمشروعك التجاريّ. 1- الاعتماد على الواجهة فقط لتوضيح قيمة المنتج يمرّ مستخدم البرمجيات بلحظة يتمكن فيها من إدراك قيمة البرنامج الذي يستخدمه. إنّها اللحظة التي تصبح فيها قيمة المنتج الذي تقدّمه إلى المستخدم واضحة بشكل كبير، ويكون لسان حاله "حسنًا، لقد فهمت الآن". لسوء الحظّ قد تأتي لحظة الفهم هذه متأخرة بعض الشيء خصوصًا عندما يضطرّ المستخدم إلى قضاء بعض الوقت في التعرف على واجهة البرنامج وعلى القيمة الكلية للمنتج. لا تأمل الحصول على البيتزا بمجرد اتباع بعض التعليمات التي تخصّ إعداد العجينة أو الصلصة. يتطلب تحقيق الإنجازات المهمّة وضع سياق عمل واضح ومناسب قبل الشروع بالعمل. وفي حالتنا هذه، سيكون سياق العمل هو مقدار الفائدة التي سيجنيها المستخدمون جرّاء استخدامهم للمنتج الذي تقدّمه إليهم. فهم المستخدمين لطبيعة منتجك قبل التسجيل للحصول عليه سيكون في صالحك من ناحيتين، الناحية الأولى هي أنّ ذلك سيوجّه جميع نشاطاتهم اللاحقة باتجاه واضح وهادف، والناحية الثانية هي أنّ لحظة الفهم هذه ستشكل حافزًا كبيرًا للتسجيل في المنتج، بدلًا من الاعتماد على عامل الفضول فقط. إنّ إيصال فكرة المنتج الذي تقدّمه قبل التسجيل فيه لن يزيد من أعداد المستخدمين وحسب، بل سيوفّر لهؤلاء المستخدمين تجربة ثرية عند تعاملهم مع المنتج للمرة الأولى. فائدة: إن كنت غير متأكد من الطريقة التي توصل عملائك إلى لحظة الفهم، فاتّصل بأحد العملاء المحتملين وحاول إقناعه بأن يبدأ باستخدام المنتج بعد أن يطّلع على ما تقدّمه في موقعك التسويقي فقط. إن لم يكن ذلك كافيًا، فحاول تذكر الأمور الإضافية التي استعنت بها في إقناع العميل وأضفها إلى الإنشاء copy حسب الحاجة. 2- عدم معرفة الإجراءات التي تؤدي إلى التحويل من المؤكّد أنّك لن تستفيد من لحظة الفهم إن لم تتمكن من دفع المستخدمين إلى الخوض في هذه التجربة الفريدة بشكل مباشر. إن لحظة الفهم تشير إلى إدراك المستخدمين للفائدة التي يقدّمها المنتج الخاصّ بك، في حين تشير لحظة الانبهار "wow moment" إلى أنّ المستخدمين قد تمكّنوا من تجربة هذه الفائدة بأنفسهم. ولتتأكّد من أنّ المستخدمين يحصلون بالفعل على الفائدة التي تعدهم بها في موقعك التسويقي، يجب عليك أن تتتبّع معدّلات التحويل الناجح. لقد أظهرت الإحصائيات أنّ ما يقارب 50% من المستخدمين الذين يسجّلون للحصول على المنتج يسجّلون الدخول بعد ذلك مرة واحدة فقط ولا يعودون بعدها إلى الموقع مطلقًا. هذا يعني أنّك تستثمر الكثير لجلب المستخدمين الجدد لتخسر نصفهم مباشرة بعد زيارتهم الأولى، إذًا ما الذي يمكن القيام به لإيقاف هذا النزيف؟ تمكّن Josh Elman من شركة Greylock Partners من حل هذه المشكلة بالشكل التالي: تابع Josh آخر 20 شخص تحوّلوا بنجاح إلى عملاء وتتبّع نشاطهم في الموقع خطوة بخطوة، ليتمكن من تشخيص الأمور التي دفعتهم إلى الوصول إلى نقطة التحول. إنّ فهم النشاطات التي تؤدي إلى التحويل سيساهم بشكل كبير في دفع المستخدمين باتجاه هدفك النهائي ألا وهو تحويلهم إلى عملاء. إن عملية تهيئة المستخدمين الفعّالة ليست تلك التي تعمل على جعل المستخدمين الجدد نشطين في الموقع، وإنما هي تلك التي تدفع بهؤلاء المستخدمين إلى العودة مجدّدًا. فائدة: بالإضافة إلى تتبّع عدد المستخدمين الذين تمكّنوا من إكمال كلّ خطوة من خطوات عملية التحوّل إلى عملاء، حاول كذلك قياس الوقت الذي يستغرقه هؤلاء للوصول إلى تلك النقطة، فالوقت ثمين جدًّا وهو أثمن وأثمن في اللحظات الأولى التي يتعامل فيها العميل مع المنتج الذي تقدّمه. 3- فقدان الزخم في اللقاء الأول يجدر بك أن تنظر إلى تجربة الاستخدام الأوّل من منظور مساعدة المستخدم على تحقيق الفائدة بدلًا من إكماله لبعض المهامّ التي أعددتها له، فالسبب وراء تسجيل المستخدم الجديد في الموقع للحصول على المنتج ليس أنّه متحمّس لمعرفة ما تقوم به كل تلك الأيقونات المنتشرة في واجهة الاستخدام، بل لأنّه مهتم بالقيمة التي وعدت بتقديمها إليه. لذا يجب أن تهدف تجربة الاستخدام الأوّل إلى إشعار المستخدم بهذه القيمة من خلال إرشاده وبأيسر الطرق وأسهلها إلى تحقيق هذا المكسب الأوّلي الصغير. يجب أن يرتبط هذا المكسب الصغير بمجمل الخدمات التي يقدّمها منتجك، فشعور المستخدمين الجدد بالفائدة الكبيرة التي سيحصلون عليها من المنتج الذي تقدّمه ستزيد من احتمالية عودتهم إليك مرة أخرى. وبمجرّد أن تتعرّف على الأمور التي تريد توجيه المستخدمين إليها في تجربة الاستخدام الأوّل، ابدأ بإزالة جميع العقبات التي تحول دون وصول المستخدمين إلى الهدف المنشود. سجّل جميع الإجراءات التي يجب أن يتّخذها المستخدم لتحقيق ذلك المكسب الصغير، ثم ابدأ بالتخلص من جميع الأمور التي يمكن القيام بها في وقت لاحق. إن فترة تهيئة المستخدمين الجدد ليست فترة ملائمة لإجراء التجارب، لذا إن لم تكن متيقنًا من جدوى طلب المعلومات الإضافية مثل أرقام الهاتف أو عدد الموظّفين، فمن الأفضل أن تترك هذا الأمر وتعمل بمبدأ (إن كنت في شك، فاترك الأمر). على سبيل المثال، إن كنت قادرًا على القيام بالأمر دون طلب تأكيد عنوان البريد الإلكتروني، ولو بشكل سريع، فتجنب إنقاص الزخم الذي يتمتع به المستخدم عندما تلجئه إلى الدخول في معمعة بريده الإلكتروني قبل أن يتمكن من القيام بشيء يذكر في التطبيق الخاصّ بك. ولكن تذكّر دائمًا أن هذا المبدأ لا يشبه المبدأ القائل: "أبق الأمور مختصرة وغير قابلة للتذكر"، ففي دراسة أجرتها Lumosity مؤخّرًا تبيّن أن إبطاء الأمور وجعل المستخدمين يفكّرون في التجربة التي سيمرّون بها قد زاد من احتمالية بقائهم، ومؤكّد أن أصحاب الدراسة لم يتمكنوا من معرفة ذلك دون اللجوء إلى تتبع معدلات التحويل. فائدة: أن الأداء السيّئ للموقع هو من الأمور التي تتسبّب في فقدان الزخم، ففي كل مرة يستغرق فيه تحميل الصفحات وقتًا طويلًا ستزداد فرصة تحوّل المستخدم إلى موقع آخر، أو الانشغال بتحضير كوب القهوة الذي كان يتوق إلى تناوله. حاول الإبقاء على المستخدمين من خلال تقليل المدة اللازمة للاستجابة، أو على الأقل مخاطبة المستخدم بأنّ موقعك يعمل لإنجاز شيء ما من أجله. 4- عدم مشاركة المستخدم فرحة تحقيق النجاح ألن تشعر بالسعادة عندما تشطب عنصرًا من عناصر قائمة المهام التي يجب عليك إنجازها هذا اليوم؟ ما هو شعورك فيما لو أنجزت جميع المهام التي وضعتها لنفسك ضمن هذه القائمة، ثم قمت بتجعيد الورقة وإلقاءها في سلة المهملات، ثم النظر إلى السماء وأنت تتخذ وضعية البطل المنتصر؟ ما المانع من جعل المستخدمين يمرّون بتجربة مماثلة عندما يحققون نجاحهم الأول؟ أستغرب في كثير من الأحيان تلك الحالات التي يتحدّى فيها المستخدم جميع الاحتمالات ويشقّ طريقه لتحقيق الانتصار الحقيقي الأول في تطبيق معين، ولكن الشركة القائمة على ذلك التطبيق تكون غير موجودة للاحتفال بهذا الإنجاز. إن اللحظة التي ينجز فيها المستخدمون مهمّة ذات أهمية تكون فرصة كبيرة لإضفاء بعض المشاعر الإيجابية بينهم وبين شركتك. كن حريصًا على أن يعلم المستخدمون بأنّهم يقومون بعمل رائع وذلك من خلال تقدير الإنجاز الذي حقّقوه والتعبير عن السعادة التي تشعر بها حيال ذلك. أسمّي فرص التصميم هذه بـ "حالات النجاح" (success states) وأعتقد أنّها متاحة في جميع الأوقات؛ لذا كن سبّاقًا في إيجاد لحظات النجاح في تجربة المستخدم الخاصّة بموقعك وتصميم شيء يمنح تلك اللحظات شيئًا من الواقعية. ليس من الضروري أن يكون التصميم فخمًا وقويًّا، فاستخدام عبارة "أحسنت، عمل رائع" في الوقت الصحيح قد يفي بالغرض. فائدة: استفد من هذه اللحظات لأنها فرصة جيّدة للتعبير عن شخصيتك، كما هو الحال مع Mailchimp والتي تقوم بذلك من خلال حركة High five واقعية. 5- عدم متابعة المستخدمين بعد انتهاء تجربة الاستخدام الأول تمكّنت أخيرًا من توضيح الفائدة التي سيجنيها المستخدمون من المنتج الذي تقدّمه، وشخّصت الخطوات التي يجب عليك اتخاذها بادئ الأمر، ثمّ بدأت بتمهيد الطريق أمام المستخدمين لإتمام تلك الخطوات، لتحتفل معهم بعد ذلك بأول إنجاز يحقّقونه. عظيم، ولكن ما الذي ستفعله بعد ذلك؟ الإجابة بسيطة: اجعلهم يعودون إليك مرّة أخرى وقدّم إليهم المزيد. من المؤكّد أنّه لن يسعك القيام بالكثير من الأمور في موقعك لدفع الناس إلى العودة إليه مرة أخرى. بدلًا من ذلك يمكنك التواصل مع المستخدمين باتباع الطريقة التقليدية: رسالة إلكترونية ذات قيمة موجّهة ترسلها في الوقت المناسب. غالبًا ما يساء استخدام رسائل دورة الحياة Lifecycle emails في تطبيقات الإنترنت، وإن كنت ستعتمد على رسالة ترحيب مملّة وتتأمّل بعدها أن تكون رسالة (لقد انتهت الفترة التجريبية الخاصّة بك) المرسلة بعد أسبوعين كافية لدفع الناس إلى الحصول على القيمة الكلية التي يقدّمها منتجك إليهم، فاعلم حينها أنّك تقدم على مجازفة كبيرة. بالنسبة إلي فإنّي أحبّذ أن تكتب قائمة بالخطوات المهمّة التي يجب على المستخدمين إنجازها لتحقيق الفائدة القصوى من البرنامج، ثم اكتب سلسلة من رسائل البريد الإلكتروني التي يمكن إرسالها إلى الأشخاص الذين لم ينجزوا خطوة معيّنة من الخطوات غير المنجزة. فائدة: لا تأمر الناس باتخاذ إجراء معيّن عندما تكتب هذه الرسائل، بل حاول استخدام أسلوب تقديم المنفعة التي لا تفصلهم عنها سوى النقر على الفأرة. على سبيل المثال: إن كان لديك تطبيق للمواعدة، فلا تخاطب المستخدمين بعبارة "يرجى رفع أكثر من صورة واحدة" بل اسألهم: "هل تعلم أن الأشخاص الذين يمتلكون أكثر من صورة واحدة تزداد فرصتهم في الحصول على الموعد خلال يوم واحد بنسبة 60%". من لا يرغب في الحصول على المزيد من المواعيد. نجاح مشروعك التجاري من عدمه يعتمد على تجربة الاستخدام الأول إن إدارة مشروع تجاري برمجي أمر صعب، فمشاغل الناس في تزايد مستمر، وفترات اهتمامهم في تناقص مستمر أيضًا، إضافة إلى وجود المنافسين في كل مكان، ولا يمكنك الاعتماد على الانطباعات الأولية المفاجئة في بناء خطتك التي ستتبعها في كسب العملاء. لقد قمت باستثمار الكثير من الوقت والجهد والمال في بناء مشروعك التجاري، وعلى الأرجح فأنت تمتلك منتجًا رائعًا ترغب في مشاركته مع الآخرين، لذا لا تجعل كلّ ذلك يضيع سدًى لأنّ تجربة الاستخدام الأوّل كانت سيئة. لا تدّخر جهدًا في جعل عملية التهيئة عملية مثالية ومتكاملة لتكون قادرًا على دفع المستخدمين إلى العودة إليك مرة أخرى. ترجمة -وبتصرّف- للمقال Are You Making These 5 Common User Onboarding Mistakes لصاحبه Samuel Hulick.1 نقطة