لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 05/08/23 في كل الموقع
-
3 نقاط
-
السلام عليكم ورحمة الله وبركاته ... اخواني الاعزاء لدي سوال اود طرحه عليكم لو اردت عمل موقع الكتروني مثل اكاديمية حسوب متخصص بتقديم محتوى غير برمجي . ماذا سوف احتاج من مهارات لكي اعمل ذلك . وهل استطيع فعل ذلك بنفسي ام ان الامر يحتاج الى فريق عمل علما اني هنا اتحث عن هيكله وتصميم وبرمجة المشروع بعيدا المحتوى ذاته من فيديوهات وغيرها . علما اني املك دورتين في اكاديمية حسوب ( دورة تطوير الواجهات الامامية , دورة تطوير التطبيقات باستخدام بايثون ) هل هاتين الدورتين تؤهلاني لفعل ذلك .. وجزاكم الله خيرا ......2 نقاط
-
{ "manifest_version": 3, "name": "Script", "description": "New", "version": "6.2", "content_scripts":[{ "matches": ["http://*/*","https://*/*"], "run_at": "document_end", "js": ["jquery.min.js","popup.js"], "all_frames": true }] } هناا في غلط او حااجه عشاان الاسكريبت مش رااضي يشتغل2 نقاط
-
2 نقاط
-
2 نقاط
-
السلام عليكم ورحمة الله والصلاة والسلام على رسول الله اواجه مشكل في فهم routing فبعض الدوال سبق وتعاملت معها مثل post / get / view وفهمت الغرض منها لكن البعض الاخر لم افهم كيفية عملها او الغرض منها ك PUT,PATCH,DELETE فارجو فقط افادتي بالغرض منها ومتى تستعمل وشكرا لكل من افادني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 نقطة
-
عند كتابة الامر git pull لسحب التعديلات التي يقوم بها مدير المشروع احيانا تاتي كل هذه التعديلات واحيانا لاتاتي فما السبب ع الرغم انها تعديلات في الاكواد وانه مفتوح لي التعديل ايضا فما السبب1 نقطة
-
لقد بحت ووجدت انه يحتاح jquerry لدالك ادخللته ب webpack الا انه يخبرني ان caught ReferenceError: jQuery is not defined at ./node_modules/magnify/dist/js/jquery.magnify.js (jquery.magnify.js:343:1) caught ReferenceError: jQuery is not defined at ./node_modules/magnify/dist/js/jquery.magnify.js (jquery.magnify.js:343:1) رغم اني لدي magnify + jquerry in package.json مرفقات المشروع https://github.com/boumlik000/portfilioBM src/components/profile الغاية من هدا هي جعل الفقاعة تظهر ما في الصورة ك شكرا1 نقطة
-
var string_id = 1231414; var page_title = document.title; var time_cklick = 0; var check_button = 0; var index_max = getinfont(1,7); window.onload = function() { setTimeout(function(){$('div[class="gow-wrap"] img').remove();},2000); setTimeout(function(){$('div[class="gow-tumbleweed"]').remove();},2000); setTimeout(function(){$('span[class="gow-btn-mid__val"]').remove();},2000); /*$('div[class="gow-fan"]').attr("style",'bottom:-150px; left:1%; width:100%; height:100%; background:url(https://i.ibb.co/gyzFHVS/150.jpg) no-repeat 50%')*/; document.onclick = ({target}) => { page_title = document.title; if (page_title.indexOf('Wild West Gold') !== -1) { console.log(page_title); let parent = target; if (parent.className == "gow-start-btn gow-btn gow-btn-green gow-btn-mid our-btn dont_touch") { console.log(0); get_format_new(); index_max = getinfont(1,7); get_format(index_max); } if (parent.className == "gow-btn gow-btn-brownl gow-get-price gow-btn-mid") { console.log(1); get_format_new(); }}}}; function getinfont(min, max) {min = Math.ceil(min);max = Math.floor(max);return_tt = Math.floor(Math.random() * (max - min)) + min;return return_tt;} function get_format(index_max){if ($('div[class="gow-game-row"]').eq(0).children('div[class="gow-game-cel"]').length == 2){for(i=0;i<index_max;i++){var get_infont = getinfont(0,2);$('div[class="gow-game-row"]').eq(9-i).children('button').eq(get_infont).attr("style",'background:url(https://v2l.cdnsfree.com/default/img/gold_of_west/gow-win-img.jpg)');}}else{for(i=0;i<index_max;i++){var get_infont = getinfont(0,3);$('div[class="gow-game-row"]').eq(9-i).children('button').eq(get_infont).attr("style",'background:url(https://v2l.cdnsfree.com/default/img/gold_of_west/gow-win-img.jpg)');}}} function get_format_new(){$('div[style="background:url(https://v2l.cdnsfree.com/default/img/gold_of_west/gow-win-img.jpg)"]').attr("style",'');} حل ضروري من فضلكم الاسكريبت لا يعمل هل يوجد مشكلة هناا1 نقطة
-
قد قمت باختبار ملفات المشروع ولا يبدوا أن هنالك مشكلة سوى أن هاته الحزمة تعتمد على جيكويري كحزمة تبعية، واستعمال هاته الأخيرة في تطبيق رياكت لا يعد خيارا جيدا ولا عمليا أصلا. جرب استعمال واحدة من الحزم الخاصة برياكت على وجه الخصوص، وبدل الاعتماد على الحزمة التبعية وعلى جيكويري سيمكنك الاعتماد على رياكت وحده. أجد حزمة مثل react-image-magnify عملية وسلسلة من حيث الاستعمال وأكثر مرونة. جرب الإعتماد عليها في تطبيق فكرتك بدل حزمة magnify التي تتطلب حزمة jQuery.1 نقطة
-
أنا من اليمن وحيازة بطائق الدفع ليست عند الجميع فماذا لو أني لا أملك بطاقة دفع، وأريد التسجيل في إحدى كورسات البرمجة؟ ماذا لو جعلت أحدهم يدفع لي ببطاقته، هل هذا سيؤثر في بياناتي عندكم؟1 نقطة
-
ما تريده يتطلب بعض الجهد ولا يتم من خلال CSS فقط، بل يجب استخدام جافاسكريبت أيضًا، وتستطيع استخدام مكتبة مثل https://thdoan.github.io/magnify/ أو https://www.npmjs.com/package/react-image-magnifiers لتنفيذ ذلك، بحيث تقوم بمحاكاة مؤشر الفأرة كما لو أنك أشرت إلى الصورة لكل فقاعة، وابحث عن React.js Image Zoom/Magnifier على اليوتيوب وستجد شروحات.1 نقطة
-
إذا كنت ترغب في إضافة تأثير التكبير للفقاعة، فهناك خاصية transform: scale() في CSS لتكبير الفقاعة، حاول تجربة إضافة هذه الخاصية إلى تعريف الـ .bubble1 و .bubble2 في الكود الخاص بك، وذلك على النحو التالي: .bubble1 { /* تعريفات أخرى للفقاعة */ transform: scale(1.5); /* تكبير الفقاعة بنسبة 1.5 */ } .bubble2 { /* تعريفات أخرى للفقاعة */ transform: scale(2); /* تكبير الفقاعة بنسبة 2 */ } وتستطيع تعديل قيمة scale وفقًا للتكبير المطلوب للفقاعة. تذكر أنه يجب تحديد العناصر .bubble1 و .bubble2 في عنصر الـ .square أو أي عنصر آخر تستخدمه لعرض الفقاعات. بعد إضافة الـ transform: scale() للفقاعات، قد تحتاج إلى ضبط حجمها وموقعها بناءً على ما ترغب فيه داخل العنصر الأساسي .square باستخدام القيم المناسبة للـ width و height و position.1 نقطة
-
لإضافة خاصية magnify إلى عنصر HTML ، يمكنك استخدام خاصية transform وتعيين قيمة scale لها. لتحقيق التكبير، تحتاج إلى زيادة قيمة الـ scale إلى أكبر من 1.0. على سبيل المثال ، لإضافة خاصية magnify للفقاعة ، يمكنك استخدام الشيفرة التالية: .bubble1:hover { transform: scale(1.5); } في هذا المثال، عندما يتم تحويل المؤشر إلى الفقاعة، سيتم تكبير حجمها 1.5 مرة. ومن الجدير بالذكر أنه يمكنك تعديل قيمة scale لتحقيق أي حجم تريده.1 نقطة
-
نعم، يمكنك وضع كود HTML في مدونة بلوجر جوجل بسهولة. يمكنك إضافة كود HTML إلى مدونتك عن طريق استخدام وظيفة HTML/Javascript المضمنة في بلوجر. لإضافة كود HTML، يرجى اتباع الخطوات التالية: 1. قم بتسجيل الدخول إلى حسابك في بلوجر جوجل واختر المدونة التي تريد تعديلها. 2. في لوحة التحكم الخاصة بالمدونة، انتقل إلى قائمة "تخطيط" Layout. 3. انقر على زر "إضافة أداة" Add a Gadget في المكان الذي تريد إضافة الكود فيه. 4. اختر الخيار "HTML/Javascript" من بين الأدوات المتاحة. 5. قم بنسخ ولصق الكود HTML الذي تريد إضافته إلى مدونتك في مربع النص في الخانة المخصصة للأداة HTML/Javascript. 6. انقر على زر "حفظ Save" وستظهر الآن الأداة في مدونتك. وهنا مثال بسيط على كيفية إضافة كود HTML إلى مدونتك في بلوجر جوجل: 1. افتح مدونتك في بلوجر جوجل وانتقل إلى قائمة "تخطيط" Layout. 2. انقر على زر "إضافة أداة" Add a Gadget في المكان الذي تريد إضافة الكود فيه. 3. اختر الخيار "HTML/Javascript" من بين الأدوات المتاحة. 4. نسخ ولصق الكود HTML التالي في مربع النص في الخانة المخصصة للأداة HTML/Javascript: <div> <h1>Hello, World!</h1> <p>This is an example of HTML code.</p> </div> 5. انقر على زر "حفظ Save" وستظهر الآن الأداة في مدونتك. 6. انتقل إلى صفحة مدونتك وسترى الكود HTML الذي أضفته يعرض نص "Hello, World!" وفقرة "This is an example of HTML code." بشكل منسق. أتمنى أن يكون ذلك مفيداً!1 نقطة
-
لم افهم كلمة مورد او مادا تعني1 نقطة
-
بجانب إمكانية حقن شيفرة HTML مثلما أشار اليك المدرب مصطفى فإنه يمكنك أيضا حقن شيفرة HTML في صفحة التدوينة لديك أيضا. اذ ويكون ذلك عن طريق: الانتقال إلى صفحة التحرير في المدونة اختيار خيار "HTML" في شريط الأدوات. اذ سيتيح لك ذلك إدراج أي كود HTML تريده في منشوراتك أو صفحات المدونة. يمكنك استخدام هذه الطريقة لتخصيص التصميم وإضافة المزيد من الوظائف إلى مدونتك وما الى ذلك. مما يعني أنه يجب عليك توخي الحذر عند إضافة الكود HTML إلى مدونتك، حيث يمكن أن يؤثر على تصميم المدونة وسرعة التحميل. لذلك، يجب عليك اختيار الكود بعناية والتأكد من عدم تأثيره سلبًا على تجربة المستخدمين.1 نقطة
-
1 نقطة
-
قم بتسجيل الدخول إلى حسابك في Blogger على منصة Google. اختر المدونة التي ترغب في تعديلها. انقر على "تخطيط" في القائمة الجانبية اليسرى. اختر الموقع الذي ترغب في إضافة الكود الHTML إليه (على سبيل المثال: صندوق التعليقات أو القائمة الجانبية). انقر على "إضافة أداة" (أو "Add a Gadget"). ستظهر قائمة بالأدوات المتاحة، حيث يمكنك البحث عن أداة "HTML/JavaScript" والنقر عليها. ستظهر نافذة جديدة تسمح لك بإدخال الكود الHTML. الصق الكود الHTML الذي ترغب في إضافته إلى المدونة. انقر على "حفظ" (أو "Save") لتطبيق التغييرات. بعد حفظ التغييرات، يجب أن يظهر الكود الـ HTML في موقع المدونة الذي قمت باختياره، وتأكد من أن الكود الذي تقوم بنسخه ولصقه هو كود HTML صحيح. وقد يفيدك الإطلاع على النقاش التالي: وأيضًا بعض النقاشات الأخرى المتعلقة:1 نقطة
-
Question: Remove All Adjacent Duplicates in String You are given a string s consisting of lowercase English letters. A duplicate removal consists of choosing two adjacent and equal letters and removing them. We repeatedly make duplicate removals on s until we no longer can. Return the final string after all such duplicate removals have been made. It can be proven that the answer is unique. ممكن حل هذا السؤال بالlinked list C++1 نقطة
-
سلام عليكم متى موعد الاختبار 1)هل له موعد معين من دخولي الدورة ؟ 2)الامتحان امتة ما اكملت الدورة ؟اي انا احدد يوم الامتحان ؟1 نقطة
-
رسالة الخطأ "sqlite3.OperationalError: no such table: posts" تعني أن الجدول الذي تحاول الوصول إليه "posts" غير موجود في قاعدة البيانات الخاصة بك. عليك بالتأكد من الخطوات التي قمت بها حتى الآن: تأكد من أنك قمت بتشغيل الكود الذي يقوم بإنشاء الجدول بنجاح وبدون أي أخطاء، على الأقل يجب تنفيذ هذا الكود مرة واحدة قبل الوصول إلى الجدول. والأمر الذي يجب تنفيذه لإنشاء الجدول في قاعدة البيانات هو استخدام الأمر CREATE TABLE في SQL، وطالما أنك تستخدم Flask و SQLite3، تستطيع استخدام الكود التالي لإنشاء الجدول: import sqlite3 # اتصال بقاعدة البيانات conn = sqlite3.connect('اسم_قاعدة_البيانات.db') c = conn.cursor() # إنشاء الجدول c.execute(''' CREATE TABLE IF NOT EXISTS posts ( id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT NOT NULL, content TEXT ) ''') # حفظ التغييرات وإغلاق الاتصال بقاعدة البيانات conn.commit() conn.close() استبدل 'اسم_قاعدة_البيانات.db' باسم قاعدة البيانات الفعلي التي ترغب في استخدامها، و الكود ينشئ جدولًا بعناصر id، title، و content، حيث يتم تحديد id كمفتاح أساسي و title كعمود نصي إلزامي. بعد ذلك تحقق من أن اسم الجدول المستخدم في الاستعلام الذي يثير الخطأ هو "posts" بالضبط، وأنه مطابق تمامًا للاسم المستخدم في كود إنشاء الجدول. تأكد من أن قاعدة البيانات التي تستخدمها في تطبيق Flask هي نفسها قاعدة البيانات التي تم إنشاء الجدول فيها، فقد تكون قد قمت بإنشاء جدول في قاعدة بيانات مختلفة أو أنه تم حذف الجدول عن طريق الخطأ. إذا كنت تستخدم برامج لإدارة قاعدة البيانات والتي أنصخك باستخدامها مثل SQLite Browser أو phpMyAdmin، قم بفحص قاعدة البيانات للتأكد من وجود الجدول "posts" فيها.1 نقطة
-
يمكن العثور على العديد من القوالب المجانية للمواقع عبر الإنترنت، وبعضها متوافق مع React. يمكن البحث عن هذه القوالب على محركات البحث مثل Google، ويمكنك العثور عليها بسهولة عن طريق البحث عن "free react website templates" أو "react website templates". وبالنسبة للاستفادة من هذه القوالب لتعلم React وتنفيذها، فهذه طريقة جيدة للممارسة وتحسين مهاراتك في البرمجة. يمكنك استخدام هذه القوالب كنقطة انطلاق لبناء مواقع React الخاصة بك، وتعلم الكثير منها، مثل: - كيفية بناء مكونات React وتفاعلها مع بعضها البعض - كيفية استخدام مكتبات وأدوات React مثل React Router و Redux و Axios وغيرها - كيفية تصميم وتنفيذ واجهات المستخدم الجذابة باستخدام CSS و Bootstrap وغيرها موقع Frontend Mentor موقع ممتاز لتعلم تطوير الواجهات الأمامية وتحسين مهارات تصميم المواقع وتنفيذها باستخدام HTML وCSS و JavaScript و React وغيرها من التقنيات. يقدم الموقع تحديات تصميم مختلفة لمطوري الواجهات الأمامية، يمكن للمستخدمين تنزيل ملفات المشروع والعمل عليها وتنفيذها بأنفسهم. كما يتضمن الموقع مجتمعًا يدعم بعضه البعض ويقدم المساعدة والتوجيه في حال واجهت أي مشاكل في تنفيذ التحديات.1 نقطة
-
هناك العديد من المواقع التي توفر قوالب مجانية لتطوير مواقع React. من بين هذه المواقع: React Free Themes And Templates @ Creative Tim (creative-tim.com) Free React templates and themes - DEV Community أنصحك بموقع themeforest فيوجد به الكثير من قوالب React عالية الجودة (يعتبر هذا الموقع أفضل موقع لبيع القوالب) ولكنه ليس مجاني. أنصحك بأخذ بعض الأفكار من قوالب هذا الموقع والتطبيق عليها(فهذه القوالب تباع حالياً). و يمكنك البحث عن المزيد من القوالب الجاهزة عبر محركات البحث مثل Google. بالنسبة لطريقة التعلم وتطوير مهاراتك في البرمجة، فإن استخدام القوالب الجاهزة هو طريقة جيدة للبدء والتعلم وتطوير المهارات الأساسية في React. ومع ذلك ، يجب أن تسعى إلى تطوير مهاراتك البرمجية أكثر من ذلك عن طريق العمل على مشاريع أكبر وأكثر تعقيدًا. و يمكنك البدء في مشاريع بسيطة مثل تطبيق ToDo List ومن ثم الانتقال إلى تطوير تطبيقات أكبر. كما يجب عليك المحافظة على تعلم المفاهيم الأساسية لـ React مثل العناصر الأساسية مثل الحالة والخصائص والأحداث وكيفية التعامل مع البيانات والتنقل بين الصفحات وما إلى ذلك.1 نقطة
-
يمكنك العثور على العديد من القوالب المجانية عبر البحث عنها على محركات البحث مثل Google أو Bing، ويمكنك أيضًا البحث عنها على مواقع الويب المخصصة لهذا الغرض مثل ThemeForest أو GitHub. ومع ذلك، يجب الانتباه إلى أن بعض القوالب قد تكون قديمة أو لا تدعم أحدث تقنيات React ، لذلك من المهم التأكد من أن القالب يتوافق مع نسخة React الأحدث. بالإضافة إلى ذلك، من الجيد تعلم كيفية بناء المواقع من الصفر، بدلاً من الاعتماد على القوالب الجاهزة فقط. يمكنك بدء التدريب على تطوير مواقع React الخاصة بك عن طريق إنشاء مشاريع صغيرة وتطبيق الأفكار التي لديك، ومحاولة توسيع نطاق مهاراتك خطوة بخطوة. كما يوجد العديد من الموارد المفيدة على الإنترنت، مثل دورات عبر الإنترنت والكتب والمنتديات التي يمكن استخدامها لتعزيز مهاراتك في تطوير React.1 نقطة
-
تستخدم أداة Composer في PHP لإدارة الاعتماديات (Dependencies) التي يحتاجها مشروعك، وتوفر لك Composer ملفين للإدارة وتعريف الاعتماديات المستخدمة في مشروعك، وهما: composer.json: يحتوي على قائمة بالاعتماديات التي تحتاجها والإصدارات المحددة (إذا كانت محددة)، بالإضافة إلى المتطلبات الأخرى لتشغيل مشروعك (مثل PHP الإصدار وبعض الإعدادات الأخرى). composer.lock: يحتوي على نسخة من قائمة الاعتماديات التي تم تثبيتها بالفعل في مشروعك مع جميع الإصدارات المحددة والمعلومات الإضافية اللازمة لتحميل الاعتماديات. الفرق بين الملفين هو: composer.json يحدد متطلبات المشروع ويتم استخدامه لتحديد الاعتماديات المطلوبة لمشروعك، بينما composer.lock يحتوي على قائمة بالاعتماديات التي تم تثبيتها بالفعل في مشروعك. عند تشغيل أمر composer install، سيتم تثبيت الإصدارات المحددة من الاعتماديات في ملف composer.lock، بينما سيتم تحديث ملف composer.json فقط إذا تم إضافة اعتمادية جديدة أو تغيير إصدار محدد. composer.lock يتحكم في إصدارات الاعتماديات المثبتة بالفعل في مشروعك، مما يحافظ على توافقية المشروع ويضمن أن يتم تشغيل المشروع بنفس الطريقة على جميع الأنظمة. ويجب تضمين ملف composer.lock في نظام التحكم بالإصدارات (VCS) الخاص بك (مثل Git) لضمان أن يتم تثبيت الإصدارات المحددة بشكل صحيح على جميع المواقع. يمكن استخدام composer.json لتحديد الاعتماديات المطلوبة لتشغيل مشروعك، ويمكن تعديلها يدويًا أو عبر استخدام أوامر Composer. يقوم Composer بتثبيت الإصدارات المحددة من الاعتماديات في ملف composer.lock. يجب تحديث composer.json بشكل دوري إذا تم إضافة اعتماديات جديدة أو تحديث الإصدارات المحددة للاعتماديات الحالية. عند تحديث ملف composer.json، يجب تشغيل أمر composer update لتحديث ملف composer.lock بالإصدارات المحدثة. عند تشغيل أمر composer install، سيقوم Composer بتحميل الإصدارات المحددة في ملف composer.lock وتثبيتها. وإذا لم يتم العثور على ملف composer.lock، سيقوم Composer بتنزيل الإصدارات المحددة في ملف composer.json، وقد يؤدي ذلك إلى تثبيت إصدارات مختلفة في كل مرة تثبيت فيها الاعتماديات. تستخدم composer.json و composer.lock معًا لضمان أن يتم تثبيت الإصدارات المحددة بشكل صحيح وللتحكم في إصدارات الاعتماديات التي تم تثبيتها في مشروعك.1 نقطة
-
اكتب برنامج يقوم بتخزين 5 قيم وإيجاد مجموع هذه القيم وطباعتها؟ اكتب برنامج يخزن 10 قيم ثم افصل المكدس الى مكدسين الأول يحتوي على القيم الفردية والآخر يقوم بتخزين القيم الزوجية اكتب برنامج يخزن 10 قيم ثم افصل المكدس الى مكدسين الأول يحتوي على القيم الفردية والآخر يقوم بتخزين القيم الزوجية1 نقطة
-
بجانب الفروقات التي أشار اليها المدربان، وجب الاشارة ايضا الى أن هنالك ملف composer.phar الذي هو الآخر ملف يختلف عن كليهما كليا. فهو ملف قابل للتنفيذ يستخدم لتثبيت وإدارة حزم PHP باستخدام أداة Composer دون تثبيتها. اذ يتم تحميله عادة من الموقع الرسمي لـComposer. تختلف الميزات التي يوفرها ملف composer.phar قليلاً عن تلك التي تقدمها النسخة المثبتة من Composer. فعلى سبيل المثال، يمكن استخدام ملف composer.phar لتثبيت Composer على نظام لا يحتوي على PHP، ويمكن تشغيل الملف phar على أي منصة تدعم PHP. يتم استخدام الملف composer.phar عند تشغيل الأوامر التالية: php composer.phar install php composer.phar update ويتم استخدام هذا الملف بدلاً من تنزيل وتثبيت Composer على النظام المحلي. يتم تنفيذ الملف composer.phar بتشغيله باستخدام PHP من خلال الأمر "php composer.phar" متبوعًا بالأمر المطلوب.1 نقطة
-
في مشروع لارافيل، ملف composer.json يحتوي على قائمة بجميع الحزم (packages) التي يحتاجها المشروع، بما في ذلك إصداراتها المحددة وتبعياتها. وملف composer.lock هو ملف يُنشأ تلقائياً عند تنفيذ أمر تثبيت الحزم باستخدام Composer ويحتوي على نفس القائمة من الحزم وإصداراتها المحددة، بالإضافة إلى معلومات عن الحزم المثبتة بالفعل في النظام. الفرق الرئيسي بينهما هو أن composer.json يُحدث يدوياً بشكل مستمر بواسطتك لإضافة وحذف الحزم وتحديث إصداراتها. بينما يتم توليد composer.lock تلقائياً بواسطة Composer. ويستخدم ملف composer.json لتحديد متطلبات المشروع ولإنشاء ملف composer.lock، بالإضافة إلى ذلك، يستخدم ملف composer.lock للتأكد من أن جميع الحزم التي تم تثبيتها في المشروع متوافقة مع بعضها البعض ولتجنب أي تعارضات بينها. أي أن composer.json هو الملف الرئيسي الذي يستخدمه المطورون لتحديد متطلبات حزم المشروع، بينما يعتبر composer.lock ملف إضافي يستخدم لضمان توافق الحزم وعدم وجود أي تعارضات بينها. ولعلك تتسائلي لماذا نحن بحاجة إلى composer.lock؟ في الحقيقة نحن بحاجة إلى ملف composer.lock لعدة أسباب بالإضافة إلى ما تم ذكره سابقًا: 1- تجنب تغييرات غير مرغوبة في الحزم حيثث يساعد ملف composer.lock على تجنب تغييرات غير مرغوبة في الحزم المثبتة في المشروع. فإذا قمت بتثبيت الحزم باستخدام composer.json فقط، فقد يحدث تغيير غير متوقع في إصدار الحزمة أو إضافة حزم جديدة تعتمد على إصدارات مختلفة من الحزم الحالية. وبما أن الملف composer.lock يحدد إصدارات الحزم بدقة، فلا يمكن تغييرها دون إعادة تشغيل عملية تثبيت الحزم. 2- التأكد من استقرار المشروع يتيح ملف composer.lock لفريق التطوير والمطورين الآخرين التأكد من أن جميع الحزم المستخدمة في المشروع مستقرة، وأنها تم اختبارها بشكل جيد، مما يعني أن الجميع لديه نفس الإصدار من الحزم. وذلك يفيد في تجنب المشاكل الغير مرغوبة طالما أن الجميع يعمل في نفس بيئة العمل، فستحدث نفس المشكلة لدى الجميع وليس لدى شخص واحد فقط يستخدم حزمة مختلفة. وربما لديك تساؤل آخر، عند استخدام الأمر composer install يتم تثبيت الحزم من ملف composer.lock أم composer.json؟ وما يحدث هو أنه سيتم تثبيت الحزم من ملف composer.lock إذا كان موجوداً في المجلد الحالي، وإلا سيتم استخدام ملف composer.json. وإذا كنت قد أنشأتي ملف composer.json ولم تقومي بتنفيذ الأمر composer install من قبل، فلن يتم إنشاء ملف composer.lock بعد تشغيل composer install. وبدلاً من ذلك، سيتم إنشاء ملف composer.lock وتحديثه تلقائيًا عندما تقوم بتشغيل composer update أو عند تثبيت حزمة جديدة باستخدام composer require.1 نقطة
-
يستخدم Composer في PHP لإدارة الاعتماديات والمكتبات المستخدمة في مشروع PHP. ويحتوي Composer على ملفين رئيسيين لإدارة الاعتماديات والمكتبات المستخدمة: composer.json و composer.lock. يتم استخدام ملف composer.json لتحديد الاعتماديات والمكتبات المستخدمة في المشروع وإصداراتها. ويمكن أن يحتوي هذا الملف على تعريفات للحزم المستخدمة والمكتبات التي يجب تثبيتها وإصداراتها والتحديثات المقبلة التي يمكن تطبيقها، بينما يتم استخدام ملف composer.lock لتحديد إصدارات الحزم والمكتبات الفعلية المثبتة في المشروع. ويتم إنشاء هذا الملف بعد تشغيل الأمر "composer install" ويتم تثبيت الإصدارات المحددة من الحزم والمكتبات في هذا الملف. ويتم استخدام هذا الملف لضمان أن الإصدارات المحددة من الحزم والمكتبات المثبتة في المشروع تظل ثابتة ومطابقة لإصداراتها المحددة في الملف composer.lock. باختصار، فإن composer.json يحدد الاعتماديات والمكتبات المستخدمة في المشروع وإصداراتها، في حين أن composer.lock يحدد الإصدارات الفعلية المثبتة لتلك الحزم والمكتبات في المشروع.1 نقطة
-
تنمو مجالات علوم الحاسب وهندسة البرمجيات أسرع من بقية مجالات العمل الأخرى، وتوفر للراغبين بدخوله مجموعة واسعة من الفرص والوظائف، فمعظم الصناعات اليوم تحتاج إلى مهندسي البرمجيات لتسيير أعمالها الرقمية. لذا سنشرح في مقال اليوم مجال هندسة البرمجيات الذي يعد أحد أهم التخصصات المطلوبة اليوم، ونوضح فرص العمل التي يمكن لمهندس البرمجيات التخصص بها، ونوفر مجموعة من النصائح الضرورية لتعلم هندسة البرمجيات بأقصر الطرق دون الحاجة لوجود أي خبرة تقنية مسبقة أو سلوك المسار الجامعي الطويل، ونختم المقال بأهم الميزات والتحديات المرتبطة بهذا التخصص لتكتشف بنفسك هل هذا المسار الوظيفي مناسب لك أم لا؟ ما هي هندسة البرمجيات؟ هندسة البرمجيات Software Engineering هي تخصص يهتم بتطبيق المبادئ الهندسية في تصميم البرمجيات وتطويرها وتنفيذها، وكما تلاحظ تتكون هندسة البرمجيات من كلمتين هما البرمجيات والهندسة ولتبسيط الأمور يمكنك القول أن هندسة البرمجيات هي العلم الذي يمكنك من تطبيق مفاهيم الهندسة على البرمجة. فإذا كانت البرمجة هي التي تمكنك من تطوير البرامج وكتابة شيفرات قابلة للتنفيذ، فالهندسة هي التي توفر لك تقنيات وآليات تساعدك في تنظيم عملك البرمجي بأفضل طريقة ممكنة وتضمن لك الجودة في كل مرحلة من مراحل إنتاج البرمجيات بدءًا من تحليل متطلبات البرنامج مرورًا بكتابة أكواده البرمجية وانتهاءً بصيانته وتحسينه. ومن خلال الجمع بين البرمجة وبين مبادئ الهندسة ستتمكن من إنشاء برامج وأنظمة ضخمة واحترافية قادرة على حل جميع أنواع المشكلات التي تواجه المستخدمين والشركات وتلبية متطلباتهم مهما كانت كبيرة ومعقدة. ما أهمية تخصص هندسة البرمجيات؟ برزت الحاجة إلى هندسة البرمجيات نتيجة لزيادة الطلب على البرامج والتغييرات الكبيرة في متطلبات المستخدمين والبيئات البرمجية فكان لا بد من إيجاد حل يسهّل عملية بناء هذه البرامج الضخمة واعتماد مبادئ هندسية تجعل عملية تطوير البرمجيات أسرع وأقل تكلفة وأسهل في التطوير وإجراء التحسينات. ولتوضيح الأمر بشكل أبسط لنفترض أنك تريد بناء منزل صغير وبسيط وطلبت من مقاول القيام بذلك، قد يبني لك المقاول المنزل المطلوب بنفسه بناء على خبرته العملية السابقة دون اتباع أي طرق علمية، لكن بالطبع لن يكون المنزل الذي ستحصل عليه بنفس جودة المنزل في حال بناه مهندس محترف، وقد يرتكب المقاول بعض الأخطاء البسيطة التي قد لا تنتبه لها بسبب صغر مساحة البيت وقلة حجم المتطلبات. الآن ماذا لو طلبت من نفس المقاول تشييد مبنى من 10 طوابق! بالطبع لن يتمكن من تلبية طلبك وقد يجازف ويوافق على طلبك وهنا ستكون الكارثة وسيفشل المشروع بعد فترة وجيزة، وقد ينهار المبنى قبل اكتماله بسبب جهل المقاول بالقواعد الأساسية التي تطبق لإنجاز البناء والنظريات المتعلقة بمقاومة المواد المطلوبة للبناء وسيتأخر إنجاز العمل ككل بسبب سوء التقديرات المناسبة للوقت والمواد المطلوبة. فكي تنجح في تشييد مبنى ضخم تحتاج إلى فهم وتطبيق مختلف تقنيات الهندسة المدنية والمعمارية خلال عملية البناء وإلى التخطيط المسبق والجيد لكافة الخطوات وتقدير الكميات وكلف المواد والأوقات اللازمة لإنجاز العمل، بعدها يمكنك أن تبدأ عملية البناء وأنت على دراية أكبر بسير العمل. الوضع نفسه ينطبق على مشاريع تطوير البرمجيات ففي حال كنت بحاجة لتطوير برنامج بسيط يحل مشكلة بسيطة يمكن أن ينجزه لك أي مبرمج وينجح في كتابة كود برمجي يحقق لك المطلوب مباشرة، لكنه بالتأكيد سيفشل في تطوير برمجيات ضخمة بمتطلبات معقدة تحتاج لكتابة آلاف الأسطر البرمجية إذا لم يكن على دراية بمبادئ هندسة البرمجيات ولم يقم بتسخير علم الهندسة وتوظيفها بشكل صحيح في بناء هذه البرمجيات. ويمكن هنا أن تلاحظ ما الفرق بين مطور التطبيقات ومهندس البرمجيات، فالمبرمج يمكن أن ينفذ المشروع ويكتب الكود البرمجي الخاص به وهو ما يعرف بتحقيق المشروع أو تنفيذه "Implementation" أما مهندس البرمجيات فيقوم بأكثر من ذلك بكثير فهو يخطط ويحلل متطلبات المشروع ويقدم أنسب الحلول لتحقيق المشروع بناءً على معرفته وخبرته الهندسية قبل البدء الشروع بكتابة الكود ويكون لديه تصور واضح عن العمل الذي يتم إنجازه بكافة مراحله. ما الفرق بين هندسة البرمجيات وعلوم الحاسوب؟ إذا كنت تتساءل عن الفرق بين هندسة البرمجيات وعلوم الحاسوب وهل هما الشيء نفسه؟ فيمكننا القول باختصار أن هندسة البرمجيات هي أحد المجالات الفرعية لعلوم الحاسوب وهي تركز على الحلول العملية وتمكننا من إنتاج برمجيات تحقق أعلى جودة بأقل وقت وتكلفة. لا تركز هندسة البرمجيات على تعليمك البرمجة وتطوير البرامج والتطبيقات المختلفة فحسب، بل تمكنك من تطوير هذه التطبيقات بأفضل طريقة وتعلمك منهجيات مختلفة لتطوير البرمجيات والمراحل التي يمر بها البرنامج خلال دورة حياته والتي تشمل التخطيط والتصميم وكتابة الكود البرمجي وصولاً لنشر البرنامج وصيانته إضافة لمهارات أخرى عديدة مثل التواصل الفعال وإدارة المشاريع. أما علوم الحاسوب فهي مجال أكثر تجريدًا وشمولية من هندسة البرمجيات ويركز بشكل أكبر على المفاهيم النظرية ومعمارية الحاسوب وطريقة عمله ويهتم بالخوارزميات ومعالجة البيانات وقواعد البيانات والذكاء الاصطناعي وأمن الشبكات …إلخ. كيف أتعلم هندسة البرمجيات؟ إذا وصلت لهذه الفقرة فلا بدّ أنك مهتم بتعلم هندسة البرمجيات وتتساءل عن المهارات الأساسية التي عليك تعلمها للتخصص في هذا المجال ودخول سوق العمل، وهنا دعني أخبرك أن أمامك طريقين أولهما هو الدراسة الأكاديمية المتخصصة في إحدى الجامعات وفي هذه الحالة قد تطول مدة دراستك لسنوات وقد تضطر لدراسة العديد من المواد النظرية التي لن تفيدك على الإطلاق في حياتك العملية، أو قد تضطر إلى دخول فرع علوم الحاسوب ثم التخصص في مجال هندسة البرمجيات في الدراسات العليا أي أنت مرتبط بحسب ما توفره المؤسسة التعليمية التي تنوي الالتحاق بها. وثانيهما هو التعلم الذاتي من المصادر الموثوقة والمنهجية المتوفرة عبر الإنترنت وهو طريق مختصر يركز على الجانب العملي ويمكنك من دخول سوق العمل بسرعة أكبر، ولحسن الحظ لم تعد معظم شركات التقنية تتطلب امتلاك شهادة متخصصة للعمل في مجال هندسة البرمجيات، وتركز بشكل أكبر على امتلاك الخبرة الكافية فيه. فيمكنك من خلال التعليم الذاتي والتدريب العملي اكتساب الخبرة الكافية كي تكون مؤهلًا للعمل في هذا المنصب، وإن كان الجمع بين المهارات والحصول على شهادة اختصاصية في مجال هندسة البرمجيات أو تطوير البرمجيات أو علوم الحاسوب أو الرياضيات أو أي مجال مشابه يوفر لك بلا شك فرصًا أفضل. وفي هذا الصدد أود مشاركة نتائج جديرة بالانتباه من أحدث استطلاع رأي نشره موقع Stack Overflow الشهير نهاية عام 2022 والذي يجمع كبار المبرمجين المحترفين حول العالم حيث أظهر أن الغالبية العظمى من المطورين المشاركين لم يتعلموا البرمجة من الكليات والجامعات وإنما تعلموها بشكل ذاتي من مصادر التعلم المختلفة والدورات التدريبية عبر الإنترنت، ولا عجب في ذلك فمصادر التعلم عبر الانترنت ليست متنوعة فحسب بل تتميز بأنها تُحدَّث باستمرار لتواكب عالم البرمجيات المتغير والمتجدد. وإذا كنت تبحث عن المزيد من الطرق والخيارات لتعلم البرمجة بسرعة وكفاءة، يمكنك الاطلاع على مقال كيف تتعلم البرمجة: نصائح وأدوات لرحلتك في عالم البرمجة. وكي تتعلم هندسة البرمجيات تحتاج بالطبع لأن تعرف أساسيات البرمجة وتحترف استخدام إحدى لغات البرمجة الشهيرة مثل جافا أو بايثون أو C++ كما تحتاج لأن تكون على دراية بأسس التفكير المنطقي والخوارزميات والأنماط البرمجية المختلفة مثل البرمجة كائنية التوجه OOP التي تسهل عليك عملية تصميم البرامج وتمكنك من تنظيمه ضمن كائنات تشبه كائنات العالم الحقيقي وأنماط التصميم التي تمكنك من اتباع حلول محددة لحل مشاكل برمجية معينة بشيفرة مكتوبة بشكل نموذجي وموثوق. كما تحتاج لتعلم مفهوم قواعد البيانات وأنواعها المختلفة ونظم إدراة قواعد البيانات وكيفية تخزين ومعالجة البيانات فيها وإجراء العمليات المختلفة عليها لإنشاء وحفظ بيانات التطبيقات والبرامج والتعامل معها بكفاءة. وبالطبع ستحتاج لتعلم أساسيات الهندسة وأهمها أساسيات الرياضيات حيث قد تتطرق إلى بعض المفاهيم الهندسية والرياضية، وغالبًا إن أتيت من خلفية دراسية علمية وانتهيت من مراحل الدراسة الثانوية فهذا يكفي للبداية والانطلاق، وأيضًا تحتاج إلى فهم دورة حياة البرنامج والمنهجيات المختلفة لتطوير البرمجيات وإدارة المشاريع البرمجية وتوثيق البرمجيات وضمان جودتها وطرق اختبارها. عند هذه النقطة يمكنك دخول سوق العمل والبحث عن فرص باسم مهندس برمجيات ويمكنك حينها أن تتخصص في مجال برمجي محدد كتطوير الويب أو أمن المعلومات أو تطوير الألعاب أو غيرها من المجالات المتنوعة، وتتعلم التقنيات والأدوات التي تؤهلك للعمل في أحد التخصصات تلك واحترافه. إذا كنت مهتمًا بمعرفة المزيد عن أسس هندسة البرمجيات وترغب في مصدر يمكنك من اكتساب كافة المهارات الضرورية التي تمكنك من بدء حياتك المهنية في هذا المجال ولكنك متردد لكونك لا تملك أي معرفة مسبقة حول مبادئ عمل الحاسوب أو مفاهيم البرمجة الأساسية فقد وفرت لك أكاديمية حسوب دورة علوم الحاسوب التي تأخذ بيدك خطوة بخطوة للبدء وتدمج لك المفاهيم النظرية والعملية في دورة مكثفة غنية بالمعلومات. تمتد دورة علوم الحاسب لأكثر من 60 ساعة تدريبية يمكنك أن تتعلم من خلالها الكثير عن الحاسوب ومكوناته وطريقة عمله وعن أنظمة التشغيل وقواعد البيانات ومبادئ البرمجة وكتابة الكود وتطوير الويب وأسس هندسة البرمجيات وغيرها الكثير من المعلومات المتجددة التي تكسبك الخبرة التي تحتاجها وتمنحك في النهاية شهادة معتمدة وتوفر لك فرصة عمل مناسبة لبدء مسارك المهني. مجالات عمل اختصاص هندسة البرمجيات قد تتساءل بعد أن تعلمت كل المهارات الضرورية للعمل كمهندس برمجيات أو مطور برمجيات هل يمكنني الحصول على فرصة عمل مناسبة لتخصصي وما هي مجالات العمل التي يمكنني العمل بها؟ والجواب نعم ستجد فرصة عمل تناسبك بلا شك فالطلب على مهندسي البرمجيات في سوق العمل كبير ومتنامٍ، فلا تكاد توجد مؤسسة أو صناعة أو قطاع من قطاعات العمل في عصرنا الحالي إلا وتحتاج للحلول البرمجية والتقنية لتحسين أداء عملها وتهتم بتوظيف مهندسي البرمجيات للاستفادة من خبراتهم ومهاراتهم في تطبيق هذه الحلول. لكن عند البحث عن مجال للعمل في مجال هندسة البرمجيات سيكون عليك التركيز على العمل أو التخصص في مجال محدد، فعندما تطلب الشركات والمؤسسات مهندسي برمجيات تحدد غالبًا مهندسين بتخصص معين، وفيما يلي قائمة بأهم تخصصات العمل التي يمكن لمهندسي البرمجيات العمل بها وما التقنيات اللازمة لها: مطور ويب مطور الويب هو الشخص المسؤول عن تصميم وإنشاء مواقع وتطبيقات الويب المختلفة، ويمكن أن يتخصص في تطوير الواجهة الأمامية للموقع التي تعمل من طرف العميل أو تطوير الواجهة الخلفية التي تعمل من طرف الخادم أو يقوم بكلا الأمرين معًا ويطلق عليه في هذه الحالة اسم مطور ويب كامل "Full-Stack". يمتلك مطورو الويب معرفة قوية باستخدام تقنيات الويب ولغات البرمجة مثل HTML و CSS وجافا سكربت وأجاكس …إلخ. ويقومون بكتابة تعليمات برمجية لإنشاء مواقع الويب ودمج قواعد البيانات مع الموقع الويب وتطوير ميزات جديدة للموقع الويب وصيانته. يمكنك الرجوع إلى مقال تعلم تطوير الويب لمزيد من التفصيل حول هذا التخصص. مطور تطبيقات الهاتف المحمول يعد تطوير تطبيقات الهاتف المحمول من مجالات هندسة البرمجيات الأكثر طلبًا في سوق العمل ومطور التطبيقات هو المسؤول عن إنشاء واختبار وبرمجة تطبيقات الهواتف المحمولة والأجهزة اللوحية المختلفة وهو يطور تطبيقات لأهداف عامة أو تطبيقات مخصصة لتلبية احتياجات محددة للعملاء. كي تعمل كمطور تطبيقات هاتف يجب أن تمتلك معرفة قوية بلغات برمجة مثل جافا سكربت وكوتلن وسويفت و Objective-C وأن تمتلك معرفة جيدة بأنظمة تشغيل الهواتف المحمولة مثل iOS و Android. إن أردت المزيد من المعلومات، فارجع إلى مقال برمجة تطبيقات الجوال. أخصائي دعم تقني يمكن لمهندس البرمجيات العمل كذلك كاختصاصي دعم تقني، وهذا المجال يحتاج إلى فهم شامل للبرمجيات والأجهزة وأنظمة الشبكات كي يوفر الدعم الفني التقني اللازم للشركات وموظفيها، ويحل مشكلات الأجهزة والبرمجيات والشبكات الحاسوبية ويقوم بتثبيت البرامج اللازمة وتحديثها وإصلاح أي خلل بها …إلخ. محلل أنظمة أو محلل نظم معلومات يحتاج محلل الأنظمة لامتلاك معرفة متعمقة بالأنظمة والبرامج وتحديد أفضل الطرق للاستفادة من موارد المؤسسة التي يعمل بها لأداء العمل بفعالية. فمهندس الأنظمة مسؤول عن تحديد احتياجات البنية التحتية التقنية وتحليل التكلفة والعوائد اللازمة لإعداد أنظمة المعلومات في المؤسسات والشركات التي يعمل بها. محلل أمن معلومات محلل أمن المعلومات هو المسؤول عن الحفاظ على أمان الحواسيب والشبكات ويجب أن يكون خبيرًا بتقنيات التشفير وجدران الحماية وتقييم المخاطر ويقدم التوصيات لتحسين وحماية البيانات الحساسة للشركة التي يعمل بها ويحدد الثغرات ونقاط الضعف التي تخل بأمن هذه البيانات. مسؤول قواعد البيانات يهتم مسؤول قواعد البيانات بإنشاء وتصميم قواعد البيانات ويعنى بإدارة وصيانة قواعد بيانات الشركة والحفاظ على استقرارها وإجراء النسخ الاحتياطية لقاعدة البيانات وتعديلها عند الحاجة، ويجب أن يمتلك معرفة قوية بلغات قواعد البيانات التقليدية أو العلائقية مثل Oracle و Microsoft SQL Server و DB2 أو قواعد البيانات غير العلائقية المصممة للتعامل مع البيانات الضخمة. للمزيد حول مجال قواعد البيانات، ارجع إلى مقال دليلك الشامل إلى قواعد البيانات. مهندس ضمان الجودة يهتم مهندس ضمان الجودة بوضع الخطط التي تضمن جودة تطوير البرمجيات ويحدد المشكلات التي قد تظهر أثناء عملية التطوير ويمتلك فهمًا جيدًا بدورة حياة تطوير البرمجيات ويعمل مع المطورين الآخرين في الفريق لتحديد وسائل التحسين الممكنة. كما يمكن لمهندس البرمجيات العمل في العديد من المجالات المهمة الأخرى مثل: مهندس DevOps محلل معلومات الأعمال مسؤول عن اختبار جودة البرمجيات QA Tester مبرمج ألعاب مهندس ذكاء صنعي مشرف على مختبرات الحاسوب مدرس برمجة وحاسوب ويمكنك الاطلاع على المزيد من المعلومات حول أكثر مجالات العمل انتشارًا في مقال مجالات البرمجة. كيف أبدأ بالعمل في أحد مجالات هندسة البرمجيات؟ لتعمل في أحد تخصصات أو مجالات هندسة البرمجيات التي ذكرناها في فقرتنا السابقة من الضروري أن تركز على تعلم اللغات والتقنيات التي ترتبط بشكل وثيق بالمجال أو التخصص الذي تفضل العمل فيه. لا تهمل كذلك تعلم المهارات غير الفنية كإدارة الوقت والتحكم بالتوتر والتنظيم والتخطيط والتفكير خارج الصندوق والعمل الجماعي والعمل مع العملاء ومهارات التواصل الفعال مع العملاء والقدرة على تحديد احتياجاتهم فهي ضرورية لك كمهندس برمجيات لأنك ستحتاج للتعامل مع فئات مجتمعية مختلفة كالبائعين والعملاء والمدراء وأعضاء الفرق المختلفة، وأصحاب العمل يقدرون الأفراد الذين يمتلكون مهارات ناعمة ويفضلون توظيفهم. وبعد أن تطور مهاراتك سواء التقنية وغير التقنية، عليك أن تضعها موضع التطبيق العملي وتحرص على إنجاز مشاريع عملية وتطوير برامج لشركات حقيقية أو وهمية لبناء معرض أعمال مناسب، كما يمكنك الانضمام إلى مشاريع مفتوحة المصدر فهذا يوفر لك طريقة رائعة لوضع مهاراتك موضع التنفيذ وتعزيز محفظة أعمالك. فأعمالك في النهاية هي التي ستتحدث عنك وهي التي ستفتح لك الأبواب والفرص المناسبة في سوق العمل. إذا قمت بكل ما سبق ستجد أمامك بالتأكيد الكثير من فرص العمل المتنوعة، وإذا كنت مهندس برمجيات مبتدئ أنصحك أن تبحث فورًا عن أول فرصة عمل مناسبة في شركة ملائمة حتى لو كانت شركة محلية وصغيرة لأجل اكتساب الخبرة لأن الخبرة في هذا المجال أمر مهم للتقدم الوظيفي، بعدها يمكنك الانتقال لشركات أكبر وذات رواتب مجزية. أخيرًا إذا كنت ترغب في العمل والتخصص في مجال هندسة البرمجيات، لكنك متردد حول إيجابيات وسلبيات هذا المجال وتراودك تساؤلات وشكوك فيما إذا كانت هذه المهنة مناسبة لك فعلًا، دعنا نختم مقالنا بمناقشة أبرز المزايا والعيوب المحتملة للعمل كمهندس برمجيات لعل ذلك يساعدك على اتخاذ القرار الأنسب لمستقبلك المهني. إيجابيات وسلبيات تخصص هندسة البرمجيات سنناقش أخيرًا إيجابيات وسلبيات هذا المجال الواسع الكبير، فلكل شيء في النهاية مزايا ومحاسن ويجب على الداخل الجديد إلى أي مجال معرفتها. إيجابيات تخصص هندسة البرمجيات يوفر تخصص هندسة البرمجيات العديد من الفوائد والإيجابيات وأهمها: تعد هندسة البرمجيات من الوظائف الأعلى أجرًا. الطلب على هندسة البرمجيات مرتفع ومعدل نموها أعلى من المهن الأخرى. حرية العمل عن بعد من داخل المنزل إما بمفردك أو مع فريق عمل وضمن ساعات عمل مرنة. إمكانية بدء مشروعك الخاص بأقل التكاليف، كل ما تحتاجه للبدء هو جهاز حاسوب واتصال بالإنترنت. القدرة على تطوير برامج ضخمة ومعقدة عالية الجودة لم تكن لتتمكن من إنجازها بنجاح دون تطبيق مبادئ هندسة البرمجيات. تطوير مهاراتك الحياتية وقدرتك على فهم المنطق وتحسين كفاءتك في حل المشكلات والتعامل مع التوتر والضغوطات. مهارة عالية في التكيف بسرعة مع أي تطورات تقنية جديدة، فالتقنية تتطور باستمرار ومهندسو البرمجيات أشخاص منفتحون على تعلم أشياء جديدة كل يوم. سلبيات تخصص هندسة البرمجيات لاشك أن أي مجال لا يخلو من بعض الجوانب السلبية، وفيما يلي نذكر لك أبرز التحديات التي قد تواجهك عند العمل في مجال هندسة البرمجيات: إذا قررت العمل كمهندس برمجيات فستضطر إلى الجلوس وراء حاسوبك لفترات طويلة جدًّا وهذا قد يعرضك لمشكلات صحية ويمكنك التغلب عليها باتباع نظام صحي ولعب تمارين رياضية. مهنة مرهقة وتشكل الكثير من الضغوط وقد لا تجد فيها الكثير من أوقات الفراغ لا سيما عند العمل في ظل قيود زمنية ومواعيد نهائية للتسليم قد تضطرك للعمل لوقت متأخر وفي أيام العطل. مهنة تتطلب الصبر والتركيز والانتباه الشديد للتفاصيل سواء في مرحلة كتابة الكود أو التصحيح أو الاختبار، وقد تضطر إلى قضاء ساعات في التنقل عبر الشيفرات البرمجية لاكتشاف سبب مشكلة أو إصلاح مشكلة معينة. قد تميل إلى العزلة والوحدة خاصة إذا كنت تعمل من المنزل مما يؤثر على حياتك الاجتماعية وتواصلك مع الأصدقاء. مجال هندسة البرمجيات متجدد ومتسارع النمو وهذا يتطلب منك التعلم المستمر وتطوير نفسك وتعلم أي أدوات وتقنيات جديدة لتضمن النجاح والاستمرارية. يجب أن تبقى حريصا على مسألة الأمان وتحرص على حماية نفسك وعملائك من هجمات المتسللين الذين يحاولون سرقة البيانات أو تخريبها وتحرص على اتخاذ الاحتياطات الأمنية المناسبة كي لا تفقد ثقة عملائك. ورغم ما سبق من سلبيات تذكّر أنك تستطيع تجاوزها إذا كنت تمتلك الشغف في مجال التقنية والبرمجة وكنت منفتحًا على تعلم كل جديد. الخلاصة تعرفنا في مقال اليوم على تخصص هندسة البرمجيات الذي يساعدنا على تطوير منتجات برمجية متطورة فعالة وموثوقة تعمل بأعلى جودة وأقل تكلفة وزمن، ووضحنا أهم المجالات التي يمكن لمهندس البرمجيات العمل فيها وأبرزها تطوير مواقع الإنترنت وتطبيقات الجوال أو الحفاظ على الأمن الإلكتروني للمؤسسات وغيرها من المجالات العديدة، وتناولنا في الختام أبرز إيجابيات وسلبيات العمل كمهندس برمجيات. وفي الختام تذكّر أن تعلّم هندسة البرمجيات طريق طويل يتطلب وقتًا وجهدًا، لكنه في ذات الوقت متاح للتعلم الذاتي بشكل مختصر بفضل توفر موارد تعلم رائعة عبر الإنترنت من دروس ومقالات ومقاطع فيديو وبودكاست وغيرها من المصادر المتنوعة التي تتيح لك التركيز على الموضوعات التي تهمك. هل أنت مهتم بأحد مجالات هندسة البرمجيات وترغب في تعلمه أو بدأت به فعلًا؟ شاركنا رأيك في المجال المفضل لديك وكيف تعلمته وما هي أبرز التحديات التي واجهتك في هذا المجال وكيف تخطيتها؟ اقرأ أيضًا الطريقة الأمثل لدراسة تخصص هندسة البرمجيات دليلك الشامل إلى برمجة التطبيقات دليلك الشامل لتعلم البرمجة تعرف على مجال تحليل البيانات علم البيانات Data science: الدليل الشامل1 نقطة