لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 12/16/22 في كل الموقع
-
استخدم هذا الكود للاتصال بقاعدة البيانات try { $conn = new PDO("mysql:host=localhost;dbname=data_user",'root', ''); // set the PDO error mode to exception $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "Connected successfully"; } catch(PDOException $e) { echo "Connection failed: " . $e->getMessage(); } المشكله انه اذا معلومات الاتصال بقاعدك البيانات غير صحيحه تظهر الاخطاء أنا بصدد القيام بأمر ولكن يلزمني اولا التحقق من نجاح الاتصال بقاعدة البيانات لتنفيذ هذا الامر واذا كانت معلومات الاتصال غير صحيحه نقوم بتنفيذ امر اخر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 نقطة
-
GB و GB ، وحدات قياس السعة والذاكرة يجب أن تكون قد واجهت بالفعل الرموز GB أو GB ، إما في بيئتك المهنية ، على عبوة مفتاح USB الخاص بك على سبيل المثال ، أو حتى في المنزل ، على الصندوق.من القرص الصلب الخارجي أو كمبيوتر محمول. المصورون أيضًا على دراية بهذه النقوش التي يتم عرضها غالبًا على ملصق بطاقة SD الخاصة بأجهزتهم. لكن ماذا يعني هذان الحرفان؟ في عالم الحوسبة ، يرمز GB إلى "جيجابايت" ، أو ما يعادل مليار بايت. GB تعني غيغا بايت ، حرفيا مليار بايت. وحدات البايت والثماني وحدات قياس تستخدم لتقييم الذاكرة أو سعة التخزين للأجهزة الرقمية. الثماني بتات هي الترجمة الفرنسية للمصطلح الإنجليزي "بايت". لذلك فإن GB و Go اختصارات تعني نفس الشيء تمامًا!1 نقطة
-
1 نقطة
-
لا يوجد مدة معينة لانتهاء الدورة، وحتى يعد تقديم الامتحان والحصول على الشهادة فإنك تستطيع الوصول إلى مواد الدورة والتي تتحدث باستمرار. ويمكنك معرفة المزيد من المعلومات من هنا1 نقطة
-
1) أكتب دالة تأخذ رقمين ثم تقوم بارجاع الرقم الاول بعدد خانات مساوٍ للرقم الثاني استخدم ال header التالي لتعريف الدالة def format(n1,n2) : مثال : اذا تم تمرير القيمة التالية الي الدالة fomat(987,10) فانها تقوم بارجاع عدد بالصورة التالية 0000000987 اي عدد مكون من 10 خانات وهي عبارة عن خانات العدد الاول ثم يتم تعبئة باقي الخانات بالاصفار مثال : اذا تم تمرير القيمة التالية الي الدالة fomat(83,4) فانها تقوم بارجاع عدد بالصورة التالية 0083 اي عدد مكون من 4 خانات وهي عبارة عن خانات العدد الاول ثم يتم تعبئة باقي الخانات بالاصفار fomat(65745,7) فانها تقوم بارجاع عدد بالصورة التالية 0065745 fomat(85433,4) فانها تقوم بارجاع رسالة قيمة خطأ عدد الخانات المدخل اقل من عدد خانات الرقم 2 ) أكتب دالة تقوم بأخذ عددين ثم تقوم بارجاع العدد الاول مع فصل الخانات باستخدام * بعد مسافة من الخانات تساوي العدد الثاني قم باستخدام ال header التالي def split(n1,n2): مثال : مثال : اذا تم تمرير القيمة التالية الي الدالة split(123123124113,2) فانها تقوم بارجاع عدد بالصورة التالية 12*31*23*12*41*13 مثال : اذا تم تمرير القيمة التالية الي الدالة split(12312983216547312411,5) فانها تقوم بارجاع عدد بالصورة التالية 12312*98321*65473*12411 لا تقم باستخدام دوال جاهزة في حل الواجب لا تخرج عن المواضيع التالية عند الحل (المتغيرات والعمليات الحسابية في لغة البايثون والشروط والدوال والتكرارات)1 نقطة
-
1 نقطة
-
يمكنك الغاء تفعيل وضع التصحيح debug mode من اعدادات PHP. من ملف الاعداد php.ini قم بتعديل الاسطر المعنية لتصبح كـ: display_startup_errors = Off display_errors = Off html_errors = Off أو قم بذلك عن طريق الاستعانة الوظيفة display_errors: display_errors(false);1 نقطة
-
ممكن مساعدة مشكوراُ احتاج كورس تطوير البرمجيات بلغة بايثون ضرورى ولكن سعره مرتفع جداً فهل يمكن لأحد أن يساعدنى بالحصول عليه وعندما سأتم الكورس إن شاءالله سأقوم بشرائه وشكراً1 نقطة
-
1 نقطة
-
يمكنك لذلك الاستفادة من رمز الخطأ عن طريق التابع getCode والذي يعيد رمز الخطأ الذي حدث، ثم التحقق من ذلك الرمز، فمثلًا في حال كان الرمز يبدأ بالرقم 08 فيعني أن الخطأ سببه مشكلة في الاتصال، في هذه الحالة يمكنك تنفيذ الأوامر الأخرى التي تريد كالتالي: catch(PDOException $e) { if(str_starts_with((string)$e->getCode(),'08')){ // خطأ في الاتصال ... } else { // خطأ آخر echo "Connection failed: " . $e->getMessage(); } }1 نقطة
-
سأشرح لك الفكرة و يمكنك محاولة كتابة الكود مجدداً و إخباري في حال حدوث أخطاء. في البداية من الجيد أنك قمتي بتحويل الرقم إلى سلسلة نصية فهذا صحيح، بعد ذلك علينا تقسيم السلسلة، أسهل طريقة هي بوضع الأقسام ضمن list، بحيث نقوم بالمرور خانتين خانتين (يمكنك استعمال البارامتر الثالث في range للقيام بذلك، فهو يمثل مقدار الخطوة) و استعمال ال slice لأخذ محرفين كما يلي a[i:i+2] يمكن وضع ذلك كل مرة في ال list التي قمنا بتعريفها مسبقاً. و في النهاية يمكن استعمال التابع join على السلسلة النصية '*' ليقوم بجمع ما ضمن المصفوفة و وضع الرمز * بينها.1 نقطة
-
هناك علاقة واحد لكثير بين الموعد والطبيب أو بما تُسمى Foreingkey class Booking(models.Model): doctor = models.ForeignKey(Doctor,on_delete=models.CASCADE) # هنا تكون العلاقة ثم يمكنك الإستعلام عن جدول المواعيد حسب العيادة views.py def bookings(request,id): doctor = Doctor.objects.get(id=id) bookings = Booking.objects.filter(doctor=doctor) #جلب المواعيد حسب العيادة او الطبيب1 نقطة
-
شكرا لحضراتكم على هذا المجهود الرئع لو سمحت عاوز ابدأ من الصفر فى برمجة التطبيقات لاصبح محترف بعد ذلك.... ما هى خطوات الدورات التي يجب على دراستها بالترتيب وشكرا ....1 نقطة
-
لقد بلغت شهرة نظام أندرويد Android المفتوح المصدر مبلغًا يغني عن التعريف به، هذا النظام الذي ابتدأ من الصفر عام 2008، لم يلبث أن أصبح أشهر أنظمة تشغيل الجوالات عام 2012، ليستمر صعوده حتى يومنا هذا فانظر حولك وسترى جهازًا أو جوالًا يعمل بنظام أندرويد هذا إن لم يكن نظام جوالك أندرويد أصلًا، ففي سوق صناعة الجوالات، تعتمد شركة آبل على نظام iOS وتقيده بأجهزتها التي تصنعها فقط أما بقية الشركات فتلجأ عادةً إلى نظام تشغيل أندرويد المفتوح المصدر وتخصصه -بما أنه قابل للتخصيص والتطوير- لأجهزتها بدلًا من اختراع نظام تشغيل جديد. فرض نظام أندرويد نفسه في سوق الأجهزة المحمولة والملبوسة (قابلة للارتداء مثل الساعات الذكية) لعدة عوامل منها أنه مفتوح المصدر وقابل للتخصيص والتطوير والتوسيع ليناسب العتاد الذي يعمل عليه وهذا وفر بيئة خصبة لبرمجته وبرمجة تطبيقات توسع من عمله، لذا أصبحت مهنة برمجة الأندرويد تجذب الكثير من المبرمجين وحتى من يريد تعلم البرمجة إلى هذا السوق الكبير. فإن كنت مهتمًا بتعلم مهنة برمجة الأندرويد وتطوير التطبيقات له فأنت في المكان الصحيح، حيث سيأخذك هذا المقال في رحلة يشرح لك فيها كيفية دخول عالم برمجة تطبيقات الأندرويد وكل ما يتعلق به، فهل أنت مستعد؟ لننطلق! أهمية منصة أندرويد قبل 14 عامًا، في 23 سبتمبر 2008، كان الإطلاق الأولي لنظام أندرويد، حيث تميز النظام على منافسيه بأنه مفتوح المصدر، وسهل الاستخدام، وقابل للتخصيص، إذ تستطيع كل شركة صانعة أن تخصصه كما تريد، وهو ما جعله واسع الانتشار. حسب موقع statcounter، يبلغ نصيب نظام الأندرويد من سوق أنظمة تشغيل الجوالات العالمي أكثر من 71%، حسب بيانات سبتمبر 2022. أما نصيبه من الأسواق المحلية لأنظمة الجوال فيختلف باختلاف البلد، ففي مصر مثلًا، وحسب أرقام الموقع السابق نفسه، تبلغ حصة نظام الأندرويد من إجمالي السوق 86%، أما في المملكة العربية السعودية، حيث يبلغ التنافس أشده بين نظام الأندرويد ونظام iOS فتنخفض هذه الحصة حتى تبلغ أقل من 46%. بالمقابل، يحافظ الأندرويد على صدارته في الإمارات العربية المتحدة حيث تبلغ حصته من السوق أكثر من 72%. تدل هذه الأرقام على استخدام واسع لنظام الأندرويد في شتى بلدان العالم عمومًا والعربي خصوصًا، وهذا الانتشار الواسع للنظام يكسب تطبيقات الأندرويد أهمية كبيرة لا سيما في الأسواق التي تسود فيها المنصة، إذ تعد تطبيقات اندرويد النافذة التي يصل عبرها أصحاب الأعمال إلى فئة كبيرة من الناس، وهو ما يدفعهم إلى الاهتمام بها واستثمار أموال كبيرة في سوق برمجة التطبيقات. خطوات بناء تطبيق أندرويد تمر عملية برمجة تطبيقات الأندرويد بالخطوات التالية: جمع المتطلبات تصميم وتطوير واجهة المستخدم وتجربة المستخدم برمجة التطبيق اختبار التطبيق ونشره تشمل الخطوة الأولى معرفة ميزات التطبيق ومتطلباته وهدفه ومجال عمله ومن سيستخدمه والذي يمهد الطريق للخطوة التالية وهي تصميم شكل التطبيق وصفحاته عبر تطبيق تصميم واجهات UI مثل تطبيق Adobe XD وبعدها يستلم المبرمج أو فريق البرمجة التصاميم لتنفيذها وبرمجة تطبيق الأندرويد وبعد الانتهاء منه ينتقل إلى مرحلة الاختبار ثم النشر على متجر التطبيقات اندرويد وهو جوجل بلاي ستور Google Play Store وهو سوق تطبيقات الأندرويد. يمكن تخطي بعض المراحل مثل مرحلة التصميم أو الاختبار بحسب عدة عوامل منها الميزانية المرصودة ووقت التنفيذ المحدد وفكرة التطبيق والعائد الاستثماري منه وغيرها، ولمزيد من التفاصيل، تجد هذه الخطوات مشروحة بالتفصيل في مقالة برمجة تطبيقات الجوال. طرق برمجة تطبيقات الأندرويد إن معرفة أنواع التطبيقات التي يبنيها مطورو تطبيقات الجوال من أساس عملية برمجة التطبيقات، حيث تحدد المجال الذي تريد أن تتخصص فيه لبرمجة تطبيقات اندرويد، وحاليًا تنحصر أنواع تطبيقات الأندرويد بخيارين اثنين هما: التطبيقات الأصيلة Native Mobile Apps التطبيقات الهجينة Hybrid Mobile Apps تطبيقات الأندرويد الأصيلة Native تبنى تطبيقات الأندرويد الأصيلة باستخدام حقيبة التطوير التي توفرها غوغل للمطورين Android SDK، وتختص هذه التطبيقات بنظام تشغيل أندرويد ولا يمكن تشغيلها على أي نظام تشغيل آخر إلا باستخدام محاكٍ مثل بلوستاكس BlueStacks أو أنبوكس Anbox لأنظمة لينكس. تتميز هذه التطبيقات بقدرتها على الاستفادة من كامل وظائف الجهاز وعتاده كالحساسات والكاميرا والمايك وجهاز تحديد المواقع والذاكرة وغيرها، حيث تتواصل مباشرةً مع نظام التشغيل ولا يوجد وسيط بينهما، لذلك، تقدم التطبيقات أندرويد الأصيلة أفضل أداء وسرعة عندما تقارن ببقية أنواع التطبيقات. من أمثلة تطبيقات الأندرويد الأصيلة: تطبيق متجر Google Play. دورة تطوير التطبيقات باستخدام لغة JavaScript تعلم البرمجة بلغة جافا سكريبت انطلاقًا من أبسط المفاهيم وحتى بناء تطبيقات حقيقية. اشترك الآن تطبيقات الأندرويد الهجينة Hybrid تشبه تطبيقات اندرويد الهجينة التطبيقات الأصيلة من ناحية الشكل وطريقة التثبيت والفتح والعرض والإزالة ضمن قائمة التطبيقات في نظام التشغيل ولا يمكن التفريق بينها من هذه الناحية ولكن الفرق يكمن في عملها داخليًا وفي تواصلها مع نظام التشغيل. تعمل التطبيقات الهجينة من حاوية عرض الويب تدعى WebView التي يوفرها نظام التشغيل لعرض التطبيقات المبنية على تقنيات الويب، حيث تبنى هذه التطبيقات باستخدام تقنيات الويب المختلفة، وهو ما يجعل أداءها أبطأ ووصولها للعتاد مقيد بالمقارنة مع التطبيقات الأصيلة لأنها لا تتواصل مع نظام التشغيل مباشرةً وبالتالي فهي لا تناسب جميع التطبيقات، فمن غير المجدي بناء تطبيقات من هذا النوع تستهلك موارد الجهاز بشكل كبير مثل الألعاب. توفر هذه التطبيقات الكثير من الوقت والجهد والتكلفة لأنك تكتب كود التطبيق مرة واحدة وتصدره إلى مختلف منصات التشغيل من بينها منصة أندرويد، كما أن تعلمها يعني تعلم تطوير الويب في الوقت نفسه وبالتالي الدخول إلى سوق برمجة مواقع الويب وهذه ميزة أخرى للمبرمج نفسه، فإن كنت كمبرمج تريد التخصص في هذا المجال أو قريبًا منه، فهذا النوع من التطبيقات مناسب لك. من أمثلة تطبيقات الأندرويد الهجينة: تطبيق UBER. أنواع تطبيقات أخرى هنالك نوع آخر لا يمكن إدارجه رسمًا ضمن تطبيقات أندرويد وهو تطبيقات الويب التقدمية PWA لأنها ليست تطبيقات أندرويد، بل هي تطبيقات ويب يتيح لك المتصفح «تثبيتها»، أي إضافة أيقونتها إلى شاشتك الرئيسة في الجوال وقائمة التطبيقات في نظام التشغيل. تبنى هذه التطبيقات باستخدام تقنيات الويب، وتسهّل على المطور عملية التحديث والتطوير من جهته، إذ لا تتطلب من المستخدم إجراء أي تحديث، وتستطيع هذه التطبيقات الاستفادة من الميزات والأذونات التي يستطيع المتصفح الوصول إليها، وتتميز بظهورها على قائمة البحث عن التطبيقات في نظام التشغيل وبسهولة تثبيتها وإزالتها وصغر حجمها. تظهر مكتبات حديثة حاليًا تتيح لك تحويل تطبيقات الويب التقدمية إلى حزم apk (صيغة حزم تطبيقات أندرويد) وبالتالي إمكانية نشرها في متجر جوجل بلاي Google Play ليستيطع المستخدم تنزيلها منه بدلًا من الدخول إلى موقعها في متصفح الويب وتثبيتها منه آنذاك، وهو نهج جديد بعد قد يتطور مستقبلًا لذا أحببت ذكره هنا. من أمثلة تطبيقات الويب التقدمية: تطبيق أنا لإدارة المهام. لغات برمجة تطبيقات الأندرويد تتنوع لغات برمجة تطبيقات الأندرويد وتتعدد، إذ لكل نوع من أنواع التطبيقات (السابق ذكرها) عدة لغات برمجة يمكن للمطور أن يختار منها وهي: لغة جافا Java لغة كوتلن Kotlin لغة جافاسكربت JavaScript لغة دارت Dart لغة جافا Java كانت لغة جافا Java رسميًّا هي لغة البرمجة للأندرويد أول الأمر، إلى أن ظهرت لغة كوتلن Kotlin وحلت محلها، لكن جافا لم تزل اللغة الأكثر استخدامًا لتطوير تطبيقات الأندرويد الأصيلة. تعد لغة جافا من أهم اللغات في عالم البرمجة، وتتيح استخدام حقيبة تطوير برمجيات الاندرويد الصادرة من غوغل Android Software Development Kit أو SDK، فإذا كنت تعرف لغة جافا من قبل، فقد تكون خيارك الأفضل، أما إذا كنت مبتدئًا لا تعرفها، فقد تجد أن كوتلن Kotlin أسهل منها رغم أنها قريبة عليها. لغة كوتلن Kotlin لغة كوتلن اليوم هي لغة البرمجة للأندرويد رسميًّا، حسب تصريح غوغل عام 2019، وهي لغة متعددة المنصات يمكن أن تستعمل بديلًا من جافا في تطوير تطبيقات الأندرويد. تتميز كوتلن بتوافقها مع لغة جافا وبأنها تعمل على الأساس الذي تعمل عليه جافا وهو آلة جافا الافتراضية JVM، وتزيل لغة كوتلن تعقيدات لغة جافا وتسهّل عملية كتابة الكود. تعدّ هذه اللغة أسهل على المبتدئين ونقطة دخول ممتازة لعالم برمجة تطبيقات الأندرويد. لغة جافاسكربت JavaScript إذا كنت من مستخدمي لغة جافاسكربت، يمكنك بدء تعلم برمجة تطبيقات الأندرويد عبر إطار العمل React Native. إطار React Native هو إطار عمل مفتوح المصدر أنشأته شركة ميتا لتطوير تطبيقات أندرويد ونظام iOS وويندوز وغيرها من الأنظمة بناء على مكتبة React، ويوفر هذا الإطار الكثير من الوقت والجهد لأنه يساعدك على برمجة تطبيق واحد لمختلف أنظمة التشغيل ومنها أندرويد. يقترب أداء التطبيقات المطورة بإطار React Native من أداء التطبيقات الأصيلة، لأن كود React Native يترجَم بعد كتابته إلى كود منصة الأندرويد (أو المنصة المستهدفة). هنالك أطر عمل أخرى مثل أيونيك Ionic وكوردوفا يمكن استعمالهما مع لغة جافاسكربت كما يمكن استخدام جافاسكربت كذلك مع HTML، و CSS لبناء تطبيقات ويب تقدمية. لاحظ أن دورة تطوير التطبيقات باستخدام لغة JavaScript التي توفره أكاديمية حسوب تشرح كل أطر العمل المستعملة في تطوير تطبيقات اندرويد التي ذكرناها وهي أفضل محتوى عربي متوفر حاليًا لتعلم برمجة تطبيقات الأندرويد بلغة جافاسكربت، المميز أيضًا في الدروة أنها تضمن لك بعد تخرجك من الدروة إعادة ما دفعته بتحصيل فرصة عمل أو إعادة المبلغ الذي دفعته. لغة دارت Dart لقد صعد إطار Flutter لتطوير التطبيقات متعددة المنصات صعودًا كبيرًا في السنتين الأخيرتين، وأصبح أشهر إطار لبناء هذه التطبيقات. تترجم فلاتر الكود المكتوب بدارت إلى منصة الأندرويد مثل إطار React Native تمامًا، وهو ما يعطي التطبيق المبني فيها أداءً يشبه أداء التطبيق الأصيل. يعد إطار فلاتر ولغته دارت سهلي التعلّم بالمقارنة مع لغة جافا أو كوتلن مثلًا. لذلك يبدأ كثير من المبتدئين تعلمهم منه، كما يعفيك فلاتر من تعلم تقنيات الويب HTML و CSS و JavaScript، لأنه لا يعتمد عليها، خلافًا لإطار React Native مثلًا. لغات أخرى يمكن استعمال لغة C++ لبرمجة تطبيقات الأندرويد باستعمال حقيبة التطوير الأصيلة للأندرويد Android Native Development Kit أو NDK لكن استعمال هذه اللغة أصعب وأقل مرونة، وقد يؤدي في كثير من الأحيان إلى أخطاء وتعقيدات. يمكن استعمال لغة بايثون Python ومكتبة Kivy مفتوحة المصدر لبناء تطبيقات أندرويد أيضًا، لكن هذه اللغة لا تتيح استعمال الوظائف الأصيلة للجهاز، وهي غير مدعومة رسميًّا. خطوات تعلم برمجة الأندرويد مع كل هذه الخيارات، في الطرق واللغات، قد تشعر بشيء من الضياع. سأقدم هنا بضع خطوات تساعدك على شق طريقك في تعلم برمجة تطبيقات الأندرويد. ألق نظرة على موقع أندرويد للمطورين، حاول أن تحيط فهمًا بمكونات النظام والأفكار والتقنيات المطروحة في الموقع. ليس عليك أن تحفظ كل شيء، لكنك سترجع إلى هذا الموقع في المستقبل عندما تبحث. ابدأ بتعلم لغة البرمجة أو الإطار الذي تفضله. لا تنسَ أن غوغل تفضل وتنصح باستخدام لغة كوتلن، لكن المبرمجين يستعملون مختلف لغات البرمجة المذكورة أعلاه لتطوير التطبيقات. ابدأ التكويد. أدوات برمجة تطبيقات أندرويد قد تختلف أدوات تطوير تطبيقات الأندرويد باختلاف لغة البرمجة المستخدمة، لكن الأداة الأكثر استعمالًا هي بيئة التطوير أندرويد ستوديو Android Studio، حيت تُتسعمل هذه البيئة مع لغة جافا Java وكوتلن Kotlin، ومع إطار فلاتر Flutter كذلك. بالنسبة لإطار React Native، يمكن استخدام أي بيئة معه من قبيل VS Code. بيئة أندرويد ستوديو Android Studio هي بيئة متعددة المنصات (يمكن تثبيتها على ويندوز أو لينكس). بعد تحميل ملف التثبيت، افتح وستظهر لك الشاشة التالية: اختر التثبيت النظامي Standard. اختر الوضع الليلي أو النهاري حسب اختيارك. اضغط Next، وانتظر تحميل المكونات (إذا كنت من الدول المحظورة من غوغل، فقد تحتاج إلى الاتصال عبر بروكسي). ستبدأ عملية تحميل المكونات، وبعد الانتهاء اضغط على Finish. بعد تثبيت البيئة ومكوناتها، نبدأ مشروعًا جديدًا من واجهة البيئة، كما يلي: اضغط على New Project. نختار نشاطًا فارغًا (أو غيره إن شئت) Empty Activity. نختار اسم التطبيق ولغة البرمجة المراد استخدامها والإصدار المدعوم الأدنى من نظام أندرويد، ثم نضغط Finish. يمكنك الآن أن تنطلق في عالم تطوير تطبيقات الاندرويد مع بيئة أندرويد ستوديو Android Studio! فرص العمل في سوق تطوير تطبيقات الأندرويد لا داع لذكر إحصائيات واستشهادات توضح لك ما هو واضح أصلًا وهو أن سوق برمجة تطبيقات الاندرويد كبير وعليه طلب شديد بسبب الاعتماد على تطبيقات الجوال اعتمادًا كبيرًا فقلما تجد خدمة ليس لها تطبيق جوال مثل خدمات البنوك والحجوزات والصحة وغيرها. وبسبب الطلب الكبير وحاجة السوق إلى مبرمجي أندرويد، تجد أن الرواتب في هذا المجال مرتفعة مقارنة برواتب مهن أخرى، حيث يقدّر موقع Payscale متوسط أجور مطوري تطبيقات الأندرويد المتخصصين في الإمارات العربية المتحدة بنحو 87,000 درهم إماراتي سنويًّا. أما في المملكة العربية السعودية، فيقدّر الموقع نفسه، الأجر السنوي لمطور تطبيقات الأندرويد المتخصص بنحو 55,000 ريال سعودي. كما أنك تستطيع العمل في هذا المجال من منزلك عن بعد، جرب مثلًا البحث عن عمل عن بعد في برمجة تطبيقات الأندرويد عبر موقع بعيد وستجد أنه لا يخلو عادةً من فرص عمل لمطوري تطبيقات الأندرويد، كذلك يمكنك كذلك عرض خدماتك في موقع خمسات لبرمجة تطبيقات أندرويد، ولا تنسَ أن تطالع المشاريع البرمجية في موقع مستقل التي لطالما كانت مليئة بمشاريع لتطوير وبرمجة تطبيقات الأندرويد بمختلف أنواعها. مصادر تعلم برمجة تطبيقات الاندرويد سأرشح بعض المصادر التعليمية التي يمكنك أن تنطلق منها في هذا المجال: توثيق لغة كوتلن العربي كتاب أتقن لغة كوتلن سلسلة تعلم لغة جافا ما يزيد عن 80 مقال تعليمي توثيق لغة جافاسكربت توثيق مكتبة React توثيق إطار العمل React Native كتاب تعلم البرمجة بلغة جافاسكربت دورة تطوير التطبيقات باستخدام لغة جافاسكربت هذه قائمة بسيطة وسأترك لك الاطلاع على بقية التوثيقات العربية في موسوعة حسوب التي ستجد فيها كل توثيقات تقنيات الويب مثل HTML و CSS وأيضًا لا تنسَ الاطلاع على قسم البرمجة وأيضًا قسم الكتب في أكاديمية حسوب ففيهما مقالات تعليمية وعلم نافع دفين يستحق الاطلاع! خاتمة وصلنا إلى نهاية هذا المقال الذي عرضنا فيه سريعًا أهمية منصة أندرويد وكيفية برمجة تطبيقات الأندرويد واللغات المستخدمة فيها ثم تطرقنا أخيرًا إلى خطوات التعلم مع عرض مصادر جيدة للانطلاق منها ودخول سوق العمل. أخيرًا، أرجو لك التوفيق في رحلتك لتعلم برمجة تطبيقات الأندرويد والعمل فيها. وأرجو أن تكون هذه المقالة ساعدتك في دخولك إلى هذا العالم الكبير! اقرأ أيضًا برمجة تطبيقات سطح المكتب ما هي فوائد تعلم البرمجة؟1 نقطة
-
برمجة تطبيقات الجوال أصبحت واحدة من أهم المهن في عالمنا الحديث بسبب انتشارها الواسع واعتمادنا عليها في حياتنا اليومية، إذ تطبيقات الجوال هي ببساطة برامج مصممة لتعمل على أجهزة الجوال المحمولة، كالهواتف المحمولة والأجهزة اللوحية والساعات الذكية. كانت تطبيقات الجوال تركز في بداية ظهورها على دعم الإنتاجية، كتطبيقات الرسائل وجهات الاتصال والبريد الإلكتروني والتقويم، لكن مع تطور العصر الرقمي ورقمنة كل شيء حولنا تقريبًا، اتسعت دائرة عمل تطبيقات الجوال حتى شملت مجال الصحة مثل تطبيقات اللياقة البدنية ومجال المال مثل تطبيقات البنوك والحوالات المالية ومجال التواصل مثل تطبيقات التواصل الاجتماعي والاتصال المرئي المختلفة ومجال الألعاب وكل المجالات الأخرى حولنا تقريبًا. بناءً على ذلك، زاد اعتمادنا على تطبيقات الجوال لذا زادت الحاجة إلى برمجة تطبيقات الجوال وتطويرها وصيانتها، لذا سيناقش هذا المقال موضوع برمجة تطبيقات الجوال وأنواعها وأبرز لغاتها وأهميتها وكيفية تعلمها، فهل أنت جاهز للتعرف على هذا المجال ودخوله؟ فلنبدأ! أهمية تطبيقات الجوال ومدى انتشارها وفقًا لموقع Statistica في إحصائيته عام 2021، بلغ عدد مستخدمي الجوالات أكثر من 6 مليارات إنسان ولاحظ أن عدد البشرية اليوم وصل إلى 8 مليارات بحسب إحصائيات WorldoMeters، مع توقعات بأن يبلغ أكثر من سبعة مليارات ونصف المليار عام 2027. لا غرابة إذن في أن برمجة تطبيقات الجوال صناعة مزدهرة ومقبلة على مستقبل مشرق. أما في عالمنا العربي، بلغ عدد مستخدمي الجوالات الذكية في مصر عام 2021 قريبًا من 50 مليون مستخدم، أي ما يقارب نصف عدد السكان الكلي. في عام 2019، بلغ عدد مستخدمي الجوالات في المملكة العربية السعودية 28.81 مليون مستخدمًا، أي ما يكافئ 84% من تعداد السكان. إليك بعض الإحصائيات التي قد تثير اهتمامك وتوضح مدى استخدام الجوال وتطبيقات الجوال: حسب تقرير موقع DataReportal عام 2022، تبلغ حصة الجوالات من وقت الشباب على الإنترنت أكثر من 53% ، والمقصود بالشباب هنا الذين في عمر العمل (من عمر 15 إلى 64). حسب تقرير State of Mobile الصادر عن موقع data.ai، يقضي مستخدم الجوال العادي بالمتوسط 4 ساعات و 48 دقيقة من يومه في استعمال الجوال. ستبلغ عائدات تطبيقات الجوال 430 مليار دولار في 2022، حسب بيانات موقع Statistica. حسب إحصائيات غوغل وإبسوس الصادرة في أكتوبر 2016، يحتوي جوال المستخدم المتوسط 35 تطبيقًا مثبتًا. تبين هذه الإحصائيات حجم سوق تطبيقات الجوال واتجاهه الصاعد، وتعطينا لمحة عن الفرصة الكامنة في تعلم برمجة تطبيقات الجوال ودخول هذا السوق. أشهر منصات الجوال: مقارنة بين أندرويد ونظام iOS لا نكاد نرى في سوق تطبيقات الجوال اليوم نظامًا سوى أندرويد Android ونظام iOS (نظام جوالات الآيفون)، فحسب إحصائيات موقع Statistica، بلغ نصيب نظام أندرويد من سوق أنظمة الجوالات العالمي في أغسطس 2022 أكثر من 71%، في حين كان نصيب نظام iOS أقل من 28%، أما الأنظمة الأخرى فلم تبلغ حصتها إلا 0.65%. أما في المملكة العربية السعودية، وفقًا لإحصائيات موقع statcounter، يحتل نظام iOS الصدارة إذ بلغ نصيبه في سبتمبر 2022 أكثر من 54%، أما نظام أندرويد فاحتل المرتبة الثانية إذ بلغت نسبته من السوق الإجمالي أقل من 46%. وحسب إحصائيات الموقع نفسه، احتل اندرويد الصدارة المطلقة في مصر حيث بلغت حصته من سوق منصات الجوال 86% في سبتمبر 2022، أما نظام iOS فاكتفى بأقل من 14%. تساعدك هذه الإحصائيات على تحديد المنصة التي تريد تعلم تطوير تطبيقات لها والاختصاص بها إن تكن حددته مسبقًا، فمثلًا في بلد تكون المنصة السائدة فيه أندرويد فالتخصص في بناء تطبيقات اندرويد مناسب وهنالك احتمالية أكبر في العثور على فرصة عمل فيه، وفي كل الأحوال سوق برمجة تطبيقات الجوال واسع وكبير سواءً لمنصة أندرويد أو iOS وسواءً اخترت هذه أم تلك لتتخصص بها، يبقى هنالك خيار ثالث وهو التخصص في بناء تطبيقات واحدة وتعمل على كلا المنصتين وهذا ما سنتعرف عليه لاحقًا في فقرة منهجيات تطوير تطبيقات الجوال. دورة تطوير التطبيقات باستخدام لغة JavaScript تعلم البرمجة بلغة جافا سكريبت انطلاقًا من أبسط المفاهيم وحتى بناء تطبيقات حقيقية. اشترك الآن مراحل برمجة تطبيقات الجوال قبل البدء ببرمجة تطبيق للجوال، لا بد من فهم مراحل تطوير التطبيقات مرحلة مرحلة، إذ تتنوع أساليب تطوير تطبيقات الجوال (والتطبيقات عمومًا)، لكنها تتقاطع مع هذه المراحل: وضع المتطلبات تصميم تطبيق الجوال برمجة التطبيق اختبار التطبيق ونشره وضع المتطلبات تشمل المرحلة الأولى تحديد ميزات التطبيق ومتطلباته الوظيفية والأدائية، وتجيب على أسئلة مثل ما هي المشكلة التي سيحلها التطبيق؟ كيف سيحلها؟ على أي منصة أو نظام سيعمل؟ ومن سيستفيد منه وكيف سيستخدمه؟ حيث سترسم لك الإجابة عن هذه الأسئلة صورة جيدة تستطيع أن ترى فيها كيف يمكن أن تمضي في عملية التطوير. غالبًا يعمل على هذه المرحلة صاحب التطبيق أو مدير المشروع -يسمى عادة مدير تطوير المنتج- أو في حالات أخرى يناقشها صاحب التطبيق معك قبل الانتقال إلى المرحلة الثانية، وعلى الهامش، إن عملت على هذه المرحلة فستكسب خبرة جيدة في إدارة تطوير المنتجات الرقمية. تصميم تطبيق الجوال في المرحلة الثانية، بعد فهم التطبيق وميزاته والمستخدمين الذين سيستخدمونه، يستطيع فريق التصميم البدء ببناء واجهات أولية وتطويرها حتى تبلغ الشمول والكمال، وتُستعمَل في هذه المرحلة برامج تصميم واجهات المستخدم UI مثل فيجما Figma أو أدوبي إكس دي Adobe XD، حيث تساعد هذه البرامج على بناء الواجهات واختبارها وتحديد المطلوب منها وإجراء أي تعديلات نهائية قبل البدء بمرحلة البرمجة والتطوير، إذ كل ذلك يختصر من مرحلة برمجة الواجهات ويسهل على المبرمج معرفة المطلوب بدقة. برمجة تطبيق الجوال في المرحلة الثالثة، بعد تصميم الواجهات تبدأ مرحلة البرمجة للواجهات الأمامية والخلفية للتطبيق، ويمكن أن تبدأ مرحلة برمجة الواجهات الأمامية frontend أولًا ثم تبدأ بعد الانتهاء منها مرحلة تطوير الواجهات الخلفية backend أو العمل عليهما سويةً وهذا يختلف باختلاف المنهجية المراد اعتمادها في برمجة تطبيق الجوال -سنتحدث عنها في الفقرة القادمة- ولغات البرمجة والتقنيات المراد استعمالها والميزانية المخصصة أصلًا لهذه المرحلة مرحلة برمجة تطبيق الجوال إذ هي أكثر مرحلة مكلفة في مراحل بناء التطبيق وأهمها. عمومًا، يمكن تخطي المرحلة الأولى والثانية والبدء بهذه المرحلة مباشرة بالنسبة للتطبيقات الناشئة أو التجريبية أو المستعجلة مثلًا فأحيانًا يأتي صاحب فكرة التطبيق إلى المبرمج مباشرة ويخبره بفكرته وما يطلبه من التطبيق مع مدة زمنية قصيرة ليبدأ المبرمج مباشرة بالعمل على التطبيق وبرمجته وبناء واجهاته بالاتفاق مع صاحبه واختصارًا للوقت، فإن لاقى التطبيق لاحقًا رواجًا وقارب الهدف منه، فيمكن العمل على تحسينه وإعادة تصميم واجهاتها مثلًا وتخصيص فريق كامل للعمل عليه وهكذا. اختبار التطبيق ونشره تقتضي المرحلة الرابعة اختبار المنتج بعد تطويره ثم نشره على متاجر تطبيقات الجوال المستهدفة للمنصة مثل متجر Google Play على منصة أندرويد ومتجر App Store على منصة iOS. تشمل هذه المرحلة اختبار تحقيق المنتج للهدف المطلوب من حيث الوظائف والتأكد من عدم وجود أي أخطاء فيه، كما تشمل اختبار جودته وسرعته وأدائه، وللاختبار نوعان: الاختبار اليدوي والاختبار المؤتمَت، قد يحتاج تطبيقك إلى أحدهما أو كليهما حسب نوعه، وبالنسبة للاختبار اليدوي فقد يضم فريقًا -من شخص أو أكثر- لاختبار التطبيق وميزاتيه وكل شيء فيه يدعى فريق ضمان الجودة QA team أو قد يقتصر الاختبار على صاحب التطبيق نفسه وفريق التطوير في التطبيقات الصغيرة والناشئة لتقليل التكاليف واختصار الوقت. منهجيات تطوير تطبيقات الجوال يستطيع المطور أن يطور تطبيق جوال بواحدة من منهجيات متعددة تتعلق بالمنصة المستهدفة تنقسم التطبيقات بناء عليها إلى الأقسام التالية: تطبيقات الجوال الأصيلة Native Apps تطبيقات الجوال الأصيلة متعددة المنصات Cross-Platform Apps تطبيقات الجوال الهجينة Hybrid Apps تطبيقات الويب التقدمية Progressive Web Apps تطبيقات الجوال الأصيلة Native Apps هي التطبيقات المبرمجة لنظام تشغيل معين فقط من نظم تشغيل الجوال المنحصرة حاليًا بنظام أندرويد ونظام iOS، وتتميز تطبيقات الجوال الأصيلة بأنها قادرة على التخاطب مع نظام التشغيل مباشرةً واستعمال وظائف النظام الأصيلة والتحكم المباشر والكامل بعتاد الجوال بكفاءة وسرعة مثل الاتصال بأجهزة الشبكة المحلية واستعمال الكاميرا والمايكروفون (المِجهار) وغيرها، وتقدم أمانًا جيّدًا. بالمقابل، كلفة تطوير وصيانة هذا النوع من التطبيقات مرتفعة نسبيًّا، وتتطلب وقتًا أكبر وكلفة زائدة للتطوير خصوصًا إن أردت استهداف منصة أندرويد ومنصة iOS سويةً، ولا يمكن تشغيلها على الحاسوب، ولا بد من تحديثها دوريًّا لاستعمال أحدث الميزات فيها. هذا النهج مناسبة للتطبيقات التي تتطلب تحكمًا كاملًا بالعتاد ووصولًا مباشرًا إليه مثل تطبيقات الألعاب التي تجري عمليات معالجة كبيرة وتحتاج إلى التحكم بالذاكرة والتخزين والصوت والمايكرفون. من أمثلة تطبيقات الجوال الأصيلة: تطبيق التقويم وتطبيق الكاميرا ومتجر التطبيقات الأساسي في جوالك. تطبيقات الجوال متعددة المنصات Cross-Platform Apps يقارب هذا النوع من التطبيقات الميزات التي تقدمها التطبيقات الأصيلة ولكن بمحدودية وصول أقل للعتاد قد تصل إلى حصول مشاكل في التوافقية أحيانًا وأداءً أقل من التطبيقات الأصيلة وهذا يعتمد على المكتبة أو إطار العمل المستخدم في التطوير. الميزة الأساسية من هذا النهج هي عدم الحاجة إلى كتابة كود مستقل لكل نظام تشغيل بل كتابة كود واحد للتطبيق يُحول عند النشر إلى المنصة المستهدفة سواءً أندرويد أو iOS، وهكذا تقلل التطبيقات المتعددة المنصات من كلفة تطوير التطبيقات وصيانتها، وتسهل عملية برمجة تطبيقات الجوال، كما تتيح تشغيل التطبيقات على الحاسوب. من أمثلة تطبيقات الجوال متعددة المنصات: متصفح Chrome، وفيرفكس، وتطبيق Adobe Reader، وغيرها. تطبيقات الجوال الهجينة Hybrid Apps تطبيقات الجوال الهجينة هي في حقيقتها تطبيقات ويب تظهر بمظهر تطبيقات الجوال ومغلفة بغلاف مخصص لعرضها ضمن الجوال، إذ تستعمل تطبيقات الجوال الهجينة في عرضها ضمن الجوال محركات عرض صفحات الويب WebView التي تستعملها متصفحات الويب. تسهّل منهجية تطبيقات الجوال الهجينة برمجة تطبيقات الجوال لا سيما على الذين يجيدون تطوير الويب لأن التقنيات المستعملة نفسها تمامًا، كما تُسرِّع من عملية تحويل موقع ويب جاهز إلى تطبيق جوال لاستهداف مستخدمي الجوال المحمول دون بذل جهد كبير أو تكاليف إضافية بتوظيف فريق تطوير متخصص. أحد أهم مساوئ التطبيقات الهجينة أنها لا تعمل بكفاءة التطبيقات الأصيلة أو متعددة المنصات ووصولها إلى العتاد محدود جدًا لأنها مبنية على حاوية وسيطة تصلها بنظام التشغيل، فهي مرتبطة في النهاية بمحدوديات وقيود تلك الحاوية الوسيطة. وعمومًا إن لم تكن للتطبيق حاجة كبيرة إلى التخاطب مع نظام التشغيل مباشرةً واستعمال عتاده من معالج وذاكرة وتخزين وكاميرا مثلًا، فهذا النهج مناسب وأي نهج آخر غير نهج التطبيقات الأصيلة، مثل أن يكون التطبيق لعرض بيانات مثلًا أو تتبع حالة طلب عبر رمز لديه أو غيرها من الحالات البسيطة. من أمثلة تطبيقات الجوال الهجينة: تطبيق Evernote وتطبيق UBER. تطبيقات الويب التقدمية Progressive Web Apps تشابه تطبيقات الويب التقدمية PWA تطبيقات الجوال الهجينة من حيث أنها تبنى باستخدام تقنيات الويب وتُعرض عبر متصفح الويب نفسه وتكون مخصصة لتظهر بمظهر تطبيق جوال أي الواجهات مناسبة للشاشات الصغيرة والمتوسطة كما أنها تعمل عند عدم الاتصال بالإنترنت عبر تخزين البيانات اللازمة لعرض صفحات التطبيق ولكن بمحدودية كبيرة حيث في النهاية تحتاج إلى اتصال في الإنترنت. تُضاف تطبيقات الويب التقدمية إلى الجوال من المتصفح، باستخدام خيار «إضافة إلى الشاشة الرئيسية» الذي يظهر عندما يفتح المتصفح تطبيق ويب تقدمي كما أن هنالك نهج حاليًا لنشر هذه التطبيقات ضمن متاجر تطبيقات المنصات مثل متجر جوجل بلاي Google Play وآب ستور App Store، وما يجري إضافته إلى نظام التشغيل أيقونة التطبيق ومعلومات عنه ليظهر ضمن قائمة التطبيقات وهيكل أساسي يُعرض في وضع عدم الاتصال عند فتحه دون إنترنت لذا تجد حجمها صغيرٌ جدًا بالمقارنة مع التطبيقات الأصيلة في نظام التشغيل. ميزة هذا النهج هو توفير وسيلة مختصرة للوصول إلى موقع ويب ضمن الجوال بدلًا من فتح المستخدم المتصفح ثم الدخول إلى موقع الويب إلا أنها مقيدة بما يتعلق بوصول التطبيق للتعاد وكفاءة عمله، لذا تجد أغلب من يلجأ إليه أصحاب مواقع الويب ومواقع التجارة الإلكترونية. من أمثلة تطبيقات الويب التقدمية: تطبيق إدارة المهام أنا وتطبيق Starbucks وتطبيق Flipboard. مقارنة بين التطبيقات الأصيلة ومتعددة المنصات والهجينة لكل من هذه المنهجيات محاسن ومساوئ، يستعرضها هذا الجدول: التطبيقات الأصيلة التطبيقات متعددة الأنظمة التطبيقات الهجينة التطبيقات التقدمية تطوَّر باستعمال حقائب التطوير التي يقدمها ملّاك المنصات مثل آبل وغوغل. وتعمل على منصة واحدة. تطور باستعمال لغات برمجة متنوعة ثم تصرَّف لكل نظام على حدة. تبنى التطبيقات الهجينة باستخدام أحدث تقنيات الويب مثل HTML، وCSS، وJavaScript، ثم تجمَّع في تطبيق جوال للنظام المستهدف. تختلف التطبيقات الهجينة عن التطبيقات متعددة الأنظمة من حيث أنها تستعمل حاويات الويب ونظام المتصفح. لا تتطلب تطبيقات الويب التقدمية تطوير تطبيقات أصيلة أو متعددة الأنظمة. تتجاوز هذه التطبيقات متاجر التطبيقات، وتعمل من المتصفح مباشرة، سواء أكان الجهاز حاسوبًا أم جوالًا. يُضاف إلى شاشة الجوال أيقونة تطبيق هي رابط إلى التطبيق. التطبيقات التقدمية في حقيقتها تطبيقات ويب تعمل على الجوال. تقدم أفضل سرعة وأداء. كود واحد للأنظمة المختلفة. الكود مشترك بين الويب وتطبيق الجوال. تعمل التطبيقات على الويب كما تعمل على الجوال. فيها تكاليف عالية لبناء وصيانة كود لكل منصة مفردة. في ظل غياب المكتبات الأصيلة، لا بد من الاعتماد على مكتبات مفتوحة المصدر. أداؤه ليس كالأصيل، لأنه مبني باستخدام تطبيقات مخصصة للويب. ما من دعم للأجهزة الأصيلة. تعمل على قدرات المتصفح فقط. لا بد من تطبيق الميزات بطرق مختلفة حسب حقيبة التطوير التي تقدمها المنصة. لم يكتب الكود بالمكتبة الأصيلة، أي لا بد من تصريفه وجسره، وهي عملية قد تكون صعبة. لا توفر دعمًا للأجهزة الأصيلة. إذا فُقد الاتصال، خسر التطبيق تفاعله إلى حد كبير. table { width: 100%; } thead { vertical-align: middle; text-align: center; } td, th { border: 1px solid #dddddd; text-align: right; padding: 8px; text-align: inherit; } tr:nth-child(even) { background-color: #dddddd; } أفضل طريقة لبرمجة تطبيقات الجوال بعد هذه المقارنة، قد يبقى في ذهنك سؤال: ما هي أفضل طريقة لبرمجة تطبيقات الجوال؟ في الحقيقة، ليس لهذا السؤال جواب واحد ثابت يصلح في كل الحالات. تعتمد طريقة المختارة لبرمجة تطبيقات الجوال على عدة عوامل منها القدرات التي يحتاج إليها التطبيق ومقدار ما سيستخدم من عتاد ويتواصل مع نظام التشغيل وعلى أهمية السرعة والأداء، ويعتمد أيضًا على الميزانية المرصودة وهو أهم العوامل صراحة، وعلى ظروف المستخدم الذي تستهدفة. إليك بعض النقاط التي تساعد في الاختيار: استعمل تطوير التطبيقات الأصيلة عندما يحتاج التطبيق إلى القدرات الأصيلة التي يقدمها الجهاز والنظام. تستطيع التطبيقات الأصيلة الوصول إلى القدرات العتادية في الجهاز كتحديد المواقع والكاميرا والمايكروفون، وهو ما يساعدها على تسريع تنفيذ المهام ويغني تجربة المستخدم. إذا كان بناء تطبيق مستقل لكل نظام يتطلب وقتًا أو تمويلًا أكبر من الذي عندك، فعليك بالتطبيقات متعددة المنصات وهي مناسبة أيضًا إذا أردت أن توحّد تجربة المستخدم بين المنصات، وأن يكون فريق تطويرك واحدًا ينشر للنظامين، وإذا لم تكن جاهزًا لبناء تطبيقين مختلفين وصيانتهما باستمرار. تعمل تطبيقات الويب التقدمية من المتصفح، وتطوَّر بتقنيات الويب التقليدية، لذا، اختر تطوير تطبيق تقدمي إذا كان لدى مستخدمك المستهدف اتصال لا يتقطّع بالإنترنت، وإذا كان تطبيقك يستطيع تقديم خدماته بالاعتماد على المتصفح وحده، ولا يتطلب قدرات الجهاز الأصيلة كتحديد المواقع والكاميرا والجيروسكوب وغيرها. تصميم تطبيقات الجوال: واجهة المستخدم وتجربة المستخدم UI/UX إن لمنظر تطبيق الجوال وهيئته أثر كبير على أذهان المستخدمين فلا بد أن تتأكد أن تصميم التطبيق جميل ويوفر تجربة سهلة للمستخدم. قبل تصميم تطبيق جوال، وهنا يجب أن نتعرف على مفهومين مهمين في مجال برمجة تطبيقات الجوال: واجهة المستخدم UI وتجربة المستخدم UX. تصميم واجهة المستخدم User Interface عند تصميم تطبيق جوال، يركز المصمم على أن يكون مظهر التطبيق جميلًا وجذابًا، فتصميم واجهة المستخدم هو أن تجعل مظهر تطبيقك متناسقًا ومتبعًا لأحدث الاتجاهات في التصميم، حتى تدعم تجربة المستخدم، إذ يستعمل المصممون عادة عدة مبادئ في التصميم منها مبدأ الهيكلة، ومبدأ البساطة، ومبدأ الانطباع، وغيرها. تصميم تجربة المستخدم User eXperience تجربة المستخدم هي كيفية تفاعل المستخدم مع التطبيق والتأكد من سهولتها ووضوحها. في تطبيقات الجوال، ينبغي أن يكون التصميم على نحو يخلق في المستخدم تجربة إيجابية بعد استخدام التطبيق. تشمل تجربة المستخدم عوامل كثيرة منها المظهر وسهولة الوصول وسهولة الاستخدام وأداء النظام وفائدته وغير ذلك وهنا عدة قوانين لتجربة المستخدم يطبقها المصمم مثل تأثير الاستخدام الجمال وتأثير التدرج نحو الهدف وتأثير الموقع التسلسلي وغيرها. ومع تزايد اتجاه الشركات إلى التصاميم المتمحورة على المستخدم، أصبح مفهوم تجربة المستخدم والعناية بكيفية تفاعله واستخدامه للتطبيق أمرًا لا بد منه. لغات برمجة تطبيقات الجوال تتنوع لغات برمجة تطبيقات الجوال حسب منهجية البرمجة وحسب نظام التشغيل وحسب المكتبة أو إطار العمل المراد استعماله بعد تحديد المنهجية ومنصة التشغيل وهذا ما سنتعرف عليه في هذه الفقرة. لغات برمجة تطبيقات الجوال الأصيلة عند برمجة تطبيقات الجوال الأصيلة، لا بد من الرجوع إلى حقائب التطوير ولغات البرمجة التي يوفرها أصحاب المنصات لمطوري التطبيقات وهي: لغة سويفت Swift لتطوير تطبيقات منصة iOS لغة كوتلن Kotlin لتطوير تطبيقات منصة أندرويد سويفت Swift تعد لغة سويفت Swift اللغة الرسمية من آبل وعند مقارنتها باللغات المستعملة في برمجة تطبيقات أندرويد، نجد أنها أسهل وتتطلب عملًا أقل، ويجعل فرق العمل هذا تطبيقات iOS أوفر وقتًا وجهدًا بالمقارنة مع تطبيقات أندرويد. كوتلن Kotlin أما تطبيقات أندرويد فيستعمل مطوروها عادةً لغة كوتلن Kotlin الرسمية أو يمكن استعمال لغة جافا Java التي كانت رسمية قبلها مع بيئة Android Studio التي توفرها شركة غوغل للمطورين، كما تتطلب تطبيقات أندرويد وقتًا أطول في التطوير والصيانة، بسبب تنوع الأجهزة وتعدد إصدارات النظام في السوق. يمكن الرجوع إلى توثيق لغة كوتلن العربي في موسوعة حسوب لمزيد من التفاصيل عنها. لغات برمجة التطبيقات متعددة المنصات تتوفر أطر عمل تُستعمَل في بناء تطبيقات الجوال مرة واحدة ثم تُصدَّر لتعمل على مختلف المنصات وهي: ريآكت نيتف React Native فلاتر Flutter أيونيك Ionic ريآكت نيتف React Native يعد إطار React Native أحد أهم إطارات برمجة التطبيقات متعددة المنصات، فبحسب إحصائيات موقع Statistica إن 38% من مطوري تطبيقات الجوال متعددة المنصات يستعملون إطار React Native. يتميز إطار React Native بأنه يستعمل لغة JavaScript ومكتبة React.js، وهو ما يجعل العمل فيه أسهل على متعلمي هذه المكتبة المستعملة أصلًا في بناء مواقع الويب. يمكن تشغيل تطبيقات React Native على أجهزة الأندرويد، ونظام iOS، ونظام macOS، ونظام tvOS، والويب، وعلى نظام ويندوز وغيره. فلاتر Flutter من جهة أخرى، نجد أن إطار فلاتر Flutter، وهو إطار لتطوير التطبيقات متعددة المنصات، يشهد صعودًا في السنتين الأخيرتين. يعد إطار فلاتر من أهم المنافسين في لغات برمجة التطبيقات متعددة المنصات، طورته شركة غوغل وأطلقته عام 2017. يستعمل إطار فلاتر لغة دارت Dart، ويمكن تشغيل تطبيقاته على 5 أنظمة تشغيل هي: نظام iOS، ونظام الأندرويد، ونظام ويندوز، ونظام macOS، ولينكس. أيونيك Ionic في عام 2013 أصدرت مجموعة من مطوري البرمجيات مفتوحة المصدر النسخة الأولية من إطار عمل أيونيك Ionic، وهو إطار حديث خفيف عالي الأداء لتطوير التطبيقات متعددة المنصات وتطبيقات الويب التقدمية. يمكّن هذا الإطار مستخدمه من استعمال أي إطار عمل يستخدم في تطوير الواجهات الأمامية وهي أنجولر Angular، أو ريآكت React.js، أو فيو Vue.js أو بالاعتماد على مكونات أيونيك نفسها فقط. يعدّ هذا الإطار الأشهر استخدامًا في مجال برمجة تطبيقات الجوال لمن يعمل أصلًا في مجال تطوير الويب، إذ ذكر استطلاع أجرته أيونيك أن 75% من مطوري التطبيقات الذين شملهم الاستطلاع وصفوا أنفسهم بمطوري ويب، ولا غرابة في هذا إذا علمنا أن الإطار يستعمل تقنيات الويب نفسها لبناء تطبيقاته. فرص العمل في سوق تطوير تطبيقات الجوال بعد التعرف على مجال برمجة تطبيقات الجوال، قد تتساءل عن حجم فرص العمل في سوق هذا المجال وإمكانية العمل فيه بعد دخوله، وهذا ما سنعرضه الآن. بداية، لا يتطلب العمل في تطوير تطبيقات الجوال شهادة جامعية أي أنك لا تحتاج إلى قضاء 4 إلى 5 سنوات في أروقة الجامعة لتتخرج منها وتدخل بعدها سوق العمل بخبرات نظرية فقط، بل يكفي أن تتعلم هذا المجال وتبني معرض أعمال مميز، لتحصل على فرص عمل وعروض من شركات كثيرة، وأنا أعرف عدة أشخاص يعملون في تطوير تطبيقات الجوال دون أن يسألهم أحد شهادة جامعة في علوم الحاسوب ولمزيد من التفاصيل حول هذه النقطة، يمكن الرجوع إلى فقرة "طرق تعلم البرمجة" من مقال كيفية تعلم البرمجة. أما بخصوص حجم السوق، فلا داعي لتكرار حجم الطلب على تطبيقات الجوال وكبر سوقه التي عرضناها في بداية المقال في فقرة أهمية تطبيقات الجوال ومدى انتشارها، فانظر أولًا إلى نفسك وعائلتك ومن حولك كم عدد التطبيقات التي يستعملونها ومدى الاعتماد عليها في الحياة اليومية لتستنتج مدى كبر سوقها، وهذا يدل على أن صناعة تطوير تطبيقات الأندرويد و iOS، مزدهرة اليوم، وليس في الأفق شيء يدل على أنها ستتراجع في السنين المقبلة. والمبشر في سوق برمجة التطبيقات أن الطلب عليها مرتفع وبالتالي الأجور مرتفعة أيضًا بالمقارنة مع وظائف أخرى، فتنص بعض التقديرات التي نشرتها Glassdoor على أن الأجر الشهري لمطور تطبيقات الجوال في إمارة دبي يبلغ 9,000 درهم. أما في الولايات المتحدة فيبلغ الأجر السنوي 110,000 دولار أمريكي بحسب ITCareerFinder (مع تفاوت بين الاختصاصات الفرعية والولايات المختلفة). الجميل أيضًا في مهنة تطوير التطبيقات أنه يمكن العمل عن بعد أينما كنت، فانظر مثلًا إلى فرص العمل المتوفرة في موقع بعيد وستجد غالبًا فرصة برمجة في مجال التطبيقات عن بعد بمختلف أنواعها فقد وجدت الآن فرصة عمل في تطوير تطبيقات فلاتر. تعلم برمجة تطبيقات الجوال بعد أن تعرفنا على أهمية برمجة تطبيقات الجوال وعرفنا أنواعها وكيفية تطويرها وسوق العمل فيها، وصلنا إلى السؤال المهم، وهو كيف أتعلم برمجة تطبيقات الجوال؟ وهل هنالك محتوى عربي يمكن أن أتعلم منه؟ وسأجيبك! يمكنك تعلم البرمجة عمومًا والتخصص في برمجة التطبيقات خصوصًا عبر طريقين، الأول عبر الدراسة الأكاديمية والثاني بمفردك عبر الدورات البرمجية، فإن كنت سلكت الطريق الأول أو تنوي سلوكه فهو كفيل بالإجابة على هذا السؤال ويمكنك تخطي القسم، أما إن كنت ممن يبحث عن الطريق الثاني، فأنا سأجيبك! يمكنك تعلم البرمجة عبر دورات مخصصة إما بشكل متفرق أو دورات ومحتوى متفرق وتنهل منه ما تريد أو أن تبحث عن دورة واحدة شاملة مخصصة تأخذ بيدك من البداية وحتى المستويات المتقدمة وتقطع بك شوطًا طويلًا وهذا ما أفضله صراحة لأنه قد لا تجد كل ما تريد أو قد تمضي وقتًا طويلًا هنا وهناك ويأخذك التسويف بأيام وأسابيع لا تنجز خلالها إلا القليل خصوصًا أن الدافع هنا هو ذاتك فقط. طبعًا لا يمكنك المسير شبرًا إلا بعد أن تكون قد حددت وجهتك بالمسير والتخصص الذي تريد إما تطبيقات جوال أصيلة وهنا إما أن تختار أندرويد أو iOS أو إما التطبيقات متعددة المنصات والهجينة مع تحديد أي لغة وإطار عمل بالضبط وهنا وبما أن تعلم تطوير التطبيقات الهجينة قد يفتح عليك عدة أبواب ومجالات منها دخول عالم تطوير الويب نفسه وبالتالي عدة أسواق وفرص عمل، لذا فرت أكاديمية حسوب دورة كاملة باسم دورة تطوير التطبيقات باستخدام لغة JavaScript. الشرح يكون باللغة العربية بشكل كامل مع توفير عدة مصادر داعمة مثل مقالات تعليمية وأيضًا توثيقات عربية في موسوعة حسوب كما تعمل خلال الدورة على بناء عدة مشاريع وتطبيقات عملية. تشرح تلك الدورة أولًا لغة جافاسكربت ثم تشرح مكتبة React.js وبعدها تشرح إطار العمل React Native وأيضًا أيونيك Ionic، لذا فهي فرصة جيدة لدخول سوق العمل بخبرة عملية قوية ومشاريع تطبيقية مميزة. في ظل قلة المحتوى العربي التعليمي البرمجي، يتجه كثير من الناس إلى منصات التعليم الإنكليزية لتعلم برمجة تطبيقات الجوال، لكن هذه المنصات ليست خيارك الوحيد. يمكنك أن تتعلم برمجة تطبيقات الجوال باللغة العربية. في هذا السياق، طرحت أكاديمية حسوب دورة متخصصة في تطوير التطبيقات باستخدام لغة JavaScript. أعدت الدورة نخبة من المطورين بأسلوب مشوق وعملي. في 55 ساعة ستبني الدورة عندك أساسًا نظريًّا متينًا وتبني معك تطبيقات عملية ملموسة وتمدّك بالدعم المباشر عند الحاجة. خاتمة في النهاية، وأرجو أن تكون هذه المقالة قد نفعتك وأطلعتك على كامل معالم طريق برمجة تطبيقات الجوال، لذا أرجو لك التوفيق في رحلتك من التعلم إلى العمل والاحتراف! اقرأ أيضًا برمجة تطبيقات سطح المكتب1 نقطة
-
جزاك الله خيرا على هذا الدليل الشامل المتكامل لتعلم البرمجة.. فعلا النصائح الأخيرة التي ذكرتها مهمة جدًا، ونابعة من رجل ذو خبرة في المجال.. يؤخذ على المقال أن المصادر كانت مركزة على "حسوب" ومنتجاتها فقط، والواقع أنها ليست أفضل المصادر لتعلم البرمجة، خاصة لذوي الدخل الضعيف والمعدوم.. وحتى "الموسوعة" فتصلح كمرجع عند الحاجة لا كمصدر للتعلم.. وأمر آخر أنها باللغة العربية مما يصعب فهم البرمجة برأيي.. لا لأنها بالعربية لكن بسبب ترجمة المصطلحات وطبيعة لغات البرمجة نفسها؛ إذ هي مكتوبة بالإنجليزية.. ومن هنا أنبّه على ضرورة تعلم الإنجليزية ولو بمستوى أوّل لأن المصادر المحدَّثة أغلبها بالإنجليزية.. ملحوظة أخرى وددت لو ذُكرَت في المقال هي الخطة المفصلة لتعلم البرمجة؛ مثلا: HTML5 ثم CSS3 ثم JAVASCRIPT ثم التدريب على مشاريع، ثم PHP7 مثلا وهكذا... على كل مقال موفق، ومرة أخرى جزاك الله خيرا على مجهوداتك الجبارة. حياك الله.1 نقطة