اذهب إلى المحتوى

لوحة المتصدرين

  1. Mustafa Suleiman

    Mustafa Suleiman

    الأعضاء


    • نقاط

      1177

    • المساهمات

      8602


  2. عبدالباسط ابراهيم

    • نقاط

      357

    • المساهمات

      4159


  3. Ail Ahmed

    Ail Ahmed

    الأعضاء


    • نقاط

      303

    • المساهمات

      426


  4. Adnane Kadri

    Adnane Kadri

    الأعضاء


    • نقاط

      274

    • المساهمات

      4970


المحتوى الأكثر حصولًا على سمعة جيدة

عرض المحتوى الحاصل على سمعة أكبر منذ 04/28/23 في كل الموقع

  1. الإصدار 1.0.0

    8564 تنزيل

    تُعد أنظمة التشغيل موضوعًا متقدمًا في العديد من برامج علوم الحاسوب، حيث يتعرف المتعلم على كيفية البرمجة بلغة C بحلول الوقت الذي يتعرف فيه على أنظمة التشغيل، وربما يأخذ المتعلم فصلًا دراسيًا في معمارية الحاسوب Computer Architecture قبل ذلك، فيصبح الهدف من تقديم هذا الموضوع عادةً هو عرض تصميم وتنفيذ أنظمة التشغيل للطلاب مع افتراض ضمني أن بعضهم سيجري بحثًا في هذا المجال، أو يكتب جزءًا من نظام تشغيل. هذا الكتاب مترجم عن الكتاب Think OS لكاتبه آلن داوني Allen B. Downey والذي يعد مسودة أولية لم تكتمل بصورة نهائية بعد إذ طُوّر لفصلٍ دراسي في كلية أولين Olin College يدعى أنظمة البرمجيات Software Systems. لا يفترض هذا الكتاب أنك قد درست معمارية الحاسوب، فيجب أن يمنحك فهمًا أفضل أثناء قراءته عن الحاسوب ومعماريته وكيف يعمل المعالج والذاكرة فيه وكيف تُدار العمليات وتُخزَّن الملفات وما يحدث عند تشغيل البرامج، وما يمكنك القيام به لجعل البرامج تعمل بصورة أفضل وأسرع بوصفك مبرمجًا. يشرح الفصل الأول بعض الاختلافات بين اللغات المُصرَّفة compiled واللغات المُفسَّرة interpreted، مع بعض الأفكار حول كيفية عمل المصرِّفات compilers، ويشرح الفصل الثاني كيف يستخدم نظام التشغيل العمليات لحماية البرامج قيد التشغيل من التداخل مع بعضها البعض. ويشرح الفصل الثالث الذاكرة الوهمية virtual memory وترجمة العناوين، ويتحدث الفصل الرابع عن أنظمة الملفات ومجرى البيانات، ويصف الفصل الخامس كيفية تشفير الأرقام والأحرف والقيم الأخرى، ويشرح أيضًا العامِلات الثنائية bitwise operators. أما الفصل السادس، فيشرح كيفية استخدام إدارة الذاكرة الديناميكية وكيفية عملها، ويدور الفصل السابع حول التخبئة caching وهرمية الذاكرة. ويشرح الفصل الثامن تعدد المهام multitasking والجدولة scheduling. ويدور الفصل التاسع حول خيوط POSIX وكائنات المزامنة mutexes، ويشرح الفصل العاشر المتغيرات الشرطية POSIX ومشكلة المنتج / المستهلك، ويدور الفصل الحادي عشر حول استخدام متغيرات تقييد الوصول POSIX وتطبيقها في لغة C. هذا الكتاب مرخص بموجب رخصة المشاع الإبداعي Creative Commons «نسب المُصنَّف - غير تجاري - الترخيص بالمثل 4.0». يمكنك قراءة فصول الكتاب على شكل مقالات من هذه الصفحة، «مدخل إلى أنظمة التشغيل»، أو تجدها مسردة بالترتيب التالي: الفصل الأول: مفهوم التصريف Compilation في لغات البرمجة الفصل الثاني: العمليات Processes في أنظمة التشغيل الفصل الثالث: الذاكرة الوهمية Virtual memory في نظام التشغيل الفصل الرابع: فهم الملفات Files وأنظمة الملفات file systems الفصل الخامس: تمثيل الأعداد والنصوص بالبتات وإجراء العمليات على مستوى البت الفصل السادس: إدارة الذاكرة Memory management في لغة C الفصل السابع: فهم عملية التخبئة Caching في معمارية الحاسوب الفصل الثامن: تعدد المهام Multitasking في الحواسيب الفصل التاسع: مفهوم الخيوط Threads في عملية المعالجة الفصل العاشر: المتغيرات الشرطية وحلها مشاكل التزامن بين العمليات في لغة C الفصل الحادي عشر: متغيرات تقييد الوصول Semaphores في لغة البرمجة سي C
    6 نقاط
  2. سنتعرف في هذا المقال على مفهوم واجهة برمجية التطبيقات Application Programming Interface، هذا المصطلح السهل المعقد حيث سنحاول فهمه وكيفية بناء مواقع الويب والتطبيقات الحديثة في يومنا هذا بالاعتماد على الواجهات البرمجية ونجيب على سؤال مهم وهو كيف ترتبط الواجهة الأمامية مع الواجهة الخلفية لتطبيق الويب أو الموقع الإلكتروني. هذا المقال هو جزء من سلسلة مقالات حول الواجهة البرمجية API وكيفية الاستفادة منها في بناء تطبيق ويب: مدخل إلى الواجهات البرمجية API الاتصال بواجهة زد البرمجية وفهم عملية الاستيثاق والتصريح أمثلة عملية لاستخدام واجهة برمجة متاجر زد zid API تطوير تطبيق عملي يزيد من احتفاظ العملاء عبر واجهة زد البرمجية مفهوم الواجهة البرمجية للتطبيقات API قبل أن ندخل في أية تفاصيل تقنية عن موضوعنا اليوم، سأحكي لك يومًا في حياة علي. علي هو مبرمج تطبيقات ويب يعمل في إحدى الشركات التقنية العربية، علي يحب تجربة المأكوﻻت المختلفة، بحيث يجرب في كل يوم أكلة جديدة في المطاعم المحيطة وإن سمع بافتتاح مطعم جديد بالقرب من مكان عمله، فإنه ﻻ يتوانى في زيارته وتذوق مختلف اﻷطباق التي يقدمها. ذهب علي ﻷحد المطاعم التي فتحت أبوابها مؤخرا، واختار مكانا هادئًا ونادى النادل يسأله عن اﻷطباق التي يقدمونها من أجل أن يأخذ طلبيته إلى الطباخ لتحضير ما طلبه علي. دوَّن النادل ما يريد علي تناوله من مأكوﻻت وذهب بها إلى الطباخ من أجل تحضيرها، بعد مدة وجيزة، عاد النادل إلى علي وهو يحمل كل ما طلبه وقدمها متمنيا أنه يعجبه اﻷكل، تذوق علي المأكوﻻت وأبدى إعجابه اﻷولي بها، وبدأ في اﻷكل إلى أن أنهى كل ما في الصحون، دفع الحساب، وخرج من المطعم شاكرا النادل على حسن اﻷستقبال. هل تتساءل اﻵن، ما علاقة هذه القصة بالواجهات البرمجية؟ وهل تساءلت يومًا عن طريقة عمل تطبيقات الهواتف الذكية، وكيف تتصل بخوادم الشركات المطورة لها، هل استطعت الوصول إلى إجابات كافية عن ذلك؟ سأبين لك ما العلاقة بين المثال السابق والواجهات البرمجية وكيف أن الواجهات البرمجية ماهي إﻻ تطبيق لمثالنا باختلاف بسيط وهو مكان التطبيق فقط، فمثالنا هو من الواقع الذي نعيشه يوميًا ونراه دائمًا حتى تعودنا عليه حتى أصبحنا ﻻ ندركه، أما الواجهات البرمجية، فقد أصبحت جزءًا ﻻ يتجزأ من حياة مبرمج المواقع وتطبيقات الويب المهنية. كنت قد نوهتك ﻷن تسأل نفسك عن طريقة ربط تطبيقات الهواتف الذكية مع خوادم الشركات. هنالك طريقتين لربط تطبيقات الهواتف الذكية مع خوادم الشركات المطورة، الطريقة اﻷقدم تسمى SOAP وهي اختصار لجملة Simple Object Access Protocol، أما الطريقة اﻷحدث فهي الواجهة البرمجيةللتطبيقات API وهي اختصار لجملة Application Programming Interface، وهي التي سأركز عليها، ولكن باختصار، API هي طريقة لتواصل البرمجيات في ما بينها باستخدام صيغة JavaScript Object Notation والتي تعرف اختصارا بـ JSON. لن أدخل في التفاصيل التاريخية وسأبقى مركزا على الجانب التقني فقط، لهذا أتوقع منك أن تحاول البحث عن تاريخ ابتكار وتطوير تقنية API والتقنية المكملة لها REST والتي هي اختصار لجملة REpresentational State Transfer. مصطلحات وجب معرفتها سنسرد بعض المصطلحات باللغة الإنجليزية والعربية الضروري على كل مطور ويب أن يعرفها: Backend: الواجهة الخلفية، هي المسؤولة عن العمليات المنطقية للنظام، تتعامل مع الملفات أيضا ومع قواعد البيانات. Frontend: الواجهات الأمامية، كل ما يراه المستخدم ويتعامل معه بشكل مباشر، ويتم ربطها مع النظم الخلفية بما يعرف بالواجهة البرمجية للتطبيقات API. API: الواجهة البرمجية للتطبيقات، هي حلقة الوصل ما بين النظم أو الواجهة الخلفية والواجهات الأمامية. Request: الطلب الذي يرسله العميل (قد تكون الواجهة الأمامية) إلى الخادم Server الموجود في الواجهة الخلفية. Header: ترويسة الطلب Request المرسل والذي يحوي بعض البيانات الوصفية التي تصف الطلبية وحالها وأية معلومات إضافية مطلوبة. Body: جسم أو متن الطلب المرسل والذي يحوي غالبًا على البيانات المتبادلة في الطلبية. Response: استجابة أو رد الخادم وهي المعلومات الراجعة من الخادم إلى العميل مقدم الطلب ردًا على طلبه. تحوي المعلومات الراجعة من الخادم إلى العميل على ترويسة Header وأيضا على متن Body. Endpoint: نقطة الوصول، وهي نقطة اتصال الواجهات الأمامية مع موقع محدد في الواجهة الخلفية أي نقطة محددة تتصل عبرها الواجهة الأمامية مع الواجهة الخلفية لغرض محدَّد. HTTP Client Software: عميل خادم HTTP وهو برنامج يساعد على تسريع التعامل مع الواجهات البرمجية بتوفير آلية واضحة في عملية إرسال واستقبال الطلبيات والردود. هل تعرفت على أي من المصطلحات التي ذكرناها قبل قليل؟ لا بأس إن لم تفعل، فسنشرحها لك حتى تكون لديك معرفة مبدئية بموضوع الواجهات البرمجية. لماذا نستخدم الواجهات البرمجية للتطبيقات APIs وما هي فائدتها؟ تُعَد الواجهات البرمجية للتطبيقات طبقة الحماية الأولى First Security Layer للبرمجية الموجودة على خادم الويب، بسبب أنها تفصل ما بين النظم الخلفية والعمليات الجارية على قواعد البيانات عن الواجهات الأمامية سواءً كانت صفحات ويب عادية أو تطبيقات هواتف ذكية. أي أن أي تطبيق ويب أو موقع اليوم يتألف من واجهة خلفية وواجهة أمامية وواجهة برمجية تعد وصلة وصل بينهما. أما الواجهة الخلفية، فتحوي على كامل العمليات والإجراءات والخدمات التي يوفرها التطبيق أو الموقع مثل معالجة صورة أو بيانات أو حتى تقديم خدمة الطقس. أما الواجهة الأمامية فهي الواجهة التي يراها المستخدم والمسؤولة عن عرض البيانات القادمة من الواجهة الخلفية للمستخدم بصورة مناسبة ومتناسقة مع إرسال البيانات من المستخدم إلى الخادم بالشكل الذي يطلبها، فالبيانات المتبادلة تلك تكون بشكلها الخام (تستعمل غالبًا صيغة JSON أو حتى صيغة XML)، أما الواجهة البرمجية للتطبيقات API فهي صلة الوصل كما ذكرنا ووظيفتها استلام البيانات من الواجهة الأمامية وتسلميها للواجهة الخلفية وإرسال البيانات من الواجهة الخلفية إلى الأمامية بطريقة وأسلوب موحد أي هي التي تؤمن عملية التفاهم بين الواجهة الأمامية والخلفية لتأمين التخاطب فيما بينهما. كيف تعمل الواجهات البرمجية للتطبيقات API سأحاول قدر اﻹمكان تبسيط آلية عمل الواجهات البرمجية بمثال عملي من حياتنا اليومية، وليكن مثلا منصة فيسبوك. كما تعلم أنه بإمكانك الدخول إلى حسابك في فيسبوك من أي جهاز تريد، سواءً من هاتفك الذكي أو من جهازك اللوحي أو من جهاز الحاسوب بل بإمكانك الدخول منها مجتمعة وفي نفس الوقت، وهنا يجب أن تطرح سؤاﻻ مهمًا، كيف تتم مزامنة حسابك في كل تلك اﻷجهزة؟ هنا تأتي أهمية الواجهة البرمجية، بحيث أن كل تلك اﻷجهزة متصلة بنظام خلفي واحد وكلها تتصل بالواجهة البرمجية التي تكون حلقة الوصل ما بين كل اﻷجهزة المتصلة و النظام الخلفي. سنأخذ مثاﻻ من حياتنا اليومية وهو موقع فيسبوك، سنقوم بالدخول إلى حسابنا باستخدام الأجهزة التي بحوزتنا، إن لم تكن لديك أجهزة غير جهاز الحاسوب، افتح أكثر من متصفح، ليس نفس المتصفح، مثلا متصفح كروم Google Chrome ومتصفح فايرفوكس Mozilla Firefox، في هذه الحالة يمكنك فتح حسابك 4 مرات باستخدام التصفح الخفي، في متصفح كروم يسمى Incognito Mode أما في متصفح فايرفوكس فيسمى Private Mode. هل قمت بذلك؟ كيف تستطيع إرسال رسائل إلى أصدقائك من أي متصفح وتشاهدها في نفس الوقت من بقية المتصفحات؟ قم بالدخول إلى حسابك على فيسبوك من هاتفك الذكي، من التطبيق الرسمي أو من المتصفح، هل تستطيع أن ترى الرسائل التي قمت بإرسالها على هاتفك أيضا، كيف يحدث ذلك؟ كيف تستطيع الدخول إلى حسابك من أماكن مختلفة في نفس الوقت؟ سأشرح العملية بأكملها بشكل بسيط وبالمقارنة مع مثالنا في بداية المقال وبدون الدخول في التفاصيل الدقيقة في الوقت الحالي. عند دخول علي مطور الويب إلى المطعم، كان عليه أن يختار طاولة محددة برقم حتى يعلم النادل موقعه وأنه يريد تناول الطعام وبالتالي يستطيع تقديم مختلف الخدمات التي يعرضها المطعم. هنا الطاولة وتفاصيلها (من رقم وحجم وغيرهما) تعتبر المكان المتفق عليه من أجل اﻹستفادة من خدمات المطعم، ويمكن القول أنها نقطة الوصول إلى خدمات المطعم Endpoint. في حالة موقع فيسبوك، وعند قيامك فتح التطبيق مثلا، سيتصل تطبيقك بخادم الشركة، في نقطة متفق عليها ومحددة مسبقًا في التطبيق وفيها فقط يستطيع الخادم أن يقدم خدماته للتطبيق. جاء النادل إلى عليٍ والذي يسمى العميل client ليأخذ الطلبات منه، ودون أية ملاحظات أو أي خدمات أخرى، وبعدها ذهب إلى المطبخ ليخبر الطباخ بالطلبات من أجل تحضيرها. هنا نسمي العملية: إرسال طلب Send Request من العميل علي إلى الطباخ في المطعم مقدمة الخدمة. في حالة موقع فيسبوك، أقرب عملية لذلك المثال عملية تسجيل الدخول حيث تُدخل اسم المستخدم الخاص بك مع كلمة المرور، تأخذ الواجهة الأمامية منك هذه المعلومات وترسلها للواجهة الخلفية لموقع فيسبوك لتتحقق منها ومن الطلب الخاص بك، طلب تسجيل الدخول. يستلم الطباخ الطلبية ويتأكد من أنها طلبية صالحة ويمكنك تحضيرها (أي ليست طلبية شراء ملابس مثلًا) ثم يبدأ بتحضيرها وعندما ينتهي منها، يعطيها للنادل الذي يرتبها بدوره في صينية ويأخذها إلى علي ليضعها على طاولته حتى يتسنى له البدء في تذوقها. هذه العملية تسمى: اﻹستجابة Send Response أي استجاب الطباخ لطلبية علي وقدم له ما يريد. وفي حالة موقع فيسبوك، إن كانت المعلومات المقدمة صالحة، سيقوم خادم فيسبوك بالسماح لك بالدخول واستعراض مختلف الصفحات واﻷجزاء الخاصة به والاستفادة من خدمته التي يقدمها. هل اتضحت الصورة العامة اﻵن؟ ببساطة، الواجهة البرمجية تنفذ عمل النادل في المطعم، حيث أن النادل يقوم بأخذ طلبات الزبائن إلى الطباخ وفريقه لتحضيرها وبعد ذلك، يقوم بأخذ تلك استجابة الطباخ لتلك الطلبات إلى أصحابها، أي أن الواجهة البرمجية تأخذ الطلبات من المستخدمين (الواجهة الأمامية) إلى النظام الخلفي لتقوم بعمل محدد ومن ثم تعيد النتائج المتحصل عليها إلى طالبيها أي تعيدها للواجهة الأمامية مرةً أخرى. خاتمة تعرفنا على ماهية الواجهة البرمجية للتطبيقات وأهم المصطلحات فيها وكيف يستفيد منها المطورون في بناء تطبيقات الويب الحديثة واستثمارها في التواصل ما بين الواجهة الأمامية والخلفية لتطبيقات الويب والمواقع الحالية، فالتعامل مع الواجهة البرمجية للتطبيقات ضروري لأي مبرمج متخصص في تطوير الويب، وعليه أن يعي مفهوم الواجهة البرمجة تمامًا إذ أصبح هذا المفهوم هو المفهوم الحديث في التواصل ما بين الواجهة البرمجية الخلفية والأمامية للمواقع وتطبيقات الويب، أضف إلى ذلك أن الكثير من الخدمات والمواقع أصبحت تتيح واجهتها البرمجية (مثل الواجهة البرمجية للمطورين من فيسبوك وتويتر وغيرهما) للاستفادة منها أو حتى هنالك واجهة برمجية مخصصة فقط لتقديم خدمات محددة (مثل واجهة برمجية للحصول على معلومات الطقس) وتقدمها للمطورين للاستفادة من تلك الخدمات في مختلف المشاريع. اقرأ أيضًا المقال التالي: الاتصال بواجهة زد البرمجية وفهم عملية الاستيثاق والتصريح كيفية إنشاء متجر إلكتروني متكامل باستعمال منصة زد الواجهة البرمجية Fetch API في جافاسكريبت
    5 نقاط
  3. الإصدار 1.0.0

    3533 تنزيل

    تُعدّ هياكل البيانات data structures والخوارزميات algorithms واحدةً من أهم الاختراعات التي وقعت بالخمسين عامًا الأخيرة، وهي من الأدوات الأساسية التي لابُدّ أن يدرسها مهندسي البرمجيات. غالبًا ما تكون الكتب المتناولة لتلك الموضوعات -وفقًا للكاتب- ضخمةً للغاية، كما أنها عادةً ما تُركزّ على الجانب النظري، وتُقدِّم هذه المادة العلمية بدون سياق واضح وبدون أي حافز، فتَعرِض الهياكل البيانية واحدةً تلو الأخرى. هذا الكتاب مترجم عن الكتاب الشهير Think Data Structures لمؤلفه Allen B. Downey والذي يعد مرجعًا عمليًا في شرح موضوعي هياكل البيانات والخوارزميات اللذين يحتاج إلى تعلمهما كل مبرمج ومهندس برمجيات يتطلع إلى احتراف مهنته وصقل عمله ورفع مستواه. يحاول هذا الكتاب تنظيم الموضوعات نوعًا ما من خلال التركيز على برمجة تطبيق -برمجة محرك بحث-، ويَستخدِم هذا التطبيق هياكل البيانات بشكل مكثف، وهو في الواقع موضوع مهم وشيق بحد ذاته. في الحقيقة، سيدفعنا هذا التطبيق إلى دراسة بعض الموضوعات التي ربما لن تتعرَّض لها ببعض الفصول الدراسية التمهيدية الخاصة بمادة هياكل البيانات، حيث سنتعرَّض هنا مثلًا، لحفظ هياكل البيانات persistent data structure مثل ريدس Redis. يُقدِّم الكتاب أيضًا بعض الأساسيات التي تُمارَس عادةً بهندسة البرمجيات، بما في ذلك نظم التحكُّم بالإصدار version control، واختبار الوحدات unit testing. تتضمَّن غالبية فصول الكتاب تمرينًا يَسمَح للقراء بتطبيق ما تعلموه خلال الفصل، حيث يُوفِّر كل تمرين اختبارات أوتوماتيكية لفحص الحل، وبالإضافة إلى ذلك، يُوفِّر الكاتب حلًا لغالبية التمارين ببداية الفصل التالي. هذا الكتاب مُخصَّص لطلبة الجامعات بمجال علوم الحاسوب والمجالات المرتبطة به، ولمهندسي البرمجيات المحترفين، وللمتدربين بمجال هندسة البرمجيات، وكذلك للأشخاص الذين يستعدون لمقابلات العمل التقنية. ينبغي أن تكون على معرفة جيدة بلغة البرمجة جافا قبل أن تبدأ بقراءة هذا الكتاب. وبالتحديد، لابُدّ أن تَعرِف كيف تُعرِّف صنفًا class جديدًا يمتدّ extend أو يرث من صنف آخر موجود، إلى جانب إمكانية تعريف صنف يُنفِّذ واجهة interface. إذا لم تكن لديك تلك المعرفة، فيُمكِنك البدء بسلسلة مدخل إلى جافا فهي مترجمة عن كتاب شهير يشرح لغة البرمجة جافا. يمكنك قراءة الكتاب على شكل فصول منشورة على موقع أكاديمية حسوب مباشرةً إن كنت تحب القراءة على المتصفح مباشرة، وتجد الفصول مجمعة تحت وسم "هياكل البيانات 101" وإليك روابطها تاليًا: طريقة عمل الواجهات في لغة جافا مدخل إلى تحليل الخوارزميات تحليل زمن تشغيل القوائم المنفذة باستخدام مصفوفة تحليل زمن تشغيل القوائم المنفذة باستخدام قائمة مترابطة تحليل زمن تشغيل القوائم المنفذة باستخدام قائمة ازدواجية الترابط تنفيذ أسلوب البحث بالعمق أولا باستخدام طريقتي التعاود والتكرار في جافا تنفيذ أسلوب البحث بالعمق أولا باستخدام الواجهتين Iterables وIterators استخدام خريطة ومجموعة لبناء مفهرس Indexer تحليل زمن تشغيل الخرائط المنفذة باستخدام مصفوفة في جافا تنفيذ الخرائط باستخدام التعمية hashing في جافا تحسين أداء الخرائط المنفذة باستخدام التعمية HashMap في جافا تحليل زمن تشغيل الخرائط المنفذة باستخدام شجرة بحث ثنائية TreeMap في جافا استخدام أشجار البحث الثنائية والأشجار المتزنة balanced trees لتنفيذ الخرائط استخدام قاعدة بيانات Redis لحفظ البيانات فهرسة الصفحات وتحليل زمن تشغيلها باستخدام قاعدة بيانات Redis البحث الثنائي Boolean search ودمج نتائج البحث وترتيبها نظرة سريعة على بعض خوارزميات الترتيب
    5 نقاط
  4. الإصدار 1.0.0

    4309 تنزيل

    لغة جافاسكربت JavaScript هي لغة برمجة شهيرة موجودة حيث وجدت متصفحات الويب فهي أحد الركائز الثلاثية لتطوير الويب مع لغة HTML ولغة CSS فبها مجتمعة تُبنى واجهات الويب وبذلك لا غنى للغة جافاسكربت في مجال الويب إذ تساهم في إضفاء التفاعلية على صفحات الويب وبدونها تصبح الصفحات جامدة، كما أنها تُنجز أي عمليات برمجية ومنطقية في الصفحات مثل التحقق من مدخلات المستخدم وسلامة البيانات. استخدام جافاسكربت لا ينحصر في المتصفح بل يمتد إلى تطبيقات أوسع إذ تُشغل شيفرات لغة جافاسكربت خارج المتصفح في بيئة Node.js وبذلك يمكن استخدام لغة جافاسكربت في بناء مختلف التطبيقات أشهرها حاليًا بناء خوادم الويب وهنا أصبح بالإمكان استعمال لغة جافاسربت في تطوير الواجهات الأمامية والواجهات الخلفية لصفحات الويب بمختلف أنواعها والحديث عن اللغة وميزاتها يطول لذا لن أتوسع في التمهيد بالتحدث عن اللغة لأن الكتاب كله عنها وخصوصًا باب المقدمة. هذا الكتاب مترجم عن الكتاب The JavaScript Language: Part 1 الجزء الأول لكاتبه إيليا كانتور Ilya Kantor وهو بحجم 1000 صفحة وفيه يشرح لغة جافاسكربت شرحًا كاملًا لكل ميزاتها وتفاصيلها ويعد أفضل وأول مرجع تعليمي أجنبي لتعلم لغة جافاسكربت. ويوجد جزء ثان للكتاب يتحدث عن استعمال جافاسكربت في المتصفحات تحديدًا وجزء ثالث يتحدث عن مواضيع متفرقة ومتقدمة عن جافاسكربت يكمل فيها الجزأين السابقين ويتمم الحديث عن لغة جافاسكربت ليكون الكتاب بأجزائه الثلاثة مرجعًا كاملًا عن لغة جافاسكربت. دورة تطوير التطبيقات باستخدام لغة JavaScript تعلم البرمجة بلغة جافا سكريبت انطلاقًا من أبسط المفاهيم وحتى بناء تطبيقات حقيقية. اشترك الآن يُقسم الكتاب إلى 14 فصلًا أو بابًا كل منها مقسوم إلى فصول فرعية أصغر تتحدث عن موضوع محدد من اللغة ولكل قسم مقدمة وخاتمة وتمارين منفصلة، والفصول مرتبة ترتيبًا متدرجًا بدءًا من المواضيع الأساسية وحتى المواضيع المتقدمة بما يناسب المتعلم الجديد الذي يريد تعلم لغة جافاسكربت من الصفر دون خبرة مسبقة، وأما إن كنت تملك خبرة مسبقة بلغة جافاسكربت فيمكنك قراءة الفصول وفق الترتيب الذي تريد والرجوع إليها وفقًا لأبوابه وفصولها الفرعية. الكتاب مدعوم بشيفرات عملية كثيرة وهي جاهزة للتجريب في المتصفح لذا تجدها تعتمد على دالة المتصفح alert التي تعرض رسالة على شكل مربع منبثق في صفحة المتصفح وبالتالي يمكنك تجريب الشيفرات بنسخها ولصقها في طرفية المتصفح console وسيدلك فصل أدوات المطور على كيفية استخدام هذه الأداة إن لم تكن تعرفها من قبل. تجد في نهاية كل قسم تمارين ننصح بالتدرّب عليها بعد قراءة القسم قبل الاطلاع على الحل ثم الرجوع إلى الحل وموازنته مع حلك الناتج، وهذا يحقق أقصى استفادة أثناء تعلمك لغة جافاسكربت، وضع في بالك أن حل هذه التمارين يساعدك على تعلم لغة جافاسكربت من جهة وعلى حل الأسئلة البرمجية التي تُسأل في مقابلات العمل لذا لا تهملها. يمكنك قراءة الكتاب على شكل فصول منشورة على موقع أكاديمية حسوب مباشرةً إن كنت تحب القراءة على المتصفح مباشرة أو إن كنت تجد صعوبة في نسخ الشيفرات أو تجريبها، وتجد روابط الفصول تاليًا مجموعة ضمن وسم "دليل تعلم جافاسكربت": الباب الأول: مقدمة مقدمة إلى لغة JavaScript محررات الشيفرة البرمجية أدوات المطور DevTools الباب الثاني: أساسيات جافاسكربت المثال الأول: أهلًا بالعالم! بنية الشيفرة البرمجية الوضع الصارم: النمط الحديث لكتابة الشيفرة المتغيرات variables أنواع البيانات Data Types الدوال التفاعلية: confirm ،prompt ،alert التحويل بين الأنواع العاملات operators عاملات الموازنة العاملات الشرطية العاملات المنطقية عامل الاستبدال اللاغي ?? حلقتا التكرار while و for التعليمة switch الدوال في JavaScript تعابير الدوال أساسيات الدوال السهمية مراجعة لما سبق الباب الثالث: الاعتناء بجودة الشيفرة تنقيح الأخطاء في chrome نمط كتابة الشيفرة التعليقات شيفرة النينجا البرمجية الاختبار الآلي باستخدام mocha تعويض نقص دعم المتصفحات الباب الرابع: الكائنات: تأسيس المفاهيم الكائناتَ Objects نسخ الكائن: الفرق بين القيمة والمرجع كنس البيانات المهملة الدول في الكائنات واستعمالها this الباني والعامل new التسلسل الاختياري ‎.?‎ النوع الرمزي Symbol التحويل بين نوع كائن إلى نوع أولي الباب الخامس: أنواع البيانات توابع الأنواع الأولي النوع number: الأعداد النوع string: السلاسل النصية المصفوفات Arrays توابِع المصفوفات المُكرَّرات Iterables النوع Map الخرائط والنوع Set الأطقم النوع WeakMap والنوع WeakSet مفاتيح الكائنات وقيمها ومدخلاتها الإسناد بالتفكيك النوع Date: التاريخ والوقت صيغة JSON وتوابعها الباب السادس: التعامل المتقدم مع الدوال التعاود Rescursion والمكدس Stack المعاملات «البقية» ومعامل التوزيع المنغلقات Closure ومجال المتغيرات إفادة «var» القديمة الكائن العمومي Global object كائنات الدوال وتعابير الدوال المسمّاة NFE صياغة «الدالة الجديدة» new Function المُهلة setTimeout والفترة setInterval المزخرفات والتمرير: التابعان call وapply ربط الدوال Function binding الحديث عن الدوال السهمية مرة أخرى الباب السابع: ضبط خاصيات الكائنات رايات الخاصيات وواصِفاتها جالبات الخاصيات Getters وضابطاتها Setters الباب الثامن: الوراثة النموذجية الوراثة النموذجية Prototypal inheritance الوراثة النموذجية بتعمق F.prototype النماذج الأولية الأصيلة Native prototypes توابِع النماذج الأولية والكائنات بلا proto الباب التاسع: الأصناف Classes صياغة الأصناف الأساسية وراثة الأصناف Class inheritance الخاصيات والتوابع الثابتة الخاصيات والتوابع الخاصة والمحمية توسعة الأصناف المضمنة في اللغة فحص الأصناف عبر instanceof المخاليط Mixins الباب العاشر: التعامل مع الأخطاء التعامل مع الأخطاء: جرب... التقط try..catch الأخطاء المخصصة وتوسعة صنف Error الباب الحادي عشر: الوعود واللاتزامن والانتظار مقدمة إلى ردود النداء callbacks الوعود Promise سَلسلة الوعود Promises chaining التعامل مع الأخطاء: then وcatch واجهة الوعود البرمجية الدوال الواعدة: تحويل الدوال إلى وعود المهام السريعة مقابل الوعد لتنفيذ المهام لاحقًا اللاتزامن والانتظار async/await الباب الثاني عشر: المولدات والمكررات المتقدمة المولدات Generators المكررات والمولدات غير المتزامنة الباب الثالث عشر: الوحدات Modules مقدمة إلى الوحدات Modules تصدير الوحدات واستيرادها استيراد الوحدات ديناميكيًا الباب الرابع عشر: مواضيع متفرقة الوسيط Proxy والمنعكس Reflect الدالة "Eval" لتنفيذ الشيفرة البرمجية تقنية Currying النوع المرجعي Reference الأعداد الكبيرة BigInt
    5 نقاط
  5. الإصدار 1.0.0

    1956 تنزيل

    تدخل الإدارة مختلف مناحي الحياة، فهي استغلال الموارد والأشخاص لتنفيذ عمليات معينة بغية تحقيق أهداف محددة، ورغم بساطة التعريف إلا أنها في الواقع أكبر وأعمق بكثير، إذ تتطلب الإدارة عمليات التخطيط والتحليل وتوافر مهارات التواصل على الأقل لتحقيق الأهداف. عمل مؤلفو هذا الكتاب على تجهيز جدول المحتويات لمعالجة موضوعين رئيسين وهما: ما هي المتغيرات التي تؤثر على كيف ومتى وأين ولماذا يؤدي المديرون وظائفهم؟ ما هي النظريات والتقنيات التي يستخدمها المديرون الناجحون في مجموعة متنوعة من المستويات التنظيمية لتحقيق الأهداف وتجاوزها بفعالية وكفاءة طوال حياتهم المهنية؟ هذا الكتاب مترجم عن الكتاب Principle of Management لمجموعة من المؤلفين وهو أحد منشورات OpenStax بإشراف جامعة Rice، ويغطي العديد من مجالات الإدارة مثل إدارة الموارد البشرية والإدارة الاستراتيجية، وكذلك المجالات السلوكية مثل التحفيز. ونظرًا لأن الإدارة تخصص واسع وكبير ولا يمكن لأي شخص أن يكون خبيرًا في جميع مجالات الإدارة لذلك عمل مجموعة كبيرة ومتنوعة من مختصي الإدارة بمجالاتها المختلفة على تأليف فصول هذا الكتاب، كلٌّ بحسب اختصاصه. بذلنا جهدنا في أكاديمية حسوب في التصرف في الترجمة وتحسينها وإضافة أي إحصائيات أو بيانات أو قوانين مقابلة لبعض الفقرات تخص عالمنا العربي ولكن لم نشمل كل شيء، لذا ضع في بالك أن الكتاب يركز كثيرًا على الولايات المتحدة وقوانينها وشركاتها حيث كُتبت النسخة الأصلية وحيث المؤلفون. يبدأ كل فصل من الكتاب بفقرة استكشاف الوظائف الإدارية التي تتناول مديرًا أو شركة ما من ناحية إجراءاتها المتخذة لشرح موضوع الفصل العام. كما يمكن للقراء أو الطلاب اختبار أنفسهم أو مدى فهمهم عن طريق الإجابة على الأسئلة المتوزعة بعد كل فقرة وفي نهاية الفصل. يتضمن الكتاب المئات من الأمثلة الواقعية حتى لا تكون مواد الكتاب جافة وصعبة الفهم ولإضافة المزيد من الديناميكية والشمولية في فهم المواضيع المطرحة في فقرات مسائل التفكير النقدي والأسئلة المتعلقة بها. كما نشرح أسس الممارسات الأخلاقية التي يجب أن تتسم بها مسيرة عمل الشركات والمؤسسات أثناء سعيها لتحقيق النجاح. وتتناول فقرات إدارة التغيير الاستراتيجية التي اتبعتها الشركات لتجاوز المحن والاضطرابات التي عصفت بها، والتي سببتها مجموعة من الظروف والقوى الاقتصادية والاجتماعية والنفسية والتكنولوجية. الكتاب مهم للمهتمين بدراسة علوم الإدارة ومبادئها ويقدم فكرة شاملة حول الإدارة، إذ يشرح طبيعة مهنة الإدارة ووظيفتها، كما يبحر في الأحداث التاريخية المتعلقة بها، ويتطرق بالتفصيل لهيكلية وعمل المنظمات والشركات والمؤسسات، وكل ما يتعلق بالتخطيط الاستراتيجي والمفاهيم التنظيمية والأخلاقية والثقافية. عمومًا الفئة المستهدفة من هذا الكتاب هي: المديرون الحاليون بمخلف مستويات مناصبهم ومواقعهم ومجالات عمل الشركات أو المؤسسات التي يعملون فيها. الطلاب الجامعيين وطلاب المعاهد الرسمية والخاصة الذين يدرسون مجال الإدارة وإدارة الأعمال. الموظفون الطموحون الذين يتطلعون إلى الترقي لمنصب إداري في المؤسسات أو الشركات التي يعملون فيها. رواد الأعمال الذين هم بصدد بدء مشاريهم وفي مرحلة التكوين والإنشاء والتوظيف. يمكنك قراءة الكتاب على شكل فصول منشورة على موقع أكاديمية حسوب مباشرةً إن كنت تحب القراءة على المتصفح مباشرة، وتجد روابط الفصول تاليًا: الفصل 1: طبيعة عمل المديرين والأدوار التي يؤدونها طبيعة عمل المديرين والأدوار التي يؤدونها الخصائص الرئيسية لوظيفة المدير الفصل 2: اتخاذ القرارات الإدارية اتخاذ القرارات الإدارية طرق معالجة الدماغ للمعلومات لاتخاذ القرارات: النظام التأملي والنظام الانفعالي معيقات عملية اتخاذ القرارات الفعَّالة تحسين جودة عملية اتخاذ القرارات عملية اتخاذ القرارات الجماعية الفصل 3: تاريخ الإدارة تاريخ الإدارة الثورة الصناعية في عالم الإدارة الإدارة البيروقراطية والتنظيمية حركة العلاقات الإنسانية الفصل 4: بيئات العمل الخارجية والداخلية وثقافة المؤسسة بيئات العمل الخارجية والداخلية وثقافة المؤسسة أنواع الهياكل التنظيمية التنظيم الداخلي للمؤسسة وبيئات العمل الخارجية ثقافة المؤسسة الفصل 5: الأخلاق والمسؤولية الاجتماعية للمؤسسات والاستدامة الأخلاق والمسؤولية الاجتماعية للمؤسسات والاستدامة المبادئ الأخلاقية واتخاذ القرارات المسؤولة القيادة والأخلاق على مستوى المؤسسات الأخلاق وثقافة المؤسسة والامتثال الأخلاق حول العالم الفصل 6: الإدارة العالمية مفهوم الإدارة الدولية وأهميتها الثقافة ونظرية هوفستد للأبعاد الثقافية نظرية GLOBE وتأثيرها في فهم القيادة الصور النمطية الثقافية والمجموعات الإجتماعية إنجاز مهام الشركة في بيئة متعددة الثقافات أهمية الأسواق العالمية للشركة الفصل 7: ريادة الأعمال مفهوم ريادة الأعمال: كيف تصبح رائد أعمال ناجح خصائص رواد الأعمال الناجحين كيف تبدأ مشروعك الخاص وتدخل عالم ريادة الأعمال المشاريع الصغيرة وأثرها وإدارتها دعم المشاريع الصغيرة وريادة الأعمال الاجتماعية الفصل 8: التحليل الاستراتيجي: فهم البيئة التنافسية للشركات التحليل الاستراتيجي: فهم البيئة التنافسية للشركات البيئة الخارجية العامة للشركة: تحليل PESTEL البيئة الخارجية المباشرة للشركة: القوى التنافسية الخمسة لبورتر البيئة الداخلية للشركة المنافسة والاستراتيجية والميزة التنافسية بين الشركات الفصل 9: الإدارة الاستراتيجية وتحقيق الميزة التنافسية والحفاظ عليها الإدارة الاستراتيجية وتحقيق الميزة التنافسية والحفاظ عليها دور التحليل الاستراتيجي في صياغة الاستراتيجية عملية التخطيط لتنفيذ الاستراتيجيات قياس أداء الخطط الاستراتيجية وتقييمها الفصل 10: الهياكل التنظيمية والتغيير التنظيمي الهياكل التنظيمية والتغيير التنظيمي التغيير التنظيمي في المؤسسات إدارة التغيير في المؤسسات نماذج التغيير الشائعة في المؤسسات الفصل 11: إدارة الموارد البشرية مدخل إلى إدارة الموارد البشرية مفهوم امتثال الموارد البشرية إدارة الأداء في عملية إدارة الموارد البشرية العوامل المؤثرة على أداء الموظفين ودافعيتهم سياسة التوظيف: إعداد المؤسسة للمستقبل تنمية المواهب وتخطيط التعاقب الوظيفي الفصل 12: التنوع في المنظمات التنوع في المنظمات التعامل مع الاختلاف: التنوع وأثره على الشركات تحديات التنوع والاختلاف في المنظمات فوائد التنوع في العمل وكيفية إدارته الفصل 13: القيادة مفهوم القيادة: الفرق بين القائد والمدير شرح عملية القيادة أنواع القادة وأساليب القيادة نظرية السمات في القيادة النظريات الموقفية في القيادة بدائل القيادة ومثبطاتها القيادة التبادلية والتحويلية والكاريزمية الفصل 14: دفع العمل ورفع الأداء دفع العمل ورفع الأداء هرمية ماسلو للاحتياجات النظريات المنهجية للدافعية نظرية التوقع وتأثيرها على الدافعية في العمل الفصل 15: فهم فرق العمل وإدارتها فهم فرق العمل وإدارتها ما يجب أخذه في الحسبان عند إدارة الفرق تنوع فريق العمل وتحدياته الفصل 16: التواصل التواصل الإداري في البيئة المؤسساتية أشكال التواصل في المؤسسات العوامل المؤثرة على التواصل في المؤسسات ودور المديرين فيها قنوات التواصل الإداري الأساسية: التحدث والاستماع والقراءة والكتابة الفصل 17: التخطيط والرقابة في المؤسسات التخطيط والرقابة في المؤسسات كيف تجري عملية التخطيط في المؤسسات أنواع الخطط المستخدمة في المؤسسات التخطيط وصياغة الأهداف في المؤسسات تأثير التخطيط والرقابة على الموظفين الإدارة بالأهداف: أسلوب للتخطيط والرقابة الفصل 18: إدارة التكنولوجيا والابتكار إدارة التكنولوجيا والابتكار في المؤسسات تطوير التكنولوجيا والابتكار في المؤسسات المهارات اللازمة لإدارة التكنولوجيا والابتكار في المؤسسات
    5 نقاط
  6. هياكل البيانات data structures -أو تدعى بنى المعطيات أحيانًا- مصطلح يتكرر كثيرًا في علوم الحاسوب خصوصًا والبرمجة عمومًا ويعد من المصطلحات المعقدة البسيطة أو السهلة الممتنعة كما أن الكثير يخلط بينه وبين أنواع البيانات أو لا يكاد يميز بينهما، ولابد على أي داخل لمجال علوم الحاسوب ومن يريد تعلم البرمجة أن يفهم هذا المصطلح جيدًا لأنه الأساس الذي سيستند عليه في بناء بقية المفاهيم الأخرى اللاحقة. بناء على ذلك، جاء هذا المقال ليكون تعريفًا بهياكل البيانات وأنواعها بأسلوب بسيط سهل مدعوم بالصور التوضيحية كل هيكل بيانات بالإضافة إلى ذكر ميزات وعيوب بعض الأنواع، كما يتناول هذا المقال التعريف بأهمية هياكل البيانات وأهم تطبيقاتها والفرق بينها وبين أنواع البيانات، لذا لنبدأ! ما هي هياكل البيانات؟ تُعَدّ هياكل البيانات data structures من أهم المفاهيم التأسيسية في مجال علوم الحاسوب، فهي ببساطة مجموعة من الوسائل والطرق المستعملة في ترتيب البيانات في ذاكرة الحاسوب بهدف التعامل معها بكفاءة وفعالية وتسهيل إجراء العمليات عليها، وتوجد هناك أنواع أساسية ومتطورة من هياكل البيانات وجميعها مصمَّمة لتنظيم البيانات لاستخدامها في هدف محدَّد. أهمية هياكل البيانات data structures أحب بداية ضرب مثال يوضح هياكل البيانات وأهميتها وهو أننا نستعمل هذا المفهوم في حياتنا اليومية بصورة أو بأخرى، لنفترض أن البيانات تمثل ملابسنا، فهل نرمي الملابس في خزانة واحدة كلها؟ لا بالطبع لأن إخراج بنطال معين آنذاك سيستغرق وقتًا من البحث للعثور عليه وإخراج بل نضع الألبسة بطريقة معينة في عدة خزانات وسحابات وبطرق مختلفة بحيث نصل إلى بنطال أو قميص محدد بمجرد طلبه فورًا آنيًا دون تأخير. الأمر نفسه مع ترتيب البهارات وأوعية المطبخ والكتب وكل شيء حولنا تقريبًا. هذا بالضبط ما يحصل عند كتابة كلمة في محرك البحث لتظهر لك اقتراحات عد قد تطابق تمامًا ما تنوي كتابته في غضون أجزاء من الثانية، فهل تساءلت كيف تمكن محرك البحث من البحث في كم البيانات الضخم الموجودة في الإنترنت ووصل إلى النتيجة؟ لا يمكن ذلك بآلية الرمي العشوائي في مكان واحد التي ذكرناها في ترتيب الملابس تلك بل بتنظيم البيانات ضمن هياكل بيانات تشبه الأوعية والخزانات تسهل الوصول إليها بأسرع ما يمكن. نظرًا لتطور التطبيقات وازدياد تعقيدها وازدياد كمية البيانات الضخم يومًا بعد يوم والذي تتطلب عملية معالجتها معالجات هائلة السرعة، فكان لا بد من تنظيم البيانات وإدارتها بكفاءة في هياكل البيانات تمثل أوعية تخزين وتنظيم لها، إذ يمكن أن يساعد استخدام هياكل البيانات المناسبة في توفير قدر كبير من الوقت أثناء إجراء عمليات عليها مثل تخزين البيانات أو استرجاعها أو معالجتها، وبالتالي وصول أسرع إلى الذاكرة وتوفير في استهلاك العتاد من عمليات معالجة وطاقة للحاسوب. من الجدير بالذكر أيضًا أنّ هياكل البيانات ضرورية لتصميم خوارزميات فعالة والتي سنراها في تطبيقات هياكل البيانات ضمن هذا المقال. الفرق بين أنواع البيانات وهياكل البيانات يبدو لك أنّ أنواع البيانات Data Types وهياكل البيانات Data Structures وجهان لعملة واحدة لأنّ كلاهما يتعامل مع طبيعة البيانات وتنظيمها، ولكن في الحقيقة الأول يشرح نوع وطبيعة البيانات في حين يمثِّل الآخر التجميعات التي تُخزَّن تلك البيانات فيها، وفيما يلي الفروق الأساسية بين نوع البيانات وهيكل البيانات. يمثِّل نوع البيانات ماهية البيانات التي سيجري التعامل معها مثل أن تكون البيانات أعداد أو سلاسل نصية أو رموز …إلخ. في حين يُعَدّ هيكل البيانات تجميعةً collection تحوي تلك البيانات وهناك عدة أنواع من الهياكل تناسب مختلف أنواع البيانات. يحدد نوع البيانات ما يترتب عليه من عمليات تطبق على تلك البيانات مثل العمليات الرياضية على الأعداد وعمليات المعالجة على النصوص وهكذا أما هياكل البيانات فتحدد كيفية تخزين البيانات والوصول إليها والبحث فيها وغيرها من العمليات كما تدرس كيفية تحسين الأداء في تلك العمليات. يأخذ نوع البيانات شكل التنفيذ المجرد abstract implementation الذي يُعرَّف من خلال لغات البرمجة نفسها، في حين يُنفَّذ هيكل البيانات تنفيذًا حقيقيًا concrete implementation بحيث يُنشأ ليكون متوافقًا مع التصميم الذي يحتاجه المبرمج بالحجم الذي يريده وبنوع البيانات التي سيحتويها ضمن تطبيقه. يسمى نوع البيانات بأنه عديم القيمة dataless لأنه لا يخزِّن قيمة البيانات وإنما يمثِّل فقط نوع البيانات التي يمكن تخزينها، في حين يستطيع هيكل البيانات الاحتفاظ بأنواع مختلفة من البيانات مع قيمتها في كائن واحد. تحدد أنواع البيانات مع المتغيرات مثلًا في لغات البرمجة عند تعريفها، في حين تحتاج إلى كتابة بعض الخوارزميات لإسناد قيم البيانات إلى المتغيرات عند استخدام هيكل بيانات مثل عمليتَي الإضافة Push والجلب Pop للبيانات. لا يُكترث للزمن عند استخدام نوع البيانات، في حين يؤخذ بالحسبان عند استخدام هيكل البيانات (يطلق عليه تعقيد زمني BigO). تطبيقات هياكل البيانات يكاد لا يخلو أي تطبيق أو برنامج أو خوارزمية برمجية من وجود هيكل بيانات أو بنية معطيات تساعده في تحقيق الهدف المرجو منه، ومن هذه التطبيقات ما يلي: تنظيم البيانات في ذاكرة الحاسوب. تمثيل المعلومات في قواعد البيانات. خوارزميات معالجة البيانات مثل معالجة النصوص. خوارزميات تحليل البيانات مثل data minar. خوارزميات البحث في البيانات مثل محرك البحث. خورزميات توليد البيانات مثل مولِّد الأعداد العشوائية. خوارزميات ضغط البيانات وتفك ضغطها مثل المعتمدَة في برنامج zip. خوارزميات تشفير البيانات وتفك تشفيرها مثل المعتمدَة في نظام الأمان. البرامج التي تدير الملفات والمجلدات مثل مدير الملفات. دورة تطوير التطبيقات باستخدام لغة Python احترف تطوير التطبيقات مع أكاديمية حسوب والتحق بسوق العمل فور انتهائك من الدورة اشترك الآن أنواع هياكل البيانات في لغات البرمجة تنقسم هياكل البيانات إلى هياكل بيانات أولية Primitive وهياكل بيانات غير أولية Non Primitive أو هياكل بيانات معقدة وكل منها يضم عدة أقسام سنشرحها تباعًا. هياكل البيانات الأولية Primitive هي هياكل البيانات الأساسية والبسيطة والتي تُستخدَم لتخزين قيمة من جزء واحد فقط ذات نوع محدَّد، ويندرج تحت هذا النوع ما يلي: integer: من أجل الأعداد الصحيحة مثل العدد 15. character: من أجل محرف واحد فقط. float: من أجل الأعداد العشرية. real: من أجل الأعداد الحقيقية. boolean: من أجل القيم البوليانية والذي يأخذ إحدى القيمتين؛ إما محققة true أو غير محققة false. ملاحظة: قد تتساءل عن هياكل تخزين النصوص، وهي في الحقيقة تدخل ضمن الهياكل الغير أولية أن النصوص مجموعة من الحروف والرموز التي تدعى محارف characters لذا تخزن عادة ضمن مصفوفة وأحيانًا تضيف لغات البرمجة نوعًا خاصًا لها يدعى string سلسلة نصية أو لا يضيف وتكون بالشكل char[]‎ وما تراه [] يدل على هيكل مصفوفة. يوجد شيء خاص يدعى مؤشر pointer والمشهور في بعض اللغات البرمجية مثل سي C وسي بلس بلس ++C، إذ يُعَدّ مكانًا في الذاكرة ويخزِّن عنوان المتغير الذي يشير إليه والشي الخاص فيه أنه يملك نوع بيانات والذي يجب أن يطابق نوع البيانات الذي يشير إليها. ملاحظة: ممكن تسمية هياكل البيانات التي تخزن الأعداد العشرية باسم double (عدد عشري مضاعف الدقة) أو float (عدد عشري) عوضًا عن real بصورة عامة ويكمن الاختلاف حسب اللغة البرمجية في عدد الخانات العشرية الممكن تخزينها، أي عدد الخانات بعد الفاصلة العشرية، بالإضافة إلى الحجم في الذاكرة وأخيرًا طريقة التعريف declaration، ففي لغة سي شارب #C يكون تعريف المتغير من نمط float كما يلي: float x = 1.5f; أما تعريفه عندما يكون من نمط double، فيكون كما يلي: double x = 1.5; ملاحظة: يطلق أحيانًا على هياكل البيانات الأولية أنواع البيانات Data Type. هياكل البيانات غير الأولية هي هياكل البيانات التي تُستخدَم من أجل التخزين المعقّد والتي يمكنها أن تحمل أكثر من قيمة في بنيتها، وتنقسم إلى هياكل بيانات خطية Linear وهياكل بيانات غير خطية Non Linear. هياكل البيانات الخطية تكون هياكل البيانات خطيّةً إذا كانت عناصرها تشكل تسلسلًا فيما بينها بحيث يرتبط كل عنصر فيها بعنصر سابق وعنصر لاحق ضمن مستوى واحد وفي مسار واحد، ومن هذه الهياكل ما يلي: المصفوفة Array القائمة المترابطة Linked List المكدس Stack الرتل Queue المصفوفة تُعَدّ المصفوفة الخطية array أو المصفوفة ذات البعد الواحد أبسط أنواع الهياكل الخطية، ويمكن تشبيهها بقائمة من عدد محدود من العناصر التي تمتلك النوع ذاته، ويكون بعدها -أو طولها- هو عدد العناصر التي تملكها، كما تُخزّن في الذاكرة بحجم ثابت وبمواقع متجاورة. كل عنصر من عناصر هذه المصفوفة الخطية يملك فهرسًا للوصول إليه، وعادةً ما يبدأ الفهرس بالعدد 0 أي يكون فهرس العنصر الأخير هو n-1 في مصفوفة بعدها n، وفي بعض لغات البرمجة يكون فهرس البداية هو العدد 1 مثل لغة باسكال، وفيما يلي صورة توضِّح هذه البنية: ملاحظات: يُنظَر إلى السلسلة النصية string على أنها مصفوفة أحادية من المحارف، أي كلمة Hello هي سلسلة نصية وهي مصفوفة طولها 5 مكوّنة من خمسة عناصر بحيث يمثِّل كل عنصر محرفًا من المحارف كما أشرنا سابقًا. المصفوفة ثنائية البعد هي أيضًا مجموعة من المتغيرات المفهرسة التي تحتوي على النوع نفسه من البيانات ولكن تخزين البيانات فيها يكون على صورة جدول له أعمدة وأسطر، بحيث يمكن الوصول إلى العنصر في هذه المصفوفة من خلال فهرسين أحدهما يحدِّد السطر والآخر يحدِّد العمود. من الجدير بالذكر أنّ بُعد المصفوفة ثابت في بعض لغات البرمجة وبالتالي يجب معرفة عدد العناصر قبل تعريفها فإذا أردت تغيير البُعد وإضافة عناصر جديدة، فستحتاج إلى مصفوفة جديدة ببُعد جديد لتنقل إليها العناصر السابقة وبعدها تضيف العناصر الجديدة إليها، كما أنّ إضافة عنصر ما في مكان ما مملوء مسبقًا أي في وسط المصفوفة مثلًا سيستهلك الكثير من العمليات، إذ ستحتاج إلى إزاحة العناصر اللاحقة ليصبح له مكانًا فارغًا، ويُعَدّ ذلك من عيوب استخدام المصفوفات. هنالك لغات أخرى لا تشترط تحديد عدد عناصر المصفوفة ولكنها تستهلك آنذاك عمليات كثيرة وتكون مكلفة لعمليات المعالجة أما تلك التي تحدد عدد العناصر مسبقًا فذلك عائد إلى توفير عمليات المعالجة. ملاحظة: قد تجد كلمة static ساكن وكلمة dynamic متحرك لتصنيف الأنواع الغير خطية ولكن شرحهما متقدم جدًا يحتاج إلى مقال بأكمله وستحتاج إليه عند التعمق كثيرًا وليس في البداية. القائمة المترابطة تُعَدّ القائمة المترابطة linked list مجموعةً من العقد التي تخزَّن في الذاكرة بمواقع غير متجاورة، وكل عقدة من عقد القائمة مرتبطة بالعقدة المجاورة لها بمؤشر عدا العقدة الأخيرة التي يكون المؤشر فيها عبارة عن Null. تسمح هذه البنية بإدراج عناصر جديدة أو حذف عناصر موجودة سابقًا بسهولة وهذا ما يميزها عن المصفوفات؛ أما سرعة الوصول، فتُعَدّ المصفوفات أسرع لأنه يكفي ذكر الفهرس الرابع على عكس القائمة المترابطة التي يجب البدء فيها من الرأس ثم المرور على العناصر بالتتالي إلى حين الوصول إلى العنصر الرابع. من الجدير بالذكر أنّ القائمة المترابطة تحتاج إلى مساحة إضافية في الذاكرة من أجل المؤشر الذي يرتبط بالعنصر، وهذا عيب آخر من عيوب القوائم المترابطة. يوجد نوع متطور من القوائم المترابطة وهو القوائم المترابطة المزدوجة Doubly Linked List، إذ ترتبط كل عقدة بمؤشرَين أحدهما يربطها بالعقدة السابقة ويسمى عادةً prev والآخر يربطها بالعقدة التالية ويسمى عادةً next، وبالتالي تحتاج هذه القائمة إلى مساحة إضافية في الذاكرة لامتلاكها على مؤشر إضافي، وبالمثل يكون المؤشر prev في عقدة الرأس Null ومؤشر next في العقدة الأخيرة هو Null. يوجد نوع أخير من القوائم المترابطة وهو القوائم المترابطة الدائرية Circular Linked Lists والتي تُعَدّ تطويرًا عن المفردة بحيث يشير مؤشر next الخاص بعقدة النهاية إلى عقدة الرأس. كما توجد القوائم الدائرية المزدوجة بحيث يشير مؤشر prev الخاص بعقدة الرأس إلى عقدة النهاية ويشير مؤشر next الخاص بعقدة النهاية إلى عقدة الرأس، وبالتالي لا تحتوي القوائم المترابطة الدائرية على مؤشرات Null. المكدس يُعَدّ المكدِّس stack هيكل بيانات خطية يتبع ترتيبًا محددًا في تنفيذ عمليات الحذف والإضافة، والترتيب يكون LIFO أي الذي يدخل آخرًا يخرج أولًا Last In First Out، والذي يميز المكدس هنا هو دخول العناصر وخروجها من قمة المكدِّس أي من جهة واحدة. تدخل -أو تُضاف- العناصر إلى المكدِّس عن طريق عملية وحيدة وخاصة وهي دفع Push وبالمثل فإنها تخرج منه -أو تُحذَف- عن طريق عملية وحيدة وخاصة أيضًا وتدعى إخراج Pop، وتوجد أيضًا عمليتان خاصتان بالمكدِّس وهما Top -أو Peek- التي تعيد القيمة الموجودة في قمة المكدِّس دون حذفها، والعملية الأخرى هي عملية IsEmpty التي تُعيد القيمة true إذا كان المكدِّس فارغًا. عند إضافة عنصر إلى مكدِّس ممتلئ لا يستوعب المزيد من العناصر فستحصل حالة طفحان المكدِّس overflow؛ أما عند إجراء عملية الحذف من مكدِّس فارغ، فسنواجه حالة طفحان أو تجاوز الحد الأدنى underflow (قعر المكدس). الرتل يُعَدّ الرتل queue أحد هياكل البيانات الخطية شبيه بالمكدس لامتلاكه عمليات خاصة للحذف والإضافة ولكنه يختلف عنه في مكان الحذف والإضافة كما سنرى. يدعى الرتل أو الطابور بـ FIFO أي الذي يدخل أولًا يخرج أولًا First In First Out بحيث يكون الدخول -أو الإضافة- من الجهة الخلفية rear والخروج -أو الحذف- من الجهة الأخرى أي الأمامية front (كما يحصل عند الوقوف ضمن الطوابير تمامًا لشراء شيء ما)، وتحدث الإضافة عن طريق عملية ENQUEUE أما عملية الحذف فتكون عن طريق عملية DEQUEUE. يتميز الرتل أيضًا بامتلاكه عمليات خاصة وهي العملية IsFull التي تُعيد true إذا كان الرتل ممتلئًا، والعملية IsEmpty التي تُعيد true إذا كان الرتل فارغًا، والعملية Front التي تُعيد العنصر الأمامي من الرتل، بالإضافة إلى العملية Rear التي تُعيد العنصر الخلفي من الرتل. هياكل البيانات غير الخطية لا تحتوي هياكل البيانات غير الخطية -أو المتشعبة- على أيّ تسلسل محدد يربط جميع عناصرها، إذ يمكن أن يكون لكل عنصر أكثر من مسار ليرتبط بالعناصر الأخرى، كما أنّ العناصر الموجودة ضمن هذه الهياكل لا يمكن اجتيازها أو المرور عليها في جولة واحدة أو باستخدام حلقة برمجية واحدة. وأهم ما يميّز هذا النوع على الرغم من صعوبة التنفيذ موازنةً بالهياكل الخطية التي يزداد فيها تعقيد الوقت مع ازدياد حجم البيانات أنه يُعد أكثر كفاءة في استخدام الذاكرة وأكثر سرعة في تطبيق العمليات مثل عمليات البحث، ومن هذه الهياكل: الشجرة الرسم البياني الشجرة تُعَدّ الشجرة tree هيكل بيانات متعدد المستويات وتُعرَّف على أنها مجموعة من العقد التي تحتوي فيما بينها على علاقة هرمية بحيث تسمى العقدة العليا بالعقدة الجذر، كما تحتوي كل عقدة على أب وحيد، في حين يمكن أن يكون لها أكثر من ابن أو تابع. تسمى العقد التي تتفرع من عقدة معينة بأبناء children تلك العقدة والتي بدورها تدعى بالعقدة الأب parent، في حين تسمى العقد التي لا تمتلك أبناء بالأوراق leaves. تمتلك الشجرة عدة أنواع وهي: الشجرة الثنائية binary tree شجرة البحث الثنائية binary search tree شجرة AVL شجرة R-B شجرة البادئات الشجرة الثنائية الشجرة الثنائية binary tree هي شجرة بيانات تمتلك كل عقدة فيها -ما عدا الأوراق- على عقدَتي ابن فقط وهما الابن الأيمن والابن الأيسر. شجرة البحث الثنائية شجرة البحث الثنائية binary search tree أو BST اختصارًا هي شجرة ثنائية تحقق خاصيتان أساسيتان وهما أنّ العقد الواقعة في الفرع اليميني تكون أكبر من العقدة الأب والعقد الواقعة في الفرع اليساري تكون أصغر من العقدة الأب، مع ضمان وجود ابنَين لكل عقدة وعدم تكرار العقد. شجرة AVL تُعَدّ اختصارًا لـ Adelson-Velskii Tree إذ يُعَدّ أديسون Adelson وفيلسكي Velskii مخترعَيها للحفاظ على توازن شجرة البحث الثنائي وذلك لمنع تدهورها إلى قائمة مرتبطة عندما تحتوي الشجرة بأكملها على الشجرة الفرعية اليسرى فقط أو على الشجرة اليمنى فقط مما سينعكس سلبًا على أداء الشجرة، إذ يمكن استخدام سلسلة من عمليات التدوير بحيث تُحدَّد في كل عملية عقدة جذر إلى حين الوصول إلى شجرة بعقدة جذر معينة بحيث تكون متوازنة أي ارتفاع الشجرة اليسرى مساويًا لارتفاع الشجرة اليمنى، ويمكن القول هنا أنّ شجرة AVL هي شجرة BST تحقق شرط التوازن، علمًا أنّ ارتفاع الشجرة هو أكبر عمق موجود لها. شجرة R-B تعني الشجرة الحمراء والسوداء Red-Black tree وهي شجرة بحث ثنائية لها خصائص تميزها بحيث تحتوي كل عقدة فيها على بت تخزين يشير إلى لون العقدة والتي يمكن أن تكون حمراء أو سوداء فقط، كما أنّ عقدة الجذر والعقد الأوراق سوداء دائمًا، وإذا كانت العقدة حمراء فيجب أن يكون أبناءها سود، وأخيرًا يجب أن تحتوي جميع المسارات من عقدة إلى أحفادها العدد نفسه من العقد السوداء، فإذا تحقق ما سبق، فستكون الشجرة شجرة بحث ثنائية متوازنة. شجرة البادئات تُعَدّ شجرة البادئات Prefix tree نوعًا من أشجار البحث وتعرف أيضًا بالشجرة الرقمية أو tri كما تُعرَف بشجرة القاموس وتُستخدَم في البحث عن الكلمات بصورة عامة بما أنها مكوَّنة من أحرف الهجاء، وأهم ما يميزها أنّ جذرها لا يحتوي على أيّ محرف. الكومة تُعَدّ الكومة Heap بنية معطيات شجرية تمتلك خاصة الكومة وهي وجود أسلوب ترتيب متَّبع بين العقد الآباء والعقد الأبناء مثل أن يكون كل أب أكبر من جميع أبنائه وتسمى حينها بالكومة العظمى Max-Heap أو أن يكون كل أب أصغر من جميع أبنائه وتسمى حينها بالكومة الصغرى Min-Heap، وتُستخدَم الكومة بكثرة في خوارزميات الترتيب، كما تتميز الكومة بأنّ جميع مستوياتها ممتلئة بالكامل عدا المستوى الأخير، وفيما يلي صورة توضِّح كومة صغرى. الرسم البياني يختلف الرسم البياني graph أو المبيان عن الشجرة في عدم احتوائه على جذر ومن الممكن أن تتصل العقد مع بعضها باتجاه واحد directed graph أو بالاتجاهين معًا Bi-directional أو بدون اتجاه undirected، كما أنّ طبيعة العلاقات بين العقد في هذا النوع ليست ذات طبيعة هرمية، كما تسمى العقد بالرؤوس vertices والروابط التي بينها تسمى بالحواف أو الأضلاع edges ويكون عدد كل من الرؤوس والأضلاع محدودًا. يكون الزوج (1,2) في الرسم البياني الموجَّه والذي يدل على وجود اتجاه من الرأس 1 إلى الرأس 2 مختلفًا عن الزوج (2,1)، كما تُرمَز مجموعة الرؤوس في هذا النوع بالرمز V ومجموعة الأضلاع بالرمز E ويُستخدَم هذا النوع من البنى في تمثيل الشبكات الواقعية مثل شبكة الهاتف المحمول أو شبكات التواصل الاجتماعي مثل الفيسبوك على سبيل المثال. التقطيع Hashing يُعَدّ التقطيع Hashing أو التجزئة تحسينًا لهياكل البيانات السابقة في بعض التطبيقات التي تحتاج إلى ترتيب بياناتها بواسطة أعداد كبيرة وفريدة موجودة ضمن هذه البيانات مثل ترتيب سجلات المرضى ضمن المستشفيات بناءً على أرقام هواتفهم والتي تُعَدّ مفاتيحًا فريدةً unique لهذه السجلات، ويكون ذلك من خلال الاستعانة بدالة تدعى دالة التقطيع hashing function والتي تحوِّل هذا المفتاح الفريد إلى عدد صغير وصحيح بحيث يكون فهرسًا لجدول جديد يدعى جدول التقطيع hashing table. من الممكن أن يكون فهرس جدول التقطيع هو ذاته رقم هاتف المريض بحيث يكون طوله هو أكبر رقم هاتف موجود ضمن السجلات زائد واحد بما أنّ الفهرسة تبدأ من الصفر، وبالتالي نحصل على سرعة وصول عالية لأيّ سجل من خلال رقم الهاتف الخاص به، ولكن سيتسبب ذلك بتواجد فجوات gaps بين العناصر لعدم الحاجة لوجود جميع أرقام الهواتف المحتملة وبالتالي زيادة حجم التخزين في الذاكرة، لذا تُستخدَم دالة التقطيع لحل هذه المشكلة، وعندها يكون جدول التقطيع مصفوفةً يمثِّل كل عنصر فيها مؤشرًا على السجل الذي يحتوي على رقم الهاتف -في مثالنا- والذي تكون نتيجة تطبيق دالة التقطيع عليه هي فهرس هذا العنصر. من الضروري التأكد من أنّ دالة التقطيع لا تعطي النتيجة ذاتها لأكثر من مفتاح، فإذا كانت دالة التقطيع مثلًا هي تأخذ فقط الرقم الأخير من رقم الهاتف، فسيكون لرقمَي الهاتف 45451 و 56561 على سبيل المثال النتيجة نفسها أي العدد 1 وبالتالي سيحدث تصادم في جدول التقطيع الذي فهرسه العدد 1، وأحد حلول هذه المشكلة أن يكون كل عنصر من جدول التقطيع مؤشرًا على قائمة مترابطة تحتوي على السجلات التي نتيجة تطبيق دالة التقطيع على أرقام هواتفها هي ذاتها. ليكن لدينا الأعداد التالية 12 – 17 – 29 – 6 – 30 – 31 – 4 – 8، فإذا كان فهرس جدول التقطيع هو ذاته العدد المعطى، فسنحتاج إلى جدول بحجم 32، ولكن فعليًا نحتاج إلى 8 أماكن للتخزين وبالتالي سنحصل على فجوات وهدر في الذاكرة، لذا سنلجأ إلى دالة التقطيع والتي ستعطي آحاد العدد المُعطى، وبالتالي ستكون نتيجتها 2 – 7 – 9 – 6 – 0 – 1 – 4 – 8 عند تطبيقها على الأعداد السابقة على الترتيب، بحيث يُخزَّن العدد 12 في العنصر الذي فهرسه هو العدد 2 وهكذا، وبالتالي سنحتاج إلى جدول تقطيع بحجم 8 بدلًا من 32 كما يلي: 12 17 29 6 30 31 4 8 2 7 9 6 0 1 4 8 يمكن تقليص حجم هذا الجدول ليصبح 4 بتحسين دالة التقطيع، بحيث يكون الفهرس هو باقي قسمة كل عدد من الأعداد المعطاة على العدد 4، ولكن ستكون نتيجة الأعداد 17 و 19 هي الفهرس 1، أي سيحدث تصادم، ويمكن حل هذه المشكلة بجعل كل عنصر من عناصر جدول التقطيع مؤشرًا على قائمة مترابطة من الأعداد التي باقي قسمتها على العدد 4 هو فهرس هذا العنصر، أي كما في الشكل التالي: يمكن زيادة حجم جدول التقطيع في المستقبل، كما أنّ هذه التقنية هي الأكثر استخدامًا في جوجل google. الخاتمة تعرَّفنا في هذا المقال على هياكل البيانات بكافة أنواعها مع إعطاء أمثلة توضيحية تساعدك على تخيل هذه البنى، بالإضافة إلى التطرق إلى ذكر أهميتها والفرق بينها وبين أنواع البيانات مع ذكر أهم تطبيقاتها. اقرأ أيضًا مقدمة إلى مفهوم البيانات الضخمة Big Data هياكل البيانات: القوائم المترابطة Linked lists والأشجار Trees في لغة سي C هياكل البيانات: الكائنات والمصفوفات في جافاسكريبت تصميم قواعد البيانات 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; }
    5 نقاط
  7. الإصدار 1.0.0

    3672 تنزيل

    تُعَد وظائف تحسين المواقع لمحركات البحث أو متخصص سيو SEO واحدةً من أكثر المهن المطلوبة من قبل أصحاب المواقع والمتاجر الإلكترونية في وقتنا الحالي إذ لا نفع من أي موقع أو محتوى منشور على الإنترنت ما لم يصل إلى الجمهور المخصص له وهو مثل أداة أو مكتبة منشأة في مكان ما لا يعرف أحد كيفية الوصول إليها على عظم النفع فيها، ولمَّا كان الاعتماد على محركات البحث اعتمادًا رئيسيًا بل أحيانًا كليًا للبحث عن محتوى والوصول إليه، فكان لزامًا على كل صاحب محتوى أو موقع أو تطبيق ويب موجود على الإنترنت أن يهتم بهذه النقطة اهتمامًا كبيرًا ليتأكد من ظهور محتواه في نتائج البحث بل وحتى المنافسة على أعلى مرتبة عندما يبحث أحد عن المحتوى ذاك أو ما يتعلق به. تحسين محركات البحث Search Engine Optimization ويختصر إلى سيو SEO هو تعبير مجازي شائع إذ في الحقيقة لا يمكن تحسين محركات البحث أو التعديل عليها، بل يُقصد من ذاك التعبير ممارسات وعمليات تجرى بهدف تحسين ظهور موقعك ضمن نتائج محركات البحث في أعلى النتائج، فهل ترى كم الجملة طويل لذا جاء ذلك الاختصار! ودرج حتى استعمال كلمة سيو -تعريب الاختصار الأجنبي SEO- للإشارة إلى ذلك التعبير المختصر أصلًا وهو ما سنستعمله ضمن الكتاب. يُعد هذا الكتاب مدخلًا شاملًا إلى مجال تحسين محركات البحث أو السيو SEO وممارساتها وأدواتها، بهدف تعلم كيف تُحسِّن من ظهور موقعك عبر محركات البحث، إلى جانب زيادة معدل زياراته الشهرية بنسب جيدة، وسيركز الكتاب بالإضافة إلى ذلك على سرد أفضل الممارسات الشائعة طيلة رحلتك في إضافة المحتوى لموقعك وبناءه حتى يواصل تصدره في نتائج البحث فقد لا يكون هنالك ممارسات ثابتة على فترة طويلة من الزمن نتيجة تغير خوارزميات محركات البحث في عرض النتائج التي تحارب باستمرار الخداع والغش لتجنب تصدر نتائج لا تستحق أن تصل إلى صدارة نتائج البحث. عَمِل على الكتاب متخصص سيو -المؤلف علي القاسم- وقد أفاد وأجاد من خبرته الطويلة في هذا المجال كما اعتمدنا على سلسلة The Beginner's Guide to SEO الشهيرة من موقع MOZ والذي يقدم أشهر الأدوات المستعملة في تخصص السيو، فتلك السلسلة معتمدة أيضًا على خبرة عميقة في المجال، ولم نقتصر على ذلك، بل استشرنا في السلسلة فريق التسويق التابع لشركة حسوب وأخذنا منهم نصائح وملاحظات قيمة وأضفناها في الكتاب، وكل ذلك يضفي قيمةً كبيرةً على الكتاب. أخيرًا وليس آخرًا، حاولنا جعل الكتاب دليلًا شاملًا وفي الوقت نفسه مختصرًا فخير الكلام ما قل ودل ليأخذ بيدك إلى تعلم تخصص السيو وتحسين محركات البحث ويضعك على بداية الطريق لتدخل هذا المجال وتحصل على فرصة عمل أو تُحسن من مهاراتك وترتقي بنفسك إن كنت متخصصًا في السيو. هذا الكتاب مرخص بموجب رخصة المشاع الإبداعي Creative Commons «نسب المُصنَّف - غير تجاري - الترخيص بالمثل 4.0». يمكنك قراءة فصول الكتاب على شكل مقالات مجموعة ضمن وسم «تحسين محركات البحث 101» وتجد روابطها تاليًا: تحسين محركات البحث SEO وأهميتها لموقعك الإلكتروني كيفية عمل محركات البحث وترتيب جوجل لصفحات الموقع الإلكتروني اختيار الكلمات المفتاحية المناسبة لموقعك الإلكتروني تهيئة الموقع داخليا لمحركات البحث On Page SEO ما هو السيو التقني Technical Seo وأهميته للموقع الإلكتروني بناء الروابط الخلفية للموقع وتحسين موثوقيته من ناحية السيو مؤشرات أداء السيو: بارامترات قياس تحسين محركات البحث لموقعك وتتبع أدائه أداة مشرفي المواقع من جوجل Google Search Console
    5 نقاط
  8. هل تعلم لارافيل وحده يكفي للعمل الحر أو إيجاد وظيفة، أم يجب تعلم إطار عمل للواجهة كذلك مثل رياكت أو فيو؟
    4 نقاط
  9. هل سيأخد مكان المبرمجين وهل نكمل التعلم ام نتوقف سمعت الكتير من المبرمجون يقولون بأنه يهدد المبرمجون وسوف يأخد مكانهم؟
    4 نقاط
  10. السلام عليكم ورحمة الله وبركاته لم أفهم ما الفائدة من "type="text/css في <link href="style.css" rel="stylesheet" type="text/css">
    4 نقاط
  11. انا كت عايز اسال بس هو ليه في لغات تستخدم interpreter على الرغم من ان compiler اسرع بي كتير
    4 نقاط
  12. document.links[0].onmouseenter = function (event) { console.log(event); event.preventDefault(); }; document.forms.onsubmitb = function (e){ let userValid = fales; let userAge = false; if (userValid == false || userAge == false ){ e.preventDefault(); } } لما لا تعمل معي preventDefault و .onsubmitb
    4 نقاط
  13. عند العمل على تطبيقات الرياكت والنود جي أس الموجودة في دورات تطوير التطبيقات باستخدام JS لا نقوم بعمل تنسيقات css وننسخها فقط هل تنسيقات css وتنفيذ التصميم اللذي يدرسونه في دورات الفروند أند (الواجهة الامامية) لا تخصني كفولستاك يعني اقوم ببعض العمل الخفيف فقط ب css أم ماذا وهل الفولستاك يعمل بالاشياء اللتي تعلمها في الدورة فقط ارجو توضوح هذه النقطة وشكرا مسبقا.
    4 نقاط
  14. هل من الضروري حفظ كيفية كتابة الكود واستخدام الكلمات المفتاحية او الكلملت المحجوزة ام نكتفي فقط بمعرفة ما هي استخدام هذه الكلمات وعند كتابة الكود يكون نسخ الكود المناسب ولصقه في البرنامج ؟؟؟
    4 نقاط
  15. السلام عليكم هل يمكنني العمل كباكاند ام علي ان اكون fullstack
    4 نقاط
  16. كيف يعمل التابع splice في جافاسكربت؟
    4 نقاط
  17. الإصدار 1.0.0

    7234 تنزيل

    لا يزال تعلم البرمجة نفسه مفيدًا لكثير من مستخدمي الحواسيب حتى لو كانوا لن يكتبوا برامج بأنفسهم، ذلك أن فهم كيفية تفكير الحواسيب معين على جعل التطبيقات أكثر منطقية وصديقة للمستخدم، فكثير من البرامج تسمح بتخصيصها أو تعديلها عن طريق كتابة بعض البريمجات الصغيرة التي تسمى بالشيفرات الجامعة أو الماكرو macro، وتلك يكتبها المستخدم حتى لو لم يكن مبرمجًا. إضافة إلى أن لدينا الويب بما فيه من فرص لنشر موقعك الخاص الشخصي أو التجاري، وإن فعلت ستجد أنك محتاج في مرحلة ما إلى إضافة بعض الخصائص الديناميكية لصفحاتك، وهذا من البرمجة لا شك، ثم إن الإنترنت والويب يحفزان المرء على الاهتمام العام بالحواسيب، وسيقود ذلك الاهتمام لا محالة إلى الرغبة في التحكم والسيطرة على ما يراه المرء فيهما، وما ذلك مرة أخرى إلا برمجة! هذا الكتاب مترجم عن الكتاب Learning to Program لكاتبه Alan Gauld وهو مبرمج شبه متقاعد بخبرة تصل إلى أربعين عامًا في البرمجة، ويُعد الكتاب من أفضل المراجع وأوضحها لتعلم البرمجة وقد اختارته أكاديمية حسوب بعناية لنقله للعربية. سنتحدث في الكتاب عن النظرية الأساسية التي بنيت عليها برمجة الحواسيب، وبعض من تاريخها، والتقنيات الأساسية المطلوبة لحل المشاكل التي تواجهنا كمبرمجين، لكن لن نتعمق بحيث نشرح تقنيات أو تفاصيل خاصة بلغة برمجة بعينها، بل سنستخدم عدة لغات برمجة كي ترى بنفسك أن كل لغة تمتاز عن غيرها في مجال بعينه أو مهام بعينها، لكن مع هذا فأغلب محتوى الكتاب سيكون بلغة اسمها بايثون Python، وكذلك سنذكر في الكتاب لغتي برمجة إضافيتين للغة بايثون منهما لغة اسمها جافاسكربت JavaScript كلغات بديلة، وذلك لبيان أن المفاهيم والتقنيات الأساسية ستعمل بغض النظر عن اللغة التي تستخدمها، وبمجرد أن تتقن الكتابة بلغة ما تستطيع الانتقال إلى غيرها بسهولة في بضعة أيام. وإن سبب اختيارنا للغة بايثون والتركيز عليها في شرح هذا الكتاب أنها سهلة التعلم، فبنيتها اللغوية بسيطة وبها مزايا قوية مدمجة فيها بنفس الوقت، كما تدعم كثيرًا من أنماط البرمجة، بداية من تلك البسيطة إلى المتقدمة، إضافة إلى أنها تعمل على المنصات على اختلافها، من يونكس إلى ويندوز إلى ماك وغيرها، وأخيرًا فإن لها مجتمعًا لطيفًا ومستعد للمساعدة من مستخدميها، وكل ذلك مهم للمبتدئ الراغب في تعلم البرمجة. يستهدف الكتاب القارئ الذي يعلم كيف يستخدم نظام التشغيل الذي لديه سواء كان ويندوز أو ماك أو لينكس أو غيرها رغم أن غير المحترفين لتلك النظم سيتمكنون من التعلم أيضًا وإن كان بوتيرة أبطأ قليلًا، كما نتوقع أن يفهم القارئ بعض المفاهيم الرياضية الأساسية مثل حساب الأشكال البسيطة والإحداثيات الهندسية والمجموعات وبعض الجبر، أي في مستوى طالب الصف الثاني الثانوي مثلًا. يمكنك قراءة الكتاب على شكل فصول منشورة على موقع أكاديمية حسوب مباشرةً إن كنت تحب القراءة على المتصفح مباشرة، وتجد الفصول مجمعة تحت وسم "تعلم البرمجة" وإليك روابطها تاليًا: ما هي البرمجة ومتطلبات تعلمها؟ بداية رحلة تعلم البرمجة التسلسلات البسيطة في البرمجة مدخل إلى البيانات وأنواعها: أنواع البيانات الأساسية مدخل إلى البيانات وأنواعها: التجميعات Collections بعض التسلسلات النصية المهمة لتعلم البرمجة الحلقات التكرارية في البرمجة أسلوب كتابة الشيفرات البرمجية وتحقيق سهولة قراءتها كيفية قراءة البرامج لمدخلات المستخدم مقدمة في البرمجة الشرطية البرمجة باستخدام الوحدات التعامل مع الملفات في البرمجة كيفية التعامل مع النصوص في البرمجة كيفية التعامل مع الأخطاء البرمجية فضاءات الأسماء Namespaces في البرمجة التعابير النمطية RegEx في البرمجة البرمجة كائنية التوجه object oriented programming البرمجة الحدثية Event Driven Programming المساقة بالأحداث برمجة الواجهات الرسومية باستخدام Tkinter مفهوم التعاودية Recursion مقدمة إلى البرمجة الوظيفية Functional Programming دراسة حالة برمجية التعامل مع قواعد البيانات التواصل مع نظام التشغيل عبر بايثون التواصل بين العمليات في البرمجة تواصل البرامج والعمليات البرمجية عبر الشبكة كيفية التعامل مع الويب برمجة عملاء ويب باستخدام بايثون كيفية كتابة تطبيقات الويب استخدام أطر العمل في برمجة تطبيقات الويب: فلاسك نموذجا البرمجة المتزامنة وفائدتها في برمجة التطبيقات
    4 نقاط
  18. يحدثنا وليد عن أن اكتساب مهارة التعلّم الذاتي وجعلها جزءًا من روتينك اليومي أهم ما يمكن لطالب هندسة البرمجيات أن يتقنه، خصوصًا وأن مجالات التكنولوجيا في تطور سريع ومليء بالمنافسة، فكيف أتقن وليد هذه المهارة وكيف ساعدته في الحصول على عمله الحالي، وماذا يمكن أن تتعلم منه؟ في هذه السلسلة وثقنا قصص مجموعة من المطورين من طلاب أكاديمية حسوب كانوا مثلك تمامًا في يوم من الأيام، بعضهم كان مترددًا بشأن قدرته في أن يكون مطورًا من الأساس، وبعضهم كانت لديه مخاوف حول تمكّنه من المنافسة في هذا المجال سريع التطور، ومنهم من كانوا طلابًا في هندسة الحاسوب تنقصهم الخبرة العملية، لكنهم جميعًا في لحظة ما، قرروا بذل جهود حقيقية في التعلّم فحصدوا ثمارها. مرحبًا وليد، حدثنا قليلًا عنك؟ أنا وليد الفيفي مواليد 1996، نشأت في قرية صغيرة اسمها؛ الفيفاء وهي قرية بعيدة كل البعد عن الإنترنت والبرمجة والتكنولوجيا، درست هندسة البرمجيات في جامعة الملك فهد للبترول والمعادن وأعمل حاليًا مهندس برمجيات في مؤسسة حراج. نشأ حبي للبرمجة في السنة التحضيرية للجامعة، كنت وقتها في حيرة بين تخصصي الطيران والحاسب. لكن دعيني أقول إن الظروف هي ما قادتني للحاسب، ربما بحكم اعتيادي الجلوس أمام الحاسوب لفترة طويلة. هذا إضافة إلي تميزي الواضح في مواد الحاسب التي تفوقت فيها كثيرًا موازنة بغيرها من المواد في تلك السنة التحضيرية، ومن هنا بدأت أبحث عن هذا التخصص أكثر إلى أن أحببته. وعندما بدأت أتعلم التطوير في 2018 وجدت نفسي جدًا في هذا المجال، وشعرت بمتعة كبيرة في كتابة البرمجيات ومشاهدة نتائجها، لذلك على عكس الشائع فأنا لا أرى أن الشغف يلزم أن يكون معك من البداية، فمن خلال تجربتي رأيت بأنه كلما تعلمت وصرت أفضل فيما تهتم به ستحبه أكثر، فأصبحت كلما تعمقت ودرست أكثر عن علوم الحاسب وأنماط التصميم وغيرها من الموضوعات ذات الصلة أدرك كم أنني أحب هذا المجال. لماذا لجأت إلى التعلم الذاتي، وكيف كنت توفق بين الدراسة الجامعية والدراسة الذاتية؟ من دون أي شك، في تخصص هندسة البرمجيات أو هندسة الحاسب، لا بد من أن يكون لديك مسار للتعلّم الذاتي. فالجامعة ممكن أن تعطيك وتعلمك، لكن في النهاية إن أردت أن تكون متفوقًا ولك أفضلية في هذا المجال فحتمًا لا بد من أن تتعلم بنفسك حتى تتمكن من المنافسة. وصراحة، من الأمور التي أندم عليها هي السنوات الأولى في الجامعة إذ كنت أعتمد على الجامعة باعتبارها مصدرًا وحيدًا للتعلم وهذا ما اتضحت لي أنه خطأ. وابتداء من السنة الثالثة كنت أخصص كل يوم ساعتين إلى ثلاث ساعات للدراسة، وإن لم أستطع تكون ساعة واحدة على الأقل، وتكون هذه الفترة في الصباح دائمًا، وكنت ألزم نفسي بأن أنهي الدورة أو المصدر الذي أتعلم منه من ألفه إلى يائه. وصحيح كانت تأتيني أيامًا أكون مشغولًا فيها، لكني لم أكن لأفرط في هذه الساعة أبدًا. ما هي الطريقة الأمثل من وجهة نظرك لتدارس البرمجة؟ أرى أن التعلم الذاتي هو الطريقة الأمثل ولا بد وأن ترافق أي طالب لعلوم الحاسب والبرمجة من أول سنة له في الجامعة، لأن هذا سيعطيك أفضلية كبيرة جدًا، وأفهم أنه قد يكون صعبًا عليك في البداية أن تحدد المسار البرمجي الذي ستمضي فيه مستقبلًا، لكن لا تجعل ذلك عائقًا عن التعلّم، فلا يهم معرفة التخصص أكثر من أهمية تعلم مهارة التعلّم الذاتي نفسها وأن تكون جزءًا من حياتك وروتينك اليومي لا تتنازل عنه. وأصعب شيء في التعلم الذاتي هو الانضباط والالتزام بالتعلّم، فأنا مثلًا قبل 4 سنوات من الآن ما كان عندي القدر المطلوب من الانضباط. لكني بعدما بدأت في دراسة تخصصي وجدت أن الالتزام تجاه ما أتعلمه أصبح أيسر، فكنت أخصص ساعتين إلى ثلاث ساعات يوميًا للبحث عن الأشياء التي أود تعلمها من مواقع أو دورات أو توثيقات أو أُطر عمل وجميعها من مواقع أجنبية إذ كانت هي وجهتي الأولى التي أبحث فيها وبعدما تعمقت أكثر اتجهت إلى أكاديمية حسوب. ومما أنصح به الطلاب أيضًا، هو التفكير في العمل الحر أو حتى العمل بدوام جزئي ما استطاع إلى ذلك سبيلًا، وأقله البحث عن فرص تدريبية سواء أكانت مدفوعة أو لا؛ فالمهم هنا هو تحصيل خبرة عملية، وهذه النصائح استفدت من بعضها وقصرت في بعضها لكنني أتلمس بنفسي الفوائد الشخصية التي عادت على من جربها جميعها. وشيء أخير أحب أن أضيفه، هو ربما من المفيد السعي للحصول على بعض الشهادات الموثوقة في مجالات إدارة تطوير المنتجات ومنهجية الـ Agile scrum ومجال هياكل البيانات والخوارزميات وغيرها من المجالات المهمة في علوم الحاسب. ما هي التحديات التي واجهتك في أثناء التعلم، وكيف تغلبت عليها؟ أكبر تحدي واجهته وأتوقع أنه ربما يواجه الكثيرين في هذا المجال هو عدم تأكدهم من أن هذا المسار الذي يدرسونه هو ما يريدونه حقًا، إضافة إلى شكوكهم بشأن قدرتهم على النجاح فيه، وهذا عائد إلى أن مجالات التكنولوجيا صعبة وبها تحديات كبيرة وهي كذلك سريعة التطور، فما ستتعلمه اليوم ستجده فاقد الصلاحية بعد سنتين أو ثلاث. فأنا مثلًا كانت بدايتي بتعلّم تطوير الأندرويد وتعلمته لمدة سنة، ثم غيرت المسار بعدها لأنه لم يستهويني العمل به وعرفت أنني لست بقادر على الاستمرار فيه، والأمر نفسه كان عندما بدأت تعلّم تطوير الويب، وأريد أن أقول هنا إن الفضل يرجع إلى أكاديمية حسوب أنها حددت لي المنهج الذي ينبغي أن أمضي وفقه ومن دونها كان من الممكن جدًا أن أتشتت بالتقنيات الكثيرة الموجودة في الويب. والتحدي الثاني يتمثل في المنافسة الكبيرة جدًا في تخصص البرمجة، فمن الصعب لأي شخص مبتدئ فيه أن يحافظ على تنافسيته وتميزهم فيه وتنسحب هذه الصعوبة على أصحاب الخبرة أيضًا. كيف سمعت عن أكاديمية حسوب وما تقييمك لتجربة التعلم معها؟ منذ زمن وأنا أتابع النقاشات على حسوب I/O وكنت نشطًا على هذه المنصة، ومن هناك تعرفت على حسوب ومنها أكاديمية حسوب ودوراتها. ولم أكن مهتمًا بالدورات حتى وجدت دورة تطوير التطبيقات بلغة جافاسكربت إذ كنت مهتمًا بهذه اللغة في هذه الفترة، وتقريبًا كنت أول المشتركين فيها بعدما أعلنوا عنها. وعمومًا تجربتي مع أكاديمية حسوب تجربة مثمرة، وأفضل شيء فيها هو جودة المحتوى وهذا يشمل تسجيل الفيديو من صوت وصورة، وكذلك تشمل هذه الجودة طريقة الشرح والتعمق والتفصيل فيه، وكذلك من جهة المدربين فأغلبهم أسلوبهم ممتاز في الشرح. وأكثر الأشياء المحببة لدي في الدورة كان قسم التعليقات فقد استفدت منه كثيرًا، فكنت كثير السؤال وأجد أن الإجابات تأتيني في غضون ساعات قليلة وتكون واضحة. والشيء الجميل هو أن المحتوى باللغة العربية وهنا أقصد اتسامه بالجودة مع ذلك، وأنا أعلم أنه ثمة الكثير من المحتوى المنشور على الإنترنت باللغة العربية لكن أغلبه ليس على مستوى الجودة الذي يجعلك تثق به في التعلّم تحديدًا لشخص مثلي كان معتادًا على المصادر الأجنبية. وأشير أخيرًا إلى حجم الاهتمام والدعم المقدم للطلاب خصوصًا بعد التخرج وإنجاز متطلبات الدورة، فهذا الاهتمام من الأشياء التي تشكر عليها الأكاديمية، وما زلت أذكر وأقدر المقابلة التي أجريت معي وأمدوني فيها بمجموعة نصائح مهمة حول التطوير المهني وكيفية استغلال مهاراتي في سوق العمل. لذلك فأنا ممتن جدًا لاستثماري في الدورة. كيف ساعدتك دورة جافاسكربت التي حصلت عليها في أعمالك الحالية؟ أعمل حاليًا مطور ويب في مؤسسة موقع حراج، وهو بالضبط التخصص الذي درسته في أكاديمية حسوب. فأنا أعمل بجافاسكربت و React وغيرها، فقطعًا ما درسته في أكاديمية حسوب إلى الآن يساعدني في عملي، بطبيعة الحال أنا طورت عليه وتعلم مهارات أكثر مثل TypeScript و Next.js. وما يجدر الإشارة إليه هنا أن أهم شيء تحصل عليه عندما تتعلم مع أكاديمية لها منهج محدد مثل أكاديمية حسوب هو الدعم الذي يحصل عليه الطالب، لأنك عندما تتعلم شيئًا جديدًا ستكون لديك الكثير والكثير من الأسئلة لتفهمه وهذا متوفر بطريقة رائعة في حسوب. كذلك ستحصل على شهادة وضمان للحصول على عمل في أقل من 6 أشهر أو أن تستعيد استثمارك وهذا أكثر شيء جذبني إلى الدورة لأنك ما تبغى تتعلم وتتعمق في شيء دونما القدرة على توظيف هذه المهارات في عمل حقيقي. ما الذي كنت تتمنى معرفته أو تصحيحه في خلال رحلتك السابقة؟ كنت لأكون أكثر حرصًا وتركيزًا في رحلة التعلم تحديدًا في أول سنتين لي في الجامعة. وكنت سأختار أن ألتزم التعلم في مسار واحد من أوله إلى آخره دونما التشتت في تعلم تقنيات كثيرة في وقت واحد. وأكثر ما أنصح به أي طالب أن يتعلم باستمرار، فكلما عودت نفسك على حل المشكلات البرمجية أكثر صار عندك عقلية حل المشكلات، وهذا بطبيعة الحال سينمي لديك مهارة التفكير المنطقي، وستتمكن من التعامل بمرونة وكفاءة مع المشكلات التي ستقابلك في المستقبل. وفوق ذلك أذكر أهمية الصبر، لأن هذا المجال ليس بالسهل، لكن إن صبرت عليه وتعلمته بإتقان فسيعطيك أفضل مما أعطيته. كيف حصلت على أول عمل في البرمجة؟ أهم شيء بالنسبة لي في هذه الرحلة الطويلة هو التوظيف، يعني أنا هدفي الأساسي من التعلّم كان في الحصول على وظيفة ذات مردود جيد. وبعد تخرجي من دورة أكاديمية حسوب بشهر ونصف تقريبًا حصلت على فرصة تدريب صيفي في أحد شركات البرمجة المحلية. وفي الوقت نفسه كنت بدأت رحلة البحث عن وظيفة وأنا بعد في الجامعة. ووقتها كان ثمة طلب في السوق على خريجي جامعة الملك فهد وهذا أعطاني ميزة تنافسية على أقراني. وأنا أعتبر نفسي محظوظًا في الحصول على وظيفتي الحالي فبعد شهر واحد من تخرجي حصلت عليها. لكن جدير بالذكر هنا الإشارة إلى أنني كنت أداوم على تحديث سيرتي الذاتية باستمرار وأقدم في العديد من الوظائف قبل 6 أشهر من تخرجي. وكنت أراجع سيرتي الذاتية مع خبراء لكي يعطوني نصائح حولها، وكذلك عملت على عدة مشاريع لإضافتها كسابقة أعمال لي. ومن النصائح العملية والمفيدة عندما تتقدم إلى وظائف معينة هي أن تذاكر الوصف الوظيفي للشركات أو الوظائف التي تود العمل بها وتبدأ بتعلم المهارات التي يطلبونها وتنجز مشروعات بها وتضيفها إلى سيرتك الذاتية.
    4 نقاط
  19. التفكير بمنطق سليم في حل المشكلات والتخطيط الجيد قبل القيام بأي مهمة هو أحد أهم المهارات التي حدثتنا لانا عن اكتسابها بعدما درست البرمجة، وهي ذاتها المهارة التي مكنتها من الحصول على وظيفة بعقد ثابت في شركة أمنية للاتصالات، فكيف فعلت ذلك؟! في هذه السلسلة وثقنا قصص مجموعة من المطورين من طلاب أكاديمية حسوب كانوا مثلك تمامًا في يوم من الأيام، بعضهم كان مترددًا بشأن قدرته في أن يكون مطورًا من الأساس، وبعضهم كانت لديه مخاوف حول تمكّنه من المنافسة في هذا المجال سريع التطور، ومنهم من كانوا طلابًا في هندسة الحاسوب تنقصهم الخبرة العملية، لكنهم جميعًا في لحظة ما، قرروا بذل جهود حقيقية في التعلّم فحصدوا ثمارها. مرحبًا لانا، حدثينا قليلًا عنك؟ أنا لانا عبد الرازق من الأردن، أحب مجالات الهندسة عمومًا، لكني لم أحسم قراري في أن أتخصص في هندسة الحاسوب في البداية، لكن كما تعلمون نحن في عالم محاط بالتقنية من كل جانب، وفي الوقت الذي تتهدد فيه تخصصات كثيرة بالركود، تظل البرمجة وهندسة الحاسوب أكثر المجالات التي لها مستقبل وفرص كبيرة للعمل، لذلك اخترت هذا المجال لتخصصي الجامعي، وقد تخرجت في عام 2021 في جامعة البلقاء التطبيقية بمعدل جيد جدًا. وبعد تخرجي بشهر، قدمت في دورات أكاديمية حسوب وحضرت 3 دورات فيها، وبعد مرور 6 أشهر، حصلت على وظيفة بعقد ثابت في شركة أمنية للاتصالات. لماذا اتجهتي إلى التعلم في دورات خارجية بالنظر إلى أن تخصصك الجامعي في هندسة الحاسوب؟ المواد التي كنت أدرسها بالجامعة كانت تتقاطع مع تخصصات هندسة أخرى مثل الكهرباء والاتصالات والشبكات، فلم يكن ثمة تركيز كبير على تعليم البرمجة، لذلك قررت أنه ينبغي أن أبحث عن طريقة تمكنني من دراستها باحتراف. وكنت أسمع عن أكاديمية حسوب من أيام الجامعة، ووجدت إعلانًا على يوتيوب للتقديم في دوراتها فتقدمت إليها. وأحب أن أؤكد؛ أنا لست من الأشخاص الذين سيبالغون في التقييم السلبي للجامعات ويقولون إن الجامعات بلا فائدة حقيقية، فبغض النظر عن أي عوامل أخرى، إلا أن المعلومات التي حصّلتها في الجامعة كونت جزءًا لا بأس به من معرفتي بهذا المجال، خصوصًا لو تحدثنا عن تعلم طريقة التفكير في الحلول والمشكلات والمنطق البرمجي نفسه. لكن في الوقت نفسه، يكتشف المرء بعد التخرج أن سوق العمل في البرمجة مختلف تمامًا عن بيئة الجامعة، فالدورات الخارجية بخلاف الجامعة تعطيك معرفة أكثر تخصصًا في المجالات التي تود العمل بها، لذلك أنا مؤمنة أن الدورات البرمجية مهمة لكل طالب في هندسة الحاسوب؛ وذلك لكي تعزز من فرصه في الحصول على عمل في المستقبل، خصوصًا أنه في البرمجة من المهم جدًا أن تُظهر لجهات التوظيف أنك تجيد التعلم الذاتي وأنك بذلت جهودًا حقيقيةً في التطوير من مهاراتك وأنك على اطلاع بأحدث الممارسات، وهو ما ستجده في الدورات دون الجامعة التي تكون المعلومات فيها أكثر عمومية ولا تواكب السرعة في هذا المجال. بماذا تصفين تجربة التعلّم مع أكاديمية حسوب؟ صراحة دورات أكاديمية حسوب كان بالنسبة لي «إشي كتير فخم»، وأكثر ما أفادتني به أنها قدمت لي طريقًا واضحًا ومنظمًا ومتدرجًا لتعلم المهارات التي أردت تعلمها، فأنا شخصية تحب أن تتعلم الكثير من الأشياء الجديدة، لكني لا أعرف من أين أبدأ، فأمكث مكاني لا أفعل شيئًا. يعني كنت في حاجة كبيرة لمن يساعدني في الخطوة الأولى؛ تلك الخطوة التي توضح لي من أين أبدأ وكيف أتابع وكيف أتوسع، وهو ما ساعدتني به كثيرًا دورات الأكاديمية، إذ تجد أن الدورات منظمة والفيديوهات مرتبة بطريقة متسلسلة، بحيث كل معلومة تحصل عليها في أول فيديو مثلًا ستفيدك في الفيديو الذي يليه وهلم جرًا، وهذا سيدفعك إلى هضم المعلومات واستيعابها بسرعة من دون تشتت. وأحد أكثر الأشياء الرائعة في الأكاديمية، هي عنايتهم بالتطبيق العملي لما ندرسه، إذ ستلاحظ أنهم في الامتحانات ومشاريع التخرج النهائية يهتمون جدًا بتدريبك على البحث عن حلول المشكلات بنفسك من دون الحاجة إلى مساعدة منهم حتي يتأكدوا تمامًا من أنك فهمت الدورات فعلًا وليس مجرد اجتياز للامتحان والسلام، وهذه من الأمور الرائعة جدًا. أنا الآن في بيئة العمل، وأقول لكم لن تجدوا من يساعدكم إن لم تكونوا قادرين على مساعدة أنفسكم! كذلك من الأشياء المميزة في أكاديمية حسوب هو وجود متابعة تتسم بالمرونة، فالمتابعة كانت مهمة لكي ألتزم بإتمام الدورات، لكنها سمحت لي في الوقت نفسه باختيار توقيت الدراسة ومكانها، فلم أكن مقيدةً بوقت معين وهذا من الأمور التي أشعرتني براحة نفسية كبيرة. ما هي التحديات التي واجهتكِ في أثناء التعلم، وكيف تغلبت عليها؟ أبرز التحديات التي واجهتني في أثناء تعلم البرمجة هي أنني لم أكن أحب البرمجة أصلًا 🙂 فكنت أشعر أنها صعبة عليّ وأنني لن أفلح فيها.. ثم جلست مع نفسي، وأخذت أحدثها أن المهارات المكتسبة تأتي بالتعلّم والاجتهاد وطردت كل تلك الهواجس التي كانت تحبط من عزيمتي وتشكك في قدرتي على التفوق فيها؛ ففي النهاية بإمكان أي إنسان أن يتعلم ما يشاء من المهارات المكتسبة والأمر عائد فقط إلى بذل الجهد والوقت في التعلّم، إضافةً إلى أنه لا بأس من التجربة. بعدما جلست مع نفسي وأخذت قراري بتعلم البرمجة وبحثت عن أكاديمية حسوب، تيسرت أموري بعدها في هذا المجال، فإن لم تنجح هذه التجربة معك، فهذا ليس سببًا أيضًا لكي تيأس ففي الحياة آلاف الأشياء والمهارات الأخرى التي بإمكانك تعلمها. التحدي الثاني الذي كنت أواجهه هو مشكلة البدايات، مع ذلك تعلمت أنه قبل البدء في كتابة الشيفرات يجب علي العمل على التنظيم الجيد لما سأعمل عليه في أي مهمة، وتقسيمها على مراحل وخطوات، ولا شك أنني كنت أصل إلى مرحلة أشد فيها شعري عندما أجد عطبًا ما في الشيفرة فيتعطل عملها، لكن بمجرد ما تعمل الشيفرة وتظهر النتائج التي تريدها فستختبر شعورًا جميلًا لا مثيل له في الحياة. كيف وجدت الوقت للتعلم، احكي لي عن روتينك اليومي أيام الدراسة؟ اشتركت في دورات الأكاديمية بعد تخرجي، وكان روتيني اليومي غير واضح، لكن الدورة ساعدتني على تنظيم حياتي، فقد أصبحت أنظم مواعيد نومي ومواعيد خروجي وغير ذلك. واخترت للدراسة الأوقات التي يكون المنزل فيها هادئًا وهي عادةً ساعات الصباح الباكر. فكنت أحيانًا أدرس 4 أو 5 ساعات في الصباح بلا انقطاع إلى الظهر، وكان معياري هنا ليس الوقت أو الساعات وإنما ما حددته لنفسي من دروس وموضوعات لإنجازها في هذا اليوم. وفي اليوم التالي، وقبل البدء في الدراسة كنت أطّلع سريعًا على ما درسته بالأمس من خلال الملخّصات التي كنت أعدها في أثناء متابعة الشروحات، إذ لم أكن أعتمد فقط على مشاهدة الفيديو، بل كان لا بد لي من أن تلخيص معلوماته كتابيًا، وقد ساعدتني هذه التلخيصات واختصرت عليّ الكثير من الأوقات، فلم أكن بحاجة إلى إعادة مشاهدة الفيديوهات إلا إن تعذر عليّ استيعاب بعض المعلومات التي لخصتها ابتداءً. وهكذا في كل موضوع مترابط، كنت أرجع إلى الأوراق التي لخصت فيها الفيديوهات ذات الصلة من الدورات والدروس السابقة حتى أُلِم بالموضوع من عدة جوانب قبل أن أتابع مذاكرة الموضوعات الجديدة. الأمر الآخر والمهم هو عدم الاستهانة بالتطبيق مهما اعتقدت أن الفيديو سهل، فأول ما يبدأ المدرب بكتابة الشيفرة لا بد من أن تمارس ما فعله بنفسك، فكتابة الشيفرات تحتاج إلى سرعة وهذا السرعة لن تأتي إلا بطول ممارسة. ما الذي كنت تتمنين معرفته أو تصحيحه في خلال رحلتك السابقة؟ لو عاد بي الزمن إلى الوراء، لكنت أوليت اهتمامًا أكبر في إنجاز دورة جافاسكربت وهي كانت آخر دورة درستها مع الأكاديمية، ولكنت ضغطت نفسي لكي أنتهي منها سريعًا، فالدراسة بجانب العمل لدوام كامل تحتاج إلى طاقة تنظيمية هائلة، لذلك استغلال أوقات الفراغ التي كانت لدي قبل العمل النظامي من الأشياء التي وددت لو كنت أحسنت استغلالها. كيف كانت المقابلة النهائية والعمل على مشروع التخرج؟ كنت خائفةً جدًا من المقابلة، فقد كنت أخشى ألا أنجح في الدورة، لكن في الحقيقة المقابلة لا تستدعي أن تكون متوترًا، ففي النهاية هم لن يسألوك عن أشياء غريبة وإنما سيتم سؤالك عما درسته في الدورة، هذا إلى جانب أنهم يعرفون عن توترك هذا وسيستوعبونه تمامًا في الدقائق الأولى من المقابلة؛ أما عن مشروع التخرج فتتسم مرحلة المراجعة فيه بمرونة شديدة، حيث سيقومون بتوجيهك لتصحيح بعض الأخطاء فيما نفذته وسيعطونك مساحةً من الوقت لكي تعدّل فيه قبل أن تعرف النتيجة النهائية باجتياز الدورة أو لا. كيف حصلت على وظيفتكِ الحالية، وكيف ساعدتك دورات الأكاديمية في تقوية فرصك الوظيفية؟ حصلت على فرصة لعقد مقابلة وظيفية كمهندسة بيانات في شركة أمنية للاتصالات عن طريق نقابة المهندسين، فهي ترسل لبعض خريجي الجامعات الفرص الوظيفية في شركات متعددة، وبعدما نجحت في امتحانات اختبار القدرات، تواصل معي أحد من الموارد البشرية من شركة أمنية وأرسل لي امتحانًا عبر البريد الإلكتروني وكان زمنه يومين، وبعدما أرسلت الإجابات، أرسلوا لي بموعد لعقد المقابلة الأولى وتبعته مقابلة ثانية. سؤال أساسي في أي مقابلة عمل وهو ما الذي فعلتيه بعد التخرج؛ فكانت دورات أكاديمية حسوب جواب كافٍ للدلالة على أنني كنت أعمل على تطوير نفسي وهي من الأمور التي يبحث عنها الموظِفون في أي مرشح. إضافةً إلى ذلك، ساعدتني الدورات كثيرًا في جعلي إنسانة تفكر بمنطقية، فقد علمتني كيف أفكر في المشكلات وكيف أبحث عن الحلول، وهذا بالمناسبة يشمل كل المشكلات التي أواجهها في حياتي، فقد أصبحت قادرة على التفكير بتسلسل منطقي وأبحث بدأب عن الحلول.
    4 نقاط
  20. لا تمكنك البرمجة من الحصول على وظيفة بدخل مجزي فحسب، بل قد تكون البوابة الأمثل لمن يبحث عن تغيير مساره المهني بسرعة. في قصة اليوم تروي لنا زينب عبد النبي قصتها مع تعلم البرمجة وكيف تمكنت من العمل في الوظيفة التي تريد في نهاية المطاف. في هذه السلسلة وثقنا قصص مجموعة من المطورين من طلاب أكاديمية حسوب كانوا مثلك تمامًا في يوم من الأيام، بعضهم كان مترددًا بشأن قدرته في أن يكون مطورًا من الأساس، وبعضهم كانت لديه مخاوف حول تمكّنه من المنافسة في هذا المجال سريع التطور، ومنهم من كانوا طلابًا في هندسة الحاسوب تنقصهم الخبرة العملية، لكنهم جميعًا في لحظة ما، قرروا بذل جهود حقيقية في التعلّم فحصدوا ثمارها. عرفينا بنفسك يا زينب؟ أنا زينب عبد النبي، عمري 22 سنة، درست رياضيات بالجامعة اللبنانية، لكني لم أحب هذا المجال كثيرًا ولم أكن متحمسة لمهنة التدريس وهي الوظيفة المتوقعة لهذا التخصص. في المقابل، وجدتني أكثر في مواد البرمجة التي كنا ندرسها في المقررات الجامعية، فقررت أن أتعمق في دراستها. وجاءت كورونا وقتها ووجدت إعلانًا لمنحة لتعلّم البرمجة مع أكاديمية حسوب فتقدمت إليها، ثم بدأت الدراسة، وبعدما أنهيت الدورات شرعت في العمل على مشاريع برمجية على موقع مستقل، ولم أتوقف عن التعلم في أثناء العمل الحر إلى أن جائتني فرصة العمل مطور واجهات خلفية في شركة موديلر CX. لماذا اتجهتي إلى دراسة البرمجة دون غيرها؟ يعجبني المنطق البرمجي ومعرفة كيفية عمل الحاسب الآلي، وأكثر ما يعجبني فيها هو حجم الاستخدامات الكبيرة والمتنوعة التي نحتاج البرمجة فيها. تجذبني فكرة أن جزءًا كبيرًا من تطوّر العالم حاليًا قائم على البرمجة؛ لذا فتعلمي لها يعني أنني سأكون من المساهمين في عملية التطوير. وطبعًا لو وضعنا كل هذه الميزات في مقابل مهنة التدريس والتي هي التطور الطبيعي لمجال دراستي، فبالتأكيد سأفضل ما أنا عليه الآن. كيف عرفتي بأكاديمية حسوب، وكيف تقيّمين التعلّم عبرها؟ لم تكن لدي أي تجارب سابقة في تعلم البرمجة قبل أكاديمية حسوب، أذكر أنه ظهر لي إعلان على فيسبوك بخصوص منحة لتعلم البرمجة بالتعاون مع البنك الدولي، وكنت قد سمعت عن أكاديمية حسوب من قبل على يوتيوب، فلما جاءت الفرصة للحصول على الدورات عبر منحة -إذ لم أكن أملك ثمنها في ذلك الوقت- تقدمت إليها فورًا. وحقيقةً بدء تعلم البرمجة مع أكاديمية حسوب جعل منها بدايةً مميزةً جدًا وحببني في البرمجة أكثر، لأن الدورات شاملة ومتدرجة، وباللغة العربية. وإلى الآن ما زلت أتذكر كل ما تعلمته في دورة جافاسكربت وأطبقه في عملي الحالي، فالدراسة في أكاديمية حسوب كانت بمثابة تجربة عملية لما عليه سوق العمل على الحقيقة، وقد أفادتني المشروعات التي نفذتها في الدورات في بناء سيرة ذاتية قوية ساعدتني في الحصول على وظيفتي الحالية. ولعل أكثر ما يميزهم هو المتابعة، يعني أنا من الناس الذين يحتاجون إلى تشجيع مستمر، وأحسب أنه لولا المتابعة التي حصلت عليها لما كنت أكملت الدورات إلى نهايتها. ما التحديات التي واجهتينها في تعلم البرمجة؟ البرمجة على خلاف كثير من العلوم الأخرى لا يحصل تعلمها سوى بالتجربة والخطأ، فالأمر لا يتم بحفظ مجموعة من الشيفرات ثم تطبيقها، بل لا بد من أن تجرب بنفسك ثم لن تعمل معك الشيفرة من أول مرة، فتعود لتجرب مرة أخرى، وتجدها لا تعمل أيضًا فتجرب للمرة الثالثة فلا تعمل معك. هذه العملية من المحاولة والخطأ قد تصيبك بالإحباط قليلًا لكن بعد كثير من البحث والتجارب وتصحيح الأخطاء ستعمل معك في النهاية وستُسر وقتها. وأنا شخصيًا أحب هذا النوع من التحديات وكلما أتجاوز أحدها أشعر بكثير من الثقة في نفسي، لكن الأمر في كل الأحوال يحتاج إلى صبر كبير بلا شك. إحدى التحديات التي واجهتها أيضًا هو موضوع تنظيم الوقت، إذ كنت أعمل في فترة تعلّمي وكان الأمر ضاغط جدًا عليّ. حينها استعملت أكثر من أداة لتتبع الوقت ومن ضمنها أداة أنا وتمكنت من متابعة المهام وترتيب الأولويات فتيسرت الأمور بعدها بفضل الله. ما هي أفضل وصفة للتعلم من وجهة نظرك؟ كنت أخصص ساعات الصباح الأولى من بعد الفطور للدراسة فكنت أشاهد الفديوهات وأطبق ما فيها ثم أبحث عما أريد استيضاحه أكثر وهذا كان يأخذ معي وقتًا طويلًا، ففيديو من 10 دقائق قد يستغرق معي النهار كله. فلم أكن أُتم مشاهدة أي فيديو إلا بعد أن أستوعب أنني فهمته تمامًا وطبقت ما فيه. وطريقتي كانت تبدأ بمشاهدة الفيديو كاملًا وفهم موضوعه وكتابة ملاحظات حوله، ثم مشاهدته مرة ثانية مع التطبيق وكنت أتعمد ألا أنقل الأكواد نفسها في أثناء التطبيق، وبعد كتابة الشيفرات قد تظهر معي بعض الأخطاء، فكنت أجري بحثًا عن الحلول ثم أعود للتطبيق وهكذا. ومن بعد الساعة الثالثة عصرًا، ومع نهاية دوام المدرسة كان يأتي إليّ بعض طلاب المدراس إذ كنت أقدم لهم دروس خصوصية. وبعد انتهاء العمل كنت أعود لدراسة البرمجة مساءً في نحو ساعتين أو ثلاثة. طبعًا لم تكن فترة الدراسة متصلة دائمًا، فقد كنت أخصص بعض الوقت للاستراحة. احكي لنا عن مشروع التخرج والمقابلة النهائية والامتحان؟ المقابلة والمشروع كانا يسيران من وجهة نظري، لكن لا بد من المراجعة قبلهما، فأنا مررت على الفيديوهات قبل المقابلة، وراجعت الملاحظات التي دونتها في أثناء الدراسة، فكما تعرفين في البرمجة لا تحتاجين إلى الحفظ، لذلك من الضروري من وقت لآخر مراجعة المعلومات؛ فالشيفرات المحفوظة في الذاكرة هي الشائعة وما كثر استخدامه أما ما دون ذلك فيلزمه بحث مسبق. وبالنسبة لمشروع التخرج فكان سهلًا كذلك؛ يعني طالما أنك فهمت محتوى الفيديوهات جيدًا وطبقت عليه فلن تواجه مشكلات كثيرة في العمل على المشروع. ما الذي كنت تتمنين معرفته أو تصحيحه في خلال رحلتك السابقة؟ مرت فترة عليّ في أثناء الدراسة كنت مضغوطة جدًا بالوقت، فكنت أكتب الشيفرات كما هي دون أن أفهم تمامًا المنطق ورائها ودون أن أفكر في طرائق أخرى لأداء الوظيفة نفسها، لكني الآن وددت لو أنني أعطيتها الوقت الكافي وتعمقت أكثر في فهمها، لأن فهم المنطق وراء كل سطر برمجي تكتبه هو الذي سيمكّنك من حل المشكلات التي تواجهك في المستقبل أو التفكير في حلول أفضل وأسرع للحصول على النتيجة نفسها. احكي لنا عن أول مشروع أنجزتينه على موقع مستقل، وبماذا تنصحين المطورين الجدد على مستقل؟ على عكس الشائع ربما، عندما قدمت أول عرض لي على مستقل، كنت خائفة جدًا أن يتم قبول عرضي وأستلم المشروع ثم لا أكون قادرة على تسليمه للعميل مثلما أراد. تواصل معي صاحب المشروع وشارك معي تفاصيل العمل واتفقنا على كيفية التنفيذ، وكان المشروع عبارة عن تعديل على ملف CSS لمتجره الإلكتروني على منصة زد، وهذا المشروع علمني الكثير وزاد مهارتي في لغة CSS. وبعد انتهاء المشروع أعطني العميل تقييمًا كاملًا. فنصيحتي للمستقلين الجدد هي الصبر، لأنه حتى لو أعددت ملفك الشخصي جيدًا وأضفت معرضًا للأعمال فسيكون صعبًا أن تحصل على أول مشروع من دون تقييمات لعملاء سابقين، لكن بعد أول مشروع تكون الأمور أيسر وستحظى عروضك بالقبول من كثير من أصحاب المشاريع. يعني أنا الآن ومع أنني لا أعمل بتركيز على مستقل تأتيني الكثير من الدعوات من أصحاب المشاريع وقد قام صاحب مشروعي الأول بدعوتي إلى مشروع ثانٍ. وقبل ذلك ينبغي أن تتأكد من أنك تحب البرمجة فعلًا وتريد العمل بها، وتشعر بالسعادة وأن تعمل وتكتب الأكواد، لأن هذا هو الأمر الوحيد الذي سيبقي على دافعيتك ورغبتك وصبرك تجاه التعلّم وفي أثناء العمل. كيف حصلت على وظيفتك الحالية؟ بعدما أنهيت الدورات مع أكاديمية حسوب عملت على ملء سيرتي المهنية بالمشروعات والدورات التي أتممتها ووضعت اللغات والتقنيات التي تعلمتها، وقدمت سيرتي الذاتية في أكثر من مكان من خلال منصة لينكدإن ثم جاءني بريد لعقد مقابلة مع شركة موديلرCX وهي متخصصة في تقديم تجارب تسويق تفاعلية عبر تقنية الـ 3D Configuration لأصحاب المتاجر الإلكترونية، وبعدما حضرت المقابلة الأولى قاموا بتكليفي بالعمل على مشروع معين، وبعدما أنجزته عقدوا معي مقابلة ثانية شرحت فيها كيف عملت على المشروع ولحق ذلك اجتماع ثالث مع المدير ومن ثم توظفت فيها وأعمل حاليًا مطور واجهات خلفية.
    4 نقاط
  21. الإصدار 1.0.0

    18588 تنزيل

    يشرح هذا الكتاب كيفية كتابة تعليمات ووصفات يفهمها الحاسوب، ومن المعلوم أن الحواسيب شائعة ومنتشرة بحيث لا يخفى ذلك على ذي عقل وشأنها مثل شأن مفكات البراغي، غير أنها أعقد قليلًا وليس من السهل جعلها تنفذ ما تريد منها بالضبط، إلا إذا كانت المهمة التي تريد للحاسوب تنفيذها سهلة الفهم مثل عرض رسائلك البريدية أو تشغيل برنامج الحاسبة، فحينها ما عليك سوى فتح البرنامج المخصص لذلك، لكن حين تكون المهمة التي لديك فريدةً وأبعادها غير معرفة، فلن تجد تطبيقًا متاحًا لها. يأتي هنا دور البرمجة، فهي الفعل الذي يصف بناء برنامج يتكون من مجموعة أوامر محدَّدة جدًا لتخبر الحاسوب بما يجب فعله، وتُعَدّ الحواسيب بصفتها آلات غبية لا تستطيع فهم البرمجة ولا استيعابها، لكن إذا غضضت النظر عن هذا ورأيت أنه من الممتع والمسلِّي التفكير بمنطق يشبه ذاك الذي تفهمه تلك الآلات فستجد البرمجة أمرًا مسلِّيًا جدًا ونافعًا، فهي تتيح لنا اختصار زمن الأشياء التي ننفذها يدويًا وتستغرق أوقاتًا طويلةً إلى ثواني معدودة، وعليه يمكن النظر إليها على أنها طريقة تجعل حاسوبك يقوم بأمور لم يكن يستطيعها من قبل، وهي في ذاتها -أي البرمجة- بهذا الفهم تكون تدريبًا ممتازًا على التفكير النظري المجرَّد. دورة تطوير التطبيقات باستخدام لغة JavaScript تعلم البرمجة بلغة جافا سكريبت انطلاقًا من أبسط المفاهيم وحتى بناء تطبيقات حقيقية. اشترك الآن كما نوجه هذه الآلات لما نريده من خلال إعطائها أوامر محدَّدة كما ذكرنا، وتكون هذه الأوامر أو البرامج من خلال لغات خاصة بالبرمجة، وهي لغات أُنشئت عمدًا لتُستخدَم في برمجة الحواسيب، ومما يعجب المرء له أن البشر في تطويرهم للأسلوب الذي يتعاملون به مع الحاسوب لم يجدوا أفضل من الطريقة التي يتواصلون بها مع بعضهم بعضًا، فلغات البرمجة الحوسبية تشبه لغات البشر في إمكانية استخدام الكلمات والجمل في صور مختلفة لكتابة تعليمات جديدة في كل مرة تكتب برنامجًا فيها. كانت لغة بيزيك Basic ونظام دوس DOS في الثمانينيات والتسعينيات من القرن الماضي هما الطريقتان الأساسيتان في التعامل مع الحواسيب، وهما أنظمة نصية بالكامل من غير واجهة رسومية مثل التي تراها الآن أمامك على الشاشة، وقد استبدلنا الواجهات المرئية بهما منذ ذلك الحين بما أنها أسهل في التعلم للمستخدِم رغم أنها محدودة الإمكانيات موازنة بالواجهات النصية، لكن لا زالت لغات الحاسوب موجودةً، فإذا أمعنت النظر فسترى أنّ لغةً مثل جافاسكربت JavaScript موجودة في كل متصفح تستخدِمه أنت وهي في كل حاسوب تقريبًا، وإنّ مراد هذا الكتاب الذي بين يديك هو جعلك تألف التعامل مع هذه اللغة لتستخدِمها في صنع برامج نافعة لك ولعملائك. هذا الكتاب هو النسخة العربية المترجمة عن كتاب Eloquent JavaScript الشهير لصاحبه مارين هافربيك Marijn Haverbeke، ويقع في ثلاثة أجزاء، إذ يناقش أول جزء فيها لغة جافاسكربت في اثني عشر فصلًا؛ أما الفصول السبعة التالية فهي عن متصفحات الويب والأسلوب الذي تُستخدَم لغة جافاسكربت به لبرمجتها، ثم في النهاية فصلين آخرين مخصصين لبيئة أخرى لتشغيل جافاسكربت فيها وهي Node.js، كما سيكون في هذا الكتاب خمسة فصول عملية بها مشاريع تصف برامج كبيرة لتعطيك لمحةً عن البرمجة الحقيقية، وهي بناء روبوت توصيل ولغة برمجة ولعبة وبرنامج رسم بالبكسلات وموقعًا ديناميكيًا. هذا الكتاب مرخص بموجب رخصة المشاع الإبداعي Creative Commons «نسب المُصنَّف - غير تجاري - الترخيص بالمثل 4.0». يمكنك قراءة فصول الكتاب على شكل مقالات مجموعة ضمن وسم «إِلِكوَنت جافاسكريبت» وتجد روابطها تاليًا: القيم والأنواع والعوامل في جافاسكريبت (الجزء الأول: اللغة) هيكل البرنامج في جافاسكريبت الدوال في جافاسكريبت هياكل البيانات: الكائنات والمصفوفات في جافاسكريبت الدوال العليا في جافاسكريبت الحياة السرية للكائنات في جافاسكريبت مشروع تطبيقي لبناء رجل آلي (روبوت) عبر جافاسكريبت الزلات البرمجية والأخطاء في جافاسكريبت التعابير النمطية Regular Expressions في جافاسكريبت الوحدات Modules في جافاسكريبت البرمجة غير المتزامنة في جافاسكريبت مشروع بناء لغة برمجة خاصة علاقة جافاسكريبت بتطور الإنترنت والمتصفحات (الجزء الثاني: المتصفح) نموذج كائن المستند في جافاسكريبت معالجة الأحداث في جافسكربت مشروع لعبة منصة باستخدام جافاسكربت الرسم على لوحة في جافاسكربت HTTP والاستمارات في جافاسكربت إنجاز مشروع محرر رسوم نقطية باستخدام جافاسكربت بيئة Node.js: استخدام جافاسكربت خارج المتصفح (الجزء الثالث: بيئة Node) مشروع بناء موقع لمشاركة المهارات باستعمال Node.js
    4 نقاط
  22. الإصدار 1.0.0

    100855 تنزيل

    سطع نجم لغة البرمجة بايثون في الآونة الأخيرة حتى بدأت تزاحم أقوى لغات البرمجة في الصدارة وذاك لمزايا هذه اللغة التي لا تنحصر أولها سهولة كتابة وقراءة شيفراتها حتى أصبحت الخيار الأول بين يدي المؤسسات الأكاديمية والتدريبية لتدريسها للطلاب الجدد الراغبين في الدخول إلى مجال علوم الحاسوب والبرمجة. أضف إلى ذلك أن بايثون لغةً متعدَّدة الأغراض والاستخدامات، لذا فهي دومًا الخيار الأول في شتى مجالات علوم الحاسوب الصاعدة مثل الذكاء الصنعي وتعلم الآلة وعلوم البيانات وغيرها، كما أنَّها مطلوبة بشدة في سوق العمل وتعتمدها كبرى الشركات التقنية. دورة تطوير التطبيقات باستخدام لغة Python احترف تطوير التطبيقات مع أكاديمية حسوب والتحق بسوق العمل فور انتهائك من الدورة اشترك الآن بني هذا العمل على كتاب «How to code in Python» لصاحبته ليزا تاغليفيري (Lisa Tagliaferri) وترجمه إلى العربية محمد بغات وعبد اللطيف ايمش، وحرره جميل بيلوني، ويأتي شارحًا المفاهيم البرمجية الأساسية بلغة بايثون، ونأمل في أكاديمية حسوب أن يكون إضافةً نافعةً للمكتبة العربيَّة وأن يفيد القارئ العربي في أن يكون منطلقًا للدخول إلى عالم البرمجة من أوسع أبوابه. رُبط هذا الكتاب مع توثيق لغة بايثون في موسوعة حسوب لتسهيل عملية الاطلاع على أي جزء من اللغة مباشرة وقراءة التفاصيل باللغة العربية. هذا الكتاب مرخص بموجب رخصة المشاع الإبداعي Creative Commons «نسب المُصنَّف - غير تجاري - الترخيص بالمثل 4.0». يمكنك قراءة فصول الكتاب على شكل مقالات من هذه الصفحة، «المرجع الشامل إلى تعلم لغة بايثون»، أو مباشرةً من الآتي: المقال الأول: دليل تعلم بايثون اعتبارات عملية للاختيار ما بين بايثون 2 و بايثون 3 المقال الثاني: تثبيت بايثون 3 وإعداد بيئتها البرمجية المقال الثالث: كيف تكتب أول برنامج لك المقال الرابع: كيفية استخدام سطر أوامر بايثون التفاعلي المقال الخامس: كيفية كتابة التعليقات المقال السادس: فهم أنواع البيانات المقال السابع: مدخل إلى التعامل مع السلاسل النصية المقال الثامن: كيفية تنسيق النصوص المقال التاسع: مقدمة إلى دوال التعامل مع السلاسل النصية المقال العاشر: آلية فهرسة السلاسل النصية وطريقة تقسيمها المقال الحادي عشر: كيفية التحويل بين أنواع البيانات المقال الثاني عشر: كيفية استخدام المتغيرات المقال الثالث عشر: كيفية استخدام آلية تنسيق السلاسل النصية المقال الرابع عشر: كيفية إجراء العمليات الحسابية المقال الخامس عشر: الدوال الرياضية المضمنة المقال السادس عشر: فهم العمليات المنطقية المقال السابع عشر: مدخل إلى القوائم المقال الثامن عشر: كيفية استخدام توابع القوائم المقال التاسع عشر: فهم كيفية استعمال List Comprehensions المقال العشرون: فهم نوع البيانات Tuples المقال الحادي والعشرين: فهم القواميس المقال الثاني والعشرين: كيفية استيراد الوحدات المقال الثالث والعشرين: كيفية كتابة الوحدات المقال الرابع والعشرين: كيفية كتابة التعليمات الشرطية المقال الخامس والعشرين: كيفية إنشاء حلقات تكرار while المقال السادس والعشرين: كيفية إنشاء حلقات تكرار for المقال السابع والعشرين: كيفية استخدام تعابير break وcontinue وpass عند التعامل مع حلقات التكرار المقال الثامن والعشرين: كيفية تعريف الدوال المقال التاسع والعشرين: كيفية استخدام *args و**kwargs المقال الثلاثين: كيفية إنشاء الأصناف وتعريف الكائنات المقال الحادي والثلاثين: فهم متغيرات الأصناف والنسخ المقال الثاني والثلاثين: وراثة الأصناف المقال الثالث والثلاثين: كيفية تطبيق التعددية الشكلية (Polymorphism) على الأصناف المقال الرابع والثلاثين: كيف تستخدم منقح بايثون المقال الخامس والثلاثين: كيفية تنقيح شيفرات بايثون من سطر الأوامر التفاعلي المقال السادس والثلاثين: كيف تستخدم التسجيل Logging المقال السابع والثلاثين: كيفية ترحيل شيفرة بايثون 2 إلى بايثون 3
    4 نقاط
  23. تعد بايثون Python واحدة من أشهر لغات البرمجة وأكثرها استخدامًا، وهي لغة ممتازة ليبدأ بها المبرمجون الجدد. يمكن استخدامها في كل المجالات، بدءًا من ألعاب الفيديو ومعالجة اللغات، وصولًا لتحليل البيانات والتعلم الآلي. بايثون هي لغة برمجة عالية المستوى، ومُفسرة interpreted وتفاعلية وكائنية، وتتمتع بمقروئية عالية، إذ تستخدم كلمات إنجليزية بسيطة، على خلاف اللغات الأخرى التي تستخدم الرموز، كما أنّ قواعدها الإملائية والصياغية بسيطة ومفهومة، ما يجعل تعلم لغة بايثون سهلًا مقارنةً بلغات برمجة أخرى. هذا المقال هو دليلك الشامل إلى التعرف على كل ما يخص لغة بايثون وكيفية تعلمها بأقصر السبل. جدول المحتويات حرصًا على تنظيم المقالة ولتسهيل الوصول إلى القسم الذي تريده بسهولة، سنذكر هنا جدول المحتويات باختصار: تاريخ بايثون مميزات لغة بايثون تطبيقات ومجالات استخدام لغة بايثون لماذا بايثون؟ أهمية تعلم لغة بايثون كيفية تعلم لغة بايثون نصائح لتعلم لغة بايثون تاريخ بايثون ظهرت لغة بايثون في أواخر الثمانينيات على يد المبرمج الهولندي جايدو فان روسم Guido van Rossum، وقد عُدَّت خليفة للغة ABC. كما استفادت من الكثير من اللغات السابقة لها، مثل Modula-3 و C و C++‎ و Algol-68 و SmallTalk، وغيرها من اللغات وأحدثت ثورة في عالم البرمجة لسهولتها وتعدد استخداماتها. نُشِر الإصدار 2.0 من لغة بايثون عام 2000، وقدّم العديد من الميزات الجديدة التي سهلت كتابة الكود على المبرمجين، مثل القوائم الفهمية List Comprehensions، ونظام كنس المُهملات garbage collection إلا أن هناك بعض العيوب التصميمية وأوجه القصور التي لم تتمكن سلسلة إصدارات ‎2.x‎ من تداركها. أطلق بعدها الإصدار 3.0 من لغة بايثون المعروف أيضًا باسم Python 3000 أو Py3k في عام 2008، والذي شكّل طفرة في اللغة وصحح العديد من عيوبها، لكنه لم يكن متوافقًا تمامًا مع الإصدارات السابقة)، ولهذا السبب قرر فريق التطوير الاستمرار ودعم إصدار أخير من سلسلة بايثون ‎2.x‎، وهو بايثون 2.7 لغاية عام 2020 وبعدها توقف الدعم ولم يعد الإصدار يتلقى أي تحديثات أو ميزات جديدة. النسخة الحالية من بايثون هي Python 3.11 وقد صدرت في السادس من ديسمبر/كانون الأول عام 2022، وتضمنت عدة تحسينات أبرزها تحسين سرعة التنفيذ، وتحسين رسائل الخطأ لتساعد المبرمج على تحديد الموقع الدقيق للخطأ ضمن البرنامج والعمل على تصحيحه بسرعة أكبر. مميزات لغة بايثون تتميز بايثون بعدة أمور عن غيرها من لغات البرمجة، من أبرزها: سهولة التعلم: يسهل تعلم لغة بايثون، إذ تتألف من عدد قليل من الكلمات المفتاحية، وتتميز بصياغة بسيطة وواضحة. المقروئية: شيفرة لغة بايثون واضحة ومنظمة وسهلة القراءة وتحاكي اللغة الطبيعية. سهولة الصيانة: شيفرة بايثون سهلة الصيانة إلى حد بعيد. مفتوحة المصدر حيث يمكن لأي شخص الاطلاع على شيفرة بايثون وإضافة تعديلات و ميزات جديدة عليها أو تطوير مكتبات تلبي مختلف المتطلبات. مكتبة قياسية واسعة: تحتوي مكتبة بايثون القياسية على عدد كبير من الحزم المحمولة التي تتوافق مع الأنظمة الشبيهة بيونكس و Windows و macOS. الوضع التفاعلي: تدعم بايثون الوضع التفاعلي، مما يتيح إمكانية تنفيذ الشيفرات مباشرةً على سطر الأوامر وتنقيح هذه الشيفرات بسهولة. محمولية بايثون: يمكن تشغيل لغة بايثون على طيف واسع من المنصات والأجهزة، مع الاحتفاظ بنفس الواجهة على جميع تلك المنصات. التوسعية: من أهم مميزات بايثون هو توفرها على عدد هائل من الوحدات والمكتبات، التي يمكنها توسيع قدرات اللغة في كل المجالات. دعم البرمجة الكائنية OOP: وهذا يمكن المبرمجين من كتابة تعليمات برمجية قابلة لإعادة الاستخدام ويسرع وتيرة عملهم. قواعد البيانات: توفر بايثون واجهات لجميع قواعد البيانات الأساسية. الرسوميات: تدعم بايثون التطبيقات الرسومية. دعم البرامج الكبيرة: بايثون مناسبة للبرامج الكبيرة والمعقدة. سأضرب مثالًا على الميزتين الأكثر شيوعًا بين الداخلين الجدد على المجال تعلم البرمجة وهما سهولة التعلم والمقروئية العالية بما أنهما تسهلان طريق التعلم ولتوضيح هاتين الميزتين، لذا إليك المثال البسيط التالي الذي يطبع كلمة مرحبًا على الشاشة: print('مرحبًا') لاحظ كيف يبدو البرنامج بلغة بايثون في حين يكون البرنامج نفسه الذي يقوم بطباعة هذه الكلمة بلغة أخرى مثل C كما يلي: #include <stdio.h> int main() { printf("مرحبًا"); return 0; } كما تلاحظ التعليمة في لغة بايثون واضحة ومباشرة في حين تتضمن لغة C كلمات ورموزًا غريبة وصعبة الفهم على المبتدئين مثل ‎#include‎ ووجود حرف f ملحقًا بكلمة print التي تعني "اطبع". رغم بساطة هذا المثال إلا أنه يعطيك فكرة عن مدى البساطة في كتابة شيفرات لغة بايثون ما يجعلها لغة مثالية للأشخاص الذين يبدأون للتو في تعلم البرمجة، وستدرك الفرق في سرعة كتابة الأكواد وسهولة الصيانة واكتشاف وتصحيح الخطأ بشكل أوضح عند كتابة برامج أكثر تعقيدًا. دورة تطوير التطبيقات باستخدام لغة Python احترف تطوير التطبيقات مع أكاديمية حسوب والتحق بسوق العمل فور انتهائك من الدورة اشترك الآن تطبيقات ومجالات استخدام لغة بايثون تُستخدم لغة بايثون في شتى المجالات، فهي لغة برمجة متعددة الأغراض General Purpose ولها عدة تطبيقات لا يتسع المقال لذكرها لذا سنكتفي هنا بذكر أبرز مجالات استخدام لغة بايثون وهي: تحليل البيانات تطوير مواقع الويب واستخراج بيانات المواقع الذكاء الاصطناعي وتعلم الآلة تطوير تطبيقات سطح المكتب والألعاب برمجة العتاد واللوحات الإلكترونية دعنا نستكشف المزيد عن كل مجال من هذه المجالات ونتعرف على أهميته ومساهمة لغة بايثون فيه. 1. تحليل البيانات أصبحت لغة بايثون إحدى اللغات البارزة في مجال علم البيانات لما توفره من مكتبات متخصصة مثل NumPy و Pandas و Matplotlib التي تسهل على المبرمجين تطوير برامج لتحليل البيانات والتعلم الآلي وتمكن علماء ومحللي البيانات من معالجة هذه البيانات وإجراء الحسابات الإحصائية المعقدة عليها بل وتمثيلها بيانيًا واستخراج المعلومات منها بسرعة وكفاءة أكبر. 2. تطوير مواقع الويب واستخراج بيانات المواقع تعد لغة بايثون لغة ملائمة جدًا لتطوير مواقع الويب وبالتحديد الواجهة الخلفية لمواقع الويب، فهي لغة تعمل من طرف الخادم ويمكنها التواصل مع قواعد البيانات ومعالجة بياناتها بسهولة، كما أنها توفر العديد من أطر العمل التي تسرع وتيرة تطوير مواقع وتطبيقات ويب احترافية وآمنة من أشهرها جانغو Django و فلاسك Flask. وتوفر مكتبات تسمى مكتبات ORM توفر طرقًا مبتكرة للاستعلام عن البيانات من قاعدة بيانات ومعالجتها باستخدام نموذج موجه للكائنات Object-relational mapping مثل SQLAlchemy و Django ORM وهي أسهل وأسرع من كتابة استعلامات بلغة SQL التقليدية. كما تلبي لغة بايثون طلبك إن كنت مهتمًا بموضوع استخراج البيانات من صفحات الويب أو المتاجر الإلكترونية المختلفة بهدف دراستها والبحث ضمنها ومقارنة الأسعار فيما بينها، فهي قادرة على استخراج البيانات تلقائيًا من المواقع Web Scraping بسرعة وتنسيقها بطريقة منظمة، وتمثيلها رسوميًا من خلال كتابة أكواد مختصرة ومباشرة بفضل مكتباتها المتنوعة التي توفر كافة الوظائف الضرورية للقيام بذلك وأبرزها Beautiful Soup و Scrapy و Selenium. احصل على موقع إلكتروني مخصص لأعمالك أبهر زوارك بموقع احترافي ومميز بالاستعانة بأفضل خدمات تطوير وتحسين المواقع على خمسات أنشئ موقعك الآن 3. الذكاء الاصطناعي وتعلم الآلة لم يعد الذكاء الاصطناعي وتعلم الآلة مصطلحات غريبة في عصرنا الحالي بل أصبحت من المواضيع الرائجة والمطبقة بكثرة، وهنا أيضًا تبرز لغة بايثون كلغة ملائمة بشكل مثالي لتطبيق مفاهيم الذكاء الاصطناعي وجعل الحواسيب والأجهزة التي نتعامل معها في حياتنا اليومية ذكية وقادرة على التعلم بنفسها ومساعدتنا في اتخاذ القرارات، ومن أشهر المكتبات التي توفرها بايثون في مجال الذكاء الاصطناعي نذكر NumPy و Pandas و Scikit-Learn ...إلخ. دورة الذكاء الاصطناعي احترف برمجة الذكاء الاصطناعي AI وتحليل البيانات وتعلم كافة المعلومات التي تحتاجها لبناء نماذج ذكاء اصطناعي متخصصة. اشترك الآن 4. تطوير تطبيقات سطح المكتب والألعاب. تستخدم لغة بايثون بشكل كبير لتطوير وبرمجة تطبيقات سطح المكتب ذات الواجهات الرسومية GUI سواء التطبيقات البسيطة كالآلة الحاسبة أو تطبيقات تشغيل الوسائط أو التطبيقات الأكثر تعقيدًا من خلال توفير مجموعة مكتبات قوية ومليئة بأدوات واجهة المستخدم مثل Tkinter و wxPython و PyQt التي تسهل على المبرمج تخطيط وإنشاء تطبيقات سطح مكتب متوافقة مع مختلف أنظمة التشغيل. كما تعتبر بايثون ملائمة بشكل مثالي لتطوير الألعاب فهي توفر العديد من المكتبات وأطر العمل المساعدة مثل PyGame و Pyglet و PyKyra و PyOpenGL و Panda3D ...إلخ. التي تجعل من إنشاء الألعاب التفاعلية أسهل بكثير من استخدام لغات برمجة أخرى. 5. برمجة العتاد واللوحات الإلكترونية إذا كنت مهتمًا ببرمجة العتاد واللوحات الإلكترونية وبرمجة التطبيقات المضمنة Embedded Product وانترنت الأشياء فيمكنك البدء باستخدام شريحة راسبيري باي Raspberry Pi التي تعتبر حاسوبًا أوليًّا يعمل بنظام لينكس Linux ويستخدم لغة بايثون بشكل ضمني ليمكن المبرمجين والمتعلمين من تطوير مشاريع عملية رائعة مثل ساعة ذكية تعرض الوقت أو بوت للرد الآلي أو تطبيق بث مباشر على يوتيوب أو تطبيق للتحكم بالكاميرا وجعلها تلتقط الصور وتسجل مقاطع الفيديو ...إلخ. بكل سهولة. هذه كانت بعض المجالات البارزة التي تستخدم فيها لغة بايثون، إضافة إلى الكثير من المجالات الأخرى التي لا يسعنا حصرها هنا. لماذا بايثون؟ إنّ تحديد أفضل لغة برمجة للتعلم قد يكون مهمة صعبة ولو سألت عدة أشخاص عن لغة البرمجة التي يجب تعلمها، فستحصل على عدة إجابات، ويكفي أن تدخل على جوجل وتكتب أفضل لغة برمجة، وستجد آراءً مختلفةً، وجدالًا لا ينتهي حول هذا الموضوع. لا أريد أن أبدأ حرب لغات البرمجة هنا، ولكنني سأحاول في هذه الفقرة تقديم بعض الحجج لتبرير لماذا أرى أنّ بايثون هي لغة المستقبل، وأن تعلم لغة بايثون مثالي للمبتدئين الذين يريدون دخول عالم البرمجة وعلوم الحاسوب. شعبية لغة بايثون بحسب استطلاع موقع stackoverflow، تحتل لغة بايثون المرتبة الرابعة في لغات البرمجة الأكثر استخدامًا من قبل المبرمجين والمطورين حول العالم بعد JavaScript و HTML/CSS و SQL، متفوقة على لغات مثل جافا و ++C و C#‎‏‎‏‎‎‎‎، كما أنها سادس أكثر لغة برمجة مرغوبة من قبل المبرمجين. فبايثون ليست لغة قوية وفعالة فحسب، بل هي فوق ذلك محبوبة من قبل المبرمجين، ولا عجب في ذلك فهي سهلة ومرنة وتوفر مكتبات هائلة للمبرمجين تسهل عليهم الكثير من الجهود في كتابة الكود، فهل لا يزال لديك شك في أن تعلم لغة بايثون هو خيار مثالي لك؟! يوضح المخطط التالي إحصائية أجرتها منصة StackOverlow عام 2022 عن أكثر لغة شعبية مفضلة في أوساط المبرمجين وموضع لغة بايثون فيها: كما يوضح المخطط التالي إحصائية أخرى أجرتها منصة StackOverlfow أيضًا عام 2022 عما إذا كانت لغة البرمجة محبوبة (الأزرق) أم مخفية (البنفسجي) وللغة بايثون نصيب جيد من المحبوبية: دعم لغة بايثون نظرًا لشعبيتها الكبيرة، تتمتع بايثون بدعم جيد على جميع المستويات تقريبًا. وباعتبارها اللغة المفضلة للمبتدئين، فهناك مجتمع داعم كبير ومتعاون وكم هائل من المراجع والمواد والدورات التعليمية التي تشرح مفاهيم البرمجة الأساسية، إضافة إلى صياغة اللغة وتطبيقاتها. فسواء كنت هاويًا، وتحب تعلم البرمجة كهواية، أو لأجل استخدامها في مجال عملك، مثل تحليل البيانات ومعالجة اللغات الطبيعية وغير ذلك، أو كنت تريد أن تعمل كمستقل، أو تدخل سوق العمل وتحقق دخلًا من البرمجة، ففي جميع هذه الحالات، سيكون تعلم لغة بايثون خيارًا مثاليًا لك. بايثون مطلوبة في السوق تُستخدم لغة بايثون من قبل بعض أكبر الشركات في مجال التكنولوجيا، مثل Uber و PayPal و Google و Facebook و Instagram و Netflix و Dropbox و Reddit. إضافةً إلى هذا، تُستخدم بايثون بكثافة في مجال الذكاء الاصطناعي والتعلم الآلي وتحليل البيانات ومراقبة الأنظمة وغير ذلك. يقدر موقع stackoverflow، الدخل السنوي لمطوري بايثون بحوالي 71 ألف دولار، وبالرغم من أن الاستبيان الذي أجراه الموقع مبني على مشاركين معظمهم من الولايات المتحدة والهند وألمانيا ولا يعكس الرواتب في منطقتنا العربية إلا أن الرقم كبير بالمقارنة مع باقي المهن، ويدل على أهمية هذه اللغة وأجرها المرتفع في سوق العمل. ولا ننسى أن لغة بايثون كما أشرنا لغة عامة الأغراض وقادرة على إيجاد الحلول الفعالة في العديد من المجالات المختلفة وهذا من شأنه بكل تأكيد حث أرباب العمل على توظيف مطوري بايثون والاستفادة من مهاراتهم وخبراتهم في عدة مجالات. أهمية تعلم لغة بايثون قد تمكنت لغة بايثون طيلة هذه السنوات من لحظة انطلاقها إلى اليوم من إثبات إمكانياتها لتعد واحدة من أهم لغات البرمجة وأكثرها شعبية وجدارة كما أشرنا، ويبرز اسمها بين أوساط المبرمجين والمطورين والطلاب على حد سواء كما أن مختلف الجامعات بدأت بتدريسها في الفصول الأولى للطلاب وتراها المخيمات والدورات البرمجة خيارها الأول لتعليم البرمجة لغير المختصين. أضف إلى ذلك أن لغة بايثون نالت ثقة الكثير من المواقع والشركات العملاقة واليوم تستخدمها كل من شركات Spotify و Google و Amazon بشكل أساسي إضافة إلى Facebook التي تستخدم بايثون لمعالجة الصور وإدارة بنيتها التحتية، وفي كل يوم تتحول شركات جديدة معروفة عالميًا إلى استخدام بايثون مثل YouTube و DropBox و Instagram التي قررت كذلك استخدامها وفضلتها على PHP. كما تُستخدم لغة بايثون أيضًا من قبل بعض الجهات العلمية والبحثية، مثل وكالة الفضاء الأمريكية ناسا، والتي لها مستودع خاص بالمشاريع المُطورة ببايثون كما أنها تقدم دورات تدريبية لتعليم لغة بايثون من الصفر للاحتراف لعلمائها ومهندسيها ليتمكنوا من معالجة بياناتهم بشكل أفضل وأسرع. كيفية تعلم لغة بايثون تعرفت إلى الآن على بايثون وأهميتها ومميزاتها واستخدامات لغة بايثون المختلفة وفرص العمل فيها، واقتنعت بأهمية تعلم لغة بايثون لذا قد تتساءل من أين تبدأ؟ سأجيبك في هذا القسم بالتفصيل. هنالك مساران لتعلم البرمجة عمومًا وتعلم لغة بايثون خصوصًا، إما في أروقة الجامعة أو عبر دورات متخصصة، أما في مسار الجامعة فستتكفل بوضع خطة تعلم عبر فصولها وسنواتها وفي كل الأحوال قد تلجأ إلى الدورات حتى لو دخلت الجامعة بسبب الكم النظري الكبير الذي تعطيه الجامعة غافلة الجانب العملي التطبيقي أو بسبب نسيان اللغة وعدم البرمجة فيها إن جرى تدريسها في السنوات الأولى وهنا تجد نفسك تبحث عن دورات برمجة متخصصة. سأختصر عليك الطريق وأشير إلى أفضل دورة برمجة متخصصة لتعلم لغة بايثون وهي دورة تطوير التطبيقات بلغة بايثون من أكاديمية حسوب وهي دورة منهجية شاملة بعدد ساعات يزيد عن 60 معدة من قبل مبرمجين أكفاء تأخذ بيدك خطوة بخطوة لتعلم لغة بايثون من الصفر وحتى الاحتراف وتبني خلالها الكثير من التطبيقات العملية، وهي كفيلة بأن تؤهلك لبدء حياتك المهنية كمطور بايثون ودخول سوق العمل والحصول على أول وظيفة خلال ستة أشهر. وإن كنت ممن يفضلون التعلم من خلال الكتب الإلكترونية لما توفره من شمولية وتنظيم في المعلومات، فيمكنك تنزيل كتاب البرمجة بلغة باثيون من أكاديمية حسوب. هل تريد المزيد من المصادر؟ ما رأيك بزيارة موسوعة حسوب الشاملة التي تضم توثيقات الكثير من لغات البرمجة، بما في ذلك توثيق لغة بايثون. ننصحك أيضًا بالاطلاع على قسم دروس ومقالات متنوعة حول لغة بايثون وهذه الدروس تُحدَّث باستمرار لذا كن على اطلاع دائم عليها لتواكب كل جديد وإن كنت مهتمًا بتعلم لغات برمجة أخرى، فيمكنك زيارة قسم البرمجة في الأكاديمية. وإن أشكل عليك شيء ما فيمكنك أن تسأل عنه في قسم الأسئلة والأجوبة الخاص بالأكاديمية ليجيبك عنه أحد المبرمجين أو تطرحه للنقاش مع المهتمين في مجتمع حسوب IO. نصائح لتعلم لغة بايثون أخيرًا وليس آخرًا، إليك أهم النصائح التي عليك اتباعها لتعلم لغة بايثون من الصفر حتى الاحتراف. 1. حدد المجال الذي تريد التخصص فيه مجالات العمل في بايثون متنوعة وتحديد المجال أو المسار الوظيفي الذي تنوي التخصص فيه سيمكنك من تحديد المفاهيم والمهارات الفنية التي يتوجب عليك تعلمها والتركيز عليها دون سواها، وضع خطة زمنية لإتقان جميع المهارات اللازمة لتحقيق هدفك والتزم بها قدر المستطاع. فإذا كان هدفك من تعلم بايثون هو إنشاء مواقع ويب ضع في خطتك تعلم Django أو Flask، وإذا كان هدفك هو تطوير الألعاب فضع في خطتك التعرف على إحدى المكتبات القوية في تطوير الألعاب مثل Pyglet أو Panda3D أو Pygame ...إلخ. 2. تعلم أساسيات لغة بايثون أيًا كان المجال الذي حددته في الخطوة السابقة فلا بد لك في البداية من تعلم أساسيات لغة البايثون التي تمثل أساسًا لأي لغة برمجة والتي تشمل: طريقة تثبيت لغة بايثون على جهازك وإنشاء بيئة افتراضية. صياغة الجمل والعبارات في بايثون تعريف المتغيرات وأنواع البيانات الأولية. العمليات الحسابية والمنطقية الأساسية. عمليات الإدخال والإخراج ومفهوم الاستثناءات وطرق معالجتها. الدوال البرمجية وطريقة تعريفها واستدعائها. هياكل البيانات المركبة مثل القوائم والمجموعات والقواميس تعليمات التحكم بتدفق البرنامج مثل التعليمات الشرطية والحلقات التكرارية. مفاهيم البرمجة كائنية التوجه أهم المكتبات القياسية التي تستخدم في العديد من المشاريع. طرق التعامل مع الملفات. الخبر الجيد هنا أن تعلم هذه الأساسيات لن يستغرق منك الكثير من الوقت لأن بايثون كما أشرنا لغة سلسة وبسيطة وسهلة التعلم. 3. تعلم المواضيع المتقدمة التي تخدم أهدافك بعد إتقان المفاهيم الأساسية عليك الانتقال خطوة للأمام والتعرف على مواضيع متقدمة تتعلق بشكل مباشر بالتخصص الذي تنوي العمل به والمسار هنا يختلف حسب التخصص الذي اخترته لنفسك والبدء بإتقان جميع المهارات اللازمة لتحقيق هدفك. يمكنك في هذه المرحلة على سبيل المثال التعرف على مفاهيم مثل قواعد البيانات والتعامل معها، وتعلم مكتبات بايثون والتدريب على استخدامها من خلال تطبيقها في برامج عملية بالطبع ستتطلب المشاريع المختلفة مكتبات مختلفة لذا من المهم التعرف على المكتبات الأكثر شيوعًا في مجالك والتركيز عليها. كما ستحتاج لتعلم أحد أطر عمل بايثون Python Frameworks التي تساعدك على تطوير مشاريعك وكما ذكرنا بالنسبة للمكتبات ستعتمد الأطر التي عليك تعلمها على التخصص الذي تنوع العمل به. 4. عزز ما تعلمته في مشاريع عملية يفترض الآن أنك تملك كافة المهارات اللازمة والأسس النظرية، لكن المعرفة التقنية وحدها لا تكفي لذا حان الوقت لبدء التدرب على تطوير مشاريع لصقل كل هذه المهارات. لذلك من الضروري أن تتدرب على تطوير مجموعة من المشاريع في مجال تخصصك وتبني معرض أعمال يظهر هذه المهارات فهذا يعزز فرصتك للحصول على وظائف فعلية وبدء حياتك المهنية كمطور بايثون. يمكنك ريثما تحصل على فرصة عمل مناسبة أن تعمل بشكل مستقل على مواقع العمل الحر مثل مستقل وخمسات وتنجز المشاريع للعملاء عبر هذه المنصات. 5. لا تهمل مهاراتك الناعمة لاشك أن المهارات الفنية ومعرض الأعمال القوي أمر ضروري لأي مبرمج لكن هناك نوعًا آخر من المهارات الضرورية لأي مبرمج والتي يفضل أصحاب العمل توفرها لدى المطورين والمبرمجين وأهمها: مهارات حل المشكلات والتفكير المنطقي الرغبة في التعلم المستمر والاطلاع على كل جديد في مجالك. مهارات التواصل الفعال والعمل الجماعي خاتمة تعرفنا في مقال اليوم على لغة بايثون ورأينا كيف أنها تجمع بين البساطة والسهولة من جهة وبين القوة والفعالية من جهة أخرى، وتعرفنا على أهم مميزات بايثون ومستقبلها الواعد الذي يفتح لمتعلمها الكثير من الفرص والآفاق. وختمنا المقال بأهم الخطوات والنصائح لتتعلم بايثون بسرعة واحترافية. هل أنت متحمس لتعلم بايثون أو بدأت فعلًا بتعلمها ولديك أي استفسار حول أي من المواضيع التي ذكرناها في المقال؟ اكتبها في قسم التعليقات أسفل المقال وسنحرص على الإجابة عليها بأقرب فرصة. وفّقك الله تعالى.
    4 نقاط
  24. اعذرني على التحدث معك بصراحة، لكن بتلك الطريقة لن تصل إلى شيء في البرمجة، فهى مملة بطبيعتها وعملية التعلم مملة أيضًا فقد تواجه مشكلة تقتضي منك يوم كامل لحلها فهل ستترك مجال البرمجة؟ دائمًا ما أنصح أن تجعل الملل صديقًا لك، فللأسف برمجت عقولنا على المكافآت السريعة، تخيل معي أنه قبل أن تتعلم البرمجة تقضي وقتك في مشاهدة التيك توك وفيديوهات يوتيوب السريعة وألعاب الكمبيوتر والسوشيال ميديا وخلافه. وبدأت تعلم البرمجة لتجد أنه لا يوجد مكافآت سريعة، بل جد واجتهاد وساعات مذاكرة طويلة، والمكافأة تأتي بعد فترة من المذاكرة حيث ستجد نفسك تتحسن بعد فترة وتصبح قادر على تنفيذ مشروع بسيط مثلاً وستفرح بذلك. وفي البرمجة لا يوجد طريق مختصر، أو يوجد لكنه نهايته مسدودة، حيث ستصبح قداراتك البرمجية ضعيفة، ولن تتمكن من تعلم تقنيات أو لغات جديدة، فعند التأني في تعلم الأساسيات وبذل الوقت والجهد، فستجد نفسك تتعلم بشكل أسرع فيما بعد وقادر على تجربة أشياء جديدة ومستوعب للمصطلحات البرمجية وتعقيداتها دون مشكلة، ولن تخاف إذا رأيت كود لم تراه من قبل. الأمر أشبه بتخطي فترة التدريب في ألعاب الكمبيوتر، للعب مباشرًة، لتجد نفسك أنك مشتت وتتخبط وتعود إلى التدريب مرة أخرى أو تقوم بالبحث عن كيفية اللعب أو تجاوز عقبة ما؟ وأنصحك بقراءة النقاشات التالية، فستجد بها إجابة على الكثير من الأسئلة لديك:
    4 نقاط
  25. - الفرق بين الParameters والArguments هو أن الParameters هي المتغيرات التي تحدد في تعريف الFunction، بينما الArguments هي القيم التي تمرر إلى الFunction عند استدعائها. مثلا، في الFunction التالية: function add(x, y) { return x + y; } x و y هما Parameters، وعندما نستدعي الFunction بهذه الطريقة: add(3, 5); 3 و 5 هما Arguments. - الفرق بين الDeclaration والInitialization هو أن الDeclaration هو إعلان اسم ونوع المتغير أو الFunction دون تحديد قيمته، بينما الInitialization هو تعيين قيمة مبدئية للمتغير أو الFunction. مثلا، في هذا المثال: var x; // declaration x = 10; // initialization function square(n) { // declaration and initialization return n * n; } - الExecution Context هو بيئة تشغيل للكود في لغة برمجة معينة. يحدد ما هي المتغيرات والFunctions والObjects المتاحة للكود في ذلك الوقت. عادة، يوجد Execution Context عام للبرنامج ككل، وExecution Contexts محلية لكل Function تستدعى. مثلا، في هذا المثال: var x = 10; // global variable function add(y) { // global function var z = 5; // local variable return x + y + z; } console.log(add(7)); // 22 console.log(z); // error: z is not defined الExecution Context العام يحتوي على المتغير x والFunction add، بينما Execution Context للFunction add يحتوي على المتغير y (الذي يأخذ قيمة Argument) والمتغير z (الذي يعرف داخل الFunction). عندما نستدعي add(7)، يتم إنشاء Execution Context جديد للFunction add ويتم تشغيل كودها داخله. عندما نحاول طباعة قيمة z خارج الFunction، نحصل على خطأ لأن z غير معرف في Execution Context العام. - الLexical Environment هو مفهوم مرتبط بالExecution Context، وهو يشير إلى كيفية تحديد مجال (Scope) المتغيرات والFunctions في لغة برمجة معينة. يعتمد الLexical Environment على كيفية كتابة الكود (Lexical Structure)، وليس على كيفية تشغيله (Dynamic Structure). مثلا، في هذا المثال: var x = 10; // global variable function foo() { // global function var y = 20; // local variable in foo function bar() { // local function in foo var z = 30; // local variable in bar console.log(x + y + z); // 60 } bar(); // call bar } foo(); // call foo الLexical Environment يحدد أن المتغير x متاح للFunctions foo و bar، وأن المتغير y متاح فقط للFunction foo و bar (ولكن ليس للبرنامج الرئيسي)، وأن المتغير z متاح فقط للFunction bar (ولكن ليس للFunction foo أو للبرنامج الرئيسي). هذه التراتبية في المجالات تسمى Lexical Scoping أو Static Scoping.
    4 نقاط
  26. هل اللغة الإنجليزية ضرورية لبدء التعلم؟ مستوى اللغة الإنجليزية عندي ما قبل المتوسط، وأرغب في امتهان البرمجة، فهل مستواي الحالي سيكون عائق...؟
    4 نقاط
  27. السلام عليكم ورحمة الله وبركاتة هل فعلا دورة تطوير تطبيقات البايثون هي كل شي احتاجه للحصول على وظيفة في شركة كمطور بايثون ( تطوير الويب Back end ) ؟ ايضا ماهي نصائحكم لي خلال الدورة ؟ انا قسمت الدورة الى اجزاء ليسهل علي مشاهدة الفيديوهات بشكل يومي
    4 نقاط
  28. نعيش اليوم في عصر يتصف بتفجر غير مسبوق في كمية البيانات، فكل الأجهزة التي نتعامل معها في حياتنا اليومية سواء هواتفنا الجوالة أو مواقع التجارة الإلكترونية التي نتسوق منها أو شبكات التواصل الاجتماعي التي نتصفحها بشكل يومي وحتى أجهزة الاستشعار الموجودة في أجهزة إنترنت الأشياء التي باتت منتشرة في كل مكان حولنا…إلخ. كلها تتعقبنا وتسجل بياناتنا والإجراءات التي نقوم بها والخيارات التي نتخذها ولك أن تتخيل كمية البيانات المهولة التي تولد عن كل هذا طوال الوقت! هذه البيانات الضخمة في شكلها الأولي لا تعني أي شيء في الواقع لذا كان لا بد من تحليلها واستخراج المعلومات المفيدة منها وهنا يأتي دور علم البيانات الحديث الذي يعالج كل جزء من البيانات التي يتم إنشاؤها اليوم لتطوير وتيرة الأعمال واتخاذ القرارات الصائبة والموثوقة التي تعتمد على هذه المعلومات. سنركز في مقال اليوم على أحد التخصصات المهمة في هذا العلم وهو تحليل البيانات Data analysis وهو التخصص الذي يهتم باستخلاص معلومات ذات قيمة من هذه البيانات الخام ونوضح أهميته في عالم الأعمال اليوم ونكتشف أهم الأدوات والتقنيات والمهارات التي تحتاجها لتصبح محلل بيانات محترف، كما سنكتشف أهم الفروقات بين علم البيانات وتحليل البيانات وهندسة البيانات ونسرد بعض الأمثلة الواقعية على شركات تستخدم تحليل البيانات لتحسين أعمالها بأسلوب بسيط وسهل الفهم بعيدًا عن المصطلحات المعقدة. ما هو تحليل البيانات؟ علم تحليل البيانات Data analysis هو تنظيف وتحويل ونمذجة البيانات حتى تحويلها أخيرًا إلى معلومات مفيدة تساعد في اتخاذ قرارات أو توضيح رؤى، حيث يهدف إلى تحويل البيانات إلى معلومات والفرق بين البيانات والمعلومات هو أن الأولى عبارة أن أجزاء بيانات متناثرة تفتقد المعنى مثل عدد 25 أو اسم أحمد بينما الأخيرة هي بيانات لها معنى مثل أن العدد 25 هو عمر أحمد فأصبح له معنى، هذا على مستوى عدد فكيف لو كان لدينا آلاف أو ملايين البيانات والأعداد المماثلة، تخيل! يقوم محللو البيانات باستخراج البيانات الأولية وتنظيمها ثم تحليلها وتحويلها من أرقام غير مفهومة إلى معلومات مفسرة وواضحة وبعد الانتهاء من تفسير البيانات تصاغ النتائج التي تم التوصل إليها بشكل اقتراحات أو توصيات حول الخطوات التالية التي يجب اتخاذها في العمل وتتقاطع هذه المهام مع مهام مهندسي البيانات. يمكنك التفكير في مجال تحليل البيانات كشكل من أشكال ذكاء الأعمال أو ما يعرف استخبارات الأعمال Business intelligence واختصارًا BI، وهو علم يستخدم لحل مشاكل وتحديات معينة داخل المؤسسات والشركات، وتكمن أهميته وقوته في العثور على مجموعات وأنماط البيانات التي يمكنها أن تخبرنا بشيء مفيد وملائم حول مشكلة أو أمر معين من العمل يخص العملاء أو الموظفين أو المنتجات أو المخزون …إلخ. ولا يساعد هذا العلم على فهم السلوك الماضي فحسب بل يمكّننا من التنبؤ بالاتجاهات والسلوكيات المستقبلية وبهذا تكون أي قرارات تتخذ مدروسة بناءً على ما تخبرنا به البيانات وليست مجرد قرارات تعتمد على التخمين والحدس. الفرق بين علم البيانات وتحليل البيانات لا بد أن نعرف قبل الغوص في الفرق بين علم البيانات وتحليل البيانات أنّ كلا العلمين يتعامل مع البيانات الضخمة لكن لكل منهما نهجه الخاص. وعمومًا يشكل علم البيانات مظلة تضم تحتها علم تحليل البيانات وتستفيد من إمكاناته لكنه يغطي مجالًا أوسع في التعامل مع البيانات. يركز علم البيانات على إيجاد ترابط منطقي بين كم هائل من البيانات، بينما صمم تحليل البيانات لإيجاد ميزات الرؤى المستخلصة من تلك البيانات. بكلمات أخرى: هو فرع من علم البيانات يُعنى بالإجابة عن أسئلة محددة يطرحها علم البيانات وكيفية إنجاز أو تطبيق هذه الإجابات. يقضي الفرق بين علم البيانات وتحليلها اختلافًا في الطرق المستخدمة في العمل، إذ يستخدم عالم البيانات مثلًا الرياضيات والإحصاء وخوارزميات تعلم الآلة لتصحيح وتنظيف ومعالجة وتفسير البيانات الخام لاستخلاص الرؤى منها وإنجاز نماذج أولية توضح الترابط بين البيانات المدروسة. أما محلل البيانات فهو من يتفحص مجموعات البيانات ليجد مدلولها ويخلص بنتائج ملموسة، إذ يجمّع محلل البيانات كميات كبيرة من البيانات المهيكلة ثم ينظمها ويحللها ليتعرف على الأنماط التي يبحث عنها ثم يحاول بعد ذلك تصوير هذه الأنماط بعرضها على شكل مخططات ورسومات وغير ذلك. باختصار ينقب علم البيانات في البيانات الخام بحثًا عن رؤى وأفكار بينما يُستخدم تحليل البيانات في نقل هذه الرؤى والأفكار التي قد تبدو معقدة إلى لغة أبسط يفهمها التقنيون وغير التقنيين في المؤسسة التي طلبت الدراسة ويطورون أنظمة لأتمتة وتحسين الأداء العام للعمل مع البيانات. أفردنا لعلم البيانات مقالًا مفصلًا بعنوان علم البيانات Data science: الدليل الشامل يمكنك الرجوع إليه للاستزادة عن علم البيانات. أهمية تحليل البيانات في شركات الأعمال تبرز أهمية تحليل البيانات في المقام الأول بسبب الكمية الضخمة من البيانات التي تجمع في مختلف المنظمات ومؤسسات العمل فعلى سبيل المثال تقوم شركات البيع بالتجزئة اليوم بجمع وتخزين كميات هائلة من البيانات وتتعقب أي منتجات أو خدمات قمت بتصفحها وشرائها وتسجل كافة الصفحات التي قمت بزيارتها على مواقعها الإلكترونية وتتعقب القنوات التي اشتريت منها وتتعرف على عاداتك في الإنفاق وتجمع كل شاردة وواردة عنك! هذه البيانات التي تجمع بكميات مهولة هي واحدة من أهم أصول الشركات التجارية وأكثرها استراتيجية في عالم الأعمال لكن هل تساءلت لماذا تتنافس الشركات فيما بينها لجمع كل هذه المعلومات؟ لأن التنقيب في هذه البيانات وتحليلها وفهمها يساعدها على استخراج كنوز منها وهذه الكنوز هي معلومات قيمة تساعد أصحاب العمل على اتخاذ أفضل القرارات وتطوير الأداء بشكل مضمون. فالحصول على البيانات وجمعها لا يكفي وحده وهو ليس الغاية في الواقع فماذا يفعل صاحب العمل بكميات مهولة من البيانات المختلفة في بنيتها والتي قد تكون في كثير من الأحيان مكررة أو ربما ناقصة أو غير دقيقة، صاحب العمل يريد في النهاية الخلاصة أو بكلام آخر يريد القصة التي ترويها هذه البيانات والمستنتجة من كل هذا الزخم كي يبني عليها قرارًا صائبًا بشأن الميزانية أو الأسعار أو الموارد وفي نهاية المطاف يسعى في المقام الأول لزيادة أرباحه النهائية وهنا يبرز دور علم البيانات وتحليل البيانات. فشركات البيع على سبيل المثال قادرة الاستفادة من تحليل هذه البيانات في معرفة العادات الشرائية لعملائها وتوصيتهم بأنسب المشتريات وتحديد التحسينات الأنسب في أسعارها وتتبع مخزونها وكشف عمليات الاحتيال ومقارنة مستوى المبيعات وغير ذلك الكثير. وكي تتمكن الشركات من ذلك يجب أن تتمكن من صياغة البيانات وتمثيلها بشكل تقارير مناسبة توضح لصناع القرار في مجال الأعمال المغزى منها وتمكنهم على فهم دلالاتها واتخاذ إجراءات موثوقة وسريعة بالاعتماد عليها وإحداث تغيير إيجابي داخل الشركات لذا تلجأ إلى تحليل البيانات الذي يفسر لأصحاب العمل كل ما تحاول البيانات إخبارهم به. مهام محلل البيانات يلعب محلل البيانات دورًا حيويًا ومهمًا في الشركات والمنظمات ويساعدها على فهم البيانات الضخمة المتوفرة لديها ويتعاون مع باقي أعضاء فريق البيانات للمساعدة في استخراج عن أي معلومات مفيدة وقيمة. كما يقوم محلل البيانات بجمع وتحليل البيانات لحل مشكلة معينة ويكون مسؤولًا عن تحويل البيانات الأولية إلى رؤى ذات مغزى ويستخدم البيانات والأفكار التي توفرها عملية تحليل البيانات لحل مشاكل محددة أو الإجابة على أسئلة محددة. وإليك قائمة بأهم المهام التي يقوم بها محلل البيانات: جمع البيانات الأولية معالجة البيانات ضمان أمن وخصوصية البيانات نمذجة البيانات فهم وتفسير البيانات عرض البيانات نستعرض في الفقرات التالية المزيد من التفاصيل حول كل مهمة من هذه المهام. 1. جمع البيانات الأولية الخطوة الأولى هي جمع البيانات الخام ويمكن أن يقوم محلل البيانات بهذه المهمة ويجمع المعلومات المطلوبة فالبيانات التي سيحللها قد تكون موجودة في مصادر مختلفة، فهي إما أن تكون موجودة في قواعد بيانات الشركة مبعثرة هنا وقد يحتاج لجمعها من خلال إجراء استطلاعات الرأي أو من خلال تتبع بيانات زوار موقع الشركة على الويب، أو من خلال الاستعانة ببيانات الشركات المنافسة حيث يمكن للشركات تبادل البيانات فيما بينها لتحقيق مصالح مشتركة. 2. معالجة البيانات بعد جمع البيانات يجب على محلل البيانات البدء بتنظيف وإعداد هذه البيانات الأولية لأنها في الغالب تحتوي على نسخ مكررة أو قيم خاطئة أو غير دقيقة أو مفقودة للحصول على بيانات سليمة وموثوقة ومفهومة وذات جودة عالية وقد يحتاج إلى تحويل البيانات من هيكل إلى آخر أو من نوع إلى آخر حتى يصبح من الممكن التعامل معها بإحدى لغات البرمجة أو تخزينها في قواعد البيانات كي تكون تفسيرات هذه البيانات دقيقة فإذا لم تكن البيانات التي نبني نحللها نظيفة وصحيحة لن تكون التحليلات والنتائج التي تحصل عليها دقيقة. أحيانًا وفي الشركات أو المشاريع المتوسطة إلى الكبيرة يتولى هذه المهمة مهندس البيانات الذي يركز على هذه المهمة نظرًا لكبر المشروع أو ضخامة البيانات بينما يركز محلل البيانات على عملية التحليل بعيدًا عن عملية الجمع والمعالجة والتجهيز الذي يكون دوره تاليًا. 3. ضمان أمن وخصوصية البيانات قد يحتاج محلل البيانات لإخفاء هوية البيانات الحساسة والشخصية أو حذفها بالكامل لمنع الآخرين من الاطلاع عليها عندما لا تكون هناك حاجة لها للحصول على النتيجة التي يريدها، وأيضًا قد يتولى مهندس البيانات هذه المهمة وتأتي البيانات مشفرة ومحمية إلى محلل البيانات ليقوم بالخطوات التالية. 4. نمذجة البيانات الخطوة التالية هي تحليل وتحديد نقاط البيانات المختلفة التي تم جمعها وإنشاءها بواسطة محللي البيانات واختيار أنواع البيانات المراد تخزينها وجمعها وإنشاء علاقات بينها وتحديد كيفية ترابط مجموعات البيانات مع بعضها البعض وكيفية عرض هذه البيانات وتساعد النمذجة الصحيحة للبيانات على تسريع وتيرة فهمها وإعداد التقارير الخاصة بها. 5. فهم وتفسير البيانات بعد نمذجة البيانات تأتي الخطوة التالية وهي تفسير هذه البيانات من خلال تحديد الأنماط أو الاتجاهات في البيانات التي يمكنها أن توفر معلومات مفيدة تُستخلص منها إجابات على أسئلة توضح سلوكيات أو تفسر أسباب لمشكلات تخص العمل كما تُبنى عليها قرارات وغيرها. 6. عرض البيانات الخطوة الأخيرة والضرورية التي يتوجب على محلل البيانات القيام بها هي عرض وتقديم البيانات بشكل يضفي عليها الحيوية فالمعلومات التي حصلت عليها يجب أن تصاغ على هيئة مخططات ورسوم بيانية وتقارير مكتوبة بألوان متناسقة وخطوط مفهومة ثم تقدم لأصحاب العمل المهتمين لمساعدتهم على فهم ما تعنيه هذه البيانات وتمكينهم من اتخاذ قرارات دقيقة وحيوية بشأنها. مجالات تحليل البيانات نظرًا للتطور التقني الحاصل في عصرنا الراهن فقد أصبح جمع البيانات وفرزها وتحليلها أمرًا ضروريًا لأي مجال من مجالات الحياة وبات من الضروري توظيف محللي البيانات في كافة قطاعات العمل، وفيما يلي نستعرض بعض المجالات والتخصصات التي يمكن لمحللي البيانات العمل فيها. محلل الأعمال محلل الأعمال هو المسؤول عن تحليل ومعالجة البيانات التي تساعد الشركات والمؤسسات على تفسير وتوثيق العمليات التجارية والمنتجات والخدمات والبرامج ويتمثل دوره الأساسي في زيادة كفاءة الأعمال. محلل تسويق محلل التسويق أو محلل أبحاث السوق هو الشخص المسؤول عن جمع وتحليل بيانات المنافسين والعملاء فهو يدرس المنافسين ويبحث عن تفضيلات العملاء وظروف العمل واتجاهات السوق وأي معلومات أخرى تساعد في جهود التسويق للشركة مثل تحديد المبيعات المحتملة لمنتج أو خدمة ما أو تحديد المنتجات التي يفضلها الناس وتقدير تكلفتها وتحديد الفئات التي ستشتريها ويسعى بشكل أساسي لزيادة الإيرادات وتحسين الحملات التسويقية. محلل العمليات محلل العمليات أو محلل أبحاث العمليات هو المسؤول عن تحليل وتقييم البيانات بهدف تحسين العمليات التجارية وحل المشكلات الداخلية وضمان سير عمليات الشركة بسهولة وسلاسة وإنشاء نماذج التسعير والتسويق، فهو من يحدد الحملات التسويقية التي ستجلب عملاء جدد ويجد الطرق الأنسب لخفض التكاليف دون المساس بجودة المنتج أو الخدمة التي تقدمها الشركة. محلل نظم تقنية المعلومات يعرف محلل نظم تقنية المعلومات أيضًا باسم محلل النظم وهو متخصص تقني لديه معرفة واسعة بأنظمة التشغيل والبرامج والأنظمة الأساسية ومهمته الأساسية تحليل وتصميم وتنفيذ نظم المعلومات والعمل على مشاكل العمل باستخدام التقنيات والأدوات التي يحترفها. المحلل المالي المحلل المالي Financial Analyst هو شخص مسؤول عن جمع البيانات وتنظيم المعلومات وتحليل البيانات المالية السابقة للعملاء والشركات بهدف تقديم المشورة الأفضل حول كيفية إنفاق الأموال لتعظيم الأرباح وتقييم نتائج السندات والأسهم والاستثمارات الأخرى. محلل كميات محلل الكميات أو المحلل الكمي quantitative analyst هو شخص متخصص في حل المشكلات المالية وإدارة المخاطر باستخدام الأساليب الرياضية والإحصائية فهو يطور وينفذ نماذج متقدمة تساعد المؤسسات والشركات التي تعمل في مجال الاستثمار وتداول الأوراق المالية مثل شركات التأمين وشركات المحاسبة وشركات البرمجيات المالية على اتخاذ القرارات المناسبة وتحديد فرص الاستثمار والتسعير المناسبة وإدارة المخاطر. محلل ذكاء الأعمال محلل ذكاء الأعمال business intelligence يحلل تقارير أبحاث السوق التي تسلط الضوء على أنماط السوق والاتجاهات التي قد يكون لها تأثير على عمليات الشركة وأهدافها المستقبلية ويعرض النتائج على الجمهور المناسب. محلل استراتيجي محلل استراتيجيات الشركة هو المختص في حل مشاكل العمل فهو يعتمد على تحليل البيانات التي تمكنه من توفير نتائج مفيدة تساعد الشركات على اتخاذ قرارات أفضل ومعالجة التحديات التي تواجهها وتحديد فرص النمو الجديدة للشركة وتطوير الخطط التي تحدد أفضل الطرق والاستراتيجيات لتحقيق الأهداف. محلل طبي يهتم المحلل الطبي أو محلل الرعاية الصحية بجمع وتنظيم وتحليل وتفسير البيانات الطبية مثل بيانات المرضى والعلاجات والمنتجات الطبية لتحسين العمليات التجارية للمستشفيات والمرافق الطبية وتطوير أدائها. محلل الأمني فحص المحلل الأمني البيانات لفحص أي تهديدات محتملة وتحديد ما إذا كان هناك هجوم قد وقع أو على وشك الوقوع. قد يستخدمون أيضًا معرفتهم الإحصائية والرياضية لتطوير طرق جديدة لجمع البيانات حول تهديدات محددة أو هجمات محتملة. مدير تحليل البيانات يوجه مدير تحليل البيانات فريق محللي البيانات في مقر العمل وينسق العمل بينهم ويشرف على عمليات تحويل البيانات الأولية إلى رؤى تجارية يمكن استخدامها لاتخاذ القرارات ويساعد في التوصية بحلول لإنجاز العمل والبحث عن طرق فعالة لجمع البيانات وإنشاء وتطوير النماذج الإحصائية المعقدة واستخدام الخوارزميات والاستراتيجيات الفعالة لتحليل البيانات. مسؤول قاعدة البيانات يراقب مسؤول قاعدة البيانات قاعدة البيانات ويهتم بسلامة بياناتها وسلامة الأجهزة التي توجد عليها وهو يشارك في معالجة البيانات وتحويلها والتحقق من صحتها وتنظيفها لتلبية احتياجات العمل والمتطلبات كما يهتم بأمن هذه البيانات ومنح الوصول لها واستخدامها وفق احتياجات ومتطلبات العمل فقط وتقييد وصول المستخدمين غير المصرح بهم إليها. أنواع تحليل البيانات يقسم تحليل البيانات إلى خمس مكونات أو أنواع وهي كالتالي: التحليل الوصفي Descriptive التحليل التشخيصي Diagnostic التحليل التنبؤي Predictive التحليل التقديري Prescriptive التحليل الإدراكي أو المعرفي Cognitive وكلما كان محلل البيانات أكثر خبرة كلما كان قادرًا على تحديد النوع الصحيح من التحليلات بما يتناسب واحتياجات العمل كي يضمن تحقيق أقصى استفادة من البيانات التي تمتلكها المؤسسة وبالتالي تحقيق أفضل النتائج من هذا التحليل. دعنا نتعرف بالتفصيل على طريقة إجراء كل نوع من هذه التحليلات وأهميتها في مكان العمل. 1. التحليل الوصفي Descriptive Analytic التحليل الوصفي هو نوع التحليل الأبسط والأكثر استخدامًا فهو يمكن محلل البيانات من تحليل البيانات المتوفرة باستخدام أدوات تحليل مثل Google Analytics التي تمكنه من فهم ما جرى في مؤسسته أو شركته، فالتحليل الوصفي يوفر لمحلل البيانات الإدراك المتأخر لما يجري في العمل. على سبيل المثال إذا كنت محلل بيانات وحصل انخفاض مفاجئ في مبيعات موقع التجارة الإلكترونية الخاص بشركتك في شهر ما لن تقف مكتوف الأيدي لتنتظر هل ستتحسن المبيعات في الشهر التالي بل عليك استخدام التحليلات الوصفية لتحليل بيانات كافة الأشخاص الذين زاروا الموقع في هذا الشهر لمعرفة سبب ما حدث وهل هو ناتج عن انخفاض في عدد زيارات الموقع أو خطأ في أحد الصفحات أو مرتبط بموسم محدد وتعثر على إجابة لكافة التساؤلات حياله ووصف النتائج التي حصلت عليها لأصحاب العمل. يمكن أن تستعين في إجراء هذه المهمة بأدوات التحليل مثل جوجل أناليتكس Google Analytics وتستسخدم مؤشرات قياس الأداء الرئيسية KPIs التي تمكنك من تتبع الأداء ومعرفة مدى نجاح وفشل الأهداف الرئيسية. فالتحليلات الوصفية باختصار تساعد في معرفة ما حدث في السابق مثل انخفاض المبيعات أو زيادة الإيرادات أو نقص الموارد وتلخص مجموعات البيانات الكبيرة وتصف النتائج التي تم التوصل لها لأصحاب العمل وتستفيد منها في معرفة أسباب النجاح أو الفشل السابق وإنشاء تقارير بها. هذا النوع من التحليل على أهميته يعطي المحلل نظرة ثاقبة فقط حول ما إذا كان كل شيء في العمل يسير على ما يرام أم لا، لكنه في الواقع لا يفسر السبب الجذري لوقوعها لذا تعمد الشركات عادة على الدمج بين هذا النوع من التحليل وأنواع التحليلات الأخرى للحصول على رؤية أفضل. 2. التحليل التشخيصي Predictive Analytic التحليلات التشخيصية هي الشكل الثاني لتحليل البيانات وهي تساعد أصحاب الأعمال في الإجابة عن السبب الأساسي في وقوع حدث ما أو العوامل التي تؤثر على سير العمل، فعندما يعرف محلل البيانات ما يحدث بالفعل في عمله باستخدام التحليلات الوصفية لكنه يريد أن يعرف الأسباب والعوامل التي تسببت بحدوثها بشكل جذري يأتي دور التحليل التشخيصي للإجابة عن أسئلة حول سبب وقوع الأحداث. على سبيل المثال كي يشخص محلل الأعمال إن كانت زيادة الأسعار الأخيرة على أسعار منتجات الشركة لها علاقة بانخفاض المبيعات يمكنه استخدام التحليل التشخيصي باستخدام برنامج إحصائي مثل Microsoft Excel أو يستخدم خوارزمية معينة تمكنه من تحليل بيانات المنتجات والعملاء وفحصها ومقارنتها للعثور على الإجابة الدقيقة. هناك العديد من المفاهيم الإحصائية التي يجب على محلل البيانات فهمها قبل أن يتمكن من إجراء التحليلات التشخيصية وأهمها اختبار الفرضيات والفرق بين الارتباط والسببية وتحليل الانحدار التشخيصي. تكمل تقنيات التحليلات التشخيصية التحليلات الوصفية الأساسية حيث يساعد دمج التحليلات التشخيصية والوصفية الشركات في العثور على العلاقات بين الأسباب والنتائج وفحص مؤشرات الأداء لاكتشاف سبب التحسن أو التراجع بدقة. بشكل عام تحدث هذه العملية في ثلاث خطوات: تحديد الشذوذ في البيانات فقد تكون هذه الحالات الشاذة تغييرات غير متوقعة فيمقياس أو سوق معين. جمع البيانات المتعلقة بهذه الحالات الشاذة. استخدم التقنيات الإحصائية لاكتشاف العلاقات والاتجاهات التي تشرح هذه الحالات الشاذة. 3. التحليل التنبؤي Predictive Analytic يساعد التنبؤ بالمستقبل أصحاب الأعمال على توقع اتجاهات السوق وسلوكيات العملاء وكشف حالات الاحتيال قبل وقوعها وتحليل المنافسين لتحسين وبناء استراتيجيات حديثة لتحسين نتائج الأعمال. يعتمد التحليل التنبؤي على النتائج التي تم الحصول عليها من التحليل الوصفي والتشخيصي ويستخدم للعثور على إجابات حول الأمور التي من المحتمل أن تحدث في المستقبل بناءً على النتائج والأنماط السابقة. على سبيل المثال يمكن استخدام التحليل التنبؤي في الشركات والبنوك لتحليل التركيبة السكانية للعملاء وسجلات الدفع السابقة والمنتجات التي اشتروها وأي سلوكيات سلبية حديثة وقعت من قبلهم لتوقع العملاء الذين سيتأخرون في دفع المستحقات والفواتير المترتبة عليهم ولن يسددوها في الوقت المحدد مما يمكنهم من إدارة التدفقات المالية بشكل أفضل واتخاذ خطوات للتخفيف من حدوث هذه المشكلة مثل تقديم خيارات دفع أخرى أو إرسال رسائل تذكير إلى العملاء الذين تم التنبؤ بأنهم سيتأخرون في تسديد المستحقات وتحديد أفضل تاريخ ووقت لإرسال هذه الرسائل وأفضل طريقة للاتصال بهم مثل البريد إلكتروني أو المكالمة الهاتفية أو الرسائل النصية …إلخ. كما تستخدم النماذج التنبؤية بشكل كبير في مجال الرعاية الصحية وتحلل مجموعة من البيانات المتغيرة حول المرضى مثل العمر أو العلاجات السابقة أو تاريخ المرض ومعدل الكوليسترول والوزن للتنبؤ بما إذا كان الشخص عرضة للإصابة بأمراض معينة كالسكري أو النوبات القلبية أم هشاشة العظام أم لا. يعتمد إجراء التحليل التنبؤي على الخوارزميات الإحصائية المتنوعة وعلى تقنيات التعلم الإحصائي وخوارزميات التعلم الآلي مثل الشبكات العصبية وأشجار القرار والانحدار …إلخ. التي تساعد محلل البيانات على تقديم توصيات وتوفير إجابات للأسئلة المتعلقة بما قد يحدث في المستقبل ولكونها تحليلات تعتمد على التخمينات والاحتمالات فهي تعطي نتائج تقديرية قد لا تكون صحيحة ودقيقة بنسبة مئة بالمئة. 4. التحليل التقديري Prescriptive Analytic التحليل التقديري هو الخطوة التالية التي تأتي بعد إجراء التحليل التنبؤي وهو يساعد الشركات على امتلاك رؤية ثاقبة عما يجب عليهم القيام به لحل مشاكل العمل بناءً على العوامل المشتقة من البيانات. فأثناء تحليل البيانات الضخمة لا تكون التنبؤات التي حصلنا عليها من المدخلات دقيقة كما ذكرنا وبالتالي لا يمكننا التيقن من السبب الحقيقي في حدوث مشكلات معينة وهنا يأتي دور التحليلات التقديرية. فعندما يحصل محلل البيانات على النتائج من التحليلات الوصفية والتشخيصية والتنبؤية ويعرف ما حدث ولماذا حدث ويتوقع ما قد يحدث في المستقبل يمكنه أن يستخدم التحليل التقديري لمساعدته في تحديد أفضل مسار للعمل وما الإجراءات التي يجب الإبقاء عليها وما الإجراءات التي يجب التخلي عنها لزيادة نتائج ومخرجات الأعمال. تعتمد تقنيات التحليلات التقديرية على تعلم الآلة لكونها قادرة على تحليل كميات كبيرة من البيانات بسرعة وكفاءة أكبر واختبار مجموعة كبيرة من الشروط والعثور على أنماط محددة في مجموعات البيانات الكبيرة وتقديم التوصيات بناء عليها. على سبيل المثال تستخدم خرائط جوجل التحليل التقديري لمساعدتك على اختيار وتقدير أفضل طريق عليك اتباعه للوصول لوجهتك من خلال الاعتماد على جميع البيانات ذات الصلة مثل المسافة والسرعة وحركة المرور إضافة للمعلومات السابقة المسجلة عن الأشخاص الذي سلكوا هذه الوجهة من قبل. ومن الأمثلة الأخرى على هذا النوع من التحليل توقع توصيات المحتوى المناسب لك على منصات التواصل الاجتماعي من خلال تحليل سجلات سلوكك والمحتوى الذي تشاهده وتتفاعل معه سواء على هذه المنصات نفسها أو على أنظمة أخرى وتمرير سلوكياتك السابقة لخوارزمية محددة تحلل هذه البيانات وتقدر بناء على ذلك نوع المحتوى الذي تهتم به وتقترحه لك. 5. التحليل المعرفي Cognitive Analytic هذا النوع من التحليل هو الأكثر تقدمًا ولا زال في بداياته وهو مستوحى من الطريقة التي يعالج فيها دماغنا البشري البيانات أي أنه يحلل البيانات بذكاء يشبه ذكاء الإنسان فهو يستخلص النتائج ويكتسب الخبرة من التعلم ويطور نفسه مع الزمن، ويساعدك على معرفة ما قد يحدث إذا تغيرت الظروف وتحديد أفضل الطرق للتعامل معها وهو أمر لا تستطيع التحليلات البسيطة القيام به. يعتمد هذا النوع من التحليل مجموعة من التقنيات الذكية مثل الذكاء الاصطناعي وخوارزميات التعلم الآلي ونماذج التعلم العميق والمزيد لمعالجة المعلومات واستخلاص النتائج من البيانات والأنماط الموجودة ويتوقع أن تصبح تطبيقاته واستخداماته أكثر فعالية بمرور الوقت من خلال تعلمه وتفاعلاته المستمرة مع البيانات ومع البشر. وباستخدام هذا النوع من التحليل ستتمكن من معالجة اللغة الطبيعية مباشرة مثل سجلات محادثة مركز الاتصال ومراجعات المنتجات فهو لا يفهم الكلمات في هذه النصوص فقط بل يفهم السياق الكامل لما يتم كتابته أو نطقه! على سبيل المثال تعد كل من Cortana من مايكروسوفت، و Siri من أبل، و Watson من IBM وآخرها ChatGPT من OpenAI روبوتات محادثة تستخدم التحليل المعرفي لتتفاعل معك بلغتك الطبيعية وتوفر لك المعلومات والرؤى التي تريدها. يمكن أن تستفيد الشركات من هذا التحليل للنظر في أنماط المشتريات من السنوات السابقة وتحديد المنتجات التي قد تكون شائعة العام المقبل وفهم سبب شعبية ورواج منتج معين وما إذا كانت شعبيته ستبقى في السنوات المقبلة مما يساعدها على تحديد فيما إذا كانت ستواصل تخزين كميات كبيرة من هذا المنتج الرائج أم لا كما يمكن للمؤسسات الطبية استخدام التحليل المعرفي لإعطاء أفضل العلاجات الممكنة للمرضى. هذه كانت نبذة عن أهم أنواع التحليلات التي يمكنك الاعتماد كمحلل بيانات عليها واختيار الأنسب من بينها لتعزيز مسار العمل والحصول على أي إجابات يحتاج صاحب العمل لمعرفتها لتعزيز تواجده في السوق أو زيادة أرباحه أو التخلص من مشاكل العمل الحالية أو المستقبلية …إلخ. دعنا نلخص هذه التحليلات كما يلي: إجراء التحليلات الوصفية لإدراك ما حدث بعد وقوعه. إجراء التحليلات التشخيصية إذا طلب منك معرفة لماذا حدث هذا الأمر. إجراء التحليلات التنبؤية إذا طلب منك أن تكون بعيد نظر وتعرف ماذا يمكن أن يحدث في المستقبل. إجراء التحليلات التقديرية لتكسب أصحاب العمل بصيرة ثاقبة يعرفون من خلالها ما الذي يجب عليهم فعله بعد ذلك؟ إجراء التحليلات المعرفية للحصول على رؤية صحيحة وصائبة لما يجب أن يتم. أهم أدوات وتقنيات تحليل البيانات في السابق كان تحليل البيانات أمرًا صعبًا ومرهقًا بسبب عدم توفر التقنيات المساعدة فكانت البيانات تجمع يدويًا بطريقة مرهقة، لكن يمكن اليوم لمحلل البيانات الاستعانة بالكثير من أدوات تحليل وتمثيل البيانات المتوفرة لمساعدته على أداء عمله بسرعة وسهولة وفيما يلي نذكر أهم 10 أدوات في تحليل البيانات: برنامج مايكروسوفت إكسل Microsoft Excel برنامج Microsoft Power BI برنامج التحليل الإحصائي SAS إطار عمل أباتشي سبارك Apache Spark لغة بايثون Python لغة البرمجة R لغة الاستعلام الهيكلية SQL تطبيق Jupyter Notebook منصة KNIME برنامج Tableau دعنا نشرح كل أداة من هذه الأدوات وكيف يمكن لمحلل البيانات الاستفادة منه في عمله. برنامج مايكروسوفت إكسل Microsoft Excel يمكننا برنامج جدولة البيانات مايكروسوفت إكسل من إجراء الحسابات على البيانات وفرزها وتجميعها ومعالجتها والبحث فيها وعرضها بشكل رسوم بيانية وإنشاء النماذج وإعداد التقارير، لكن المشكلة في برنامج إكسل أنه ضعيف في التعامل مع البيانات الضخمة. برنامج Microsoft Power BI مايكروسوفت باور بي آي Microsoft Power BI هو برنامج احترافي لتحليل بيانات الأعمال وهو برنامج تجاري مدفوع لكنه يوفر نسخة مجانية بمواصفات محدودة وقد بدأ كمكوِّن إضافي لبرنامج Excel ثم أعيد تطويره عام 2010 وصدر كبرنامج مستقل. يوفر هذا البرنامج مجموعة أدوات متكاملة لتحليل بيانات الأعمال وهو برنامج احترافي يسمح للمستخدمين بإنشاء تقارير مرئية تفاعلية ولوحات معلومات وهو يتكامل مع برنامج إكسل و SQL Server وخدمات جوجل السحابية ويوفر العديد من الميزات الأخرى المفيدة لمحللي البيانات. برنامج SAS برنامج SAS هو أداة تحليل إحصائي تستخدم لتحليل معلومات وبيانات المؤسسات التجارية الكبيرة تم تطويره لتحديد سمات العملاء وإعداد التقارير واستخراج البيانات وإجراء التحليلات التنبؤية ويملك وحدات برمجية لاستخدامات متقدمة مثل مكافحة غسيل الأموال وتحليل لإنترنت الأشياء لكنه منتج مدفوع وسعره مرتفع نوعًا ما. أباتشي سبارك Apache Spark أباتشي سبارك هو إطار عمل برمجي سريع وديناميكي وسهل الاستخدام لمعالجة البيانات وهو يحتوي مكتبة غنية لخوارزميات التعلم الآلي ويستخدم عادة من قبل محللي البيانات وعلماء البيانات لمعالجة البيانات الضخمة وغير المهيكلة وإجراء مهام التحليل الثقيلة حسابيًا من خلال توزيعها على عدة حواسيب. دورة تطوير التطبيقات باستخدام لغة Python احترف تطوير التطبيقات مع أكاديمية حسوب والتحق بسوق العمل فور انتهائك من الدورة اشترك الآن لغة البرمجة بايثون Python توفر لغة البرمجة بايثون لمحلل البيانات آلاف المكتبات المجانية التي تساعده على استخراج البيانات وتحليلها وإعداد التقارير عنها مثل مكتبات NumPy و pandas التي تبسط إجراء العمليات الحسابية ومكتبات Beautiful Soup و Scrapy لاستخراج البيانات من الويب ومكتبة Matplotlib لتمثيل البيانات رسوميًا وإعداد التقارير حولها. لغة البرمجة R لغة R هي لغة برمجة مفتوحة المصدر تستخدم في التحليل الإحصائي واستخراج البيانات وتوفر الكثير من الحزم المساعدة لمحللي البيانات بشكل مشابه لبايثون، ورغم أن كتابة التعليمات في لغة R أكثر تعقيدًا من لغة بايثون إلا أنها لغة مصممة خصيصًا للتعامل مع المهام الإحصائية وتمثيل البيانات المتقدم. لغة الاستعلام الهيكلية SQL تعد لغة SQL أحد التقنيات الأساسية لتحليل البيانات وإعداد التقارير وهي لغة شائعة وسهلة التعلم ومرنة بشكل كبير ما يجعلها اللغة المفضلة لمحللي البيانات لفلترة البيانات والاستعلام عنها وإعداد التقارير …إلخ. Jupyter Notebook تطبيق Jupyter Notebook هو تطبيق ويب مفتوح المصدر يسمح لمحللي البيانات بإنشاء مستندات تفاعلية تتضمن نصوص وأكواد ومعادلات رياضية ورسوم بيانية تشبه إلى حد ما مستندات وورد لكنها أكثر تفاعلية ومصممة خصيصًا لتحليل البيانات وهو متكامل مع أدوات تحليل البيانات الضخمة مثل Apache Spark. برنامج KNIME KNIME هي منصة مفتوحة المصدر وقائمة على السحابة تملك واجهة رسومية GUI سهلة الاستخدام تستخدم في مهام تحليل البيانات والتنقيب عن البيانات والتعلم الآلي تم تطويرها عام 2004 لصناعة المستحضرات الصيدلانية إلا أن قوتها في تجميع البيانات من العديد من المصادر في نظام واحد دفعت محللي البيانات إلى استخدامها في العديد من المجالات مثل تحليل العملاء وذكاء الأعمال والتعلم الآلي. وهي شائعة لدى الشركات الصغيرة ذات الميزانيات المحدودة. برنامج Tableau برنامج Tableau هو برنامج تجاري عملاق لتحليل البيانات وذكاء الأعمال يمكنه التعامل مع كميات كبيرة من البيانات ومعالجتها وإنشاء حسابات معقدة عليها، ويوفر استعلامات SQL لفلترة البيانات ويمكنك من كتابة استعلاماتك الخاصة وهو سهل الاستخدام ويملك واجهة رسومية GUI تعتمد تقنية السحب والإفلات. كانت هذه قائمة بأشهر أدوات والتقنيات المستخدمة. وتذكّر لا توجد أداة واحدة تفعل كل شيء! عليك كمحلل استخدام الأدوات التي تلبي حاجة عملك بأفضل صورة. مصادر تعلم تحليل البيانات ستجد في أكاديمية حسوب العديد من الدروس والمقالات التي تفيدك في تخصص تحليل البيانات ومن أبرز هذه المصادر دروس تعلم برنامج اكسل المشروحة بطريقة منظمة ومبسطة تساعدك على تعلمه بسرعة وسهولة. وإذا كنت مهتمًا بتعلم لغة بايثون التي تعد من أهم لغات البرمجة المستخدمة في تحليل البيانات فقد وفرت لك أكاديمية حسوب قسم دروس ومقالات متنوعة حول لغة بايثون وهي تُحدَّث باستمرار لذا كن على اطلاع دائم عليها لتتعلم كل جديد وإن كنت تفضل التعلم من الكتب المنهجية يمكنك تنزيل كتاب البرمجة بلغة باثيون من أكاديمية حسوب وللمزيد من المصادر أنصحك بزيارة موسوعة حسوب الشاملة التي تضم توثيقات الكثير من لغات البرمجة، بما في ذلك توثيق لغة بايثون. ومن المصادر المميزة التي تسهل عليك طريق الاحتراف دورة تطوير التطبيقات باستخدام لغة Python التي توفرها أكاديمية حسوب والتي تفرد فيهًا مسارًا كاملًا يشرح بشكل واضح ومبسط أساسيات تحليل البيانات ويعرفك على أهم أدوات ومكتبات بايثون وآليات تطبيقها لإجراء عمليات التحليل الإحصائي والوصفي والتصوير البياني وتنظيف وفهم البيانات وغيرها ذلك الكثير من المعلومات التي تؤهلك لبدء العمل كمحلل بيانات في أي شركة أو منظمة أيًا كان مجال عملها. كما توفر دورة الذكاء الاصطناعي التي تساعدك في احتراف برمجة الذكاء الاصطناعي AI وتحليل البيانات وتعلم كافة المعلومات التي تحتاجها لبناء نماذج ذكاء اصطناعي متخصصة وتطوير تطبيقات ذكية تقوم بتحليل البيانات Data Analysis وتمثيلها مرئيًا، وتطبيقات تعلم الآلة Machine Learning والتعلم العميق Deep Learning وغيرها من التطبيقات المنوعة التي تساعدك على احتراف هذا المجال. وأنصحك كذلك بتعلم البرمجة بلغة R التحليلية باللغة العربية وأسلوب منهجي ومنظم وبشرح مبسط من خلال الاطلاع على مجموعة المقالات والدروس حول لغة R التي توفرها أكاديمية حسوب. وتوفر لك أكاديمية حسوب سلسلة دروس ومقالات عن لغة SQL،كما توفر كتابًا تعليميًا متكاملاً بعنوان ملاحظات للعاملين بلغة SQL 1.0.0 يتضمن مجموعة من الملاحظات والأمثلة العملية عن مختلف مواضيع لغة SQL من الأساسيات حتى الاحتراف. الخلاصة تعرفنا في مقال اليوم على مفهوم تحليل البيانات واستكشفنا معًا المهام المختلفة لمحلل البيانات وكيف يتعامل مع جميع البيانات التي يتم إنشاؤها كل يوم والمتاحة في مكان عمله، من بيانات المعاملات في قاعدة بيانات تقليدية وبيانات القياس المختلفة والبيانات التي يتم جمعها من وسائل التواصل الاجتماعي وكيف يستخرج منها المعرفة التي تطور سير العمل وتحسنه للأفضل. هل لديك اهتمام بتحليل البيانات؟ إذا كانت الإجابة نعم فقد حان الوقت لتبدأ من الآن رحلتك في احتراف هذا التخصص الواعد الذي يزدهر الطلب عليه بشكل كبير في سوق العمل.
    4 نقاط
  29. ربما تقرأ أو تشاهد يوميًا تقارير عن توقع في انخفاض أو ارتفاع مؤشرات أسواق المال أو تغيرات متوقعة في أسعار شراء بعض المنتجات على أساس شهري أو سنوي، أو حتى نجاح أو إخفاق لقاح لأحد الأمراض في مرحلة التجربة السريرية؛ فما مصدر هذه المعلومات؟ لا تُعد هذه الظواهر ظواهر علمية طبيعية أي لا تنتنج عن قوانين ثابتة يمكن تطبيقها في كل زمان ومكان، بل تأتي في معظم الأحيان نتيجة تطبيق طرق استدلالية أو تحليلية أو إحصائية على كم مترابط أو غير مترابط من البيانات المتوفرة عن هذه الظاهرة أو تلك، وتكون نتيجتها مجموعة محددة من المعلومات التي توصِّف هذه الظاهرة بلغة واضحة يمكن البناء عليها لاحقًا لاتخاذ قرار أو توثيق حادثة. يطلق على العلم القائم خلف هذه الطرق الاستدلالية والتحليلية والإحصائية اسم علم البيانات Data science أو العلم القائم على البيانات Data-driven science ويُعدّ حاليًا من أكثر العلوم التي تدفع عجلة التقدم التقني في مجالات تعلم الآلة والبحث عبر الإنترنت والتعرف الآلي على الصوت والصور والنقل والصحة واستكشاف المخاطر وغيرها الكثير. وأصبح هذا المجال أحد أهم المجالات في العالم الرقمي ولا عجب في ذلك فهو العلم الذي يهتم باستخراج القيمة الكامنة في البيانات التي تعد اليوم أهم أصول الشركات حتى أنها أصبحت تسمى النفط الجديد أو الذهب الجديد. وستكتشف في مقال اليوم كل خبايا هذا العلم وتتعرف على فوائده وأهم أدواته وتقنياته وحتى التعرف على سوق العمل فيه ومصادر تعلمه. ما هو علم البيانات Data Science؟ يُعد علم البيانات حقلًا لتطبيق المهارات التحليلية والوسائل العلمية لاستخلاص معلومات ذات قيمة وأهمية انطلاقًا من بيانات خام raw data أو بيانات مهيكلة أو غير مهيكلة وذلك لاتخاذ القرارات أو وضع خطط استراتيجية في مجال عمل معين أو تحليل الأنظمة أو بناء تصورات مسبقة عن سلوكها. تزداد أهمية علم البيانات يومًا بعد يوم، إذ تساعد الإضاءات التي يقدمها علم البيانات على زيادة كفاءة العمل وتحديد فرص عمل جديدة وزيادة فعالية النشاطات التجارية، وتضيف ميزات تنافسية قوية للأعمال التي تعتمد على علم البيانات موازنة بغيرها وفي مختلف المجالات والأصعدة. يتألف علم البيانات من ثلاث تخصصات أو مجالات متقاطعة مع بعضها البعض وهي كالتالي: علم البيانات هندسة البيانات تحليل البيانات قد تتداخل المهام في كل مجال من هذه المجالات، إلا أن المسؤوليات الأساسية لكل منها تختلف في مكان العمل وفيما يلي نوضح أهم الفروقات بين كل تخصص منها. علم البيانات علم البيانات هو المجال الذي يهتم بتطبيق تقنيات التحليلات المتقدمة والمبادئ العلمية لاستخراج معلومات قيمة من البيانات بهدف اتخاذ القرارات التجارية الأفضل والتخطيط الاستراتيجي . يعمل في مجال علم البيانات أشخاص ذوو كفاءة عالية يملكون معرفة أساسية في تخصص تحليل البيانات وهندسة البيانات فهم يتشابهون في عملهم مع مهندسي البيانات إلا أنهم أصحاب اليد العليا في جميع الأنشطة المتعلقة بالبيانات فعندما يتعلق الأمر باتخاذ القرارات المتعلقة بالأعمال يتمتع عالم البيانات بكفاءة أعلى وهو الذي يتخذ القرار النهائي بشأن العمل. يجب أن يمتلك المتخصص في هذا المجال مهارات تحليلية وبرمجية متقدمة تمكنه من حل مشكلات العمل بشكل كامل بالاعتماد على البيانات واستخراج المعلومات القيِّمة والمفيدة منها لتطوير الأعمال مستخدمًا برمجيات متقدمة من خلال الاعتماد على أفضل المنظومات والخوارزميات لحل المسائل المتعلقة بتنظيم البيانات واستخلاص المعلومات منها. يمكن أن نختصر ماهية علم البيانات بالنقاط التالية: طرح الأسئلة الصحيحة عن المسألة المدروسة وتحليل البيانات الخام. نمذجة البيانات باستخدام خوارزميات متنوعة ومتقدمة وعالية الكفاءة. تصوير البيانات لفهمها من منظور أوضح. فهم البيانات المتاحة لاتخاذ قرارات أفضل أو الوصول إلى نتيجة نهائية. باختصار علم البيانات هو العلم المسؤول عن استخراج معلومات مفيدة من بيانات مبعثرة ولا قيمة لها بشكلها الخام بعد تنظيفها وتصحيح أخطائها وإزالة القيم المكررة منها ومعالجة القيم المفقودة منها وهي تشبه عملية استخراج شيء مفيد من النفايات. علم هندسة البيانات Data Engineering هندسة البيانات هي العمود الفقري لعلم البيانات وتتضمن عملية تصميم وبناء أنظمة تسمح للأشخاص بالتنقيب عن البيانات الأولية وجمعها وتنظيفها من مصادر وتنسيقات متعددة وتخزينها واستعادتها ونقلها تمهيدًا لتحليلها واستخراج معلومات مفيدة منها. كما تهتم هندسة البيانات بالبيانات الوصفية التي تُعد بيانات تصف بيانات أخرى. وتأتي أهمية هندسة البيانات من ضرورة تهيئة البيانات التي جرى جمعها حتى تُخزن ويسهل استعادتها عند الطلب فلا معنى لأي تحليل أو تفسير للبيانات ما لم تجري أرشفة النتائج وتخزينها في منظومة معلوماتية يسهل التعامل معها لاتخاذ القرار. تتضمن هندسة البيانات المهام التالية: استخراج البيانات من مصادر مختلفة Data extraction معالجة البيانات Data processing وتحويل البيانات Data transformation والتي تتضمن تنظيف البيانات data cleaning ومعالجة القيم الفارغة وفصل القيم المجمَّعة وإزالة القيم الخطأ أو تحويلها إلى قيم صحيحة موحدة ومتناسقة. تحميل البيانات Data load وتخزين البيانات الناتجة في المصدر النهائي وعادة تكون قاعدة بيانات مخصصة للتحليل Database analysis تنفيذ العمليات الثلاث ETL التي تعني استخراج Extract وتحويل Transfer وتحميل Load والتي تعني مجتمعة عملية تنقل البيانات من قاعدة بيانات واحدة، أو قواعد بيانات متعددة، أو مصادر أخرى إلى مستودع موحد عادة ما يكون مستودع بيانات. فنظرًا لكون تحليل البيانات أمرًا صعبًا لأن البيانات تجمع بواسطة تقنيات مختلفة ويتم تخزينها بهياكل وتنسيقات مختلفة لكن الأدوات المستخدمة لتحليل البيانات تتطلب أن تكون كافة مجموعات البيانات مخزنة بنفس الهيكلية! وهنا يأتي دور هندسة البيانات في توحيد مجموعات البيانات وإنشاء البنية التحتية التي تزود أعضاء فريق البيانات ببيانات عالية الجودة ليعملوا عليها ويفهموها ويعثروا من خلالها على إجابات لأسئلتهم، وهم مسؤولون كذلك عن تصميم وصيانة هذه البنية التحتية. على سبيل المثال يمكن أن تجمع الشركات العديد من البيانات حول عملائها ومن مصادر متنوعة مثل معلومات حول الفواتير من برنامج مخصص لإدارة المبيعات ومعلومات عن الشحن من برنامج إدارة شركات الشحن والخدمات اللوجستية ومعلومات عن دعم العملاء من برنامج دعم العملاء ومراقبة مواقع التواصل الاجتماعي للحصول على المحتوى الذي يهتم به العملاء ويتفاعلون معه ومعلوماتهم الديموغرافية وأوقات نشاطهم …إلخ. توفر هذه البيانات الكثير من المعطيات للعميل لكن الحصول عليها من مصادر مختلفة وبتنسيقات متنوعة يجعل فهمها والحصول على الإجابات التي نريدها منها أمرًا صعبًا للغاية ويستهلك الكثير من الوقت والجهد لذا لا يمكننا أن نُعوِّل على إدراكنا البشري في هذا الأمر. لهذا السبب يقوم مهندسو البيانات بإعداد هذه البيانات وتنسيقها وتنظيمها وتخزينها في مستودعات بيانات مناسبة مصممة لمعالجة الاستعلامات بسرعة تضمن الأداء المناسب، وبعدها يقدمون هذه البيانات إلى مستهلكي البيانات النهائية مثل محللي البيانات الذين لن يتمكنوا من الوصول إلى البيانات وتحليلها واستخلاص النتائج والقرارات الصائبة منها بدون البنية التحتية التي ينشؤها لهم مهندسو البيانات. عمومًا، كان هذا تعريفًا مختصرًا بتخصص هندسة البيانات، وقد توسعنا بالحديث عنه في مقال منفصل بعنوان الدليل الشامل إلى هندسة البيانات Data Engineering فارجع إليه للاستزادة. علم تحليل البيانات Data analysis تحليل البيانات هو المجال المسؤول عن معالجة البيانات لاستخراج أو استخلاص معلومات مفيدة من شأنها أن تساعد الشركات والمنظمات في حل مشكلة ما أو الكشف عن فرصة ما لتطوير العمل وعرض هذه المعلومات والنتائج التي تم الحصول عليها بأفضل طريقة لصانعي القرار في العمل حتى يتمكنوا من اتخاذ قرارات من شأنها تطوير العمل نحو الأفضل. على سبيل المثال قد يطلب من محلل البيانات تقسيم العملاء بناءً على سلوك الشراء لديهم لتحديد العملاء الذين يجب أن يتم استهدافهم في الحملات التسويقية وإرسال العروض الأنسب المخصصة لكل منهم بناءً على سلوكه الشرائي أو يطلب منه تحديد التكلفة الأفضل للمنتجات للحفاظ على القوة الشرائية كي لا تنخفض عن مستويات السنوات السابقة. ومن أهم المهام التي يعنى بها تحليل البيانات ما يلي: جمع البيانات الخام من مصادر متعددة وتنظيمها. التأكد من جودة البيانات وتنظيفها وتحويلها عند الضرورة. نمذجة البيانات في تنسيقات محددة. التمثيل الرسومي للبيانات أو تصوير البيانات Data visualization ويقصد به عرض البيانات بطريقة مرئية كي يتمكن المتابع من فهم المحتوى الذي تقدمه ويستوعب الرؤى التي استخلصت من هذه البيانات. إيجاد إجابات وحلول لأي مشكلات أو استفسارات في مجال العمل من خلال تحليل البيانات ذات الصلة. الاستفادة من الإحصائيات الوصفية في تلخيص ووصف خصائص مجموعة البيانات. للقيام بهذه المهام يحتاج المختص في تحليل البيانات لامتلاك مجموعة من المهارات الفنية وأهمها الإلمام الجيد بلغة الاستعلام الهيكلية SQL لاستخراج البيانات التي يحتاجها من قواعد البيانات العلاقية المختلفة وإتقان البرامج المخصصة مثل MS Excel و MS Access و Microsoft Power BI التي تساعد في تحليل هذه البيانات وإنشاء نماذج منها وإجراء العمليات الحسابية والإحصائية المختلفة عليها. كما يحتاج بالطبع لامتلاك معرفة جيدة بالإحصاء والتحليل الرياضي لإضافة المهارات في التنظيم والتخطيط والاهتمام بأدق التفاصيل كي يتمكن من إدارة ومعالجة طلبات العمل بكفاءة، كما تعد مهارات التواصل مفيدة جدًا أيضًا لمحللي البيانات لأنهم بحاجة إلى التعبير عن نتائجهم وتفسيرها بوضوح لأرباب العمل. كان هذا تعريفًا مختصر بمجال تحليل البيانات، وقد توسعنا بالحديث عنه في مقال منفصل بعنوان الدليل الشامل لتحليل البيانات Data Analysis فارجع إليه للاستزادة. الفرق بين علم البيانات والذكاء الاصطناعي يُعرّف الذكاء الاصطناعي Artificial Intelligence واختصارًا AI بأنه وسيلة لتزويد الآلات بسلوك يحاكي السلوك البشري كي تقارب تفكيرهم وتتصرف مثلهم وبالتالي فإن الجانب الأساسي من تقنية الذكاء الاصطناعي مرتبط بتعلم الآلة وتعلم الآلة المعمّق. يلخص الجدول التالي الفرق بين علم البيانات والذكاء الاصطناعي من نواحي عدة كي نستطيع إدراك أوجه الشبه والاختلاف: وجه الموازنة علم البيانات الذكاء الاصطناعي الأساسيات علم البيانات هو دورة عمليات مفصلة تتضمن التحضير الأولي للبيانات وتحليلها ثم تصويرها واتخاذ القرار الذكاء الاصطناعي هو إنجاز نموذج قادر على التوقع بهدف التنبؤ بأحداث مستقبلية. الأهداف التعرف على الأنماط المطلوب إيجادها ضمن البيانات الخام للمشروع قيد الدراسة أتمتة العمليات ووضع بيانات التصرف الذاتي ضمن الوحدة البرمجية المدروسة. نوع البيانات التي يعمل عليها يعمل علم البيانات على أنواع مختلفة من البيانات مثل البيانات الخام والبيانات المهيكلة وغير المهيكلة. يستخدم الذكاء الاصطناعي أنواع معيارية من البيانات على شكل متجهات vectors وأنواع مدمجة أخرى من البيانات التقنيات المستخدمة يستخدم التقنيات الرياضية والإحصائية وخوارزميات تعلم الآلة وأدوات تحليل البيانات وتصويرها. يستخدم بشكل أساسي خوارزميات تعلم الآلة وتعلم الآلة المعمّق. المعرفة المكتسبة تُستخدم المعرفة التي يوفرها علم البيانات في إيجاد الأنماط والسلوكيات في البيانات. تصب المعرفة التي يوفرها الذكاء الاصطناعي في تزويد الوحدات البرمجية بشكل من أشكال التصرف الذاتي. أمثلة عن الأدوات المستخدمة ++R, Python, MATLAB,C Tensor flow, sci-kit-learn, Kaffee متى يُستخدم يُستخدم علم البيانات عندما تقتضي الضرورة استخدام حسابات رياضية سريعة أو تحليل بيانات استطلاعي أو تحليل توقعي predective analysis. لا بد في هذه الحالات من تحديد الأنماط والسلوكيات من خلال البيانات المتاحة ويتطلب ذلك معرفة بالإحصاء الرياضي. يُستخدم الذكاء الاصطناعي عندما تقتضي الضرورة التخلص من عمل ضروري متكرر. لا بد في هذه الحالات من تقييم مخاطر الانتقال إلى الذكاء الاصطناعي وسرعة اتخاذ القرار ودقة في التنفيذ بعيدًا عن المشاعر البشرية والانحياز. أمثلة عن الاستخدام تحسين العمليات واكتشاف سلوكيات العملاء والتحليل المالي وغيرها الكثير. الروبوتات وبرمجيات المحادثة الآلية والألعاب عبر الإنترنت وأنظمة المساعدة الصوتية. هنالك مسارات أخرى بدأت تتبلور تعكس التأثير الكبير لعلم البيانات على الذكاء الاصطناعي مع تزايد الاندفاع نحو ما يُعرف بالذكاء الاصطناعي القابل للتوضيح explainable AI والذي يقدم معلومات تساعد المستخدمين على فهم كيفية عمل نماذج تعلم الآلة ومقدار الثقة التي ينبغي أن يولوها لنتائج عمل هذه الوحدات عند اتخاذ القرارات. بالإضافة إلى دور علم البيانات في صياغة مبادئ تصميم الذكاء الاصطناعي المسؤول responsible AI principles للتأكد من عدالة جميع التقنيات المستخدمة وضمان عدم تحيزها وشفافيتها. مكونات علم البيانات ينبثق علم البيانات من مجموعة من المكوّنات أو العلوم ولا بد من استعراضها حتى تتوضح أبعاد هذا العلم: الإحصاء Statistics الرياضيات Mathematics البرمجة وعلوم الحاسوب Programming and Computer Science أساسيات الرياضيات لتتعلم علم البيانات لا بد من إتقان المفاهيم الأساسية في الرياضيات التي تعد الجزء الأكثر حيوية في مجال علوم البيانات، فهي الفضاء الذي تُدرس ضمنه الكميات والبنى والعلاقات ذات الصلة بالظاهرة المدروسة. إذ يُعد علم الرياضيات اللغة التي توصِّف الظواهر العلمية وتوفر الأدوات الضمنية التي يستخدمها علم البيانات مثل عمليات الاستقراء والتحليل والإحصاء والتفاضل والتكامل وغيرها. الإحصاء الرياضي يُعد الإحصاء الرياضي Statistics من أهم مكوّنات علم البيانات لأنه الوسيلة الأنسب لجمع وتحليل البيانات العددية مهما كانت كميتها كبيرة واستخلاص الأفكار منها. يتعامل هذا العلم مع مجموعات منفصلة من البيانات أو مجموعات مستمرة منها محاولًا تطبيق وسائل رياضية لدراسة ميل هذه البيانات للتقارب أو التباعد والمنحى الذي تأخذه في هذا السلوك ثم تضع أطرًا لتعريف وتصنيف هذه الوسائل. فمن منا لم يسمع في مرحلة ما من تحصيله الدراسي كلمة متوسط حسابي أو انحراف معياري أو منوال مثلًا، فهذه المصطلحات ما هي إلّا مقاييس لابتعاد قيم مجموعة من البيانات عن قيمها الوسطى. البرمجة وعلوم الحاسوب يأتي الحمل الأكبر في علم البيانات على البرمجة وتخصص علوم الحاسوب كي تتمكن من كتابة وتنقيح وتعديل الشيفرات التي تجمع وتحلل وتهيكل البيانات، حيث يجب على من يريد التخصص في علم البيانات تعلم إحدى لغات البرمجة والمكتبات البرمجية التي تدعم الوظائف الإحصائية والرياضية وبرمجيات التحليل وإيجاد علاقات الترابط وغيرها، إضافة لقواعد البيانات المسؤولة بشكل أساسي عن تخزين البيانات وتنظيمها واسترجاعها. كما يعد تعلم الآلة Machine learning أحد التقنيات المتقدمة التي تلعب في الآونة الأخيرة دورًا حيويًا في علم البيانات فمن خلاله يمكننا من الحصول على تنبؤات وقرارات أفضل دون الحاجة للتدخل البشري مما يساعد علماء البيانات في أداء مهامهم والحصول على حلول لمشكلات العمل بطريقة أسرع وأكثر ذكاء مقارنة بالاعتماد على التقنيات الإحصائية التقليدية. وإذا كنت مهتمًا بتعلم أسس علوم الحاسوب والتخصص في مجال علوم البيانات واكتساب خبرة عملية فيه بأسرع الطرق يمكنك مطالعة مقال أساسيات علوم الحاسوب فهو بمثابة دليل شامل يعرفك على اختصاص علوم الحاسب وأهم فوائده وتطبيقاته. دورة علوم الحاسوب دورة تدريبية متكاملة تضعك على بوابة الاحتراف في تعلم أساسيات البرمجة وعلوم الحاسوب اشترك الآن أهمية علم البيانات لم تكن البيانات المتوفرة حول مختلف المجالات خلال العقد الأول من هذه الألفية وما قبلها -وخاصة بشكلها الرقمي- ذات أحجام كبيرة جدًا، وكان من السهل تخزينها في هياكل مخصصة مثل الجداول الإلكترونية وقواعد البيانات العلاقيّة ومن ثم التعامل معها من خلال أدوات مختلفة بكل سهولة ويسر. فقد جمعت البيانات ما قبل الحقبة الرقمية بأساليب يدوية مرهقة بالاعتماد على الأشخاص والأوراق والجداول ولم تكن بيانات شاملة، بل كانت تقتصر على ما هو ضروري للجهة التي تحتاج هذه البيانات سواء أكانت حكومية أو سواها. مع التحول إلى الرقمنة، أصبحت عملية الحصول على البيانات وتصنيفها أسهل وأيسر وظهرت أنواع جديدة من قواعد البيانات التي تسهل التعامل مع هذه البيانات، لكن كما أشرنا بقيت ضمن حدود السيطرة. لكن الكم الهائل جدًا من البيانات التي تنتج يوميًا عن كل فرد قد وصلت وفق بعض الأبحاث إلى 1.7 ميغا بايت في الثانية عام 2020 وقد تصل إلى أضعاف هذا الرقم في لحظة كتابة هذه الأسطر. فانطلاقًا من البيانات البسيطة التي يسجلها الجوال عن مستخدميه، وبيانات التصفح واستخدام الحاسوب، وبيانات نشاطك على مختلف مواقع التواصل الاجتماعي وعمليات التسجيل والشراء أو أي نشاط على مختلف المواقع قد تُسجل وتؤرشف لغايات خاصة بمشغلي تلك المواقع فتأمل عندها الكميات الكبيرة من البيانات التي ستظهر حتى حركة مؤشر الفأرة على شاشة متصفح مسجلة وتستعملها المواقع عبر أدوات تعقب وتحليل مختلفة مثل تتبع الأقسام التي زرتها والروابط والمنتجات التي أبديت اهتمامُا بها وذلك لتحليل سلوكك وبالتالي تقديم تجربة أفضل لك. ولا ننسى تطور البرامج السحابية التي مكنت المؤسسات من تتبع أحجام ضخمة من بيانات الأعمال في الوقت الفعلي وتوفر مليارات من أجهزة إنترنت الأشياء IoT حول العالم التي تجمع كل لحظة كمًا ضخمًا من البيانات عن كل تحركاتنا، لذا يتوقع أن يكون هناك 175 زيتابايت من البيانات في عالم البيانات العالمي بحلول عام 2025 وللعلم فإن زيتابايت يساوي 1000 بايت للأس 7 وبعبارة أخرى فإن زيتابايت واحد يحتوي على 21 صفرًا ولهذا السبب نحن نعيش بالفعل حقبة انفجار البيانات الضخمة Big Data Explosion ونحتاج لطريقة تمكننا من معالجة هذا الكم الجنوني من البيانات! إن معالجة هذا الكم الهائل من البيانات هي مهمة صعبة جدًا على أي مؤسسة أو جهة، لهذا ظهرت الحاجة الماسة إلى أدوات وتقنيات فعالة لمعالجة وتحليل تلك البيانات وأشخاص مؤهلين قادرين على التعامل معها وبدأ علم البيانات بالتبلور ليكون مزيجًا من عدة علوم تتكامل لإنجاز ما يلي: تجميع البيانات الخام وإعدادها للمعالجة أو التحليل النوعي. تحويل هذه الكميات الكبيرة من البيانات الخام وغير المهيكلة إلى معلومات ذات قيمة. تقديم البيانات وعرضها بصريًا لتوضيح الاستراتيجيات أو القرارات المبنية على نتائج تحليل تلك البيانات. استخلاص الأفكار والرؤى من البيانات المحللة باستخدام تقنيات الذكاء الاصطناعي وخوارزميات تعلم الآلة. وضع استراتيجيات تطوير للأعمال انطلاقًا من نتائج التحليل والدراسة. وضع توقعات صحيحة أو قريبة من الصحة في مختلف المجالات مثل استطلاعات الرأي والانتخابات وحجوزات السفر واستكشاف حالات الغش والدراسات العلمية والاجتماعية وغيرها. لم يكن علم البيانات منذ عقد مضى ولا حتى العاملين في هذا المجال منتشرًا في سوق العمل، لكن الشعبية الكبيرة حاليًا لهذه الفئة من الخبراء تعكس طريقة تفكير الأعمال بالبيانات الضخمة. فلا يمكن بعد الآن تجاهل الكميات الهائلة من البيانات الخام التي أضحت بالنسبة للكثير من الشركات بمثابة منجم ذهب افتراضي طالما أن هناك خبراء متحمسين وطموحين ودقيقي الملاحظة قادرين على التنقيب فيها ورؤية ما لا يراه غيرهم. مجالات علم البيانات يلعب علم البيانات اليوم دورًا فعالًا في جميع جوانب الحياة التجارية والطبية والحكومية …إلخ، ويجد المختصون في المجالات المختلفة كل يوم تطبيقًا جديدًا لعلم البيانات بما يعزز العمل الذي يشرفون عليه ويحقق مكاسب على جميع الأصعدة، لكننا سنقف تاليًا على أبرز المجالات التي شاع استخدام علم البيانات فيها. التعرف على الصور وتمييز الكلام عندما تحمّل صورة على فيسبوك ثم ترى اقتراحات للإشارة إلى أصدقائك في الصورة، فإن ما يجري فعلًا أن موقع فيسبوك قد استخدم خوارزمية تمييز الصور تلقائيًا وقد تعرف على الأشخاص في هذه الصورة. إن هذه الخوارزمية هي جزء من علم البيانات. وكذلك الأمر عندما تقول "Ok Google" ليستجيب هاتفك الذكي ويستعد للأوامر الصوتية، فإن علم البيانات هو السبب في ظهور خوارزمية التعرف على الكلام التي استخدمها التطبيق توًا. محركات البحث عبر الإنترنت هل لاحظت كيف تقترح لك محركات البحث الشهيرة مثل جوجل وياهو وبينج ما هو قريب من نتيجة بحثك؟ هل لاحظت السرعة في عرض النتائج والتحسن المستمر في دقة نتيجة البحث؟ يعود الفضل في ذلك إلى علم البيانات وخوارزمياته التي تجعل تجربة البحث عبر الانترنت أكثر سرعة وفعالية ورضًى للمستخدم. العلوم الطبيعية تُستنبط معظم المعايير العلمية المتعلقة بالظواهر الطبيعية من كم البيانات الهائل الناتج عن مراقبة هذه الظواهر على مدى طويل من الزمن كالمناخ والبيئة والفضاء، إذ ترسل المسابر ملايين البايتات يوميًا إلى مراكز الأبحاث لتحليلها واستقراء النتائج وبالطبع لن يكون من السهل فهم هذه البيانات والربط بينها دون استخدام خوارزميات علم البيانات وطرائقه. عالم الألعاب سواء الألعاب الرياضية الحقيقية كدراسة وتحليل حركات لاعبي كرة القدم وحتى منصات الألعاب الرقمية في تعزيز تجربة اللاعبين. تعتمد الشركات التي ترعى هذه المواضيع على تحليل نتائج البيانات المأخوذة من كم هائل من المباريات ومن تجارب مئات الآلاف الذين يمارسون ألعاب الفيديو عبر الإنترنت. لقد حسَّن استخدام علم البيانات وتقنياته أداء الكثير من شركات الألعاب. النقل إن الهدف الرئيسي لاستخدام علم البيانات في عالم النقل هو الوصول إلى المركبات ذاتية القيادة التي يسعى مصمموها إلى تقليل الخطأ البشري إلى أدنى مستوى وتقليل عدد الحوادث المرورية وضبط معدلات التلوث بعوادم الوقود. إضافة إلى ذلك، يساعد علم البيانات في تحليل حركة المرور واكتشاف الازدحامات والاختناقات المرورية وإرسال إشعارات للسائقين لسلوك طريق آخر مثلًا لوجود ازدحام في الطريق الذي يسير عليه وتحليل الحوادث المرورية واتخاذ القرارات. الرعاية الصحية لعلم البيانات دور بارز في مجال الرعاية الصحية لما يؤمنه من مساهمة في تشخيص الحالات الطبية وتخطيط العلاج والبحث الطبي ويوفر نتائج حاسمة وتوقعات تقترب نسبة الخطأ فيها من الصفر وخاصة في مجالات الكشف عن الأورام وابتكار الأدوية وتحليل الصور الطبية. أنظمة التوصية بالمنتجات تعتمد معظم الشركات مثل غوغل وأمازون ونيتفليكس على علم البيانات الذي يقدم تكنولوجيا مفيدة جدًا في تحسين تجربة مستخدمي هذه الشركات من خلال التوصية بمنتجات هذه الشركات لمستخدميها من معرفة ميولهم وسلوكياتهم أو ما يعرف بالتزكية المخصصة. فعندما تبحث عن شيء ما ثم تجد اقتراحات لأشياء مشابهة لاحقًا فهي نتيجة تطبيق خوارزميات علم البيانات. اكتشاف المخاطر تواجه الشركات المالية مخاطر تتعلق بقضايا التزوير وخسارة رأس المال، لكن بوجود علم البيانات ستقل هذه الأخطار إلى مستويات منخفضة. إذ تستفيد شركات المال من علماء البيانات في دراسة البيانات المالية للاستثمارات المطروحة وإدارة المخاطر المالية واكتشاف المعاملات الاحتيالية وتقييم مخاطر الخسارة أو الإفلاس مما يرفع ثقة العملاء بأداء هذه الشركات، كما يساعد علم البيانات أنظمة تقنية المعلومات في منع الهجمات الإلكترونية ومنع التهديدات الأمنية المختلفة. ومن مجالات هذا العلم الأخرى مساعدة الشركات التجارية على إنشاء حملات تسويقية أقوى وإعلانات مستهدفة أكثر دقة لزيادة المبيعات والأرباح، ومنع حدوث أعطال المعدات في الأماكن الصناعية، ويبرز استخدام علم البيانات المجال الأكاديمية لمراقبة أداء الطلاب وتحسينه للأفضل وغير ذلك الكثير مما لا يتسع المقال لذكره. وقلما تجد اليوم مجالًا لا يساهم علم البيانات الحديث في تحسينه وتطويره نحو الأفضل. دورة حياة مشروع علم البيانات تمر دورة علم البيانات بالمراحل التالية: الاستكشاف إعداد البيانات تخطيط النماذج بناء النماذج التحضير للعمل إيصال النتائج الاستكشاف وهي أولى مراحل هذه الدورة وتبدأ بطرح الأسئلة الصحيحة عن الظاهرة المدروسة. فلا بد قبل أن تبدأ أي مشروع متعلق بعلم البيانات أن تحدد المتطلبات الاساسية لهذا المشروع وأولوياته وميزانيته. لا بد في هذه المرحلة من تحديد كل متطلبات المشروع كعدد العاملين فيه والتقنيات المستخدمة والزمن اللازم لإنجازه والبيانات التي سيجري العمل عليها والغاية منها، وبالتالي سنتمكن من وضع إطار أولي لحل المشكلة التي كانت سببًا في إطلاق المشروع. إعداد البيانات نحتاج في هذه المرحلة إلى إنجاز المهام التالية: تصحيح البيانات وتنظيفها Data cleaning اختزال البيانات وتقليل حجمها Data Reduction تكامل البيانات Data integration نقل البيانات Data transformation بعد إنجاز هذه المراحل الأربعة تصبح البيانات جاهزة لعمليات أخرى. التخطيط لبناء النماذج نحتاج في هذه المرحلة إلى تحديد النماذج المختلفة والتقنيات اللازمة لإيجاد العلاقات والروابط بين متغيرات الدخل. وتجري عادة عملية تحليل بيانات استطلاعي Exploratory data analytics -تختصر إلى EDA- باستخدام الدوال والصيغ الإحصائية ثم أدوات تصوير البيانات لفهم الروابط بين المتغيرات ومن ثم فهم ما ترشدنا إليه تلك البيانات. من أكثر الأدوات شيوعًا في إنجاز هذه المرحلة نجد: SQL Analysis Services R SAS Python بناء النماذج تبدأ في هذه المرحلة عملية بناء النماذج. إذ يجري خلال هذه المرحلة إنشاء مجموعات من البيانات لأغراض التمرين والاختبار لتساعد في تطبيق تقنيات مثل التجميع والتصنيف والربط على البيانات المتوفرة لوضع نماذج عن سلوكها. إليك بعض أدوات بناء النماذج الأكثر شيوعا: SAS Enterprise Miner: عبارة عن إضافة تتكامل مع قواعد بيانات أو جداول (مثل إكسيل) لبناء نماذج تحليلية تعطي توقعات عن البيانات الموجودة وفقًا لمسار التحليل الذي تتبعه. WEKA: وهي مجموعة من خوارزميات لغة الآلة كتبت بلغة جافا للتعامل مع مهام التنقيب عن البيانات. SPSS Modeler: برنامج من شركة IBM لتنفيذ مهام التنقيب عن البيانات وتمثيلها بيانيًا وفهمها واتخاذ القرارات بناء عليها. MATLAB: بيئة عمل رياضية وبرمجية متكاملة لمختلف الأغراض الحسابية والتحليلية وتصوير البيانات وبناء خوارزميات تعلم الآلة وتطبيقها. تحضير المشروع للعمل تُسلم في هذه المرحلة معظم التقارير النهائية عن المشروع إلى جانب الشيفرة والمستندات التقنية. تقدم هذه المرحلة نظرة شاملة عن أداء المشروع على صعيد محدود قبل أن يجري نشر نتائجه كاملةً. إيصال النتائج النهائية يتحقق فريق العمل في هذه المرحلة من أن الهدف الذي وضع للمشروع في مرحلة الاستكشاف قد أنجز أم لا، ثم تُسلم بعد ذلك المعلومات التي تمكن الفريق من حيازتها عن طريق النماذج التي بنيت ومن ثم إيصال النتائج النهائية إلى فريق الأعمال الذي طلب الشروع بالعمل. التخصص في مجال علم البيانات رأينا سابقًا كيف ظهرت الحاجة الملحة لعلم البيانات كتخصص قائم ومستقل بذاته للتنقيب عن المعرفة بين أكوام البيانات الخام ويُعتقد وفقًا لعدة استطلاعات رأي بأنّ هذا التخصص سيكون الأكثر طلبًا في السوق خلال هذا العقد. وبما أن الطلب شديد على هذا المجال فهناك نقص كبير في اليد العاملة فيه عربيًا وعالميًا، لذا أمامك فرصة سانحة لممارسته دون الحاجة لوجود شهادة أكاديمية متخصصة فيه إذ التركيز حاليًا على الخبرة نظرًا لنقص اليد العاملة فيه. أي كل ما تحتاجه هو الخبرة الأساسية في البرمجة والإحصاء الرياضي ورغبة في تعلم هذا المجال وتحصيل كل ما يكسبك الخبرة العملية فيه من دورات ومخيمات تدريبية تؤهلك لدخول سوق العمل والحصول على فرصة مميزة لدى الكثير من الشركات والمنظمات التي ستتهافت على تدريبك وتوظيفك لديها. لهذا السبب لا بد من الاطلاع على التخصصات التي يمكنك العمل بها في حال رغبت في التخصص في مجال علوم البيانات. الوظائف التي يتضمنها علم البيانات حتى تختار التخصص الذي تراه مناسبًا لخبراتك وميولك، سنفرد هذه الفقرة للتفصيل في مجموعة من أهم الوظائف والأدوار الوظيفية المرتبطة بالبيانات والمتطلبات الأساسية لكل وظيفة: عالم بيانات Data scientist محلل بيانات Data analyst مهندس بيانات Data engineer معماري بيانات Data architect مطوّر تصوير بيانات Data Visualization Developer خبير في تعلم الآلة Machine Learning expert لنكتشف المزيد حول كل دور من هذه الأدوار وأهم التقنيات والمهام المنوطة به. محلل البيانات هو شخص خبير ينقّب في أكوام البيانات الخام باحثًا عن نماذج وأنماط علاقات تربط بينها. يعمل بعد ذلك على عرض نتائج ما توصل له بما يساعد على اتخاذ قرار أو حل مشكلة. ما المهارات التي يجب أن يتقنها محلل البيانات؟ معرفة جيدة في الرياضيات. معرفة جيدة في التنقيب ضمن البيانات Data mining. معرفة أساسيات علم الإحصاء Statistic. أن يكون مطلعًا على بعض لغات البرمجة والأدوات البرمجية المستخدمة في علم البيانات مثل: Python MATLAB SQL Hive R JS SAS SPSS وغيرها مهندس بيانات وهو الشخص الذي يعمل مع كميات كبيرة من البيانات ويكون مسؤلًا عن بناء وصيانة بنى مناسبة لهذه البيانات وفقًا لمشروع علم البيانات الذي يعمل عليه. يعمل مهندس البيانات أيضًا على تصميم العمليات التي تتحكم بمجموعات البيانات وتُستخدم في نمذجة هذه المجموعات أو التنقيب فيها أو حيازة معلومات منها أو التحقق من سلامتها. ما المهارات التي يجب أن يتقنها مهندس البيانات؟ معرفة معمقة بتقنيات برمجية مثل: SQL MongoDB Cassandra HBase Apache Spark Hive MapReduce معرفة جيدة بلغات برمجة مثل Python, C/C++, Java, Perl. معماري بيانات وهو الشخص الذي يتصور ويصمم الأسلوب الذي تُنجز وفقه البنية التحتية المسؤولة عن تخزين وإدارة البيانات لأغراض التحليل سواء على صعيد العتاد الصلب أو الصعيد البرمجي. ما المهارات التي يجب أن يتقنها معماري البيانات؟ معرفة معمقة بقواعد تطوير البرمجيات والأنظمة. معرفة معمقة بالمعماريات المستخدمة في إنجاز قواعد البيانات. عالم بيانات عالم البيانات هو شخص خبير يعمل على تجميع وتحليل واستخلاص النتائج من كميات كبيرة من البيانات الخام أو المهيكلة أو غير المهيكلة. يجمع عمل عالم البيانات بين علوم الحواسب وخاصة برمجتها وعلم الإحصاء والرياضيات. يعمل عالم البيانات على تحليل ومعالجة ونمذجة البيانات ثم يفسر النتائج التي حصل عليها كي يُنشئ خطة عمل مناسبة للشركة أو المنظمة أو الجهة التي يعمل لديها. يُسخّر علماء البيانات قدراتهم ومهاراتهم في مختلف المجالات سواء التقنية منها أو الاجتماعية للبحث عن تفاصيل قد لا يراها ولا يفهمها سواهم في كم البيانات الهائل الذي يعملون عليه، إذ يتضمن عملهم عادة إيجاد ترابط منطقي بين بيانات غير مهيكلة أو خام تنتج عن مصادر مختلفة كالأجهزة الذكية وردود الأفعال على مواقع التواصل الاجتماعي ومحتوى رسائل البريد الإلكتروني وغيرها من المصادر التي يصعب ملاءمتها من قواعد البيانات المهيكلة. ما المهارات التي يجب أن يتقنها عالم البيانات؟ فهم معمق لعلم الإحصاء. معرفة جيدة في الرياضيات. مهارة في إحدى لغات البرمجة التالية أو أكثر Python R SAS SQL Hive Pig Apache spark MATLAB قدرة جيدة على تصوير البيانات Visualization. مهارات تواصل جيدة. دورة تطوير التطبيقات باستخدام لغة Python احترف تطوير التطبيقات مع أكاديمية حسوب والتحق بسوق العمل فور انتهائك من الدورة اشترك الآن مطور تصوير بيانات وهو شخص يعمل إلى جانب عالم البيانات لتمثيل البيانات بصريًا وتقديم عروض ومخططات تفصّل نتائج تحليل هذه البيانات بطريقة مرئية سهلة الفهم لإيصالها إلى من يستخدمها. ما المهارات التي يجب أن يتقنها مطور تصوير بيانات؟ مهارة في إحدى لغات البرمجة التالية أو أكثر: Python R SAS SQL Hive Pig Apache spark MATLAB قدرة تحليلية ممتازة. قدرة كبيرة على إيجاد الطرق الأمثل في تصوير البيانات. خبير في تعلم الآلة هو الشخص الذي يعمل مع مختلف خوارزميات تعلم الآلة التي تُستخدم في علم البيانات مثل خوارزميات الارتجاع أو الإنحدار Regression والتجميع clustering والتصنيف classification وشجرة القرار decision tree والغابة العشوائية random forest وغيرها. ما المهارات التي يجب أن يتقنها خبير تعلم الآلة؟ خبرة في أحد لغات البرمجة التالية أو أكثر: Python ++C R Java Hadoop فهم جيد للخوارزميات الكثيرة المستخدمة في علم البيانات وتعلم الآلة. مهارة تحليلية في حل المشاكل. معرفة جيدة في علمي الاحتمالات والإحصاء. مصادر تعلم علم البيانات هل أنت متحمس للتخصص في مجال علم البيانات وتعلمه بشكل ذاتي وبأقصر الطرق بعيدًا عن أروقة الجامعات ومناهجها المكثفة -بسنواتها الطويلة التي تمتد لأربع أو خمسة سنوات- لكنك لا تعرف من أين تبدأ؟ سنسلط في القسم الضوء على مصادر تعلم تخصص علم البيانات العربية لدخول سوق العمل، فكما أشرنا حاليًا السوق شره على المتخصصين ويركز على الخبرة والمشاريع العملية المنجزة ولا يتطلب شهادات جامعية حصرية. نفترض أنك أنهيت مراحل جيدة من التعليم الدراسي أو قد أنهيت المرحلة الثانوية أو تخصصت في أحد التخصصات الهندسية وبذلك تكون قد حصَّلت معرفة جيدة بأساسيات الرياضيات والإحصاء وحتى مواضيع متقدمة مثل التفاضل والتكامل (إن كنت قد اخترت التخصص العملي وليس الأدبي) وبذلك تكون قد قطعت شوطًا في تعلم هذا العمل، وعمومًا الأساسيات تكفي للبدء ويمكن لاحقًا التعمق في أي موضوع تحتاج إليه. بعدها يمكنك البدء بتعلم أساسيات علوم الحاسوب ولغات البرمجة المخصصة المستخدمة في علم البيانات وأهمها لغة بايثون و لغة R ولغة SQL فهي من أكثر اللغات المطلوبة والمخصصة للاستخدام مع البيانات. تؤمّن هذه اللغات قدرات وظيفية كبيرة في التواصل مع قواعد البيانات واستخلاص البيانات الخام وتحليلها وتنظيمها واستخلاص الرؤى وفقا للظاهرة المدروسة ومن ثم التقييم وإتخاذ القرار، وكل ذلك من خلال مجموعة واسعة من الخوارزميات التي توفرها هذه اللغات ضمنًا أو من خلال مكتبات متوافقة معها. من أهم المصادر العربية المتكاملة التي ننصحك بها كي تتعلم هذه التقنيات: كتاب ملاحظات للعاملين بلغة SQL 1.0.0 كتاب البرمجة بلغة بايثون الذي يشرح أساسيات لغة بايثون سلسلة تعلم لغة R التي تطلعك على كافة الأساسيات والمواضيع النظرية التي تحتاجها في هذه اللغات. سلسلة مقالات think stats التي توفر لك مجموعة مميزة من المقالات والدروس المتخصصة في تعليم الاحتمالات والإحصائيات لمبرمجي بايثون بأسلوب مبسط وسهل الفهم. وإذا كنت تفضل التعلم بإشراف مختصين يجيبونك على أي سؤال يخطر ببالك ويقرن التعليم النظري بالتطبيق العملي فأنصحك بالاطلاع على دورة أساسيات علوم الحاسب التي توفرها أكاديمية حسوب فهي كفيلة بأن تكسبك كافة الأسس التي تحتاجها لتعلم أسس البرمجة وقواعد البيانات، وكذلك دورة تطوير التطبيقات بلغة بايثون والتي تمكنك من تطوير طيف واسع من التطبيقات في مجالات منوعة من بينها تطبيقات عملية في تحليل البيانات تساعدك في التعرف على أبرز مكتبات بايثون المتخصصة في التعامل مع علم البيانات. إضافة إلى لغات البرمجة التي ذكرناها ستجد الكثير من المنصات والأدوات التي تدعم بشكل مباشر العمل مع البيانات الضخمة وتقدم مختلف الأدوات المساعدة في التحليل والتنظيم واتخاذ القرار والتي يمكنك تعلمها ومن أبرزها SAS و Spark و Hadoop و Azure و AWS. خاتمة ألقينا الضوء في هذا المقال على علم البيانات الذي يُتوقع أن يكون من أكثر الأعمال طلبًا خلال هذا العقد من الألفية نظرًا للحاجة الماسة للعمل ضمن كميات هائلة من البيانات الخام وضرورة الاستفادة منها في تطوير الأعمال على مختلف الأصعدة. كما تحدثنا عن المكونات والتخصصات التي يضمها ومجالات استخدامه وتطبيقه، كما تحدثنا عن دورة الحياة التي يمر بها أي مشروع يعتمد على علم البيانات. ومنعًا لتضارب الأفكار وضياع التسميات، فقد تحدثنا عن الفرق بين علم البيانات وتحليلها وكذلك الفرق بين علم البيانات والذكاء الاصطناعي. وهكذا نكون قد أحطنا بشكل مفصل أساسيات علم البيانات وتخصصاته ومجالاته المختلفة لمن يرغب فعليًا في امتهانه أو احتراف أحد اختصاصاته، ووضحنا المتطلبات الضرورية التي يحتاجها المتعلم حتى يبدأ رحلته في هذا المجال المهم والشيق والمجزي ماديًا والذي ينبئ بمستقبل واعد.
    4 نقاط
  30. ماهو كود<div> </div> وفي ماذا يستخدم ؟
    3 نقاط
  31. كيف افعل خاصية إكمال الكود التلقائي من محرر الأكواد VS code؟
    3 نقاط
  32. السلام عليكم لدي نفكرة عامة و لاكن احتاج الى تفصيل! تحديد المتطلبات من خلال التحدث مع العميل تصميم UI UX بالتعاون مع مصمم برمجة frontend + backend testing نشر التطبيق
    3 نقاط
  33. @حمزة عباد لدي سؤال يحيرني و هو لماذا يحمل كورس علوم الحاسوب ضمانة الحصول على عمل خلال 6 أشهر كباقي الكورسات بينما تقول هذا الكلام لي، أن الكورس لا يعلم أي تخصص، أن سوق العمل مليء بالمنافسين، هذا يعني أن الحصول على عمل بعد دراسة هذا الكورس أمر إما صعب أو أنه بالأحرى مستحيل و غير واقعي و بذلك تحقيق شرط الحصول على العمل خلال 6 أشهر أمر بعيد، إذن لماذا لم تقوموا بإزالة ضمانة العمل من الصفحة الرئيسية لهذه الدورة، هذه الدورة لا يمكن أن تجلب لك عملا لأنها لا تجعلك متخصصا لذا لا تنتظر عمل بعد دراستها لو سمحت، لماذا لا توضحون أنها تعلمك و تساعدك في التعمق بالأساسيات قبل دراسة تخصص بدل من القول بشكل صريح تعال إشتري هذا الكورس و ستحصل على شهادة و سيرة ذاتية ثم عمل عندما تنهيه؟
    3 نقاط
  34. في لغة بايثون تتيح التعامل مع جداول بيانات إكسل ومع جداول بيانات جوجل ومع المستندات ورد ومع الملفات CSV , JSON والتعامل مع قواعد البيانات ؟ أنا قد أفهم ما الفائدة من التعامل مع قواعد البيانات في لغة بايثون وجداول بيانات الإكسل في تحليل البيانات ولكن ما الفائدة من التعامل مع جداول بيناتا جوجل ومع المستندات ؟ وهل في الواقع نحتاج إليهم أم هما من إضافات في اللغة وفقط ؟
    3 نقاط
  35. كيف استطيع اتقان مهارة problem solving وانا اعرف اساسيات البايثون تقريبا ؟
    3 نقاط
  36. السلام عليكم هو اطار العمل Tensorflow غير مناسبة لمبتدين في مجال تعلم الاله واي هو المناسب للمبتدين في مجال تعلم الاله
    3 نقاط
  37. ماهو الفرق في الاستخدام بين ' و " ضمن الدالة print
    3 نقاط
  38. هل احتاج لتعلم html و css عند تطوير التطبيقات باستخدام فلاتر
    3 نقاط
  39. السلام عليكم، من فضلكم من يمكن أن يشرح لي هذا الcode؟ <meta name="viewport" content="width=device-width, initial-scale=1.0">
    3 نقاط
  40. عامل modulo هو عامل رياضي يُستخدم لإيجاد بقية قسمة عدد صحيح على آخر. مثال: 12 ÷ 10 = 1 (باقي 2) في هذا المثال، نريد إيجاد آخر رقم في 12. نقوم بقسمة 12 على 10. ناتج القسمة هو 1، والباقي هو 2. كيف يعمل %10: %10 هو نفس كتابة 10. عندما نقوم بقسمة عدد صحيح على 10، فإن الباقي هو آخر رقم في العدد. مثال بسيط يمكنك الفهم منه int N = 12; int M = 13; cout << N%10 + M%10; N%10 تعطي آخر رقم في N (2). M%10 تعطي آخر رقم في M (3). N%10 + M%10 تعطي مجموع آخر رقم هو (5).
    3 نقاط
  41. هل يجب ان اكون متمكن وقويا في لغات html,css,java scripr اثناء دوره بايثون او بعد الانتهاء للمساعده في العمل ام فقط معرفه الاساسياا
    3 نقاط
  42. السلام عليكم اريد تمارين عن الfunction لمبتدأ و متوسط وصعب
    3 نقاط
  43. عند تسطيب مكتبة pysqlcipher3 تحدث مشكلة ولا تتم عملية التسطيب ويظهر الخطأ Failed to build pysqlcipher3 ERROR: Could not build wheels for pysqlcipher3, which is required to install pyproject.toml-based projects هل صادف أحد هذه المشكلة وكيف حلها وشكراً لكم
    3 نقاط
  44. لا شك تعلم الخوارزميات أحد النصائح المهمة التي وجهت لك إذا قررت تعلم البرمجة فكلمة خوارزمية تتردد كثيرًا في مجال البرمجة وغيرها من المجالات مثل الرياضيات والعلوم والمنطق وكل ما يتعلق بالحاسوب خصوصًا، فهي من أهم المفاهيم التي لا يمكن أن يستقيم لك تعلم البرمجة والرياضيات وعلوم الحاسب بدونها. إذا كنت تتساءل ما هي الخوارزمية، وكيف أتعلم الخوازميات، وما أهمية الخوارزميات في علوم الحاسب وفي البرمجة بشكل خاص، وما هي أنواع الخوارزميات التي علي تعلمها، وكيف أكتب أفضل خوارزمية فهذه المقالة لك، حيث سنستعرض في سياقها كل ما تحتاج معرفته عن الخوارزميات، ونوفر لك مجموعة من المصادر التعليمية العربية الغنية التي تساعدك على تعلم رموز الخوارزميات وطرق حل الخوارزميات في الحاسوب بأفضل طريقة. ما هي الخوارزمية؟ الخوارزمية algorithm هي مجموعة من التعليمات المرتبة لحل مشكلة ما في الرياضيات أو أي مشكلة تواجهك في الحياة اليومية خلال زمن محدد وعدد خطوات محدود. ينبغي أن تكون خطوات وتعليمات الخوارزمية واضحة ومُرتّبة بحيث تنتهي بحل المشكلة. فكّر في الخوارزمية كما لو كانت وصفة طبخ، إذ تقدّم الوصفة طريقة تحضير وجبة ما خطوة بخطوة، ابتداءً بالمقادير الضرورية للوجبة، وحتى آخر خطوة من تحضير الوجبة وتقديمها. ورغم أن مفهوم الخوارزميات يمكن أن يطبق في كل مجالات الحياة لكن تبرز أهمية الخوارزميات في علوم الحاسب بشكل خاص فهي تنظم عمل المبرمج وتعزز تفكيره المنطقي والرياضي وتمكنه من فهم المشكلات وتصورها بشكل أفضل قبل حلها وتطبيقها فعليًا على برامج حاسوبية مكتوبة بإحدى لغات البرمجة. تاريخ الخوارزميات تُعزى أقدم الخوارزميات المعروفة إلى البابليين، إذ عُثِر على أقدم لوح يحتوي تعليمات خوارزمية لإجراء عملية القسمة، ويعود تاريخه لسنة 2500 قبل الميلاد. وقد عثِر كذلك على خوارزميات حسابية تعود إلى المصريين القدامى تعود إلى سنة 1550 قبل الميلاد. ازداد استخدام الخوارزميات في حقبة اليونان، حيث ظهرت الكثير من الخوارزميات الرياضية التي ما تزال تُستخدم حتى يومنا هذا، مثل خوارزمية قسمة إقليدس التي تحسب خارج وباقي عملية القسمة. تطور مفهوم الخوارزميات في عصر الحضارة الإسلامية، إذ استخدم المسلمون الخوارزميات لحل المعادلات والمسائل الرياضية. ولعل أشهر هذه الخوارزميات هي خوارزمية حل المعادلات من الدرجة الثانية التي ذُكِرت في كتاب "حساب الجبر والمقابلة" لعالم الرياضيات المسلم محمد بن موسى الخوارزمي مؤسس علم الجبر، والذي تُنسب إليه كلمة خوارزمية في اللغة العربية، وكذلك الكلمة المقابلة لها في اللغات اللاتينية algorithm المُشتقة من الكلمة al-Khwārizmī، وهو الاسم الرومي للخوارزمي -وأيضًا كلمة الجبر algebra. استخدم الأوروبيون كلمة algorithm للدلالة على القواعد والتقنيات التي استخدمها الخوارزمي لحل المعادلات الجبرية، ثمّ عُمِّم هذا المصطلح ليشمل أيّ مجموعة من القواعد والتقنيات الساعية لحل مشكلة ما. استمر مفهوم الخوارزميات في التطور بعد الحقبة الإسلامية إبّان عصر النهضة، خصوصًا مع تطوّر أسس علم الحوسبة في القرن التاسع عشر وإنتاج أول خوارزمية يمكن تنفيذها على الحاسوب سنة 1840 على يد آدا لوفانس Ada Lovelace. ثمّ الصياغة النهائية لمفهوم الخوارزمية على يد آلان تورنغ Alan Turing عبر آلته الشهيرة آلة تورنغ (Turing machine). دورة علوم الحاسوب دورة تدريبية متكاملة تضعك على بوابة الاحتراف في تعلم أساسيات البرمجة وعلوم الحاسوب اشترك الآن أركان الخوارزمية تملك أي خوارزمية ثلاثة أركان رئيسية وهي: الدخل أو المدخلات: تمثل البيانات أو الأشياء الضرورية والمطلوبة التي تعمل عليها الخوارزمية وإن كان الدخل مؤلفًا من عدة عناصر، فإنّ تعداد عناصره يسمى حجم الدخل، مثلًا إن كان الدخل عبارة عن مصفوفة أو سلسلة نصية مؤلفة من n عنصر، فإنّ حجم الدخل سيساوي n. لو عدنا إلى مثال الطبخ فإنّ دخل خوارزمية طهي وجبة معينة ستكون هي المقادير المُستخدمة لإعداد الوجبة. متن الخوارزمية: تأخذ الخوارزمية الدخل، وتطبّق عليه سلسلة من خطوات المعالجة المتتابعة والمُحدّدة سلفًا. مثلًا، يشمل متن خوارزمية الطبخ كل عمليات تجهيز المقادير وإعدَادها وخطوات طهيها. الخرج أو المُخرجات: بعد أن تنتهي الخوارزمية من تنفيذ كافة الخطوات، تُنتج لنا خرجًا يمثل حل المشكلة. مثلًا خرج خوارزمية طهي وجبة سيكون هو الوجبة نفسها جاهزة ومطهيّة. على سبيل المثال إذا أردنا كتابة خوارزمية جداء عددين صحيحين ستكون أركان هذه الخوارزمية كالتالي: الدخل: هو العددان الصحيحان المطلوب حساب ناتج جدائهما x, y الخرج: هو ناتج الجداء z متن الخوارزمية: الخطوة 1: ابدأ الخطوة 2: قم بالتصريح عن ثلاثة أعداد صحيحة x و y و z الخطوة 3: أدخل قيم المدخلات x و y الخطوة 4: اضرب قيم x بـ y الخطوة 5: خزّن ناتج الضرب في z الخطوة 6: اعرض قيمة z الخطوة 7: توقف خطوات حل الخوارزميات عندما تواجهك أي مشكلة وتريد كتابة خوارزمية لحلها عليك أن تفكر في العثور على إجابات للأسئلة التالية: ما هو دخل الخوارزمية أي ما هي المعلومات التي أحتاج إلى الحصول عليها من المستخدم؟ ما هو خرج الخوارزمية أي ما هي المعلومات التي أحتاج لعرضها على المستخدم؟ ما هي الخطوات الرئيسية المطلوبة لحل هذه المشكلة؟ ما هو ترتيب تنفيذ هذه الخطوات؟ ما هي القرارات أو الشروط التي أحتاج مراعاتها عند معالجة المعلومات؟ هل هناك تعليمات بحاجة لأن أكررها عدة مرات؟ طرق تمثيل الخوارزميات يمكنك ثمثيل الخوارزمية أو التعبير عنها بعدة طرق: الطريقة الأولى من خلال الكلام المبعثر الذي يصف حل المشكلة بلغتك المحكية دون اتباع أي قواعد في الوصف. الطريقة الثانية من خلال ما يسمى الشيفرة الوهمية أو الزائفة pseudocode وهي مجموعة من التعليمات التي تحاكي في طريقة كتابتها لغات البرمجة لكنها لا تلتزم بقواعد البرمجة التي يجب الالتزام بها عندما تكتب شيفرات برمجية فعلية. الطريقة الثالثة تسمى المخططات الانسيابية Flowcharts، والمخطط الانسيابي هو تمثيل رسومي للخوارزمية يرسم باستخدام أنواع مختلفة من الرموز لكل رمز غرض معين وهو في تقسيم المشكلة الكبيرة إلى مشاكل صغيرة سهلة الفهم ويعد طريقة مناسبة للتواصل بين الأشخاص غير التقنيين. تتوافر عدة برامج مساعدة تساعدك على رسم المخططات الانسيابية، وللمزيد يمكنك مطالعة مقال كيفية رسم مخطط انسيابي Flowchart باستخدام PowerPoin. مثال على استخدام الخوارزمية في حياتنا اليومية على سبيل المثال إذا طلب منك كتابة خوارزمية توضح طريقة التعامل مع آلة صنع القهوة والشاي ستكون الخطوات التي عليك اتباعها كالتالي: معرفة إن كان الزبون يريد شرب الشاي أم القهوة إضافة الشاي أو القهوة إلى الكوب معرفة إن كان المستخدم يريد إضافة السكر للكوب إذا كان الجواب نعم أضف السكر إلى الكوب سكب الماء الساخن في الكوب للتعبير عن هذه الخوارزمية باستخدام الشيفرة الزائفة سنكتب التالي: START; /Would you like Tea or Coffee?/; if tea { Add Tea in cup; } else { Add Coffee in cup; } /Would you like Sugar?/; if Sugar { Add Sugar in cup; } Pour boiling water in cup END; وللتعبير عنها باستخدام المخطط الانسيابي سنرسم المخطط التالي: أمثلة على الخوارزميات لنفهم بشكل أفضل ما هي الخوارزميات دعنا نستعرض بعض الأمثلة الإضافية على خوارزميات لحل مسائل رياضية بسيطة ونتعرف على أركانها المختلفة وخطوات حلها ونعبر عنها بالطرق المختلفة. خوارزمية لحساب قيمة مضروب عدد في الرياضيات المضروب factorial أو عاملي العدد الصحيح n الذي يعبر عنه بالشكل التالي n! هو جداء كل الأعداد الطبيعية المساوية أو الأصغر من n ما عدا الصفر ولكتابة خوارزمية تحل هذه المسألة الرياضية علينا اتباع الخطوات التالية: الدخل: هو العدد الصحيح المطلوب حساب مضروبه n. الخرج: هو ناتج المضروب factorial المتن: الخطوة 1: إدخال العدد n المراد حساب مضروبه الخطوة 2: تعريف متغير مساعد وليكن i وهو عبارة عن عدد صحيح يأخذ قيمة متغيرة بين الواحد والعدد نفسه ويساعدنا على حساب القيمة المطلوبة. الخطوة 3: تهيئة المتغير factorial الذي يمثل القيمة المؤقتة للمضروب، والمتغير i الذي يمثل المرحلة التي نحن فيها أثناء تنفيذ الخوارزمية بالقيمة واحد أي نجعل factorial = 1 و i = 1 الخطوة 4: إعادة تعيين قيم المتغير factorial بالقيمة factorial*i والمتغير بالقيمة i+1 الخطوة 5: كرر الخطوة 3 حتى تصبح قيمة المتغير i أكبر تمامًا من n الخطوة 6: قم بإيقاف الخوارزمية وإعادة قيمة factorial التي تمثل مضروب العدد n الصورة التالية توضح طريقة رسم المخطط الانسيابي لحل خوارزمية حساب مضروب عدد: هل تعرف طرقًا أو أساليب أخرى لحل هذه المسألة؟ شاركنا إياها في قسم التعليقات أسفل المقال. خوارزمية للعثور على أكبر عدد من بين ثلاثة أعداد سنكتب حل هذه المسألة بأكثر من خوارزمية أو طريقة: طريقة 1: الدخل: 3 أرقام a و b و c الخرج: العدد الأكبر من بينها a أو b أو c المتن: الخطوة 1: أدخل الأرقام الثلاثة وخزنها في المتغيرات a و b و c على التوالي. الخطوة 2: تحقق من كون الرقم الأول a أكبر من الرقم الثاني b و الثالث c عندها اطبع أن a هو العدد الأكبر بين الكل وأنهي التنفيذ الخطوة 3: تحقق من كون b أكبر من a و c عندها اطبع أن b هو العدد الأكبر بين الكل وأنهي التنفيذ الخطوة 4: تحقق من كون c أكبر من a و b عندها اطبع أن c هو العدد الأكبر بين الكل وأنهي التنفيذ الكود الزائف للتعبير عن خوارزمية أكبر عدد بين 3 أعداد: Step-1 Start Step-2 Read three numbers a,b,c Step-3 If a>b then go to step-5 Step-4 IF b>c THEN print b is largest ELSE print c is largest ENDIF GO TO Step-6 Step-5 IF a>c THEN print a is largest ELSE print c is largest ENDIF Step-6 Stop والمخطط الانسيابي للتعبير عن الخوارزمية هو كما يلي: لعلك لاحظت أن الطريقة أعلاه تتطلب اختبار الكثير من الشروط حتى نصل لقرار حول العدد الأكبر من بين الأعداد الثلاثة، دعنا نحاول حلها بطريقة أبسط. كما تلاحظ فإن خوارزمية مقارنة ثلاثة أعداد حتى نصل لقرار حول العدد الأكبر من بين الأعداد الثلاثة تطلبت إجراء خطوتين والمرور مرتين على كل عدد، ولكن ماذا لو كان لدينا 10 أعداد أو أكثر ستزداد الخطوات ومرات المرور على الأعداد وسيزاد زمن الحل وتعقده لذا من الأفضل أن نفكر بطريقة أفضل تمكننا من المرور مرة واحدة على الأعداد ومعرفة العدد الأكبر من بينها. يمكن أن نخزن الأعداد في بنية واحدة مثل المصفوفة ثم نقرأها واحدًا تلو الآخر ونعتبر أن أول عدد هو الأكبر من بين كل الأعداد وكلما قرأنا عددًا جديدًا نقارنه بالذي قبله مباشرة فإن كان أكبر منه نبدل بينهما وإن كان أصغر منه أو يساويه لا نقوم بأي إجراء. لنطبق هذه الطريقة لإيجاد العدد الأكبر من بين ثلاثة أعداد طريقة 2: الدخل: 3 أرقام a و b و c الخرج: max الذي يمثل العدد الأكبر المتن: الخطوة 1: أدخل الأعداد الثلاثة وخزنها في a و b و c على التوالي الخطوة 3: افترض أن العدد الأول a هو الأكبر max = a الخطوة 4: إذا كان العدد الثاني b أكبر من max اجعل max = b الخطوة 5: إذا كان العدد الثالث c أكبر من أكبر من max اجعل max = c الخطوة 6: اعرض قيمة max الكود الزائف للتعبير عن هذه الخوارزمية لإيجاد أكبر عدد من بين 3 أعداد: Step-1 Start Step-2 Read three numbers: a,b,c Step-3 max = a Step-4 IF b > max THEN max = b ENDIF Step-5 IF c > max THEN max = c ENDIF Step-6 print max Step-7 Stop والمخطط الانسيابي للتعبير عن الخوارزمية هو كما يلي: هل لديك خوارزمية أخرى أفضل لحل هذه المسألة؟ يمكن أن تشاركنا إياها لنتناقش حولها. كما تلاحظ فقد مررنا مرة واحدة على الأعداد وعرفنا أيها أكبر، وهذا لن يختلف لو كان لدينا قائمة تحوي 100 عدد أو أكثر، هذا المفهوم ببساطته يسمى بكفاءة الخوارزمية أو تعقيد الخوارزمية والذي يشار إليه برمز Big O وستجده دومًا في أي موضوع يتناول الخوارزميات، لأن من شروط كتابة الخوارزميات أن تكون ذات كفاءة وأقل تعقيدًا ممكنًا. فكل الخوارزميات تعطي في النهاية الخرج الصحيح نفسه ولكن تتميز عن بعضها بكفاءة وكيفية وسرعة الوصول للخرج الصحيح، وهنا تبرز أهمية التفكير المنطقي وضرورة دراسة الخوارزميات وبنى المعطيات لمعرفة الحل الأكثر كفاءة لحل أي مسألة برمجية تواجهها وسنتحدث عن هذا الموضوع بالتفصيل تاليًا في فقرة "تحليل الخوارزميات". تحويل الخوارزمية إلى برنامج حاسوبي إن طرق تمثيل الخوارزمية مفهومة وواضحة لنا كبشر لكنها في الواقع غير قابلة للاستخدام والتطبيق على الحاسوب، لأنّ الخوارزميات خطط عامة ومجرّدة لحل المشاكل. فإن أردنا استخدام الخوارزمية لحل مشكلة ما، فسيكون علينا ترجمتها أو التعبير عنها بإحدى لغات البرمجة كي يفهمها الحاسوب ويعيد لنا النتائج المطلوبة، هذه العملية تُسمّى تحقيق الخوارزمية أو تنفيذ الخوارزمية implementation وينتج عن تحويل الخوارزمية إلى إحدى لغات البرمجة شيفرة برمجية قابلة للتنفيذ execution على الحاسوب. لنضرب مثالًا على ذلك: سنحول الخوارزمية التي ذكرناها آنفًا والتي تحاول إيجاد أكبر عدد من بين ثلاثة أعداد إلى برنامج مكتوب بلغة بايثون حتى يتسنّى لنا تنفيذها على الحاسوب. تنفيذ خوارزمية إيجاد أكبر عدد من بين ثلاثة أعداد في لغة بايثون برنامج بايثون لإيجاد أكبر عدد من بين ثلاثة أعداد a = int(input('a= ')) b = int(input('b= ')) c = int(input('c= ')) max = a if b > max : max = b if c > max : max = c print(max, "هو العدد الأكبر") يمكنك الآن تنفيذ هذه الشيفرة على أيّ حاسوب وستعمل كما هو متوقع. كما يمكنك بالطبع تحقيق الخوارزمية بأيّ لغة برمجة أخرى تريدها مثل C أو C++‎ أو جافا أو جافا سكريبت أو R …إلخ. تمرين ما رأيك أن تجرب تحويل الخوارزمية السابقة إلى برنامج حاسوبي يطلب من المستخدم إدخال مجموعة أعداد تفصل بينها فراغات مثل 4 9 8 7 10 ليحللها البرنامج بتلك الخوارزمية ويعطي العدد الأكبر من بينها (مساعدة: ستحاول استعمال حلقات التكرار loops) مجالات استخدام الخوارزميات كانت الخوارزميات تُستخدم طوال آلاف السنوات من قبل علماء الرياضيات لحل المعادلات والمسائل الرياضية وما تزال إلى يومنا هذا. فالخوارزميات جزء لا يتجزأ من الرياضيات ابتداءً من حل المعادلات الجبرية، وحتى كتابة البراهين المنطقية. وتستخدم الخوارزميات اليوم على نطاق واسع في مجال البرمجة وعلوم الحاسب، فالحاسوب ليس سوى آلة تنفذ الأوامر بكفاءة وسرعة على عكس البشر، الذين يفهمون المطلوب ويحللونه ويفكرون بأدمغتهم لوضع الخوارزميات ثم ينفذونها بواسطة الحاسوب. لذلك، تحتاج إلى تبسيط ووضع خوارزمية للحاسوب لينفذها لك بحذافيرها وبأفضل أداء ممكن. وكل البرامج والتطبيقات وأنظمة التشغيل تعتمد على الخوارزميات وتستخدمها من أجل معالجة البيانات وإجراء الحسابات وحلّ مشكلات العمل كما تستخدم الخوارزميات في عدة مجالات أخرى مثل الفيزياء وتحليل اللغات والاقتصاد وغيرها من مناحي الحياة وهي تطبق اليوم في كل شيء نستخدمه من حولنا ومن أبرز الأمثلة على مجالات استخدام الخوارزميات في حياتنا اليومية نذكر: خوارزميات التواصل الاجتماعي التي تتحكم فيما تراه على مواقع التواصل الاجتماعي خاصتك خوارزميات محركات البحث التي تحسن عمليات البحث وتتنبأ بما سيكتبه المستخدمون. خوارزميات كشف الجرائم باستخدام تقنيات التعرف على الوجه ورسم الخرائط التنبؤية لتوقع الجرائم واتخاذ الإجراءات لمنعها. خوارزميات التشفير التي تقوم بتحويل نص مفهوم إلى نص غير مفهوم وتُستخدم لحماية البيانات المهمة بحيث لا يفهمها إلّا الأشخاص الذين وجهت إليهم. خوارزميات التنبؤ بحالة الطقس ودرجة الحرارة بمساعدة البيانات السابقة وهي تفيد في عدة مجالات أهمها الزراعة والطيران والاتصالات والحروب. خوارزميات تحديد مواعيد وصول الحافلات وجدولتها بأفضل طريقة. خوارزميات تحديد مواقف السيارات المتاحة لمساعدة السائقين على العثور على وجهتم بسرعة وسهولة. خوارزميات توجيه المركبات إلى أفضل طريق. خوارزميات تعديل مسارات الصواريخ. وغيرها الكثير من مجالات الحياة المختلفة في الاقتصاد والعلوم والإعلام وما شابه التي تلعب فيها الخوارزميات دورًا فعالًا وحيويًا، على سبيل المثال عرضت نيتفليكس جائزة قدرها مليون دولار لمن يطور خوارزميتها المستخدمة في اقتراح الأفلام والمسلسلات على الزوار ويجعلها أفضل بنسبة 10%. مواصفات الخوارزمية الجيدة قد تتساءل وهل هناك خوارزمية جيدة وأخرى ليست كذلك؟ وما الذي يجعل الخوارزمية جيدة؟ والجواب هو نعم فكما أنّ هناك وصفات طبخة سيئة ولا تنجح، فكذلك هناك خوارزميات سيئة وغير عملية ولا تصلح للتطبيق، فليست كل سلسلة متتابعة من الخطوات والتعليمات خوارزمية، بل لابد أن تتوفر فيها شروط خاصة تجعلها عملية وقابلة للتطبيق مثل: الوضوح: ينبغي أن تكون كل خطوة من خطوات الخوارزمية واضحة ومفهومة ولا لبس فيها. المحدودية: يجب أن تكون الخوارزمية محدودة، أي أن تكون خطواتها منتهية، وتُنفّذ في مدة زمنية منتهية. فإن كان عدد الخطوات غير منته، أو كان بإمكان إحدى الخطوات أن تستغرق مدة لا منتهية، فإنّها ليست خوارزمية. البساطة والواقعية: ينبغي أن تكون الخوارزمية قابلة للتطبيق بالموارد والتقنيات المتاحة، ولا ينبغي أن تعتمد على تقنية مستقبلية أو غامضة. قابلية التطبيق: يعني الاستقلالية عن لغات البرمجة أي لا ينبغي أن تكون الخوارزمية مرتبطة بلغة برمجة محددة، ويجب أن تكون مجردة وعامّة بحيث تركز على العمل الأساسي للبرنامج بدلًا من التركيز على خصائص لغة برمجة معينة وبعدها يمكن تطبيقها عبر أي لغة برمجة. صحة النتائج: يجب أن تقوم الخوارزمية بتنفيذ المهمة المطلوبة منها دون أخطاء في التنفيذ أو عدم دقة في النتائج. الكفاءة والفعالية: ينبغي أن تستخدم الخوارزمية أفضل الطرق لحل المشكلة بأسرع وقت تنفيذ أو ما يعرف بالتعقيد الزماني للخوارزمية وأقل مساحة ذاكرة أو ما يعرف بالتعقيد المكاني للخوارزمية. هل أحتاج إلى معرفة الرياضيات لتعلم الخوارزميات؟ الجواب هو نعم ولا، وكي أوضح إجابتي أكثر ، فالخوارزميات تُستخدم أساسًا لحل مشاكل حسابية، مثل متوسط مجموعة من القيم، أو أقصر مسار بين نقطتين في شعبة، أو أسهل طريقة لرسم شكل هندسي، أو ترتيب عناصر مصفوفة. كل هذه المشاكل تنطوي على قدر من الرياضيات الأساسية، لذلك فالجواب هو نعم. لكن إن كنت تقصد بمعرفة الرياضيات أنّه ينبغي أن تكون لك شهادة جامعية في الرياضيات، أو تكون لك معرفة عميقة أو حتى متوسطة بها، فالجواب سيكون لا لأنّ الخوارزميات لا تتطلب معرفة عميقة بمفاهيم الرياضيات. تذكر أنّ الخوارزميات هي طرق عامة لحل المشاكل والمسائل الحسابية، لذلك فمقدار الرياضيات التي تحتاجها يتعلق بنوع المشكلة التي تريد حلها، إن كنت تريد حل مشكلة معقدة، مثل التنبؤ بالمناخ، فعلى الأرجح أنّ الخوارزمية ستكون معقدة وتحتاج إلى معرفة متقدمة بالرياضيات لكن لا تدع هذا يخيفك ويصدّك عن تعلم الخوارزميات، إذ أنّ معظم المسائل التي ستُواجهها هي مشاكل لا تحتاج إلا إلى معرفة بسيطة بأساسيات الرياضيات، مثل العمليات الحسابية البسيطة. خلاصة القول هو أنك لا تحتاج إلى تعلم الرياضيات لكي تتعلم الخوارزميات، فما دمت تفهم كيف تجري العمليات الحسابية البسيطة، مثل الجمع والضرب، وبعض المفاهيم البسيطة، مثل المجموعات والدوال وطرق حل المعادلات فيمكنك أن تتعلم الخوارزميات بسهولة. لكن النقطة الأهم هي الارتباط بين التفكير المنطقي أو طرق حل المشكلات وبين الخوارزميات والبرمجة، فالتفكير المنطقي هو بلا شك مهارة ضرورية للبشر عمومًا وللمبرمجين على وجه الخصوص ومن الضروري تعليمه للأطفال من سن مبكرة لمنحهم هذه المهارة المهمة والضرورية جدًا لنجاحهم في مستقبلهم المهني. تحليل الخوارزميات الخوارزمية هي في الأصل خطة لحل مشكلة حسابية فإن لم تكن تملك خطة مُسبقة لحل مشكلة معقدة، فستفشل محاولاتك على الأرجح لحل تلك المشكلة وحتى لو كانت المشكلة بسيطة، فقد يكون هناك العديد من الحلول، وبعض هذه الحلول أسرع وأكفأ من بعض. من هنا تأتي أهمية تحليل الخوارزميات الذي يهتم بدراسة كفاءة الخوارزميات من ناحية الوقت والذاكرة التي يحتاجها تنفيذ الخوارزمية واختيار الحل الأبسط والأسرع والأقل استهلاكًا للموارد، أو بلغة الحوسبة، تريد أن تخفض تعقيد الخوارزمية Algorithms Complexity إلى أقصى حد ممكن. يشمل تعقيد الخوارزمية كل الموارد الضرورية لحل المشكلة، إن كانت الخوارزمية خوارزميةَ طبخ، فإنّ تعقيدها سيكون الوقت والطاقة اللازمة لإعداد الوجبة. أما إن كانت الخوارزمية تسعى لحل مشكلة في الرياضيات، سيكون تعقيدها هو الوقت اللازم لإجراء خطوات الخوارزمية. أما إن كانت الخوارزمية حاسوبية، فإنّ تعقيدها سيكون الوقت ومساحة الذاكرة الضروريان لتنفيذ خطوات الخوارزمية. لهذا السبب ابتكر العلماء فرعًا كاملًا في علم الخوارزميات مُخصّصًا لتقدير تعقيد الخوارزميات يُسمّى نظرية التعقيد، والذي يصنّف الخوارزميات إلى أصناف بحسب تعقيدها الزماني Time Complexity الذي يصف مقدار الوقت الذي يستغرقه تنفيذ الخوارزمية. وتعقيدها المكاني أو ما يسمى بتعقيد المساحة Space Complexity الذي يمثل عدد خلايا الذاكرة اللازمة لتنفيذ عمليات الخوارزمية مع استثناء المساحة المخصصة لدخل الخوارزمية. يتم التعبير عن تعقيد الخوارزمية بتدوين خاص يسمى Big O notation وهو طريقة لوصف تعقيد الخوارزمية الزمني باستخدام مصطلحات جبرية وأدنى هذه الأصناف هو الصنف O(1)‎، والذي يعني أنّ الخوارزمية تستغرق وقتا ثابتًا لحل المشكلة مهما كان حجم الدخل كما في خوارزمية معرفة كون العدد فردي أم زوجي مثلًا أو خوازرمية طباعة أول رقم من بين قائمة من الأرقام، أما الصنف O(n)‎ فَيعني أنّ مدة تنفيذ الخوارزمية متناسبة مع حجم الدخل n كما في خوارزمية حساب مضروب العدد وخوازمية إيجاد أكبر عدد من بين مجموعة من الأعداد. وإليك قائمة مختصرة بأشهر أنواع تعقيد الخوارزميات وفق تدوين Big O ودلالة كل منها: O(1)‎ تعقيد زمني ثابت: أي تستغرق الخوارزمية نفس الزمن مهما كان حجم الدخل. O(n)‎ تعقيد زمني خطي: أي يتناسب زمن تنفيذ الخوارزمية بشكل خطي مع حجم الدخل، بمعنى آخر إذا كان حجم الدخل n فإن عدد الخطوات المطلوب لحلها سيكون n على الأكثر. O(sqrt(n)) تعقيد جذر تربيعي: أي إذا كان حجم دخل الخوازرمية هو n سوف يتناسب زمن تنفيذ الخوارزمية مع الجذر التربيعي لقيمة الدخل. O(n^c)‎ تعقيد كثير الحدود: يتناسب زمن تنفيذ الخوارزمية مع حجم الدخل مرفوع للأس c وله أنواع فقد يكون تعقيد زمني تربيعي O (n^²)‎ أي يتناسب زمن تنفيذ الخوارزمية مع مكعب حجم الدخل أو تعقيد زمني تكعيبي O(n^3)‎ أي يتناسب زمن تنفيذ الخوارزمية مع مكعب حجم الدخل. O(log n)‎ تعقيد لوغاريتمي: تناسب زمن تنفيذ الخوارزمية مع لوغاريتم حجم الدخل. O(n log n)‌‎ تعقيد لوغاريتمي خطي: وهو أبطأ قليلاً من الخطي O(2^n)‎ تعقيد أسي: وفيه تتضاعف خطوات الخوارزمية بشكل أسي مع زيادة حجم الدخل. O(n!)‎ تعقيد عاملي: أي يتناسب زمن الخوارزمية مع قيمة عاملي الدخل أي ضرب جميع الأعداد الصحيحة الموجبة الأصغر من قيمة الدخل. يمكنك أن تجد حلًا للمشاكل بدون الخوارزميات، لكن من النادر أن يكون ذلك الحل الذي وجدته هو الحل الأفضل والأكفأ، وهذه فائدة تحليل الخوارزميات فهو يمكّنك من العثور على الحل الأمثل والأنسب والأقل استهلاكًا للموارد. للمزيد من المعلومات أنصح بمطالعة مقال مدخل إلى تحليل الخوارزميات ومقال الدليل الشامل عن تعقيد الخوارزميات أنواع الخوارزميات البرمجية الخوارزميات هي خطط عامة لحل المشاكل وتتنوع أساليب وأنواع الخوارزميات بحسب الأسلوب الذي تتبعه الخوارزمية لحل المشكلة أو بحسب نوع المشكلة التي تحلها، وبناء على ذلك يمكن أن نجد أنواعًا مختلفة من الخوارزميات ومن أبرزها: خوارزميات القوة الغاشمة Brute force algorithms : تحاول الخوارزميات من هذا النوع حل المشكلة بطريقة مباشرة وتمر بجميع الخيارات الممكنة حتى تتمكن من العثور على حل لهذه المشكلة. الخوارزميات الجشعة Greedy algorithms: تحاول الخوارزميات الجشعة حل المشكلة خطوة فخطوة، بحيث تقترب رويدًا رويدًا من الحل العام للمشكلة. خوارزميات البرمجة الديناميكية Dynamic Programming: تقسّم خوارزميات البرمجة الديناميكية المشكلة إلى مشاكل فرعية أبسط، ثمّ تحل تلك المشاكل الفرعية لاستنتاج الحل النهائي خوارزميات فرق تسد Divide and conquer algorithms: تقسِّم خوارزميات فرِّق تسد المسألة إلى مسائل فرعية تشبه المسألة الأصلية، ثمّ تحلها وتدمج الحلول لتقديم حلٍّ المسألة الأصلية. خوارزميات التعقب الخلفي Backtracking algorithms: تحاول خوارزميات التعقب الخلفي حل المشكلة تعاوديًا عبر بناء الحل تصاعديًا خطوة فخطوة، مع حذف الحلول التي لا تستجيب للقيود التي تفرضها المسألة المُراد حلها في أيّ وقت أثناء تنفيذ الخوارزمية. خوارزميات الترتيب Sort algorithms: هي خوارزميات ترتب مجموعة من العناصر القائمة في ترتيب معين رقمي أو هجائي. والفرز هو أحد الخطوات الهامة في الخوارزميات الأكثر تعقيدًا، توجد عدة خوارزميات تمكننا من تحقيق عملية الفرز ولكل منها ميزاتها ومحدوديتها. خوارزميات البحث Search algorithms: هي خوارزميات تقوم بتحديد موقع بيانات محددة بين مجموعة من البيانات أي أنها تبحث عن البيانات المخزنة ضمن بعض الهياكل أو بنى البيانات وتقوم باستردادها. خوارزميات التعلم الآلي: هي خوارزميات تحاول التعلم بناءً على مجموعة من حالات اتخاذ القرار السابقة كي تتمكن من اتخاذ قرارات معقدة بناءً عليها. خوارزميات التشفير: هي الخوارزميات التي تقوم بتحويل نص مقروء إلى نص غير مقروء يُعرف باسم النص المشفر بحيث يمكن للأطراف المصرح لهم فقط بفهم المعلومات الموجودة في هذا النص وهي خوارزميات هامة جدًا في مجال أمن البيانات الحساسة والحفاظ على الخصوصية. كانت تلك بعض أنواع وتصنيفات الخوارزميات الأكثر شيوعًا وهناك بالطبع العديد من الخوارزميات الأخرى للعديد من الحالات المختلفة. هناك أيضًا طرق أخرى يمكن تطبيقها بسهولة في التطبيقات مثل خوارزمية Dijkstra و Cycle Detection و Kruskal Minimum Spanning Trees فهي من الخوارزميات الأساسية للمبتدئين للتعلم منها. أهمية الخوارزميات في البرمجة هناك من قد يقول أنّ تعلم الخوارزميات تَرفٌ، وهو غير ضروري لكتابة البرامج والتطبيقات، وأنّه يمكن للمبرمج أن يكتب برامجه مباشرة دون الحاجة إلى مفاهيم الخوارزميات. صحيح أنّه ليس عليك أن تكون خبيرًا في الخوارزميات لتَكون مبرمجًا، لكن لا يمكنك أن تكون مبرمجًا بارعًا ومحترفًا دون أن تتعلم فن تصميم الخوارزميات. يوفر تعلم الخوارزميات للمبرمج العديد من الفوائد أبرزها: القدرة على حل المشكلات بشكل أفضل الاستخدام الفعال للموارد الحاسوبية يوفر وقت البرمجة يجعل منك مبرمجًا أفضل لنناقش كل فائدة منها بمزيد من التفصيل ونتعرف كيف يسهم تعلم الخوارزميات في تعزيزها. القدرة على حل المشكلات بشكل أفضل سيحسن تعلمك لطرق حل الخوارزميات من قدرتك على حل المشكلات بصورة عامة والمشكلات البرمجية على وجه الخصوص، ويكسبك مرونة ذهنية في التفكير في الحلول ويساعدك لاحقًا في كتابة البرامج الحاسوبية المتنوعة أيًا كانت اللغة البرمجية المستخدمة خصوصًا بأنّ الخوارزميات مستقلة عن لغات البرمجة، لذا يمكنك استخدامها مهما كانت لغة البرمجة التي تعمل عليها. الاستخدام الفعال للموارد يضمن لك اختيار الخوارزمية الصحيحة الاستخدام المناسب للموارد مثل الذاكرة والتخزين والشبكة وغيرها. فلا يكفي أن تكون الفكرة التي بنيت عليها البرنامج أو التطبيق مفيدة ومبتكرة، ينبغي أن تكون عملية بحيث ينفّذها الحاسوب أو الجوال في وقت معقول وموارد محدودة، فما فائدة تطبيق رسم يحتاج دقيقة كاملة ليرسم مربعًا، وما فائدة برنامج يحتاج إلى 10 جيجابايت من الذاكرة ليعمل! توفير وقت البرمجة يوفر عليك تعلم الخوارزميات الكثير من الوقت، إذ أنّ معظم المشاكل والمسائل التي قد تعترضك أثناء كتابة البرامج لها حلول جاهزة على هيئة خوارزميات مُحسّنة وسريعة، ما يغنيك عن إعادة اختراع العجلة في كل مرة تعترضك مشكلة ما، لأنّ هناك من حلّها قبلك على الأرجح وأعدّها على هيئة خوارزمية وكل ما عليك فعله هو تحويلها إلى لغة البرمجة التي تستعملها ثم تنفّذها وقد لا تضطر حتى إلى تنفيذها فمعظم الخوارزميات الشهيرة والفعالة مثل خوارزميات البحث والفرز تدمج في لغات البرمجة بشكل مكتبات جاهزة يمكنك استخدامها في شيفراتك البرمجية. الخوارزميات تجعل منك مبرمجًا أفضل تعلم الخوارزميات سيجعلك مبرمجًا أفضل وأكثر احترافية، فسَواء كنت متخصصًا في تطبيقات الجوال أو تطبيقات سطح المكتب، أو في بناء المواقع أو تصميم الألعاب أو غيرها من مجالات البرمجة، فإنّ تعلم الخوارزميات سيوسع أفق تفكيرك البرمجي ويساعدك على تطوير برامج أجود وأسرع وأكثر موثوقية. أهم مصادر تعلم الخوارزميات هناك للأسف ضعف في المحتوى العربي التقني، هذا الضعف يظهر أكثر ما يظهر في مجالات الخوارزميات. ولسدّ هذا القصور في المحتوى العربي فقد وفرت أكاديمية حسوب العديد من مصادر التعلم القيمة باللغة العربية. فنظرًا للأهمية الكبيرة للخوارزميات في كافة مجالات البرمجة، وفي غيرها من المجالات مثل الرياضيات والتنمية وغيرها، فقد وفرت لك أكاديمية حسوب دورة علوم الحاسب والتي تتضمن مسارات متعددة يحتاجها أي مبتدئ في تعلم البرمجة من أهمها مسار الخوارزميات وبنى المعطيات الذي يعلمك خطوة بخطوة كيفية كتابة الخوارزميات وتحليلها ويعرفك على أهم الخوارزميات التي تفيدك في عملك البرمجي مثل خوارزميات البحث والترتيب والخوارزميات الرياضية وخوارزميات الرسوم البيانية وغيرها الكثير. كما نشرت الأكاديمية سلسلة الخوارزميات للمحترفين التي تشرح الخوارزميات بالتفصيل وتغطّي كافة مفاهيمها الأساسية مثل مفهوم التعقيد لتقدير الموارد التي تستهلكها البرامج كالوقت والذاكرة. إضافة إلى مفاهيم البرمجة الديناميكية، وبعض أنماط الخوارزميات العامة. تلك السلسلة غنية بالأمثلة التطبيقية، إذ تستعرض الكثير من الخوارزميات لحل بعض المشاكل التقليدية في علم الحاسب خصوصًا تلك المتعلقة بالأشجار وترتيب المصفوفات والبحث، علاوة على طائفة من الخوارزميات المتنوعة في مجالات الجبر والهندسة ونظرية الأعداد. كما أن السلسلة تنفذ الخوارزميات التي تستعرضها من خلال العديد من لغات البرمجة، فمهما كانت لغة البرمجة خاصتك، سواء كانت بايثون أو جافا أو C++/C أو #C‏‏ أو جافا سكريبت، فستجد أمثلة بهذه اللغات وغيرها في هذا الكتاب. وستجد كذلك توثيقًا شاملًا عن الخوارزميات في موسوعة حسوب يضم توثيقات لأهم الخوارزميات المُستخدمة في البرمجة. وننصحك كذلك بأن تشترك في قناة أكاديمية حسوب على يوتيوب وستجد فيها الكثير من الدروس المفيدة والمواضيع الشيقة حول البرمجة والخوارزميات والتفكير المنطقي وغيرها الكثير. وأخيرًا إذا كنت تتساءل هل يجب علي كمبتدئ أن أتعلم الخوارزميات أولًا أم أتعلم إحدى لغات البرمجة أولًا فنصيحتي لك أن تبدأ كخطوة أولى بالتعرف على أساسيات البرمجة وبعد التمكن منها يمكنك البدء بتعلم الخوارزميات وتطوير تفكيرك البرمجي والخوارزمي على التوازي في رحلة التعلم حتى تصل للاحتراف في كليهما. إذا أتقنت تعلم الأساسيات يمكن أن تنتقل لتعلم الأمور المتقدمة وستجد في قسم البرمجة ضمن وتحديدًا في قسم "مقالات برمجة متقدمة" في أكاديمية حسوب مجموعة متنوعة من المقالات المتقدمة التي تزيد معرفتك وخبرتك في مجال الخوارزميات وفي حال واجهك أي سؤال يمكنك طرحه في قسم الأسئلة والأجوبة في الأكاديمية. الخلاصة تعرفنا في مقال اليوم ما هي الخوارزمية وأهمية الخوارزميات في علوم الحاسب وهندسة البرمجيات، وتعرفنا على خطوات حل الخوارزمية وطرق التعبير عن الخوارزميات بالشيفرة الوهمية والمخططات الانسيابية ثم تحويلها بعد ذلك إلى برامج حاسوبية من خلال الأمثلة العملية البسيطة التي تناسب المبتدئين. كما تعرفنا في الختام على أبرز الفوائد التي تجنيها كمبرمج من تعلم الخوارزميات، وأهم المراجع العربية التي تشرح الخوارزميات من الصفر للاحتراف، فإذا كنت تسعى لتكون مبرمجًا محترفًا فتعلم الخوارزميات أحد الأمور المهمة التي ينبغي أن تضعها في الحسبان لتساعدك على تحقيق هذا الهدف. اقرأ أيضًا أمثلة عن أنواع الخوارزميات تعرف على تخصص هندسة البرمجيات مهندس البرمجيات من هو وما هي مهامه ما هي مدة تعلم البرمجة؟
    3 نقاط
  45. لم افهم جيدا ما هو sidebar و navbar هل هناك المزيد من الشرح المبسط مع صورة لتوضيح اجزاء الصفحة الموضحة واماكنها
    3 نقاط
  46. هل if تغير من قيمة ال todos let [todos, setTodos] = useState([]); if (showTodo === 'active') { todos = todos.filter(todo => !todo.status) console.log(todos); } else if (showTodo === 'finish') { todos = todos.filter(todo => todo.status) console.log(todos); }
    3 نقاط
  47. ماهو الفرق بين composer.lock and composer .json
    3 نقاط
  48. مرحبا من فضلكم لدي سؤال أنا حاليا أتابع درس تطبيق ملاحضة والأن قمت بحفض مشروع تطبيق ملاحضة دهرا عن قلب تعلمت أن اكتب الشفرة بسرعة وبدون أخطاء و لكن بعد الأشياء لم افهما وسؤالي هل الطريقة في حفد بعضن المشاريع ستنفعني أو اركز فقط على لفهم و اتخلى عن الحفض و شكراً
    3 نقاط
  49. لقد فتح نموذج اللغة المتقدم ChatGPT، وهو التقنية المتطورة للذكاء الاصطناعي، آفاقًا جديدةً للتواصل بين الإنسان والآلة؛ لذا إذا كنت مهتمًا بالذكاء الاصطناعي أو التعلم الآلي أو معالجة اللغة الطبيعية، فلن ترغب في تفويت هذا الدليل الذي يتعمق في عالم ChatGPT الرائع. يضم هذا الدليل سلسلةً من المقالات التي تحتوي على مجموعة شاملة من المعلومات عن ChatGPT، إذ ستناقش هذه المقالات كيفية عمل ChatGPT وكيف جرت عملية تطويره، وكيفية تدريبه، وكيف يمكن استخدام واجهة برمجة التطبيقات API له، كما ستتضمن هذه السلسلة معلومات مفصلة حول موضوعات أخرى متعلقة بـ ChatGPT، والتي يمكن استخدامها في تحسين تجربة المستخدم عبر الإنترنت. وبغض النظر عن مهاراتك الحالية في تكنولوجيا المعلومات، سواء كنت مبتدئًا فضوليًا أو مطورًا متمرسًا، فلن ترغب في تفويت الأفكار القيمة الواردة في هذه المقالات، لتحصل على فهم شامل لـ ChatGPT وكيفية عمله وكيفية استخدامه بطريقة فعالة، لذا تابع معنا هذه السلسلة المتجددة بانتظام حتى النهاية للحصول على جميع المعلومات والإجابات عن أي أسئلة تخص هذه التقنية، واكتسب فهمًا أعمق لهذا النوع من التكنولوجيا الرائدة. نظرة على الذكاء الاصطناعي وتطور تقنياته إذا كنت تبحث عن تجربة فريدة ومثيرة أثناء استكشاف إمكانيات بوت المحادثة ChatGPT! فهذا هو الوقت المناسب الذي ندعوك فيه للاطلاع على تقنية الذكاء الاصطناعي وتعلم الآلة، فقد أصبحت هذه التقنيات جزءًا لا يتجزأ من حياتنا اليومية ومستقبلنا، كما أن فهم المصطلحات والتقنيات التي يستخدمها بوت المحادثة ChatGPT مهمة جدًا. ولهذا السبب، يجب عليك التعرف على أساسيات الذكاء الاصطناعي وتعلم الآلة، فهذا سيساعدك على فهم المصطلحات والتقنيات التي يستخدمها ChatGPT بسهولة. لا تخف من عدم معرفتك بالمصطلحات والتقنيات المستخدمة في هذا المجال، فالتعلم هو المفتاح الأساسي لفهمها. فسواءَ كنت مبتدءًا أو محترفًا في هذا المجال، يمكنك تعلم الذكاء الاصطناعي وتعلم الآلة بسهولة، وقد وفرت لك أكاديمية حسوب مجموعةً من الدروس والكتب التي تغطي المفاهيم الأساسية للذكاء الاصطناعي وتعلم الآلة، والتي يمكنك استخدامها كمصادر لتعلمك. نظرة عامة على ChatGPT في السنوات الأخيرة، شهدت مجالات الذكاء الاصطناعي ومعالجة اللغة الطبيعية تطورات كبيرة، ومن بين هذه التطورات تقنية ChatGPT التي أثارت اهتمام العديد من المتخصصين في هذا المجال؛ فهذه التقنية تعتمد على الذكاء الاصطناعي والتعلم العميق لتحليل وفهم اللغة الإنسانية وتوليد النصوص الطبيعية مثل الإنسان تقريبًا، لدرجة أنك قد لا تصدق أحيانًا أن تلك النصوص الناتجة هي من كتابة بوت فعلًا. فيما يلي سوف نناقش مفهوم ChatGPT وبنيته والجهة التي أنشأته ومراحل تطوره، بالإضافة إلى كيفية تدريبه وميزاته وفوائده ومقارنته مع بوتات المحادثة الأخرى، كما سنناقش تطبيقات استخدامه وحدوده والتحديات التي يواجهها هذا النموذج اللغوي المتطور. التقنيات التي مهدت لظهور ChatGPT يُعَد بوت المحادثة ChatGPT نموذجًا لغويًا يعتمد على الذكاء الاصطناعي ويهدف إلى إنشاء حوار يشبه حوار الإنسان، ويمكن إرجاع بداية ChatGPT إلى العمل المبكر على نماذج اللغة العصبية Neural Language Models ونماذج التسلسل إلى التسلسل Sequence-to-Sequence Models، فقد قُدمت نماذج اللغة العصبية في أوائل العقد الأول من القرن الحادي والعشرين كبديل لنماذج n-gram التقليدية، والتي كانت ذات قدرة محدودة على التقاط التبعيات بعيدة المدى في النص، في حين قُدمت نماذج التسلسل إلى التسلسل في منتصف عام 2010 كطريقة لنمذجة بيانات التسلسل، مثل النص والكلام. جاء أول تطور هام لبوت ChatGPT في عام 2015 مع تقديم أول بوت محادثة توليدي يُعرف باسم نموذج Seq2Seq، فقد استخدم هذا النموذج وحدةً للتشفير ووحدةً لفك التشفير لتوليد استجابات لمدخلات المستخدم، بحيث تنفذ وحدة التشفير تشفيرًا لمدخلات المستخدم في متجه بطول ثابت، ثم يُستخدم بعد ذلك بواسطة وحدة فك التشفير لتوليد الاستجابة. بعد ذلك، جاء التطور الهام التالي في عام 2017 مع إدخال هندسة المحولات Transformers كتحسين على نموذج Seq2Seq، مما سمح بنمذجة أفضل للنص، وعندها استُخدمت بنية المحولات في تطوير تطبيقات البرمجة اللغوية العصبية المختلفة، بما في ذلك نمذجة اللغة والترجمة الآلية والإجابة على الأسئلة. بنية GPT إن مفهوم GPT وهو اختصار لـ "Generative Pre-trained Transformer"، تعني المُحول التوليدي مسبق التدريب على المهام اللغوية المختلفة، فهو خوارزمية تَعلم عميق يمكنه توليد نص يشبه نصوص الإنسان من خلال توقع الكلمة التالية الأكثر احتماليةً بالنظر إلى سلسلة من كلمات الإدخال، وهو نموذج توليدي، مما يعني أنه يُنشئ نصًا جديدًا عن طريق أنماط التعلم في مجموعات البيانات الكبيرة للنص الموجود. تعتمد بنية GPT على تقنية المحولات Transformers في تحسين أداء النموذج وزيادة دقته، التي قُدمت في عام 2017 بواسطة Vaswani et al، والتي ثبت أنها تقنية فعالة للغاية في مهام معالجة اللغة الطبيعية، وذلك لأن بنية المحولات هي بنية شبكة عصبية تستخدم آليات الانتباه الذاتي لمعالجة البيانات المتسلسلة، ثم تعمل GPT على توسيع بنية المحولات لدعم مهام التوليد، إذ يُدرب النموذج على التنبؤ بالكلمة التالية في تسلسل نصي. تتكون بنية GPT من طبقات متعددة من المحولات، فهي تُمرر المدخلات إلى الطبقة الأولى ثم تُعالج هذه الطبقة المدخلات وتنتج المخرجات، والتي تُمرر بعد ذلك إلى الطبقة التالية لمزيد من المعالجة، وهكذا حتى تنتج الطبقة النهائية الإخراج النهائي للبيانات إلى النموذج. وتُستخدم تقنية الانتباه الذاتي Self-Attention في نموذج المحولات، مما يسمح للنموذج بمعرفة الكلمات في الجملة الأكثر صلة بالمهمة المطروحة، ويعمل ذلك على تقييم أهمية كل كلمة في الجملة بناءً على علاقتها بالكلمات الأخرى، كما يسمح ذلك للنموذج بالتركيز على الكلمات الأكثر صلةً في الجملة، مما يؤدي إلى نتائج أكثر دقة وذات صلة بالسياق. نشأة ChatGPT ومراحل تطوره طُوِّر بوت المحادثة بواسطة شركة OpenAI التي أُنشأت في عام 2015 ومقرها في سان فرانسيسكو من قِبَل مجموعة من رواد الأعمال والعلماء والمهندسين الذين يعملون في مجال الذكاء الاصطناعي، مثل: إيلون ماسك (الذي استقال لاحقًا في 2018 مع بقائه مانحًا) وسام ألتمان وجريج بروكمان وإيليا سوتسكيفر وجون شولمان ووجسيخ زاريمبا، بعدها توالت التطورات لنشير إليها في الآتي: في يونيو 2018 أصدرت الشركة نموذج GPT-1 وكان يحتوي على 117 مليون كلمة أو معلمة، وكان يتميز بقدرته على إنشاء نصوص طويلة وشاملة بأسلوبٍ جيدٍ، ومع ذلك كان أداء النموذج في إنتاج نصًا متماسكًا ومناسبًا للسياق محدودًا. في فبراير 2019 أطلقت الشركة نموذج GPT-2 وهو نموذج أكبر حجمًا من GPT-1، فقد كان يحتوي على 1.5 مليار معلمة، وكانت له القدرة على إنشاء نصوص بجودة أفضل وأكثر تنوعًا وإقناعًا. في يونيو 2020 أطلقت الشركة نموذج GPT-3 وهو أكبر حجمًا من GPT-2، فقد جرى تدريبه على كمية هائلة من البيانات (ما يزيد عن 175 مليار كلمة)، بما في ذلك الكتب وصفحات الويب والمصادر النصية الأخرى، مما يجعله أحد أكبر وأقوى النماذج اللغوية الموجودة، وقد مَكَّن هذا العدد الكبير من البيانات النموذج من إنشاء نص متماسك للغاية بلغة أقرب ما تكون إلى اللغة الطبيعية للإنسان من كونها مولدة من آلة، كما يمكن للنموذج أيضًا أداء مجموعة واسعة من مهام معالجة اللغة الطبيعية، مثل تصنيف النص ونمذجة اللغة والإجابة على الأسئلة والترجمة وإنشاء المحتوى. في يوليو 2021 أطلقت الشركة نموذج GPT-3.5-turbo وهو ترقية لنموذج GPT-3 أُضيفت به ميزات جديدة، مثل دعم اللغات الأخرى غير الإنجليزية. في 14 مارس 2023 أعلنت OpenAI أن النموذج الجديد GPT-4 قد أصبح متاحًا للمطورين ومشتركي خدمة ChatGPT Plus، مع تأكيد شركة Microsoft أن متصفح Bing الجديد صار يعمل باستخدام نموذج GPT-4، وهو نموذج كبير الحجم (لم يُعلن رسميًا عن حجم البيانات التي تدرب عليها النموذج، وما ذُكر عن أن حجم البيانات هي 100 تريليون معلمة هي مجرد تكهنات) متعدد الوسائط، إذ يمكنه قبول مدخلات الصور والنصوص وإنتاج مخرجات نصية فقط. مراحل تدريب بوتات المحادثة تُعَد عملية تدريب بوت المحادثة على وجه العموم معقدةً جدًا وتنطوي على عدة مراحل، سوف نوضحها فيما يلي: جمع البيانات: تُعد مرحلة جمع البيانات من أهم المراحل في تدريب نماذج الذكاء الاصطناعي، وتشمل هذه المرحلة جمع البيانات اللغوية الوافرة والمتنوعة، التي تُجمَّع من مصادر مختلفة، وتِعَد جودة البيانات المجمعة هي العامل الحاسم في جودة النماذج المدربة، فهي تؤثر على دقة وأداء تلك النماذج. معالجة البيانات: قبل إدخال البيانات إلى النموذج يجب تمر بعملية معالجة لها، وتشمل هذه المرحلة مهامًا مشابهةً لتقسيم النص إلى كلمات منفصلة tokenization وضمان أن تكون الكلمات بأبسط شكل لها normalization، كما يمكن إزالة الأحرف الخاصة والكلمات الشائعة التي لا تضيف الكثير من المعنى stopwords لتقليل الضجيج. اختيار بنية النموذج: الخطوة التالية هي اختيار بنية مناسبة لنموذج ChatGPT وتستخدم بنية GPT، وهي نوع من نماذج المحولات Transformers كما ذكرنا سابقًا، وعادةً ما تُستخدم في مهام اللغة كإنتاج النصوص والترجمة. التدريب المسبق: أثناء التدريب المسبق يتعلم نموذج ChatGPT التنبؤ بالكلمة التالية في الجملة استنادًا إلى الكلمات السابقة، ويُعرف هذا الأمر بنمذجة اللغة language modeling، ويُدرب النموذج على كمية كبيرة من بيانات النصوص باستخدام نهج التعلم غير الخاضع للإشراف unsupervised learning. الضبط الدقيق: بعد مرحلة التدريب المسبق يُضبط نموذج ChatGPT على مهمة محددة، مثل ترجمة اللغة أو تطوير بوت المحادثة، ويتضمن الضبط الدقيق مزيدًا من التدريب للنموذج على كمية أصغر من البيانات الخاصة بالمهمة المطروحة. التقييم: طوال مراحل عملية التدريب يُقيَّم أداء نموذج ChatGPT باستخدام مقاييس مثل الحيرة Perplexity، والتي تقيس قدرة النموذج على التنبؤ بالكلمة التالية في الجملة، ويُختبر النموذج على مجموعة من البيانات غير المستخدمة للتدريب. النشر: بمجرد تدريب نموذج ChatGPT وتقييمه يمكن نشره في الإنتاج، ويتضمن ذلك دمج النموذج في تطبيق أو نظام أساسي، حيث يمكن للمستخدمين النهائيين استخدامه لإنشاء نص أو تنفيذ مهام محددة متعلقة باللغة. كانت تلك هي خطوات تدريب بوتات المحادثة بوجهٍ عام، وسوف نخصص مقال منفصل لمناقشة خطوات تدريب بوت المحادثة ChatGPT على وجه الخصوص. فوائد وميزات بوت المحادثة ChatGPT دُرّب بوت المحادثة ChatGPT على مجموعة كبيرة من البيانات النصية، لذا صار قادرًا على توليد ردود شبيهة بالبشر في المحادثات، وفيما يلي سنناقش بعض فوائد وميزات هذا البوت: القدرة على فهم اللغة الطبيعية وتوليدها: تتمثل إحدى المزايا الرئيسية لـ ChatGPT في قدرته على فهم اللغة الطبيعية وتوليدها، إذ يمكن لهذا النموذج استيعاب مجموعة واسعة من موضوعات المحادثة والاستجابة لها، مما يجعله أداةً مناسبةً نوعًا ما لتطبيقات خدمة العملاء، كما لديه القدرة على فهم الفروق الدقيقة في اللغة البشرية، بما في ذلك التعبيرات الاصطلاحية والعامية. المرونة والقدرة على التكيف: على عكس بوتات المحادثة التقليدية المبرمجة للاستجابة لمطالبات محددة، يمكن لـ ChatGPT فهم مجموعة واسعة من مدخلات المحادثة والاستجابة لها، وهذا يجعله مرنًا للغاية وقابلًا للتكيف في المواقف التي قد يطرح فيها المستخدمون أسئلةً أو يُدْلُون ببيانات لا تتعلق مباشرةً بالموضوع المطروح. التعلم والتحسين المستمر: يتمتع ChatGPT بالقدرة على التعلم والتحسين بمرور الوقت، وذلك بفضل خوارزميات التعلم الآلي المتقدمة. ونظرًا لأنه يتفاعل مع المزيد من المستخدمين ويعالج المزيد من البيانات، يصبح أكثر دقةً وكفاءةً في توليد الاستجابات، وهذا يعني أن الاستجابات الناتجة عن ChatGPT تتحسن باستمرار، مما يضمن حصول المستخدمين على المعلومات الأكثر صلةً ودقة. الاستجابات والتوصيات المخصصة: يمكن لـ ChatGPT إنشاء ردود وتوصيات مخصصة، مما يجعله أداةً فعالةً في تطبيقات التسويق والإعلان، كما يمكنه تحليل تفاعلات المستخدم السابقة وتخصيص ردوده وفقًا لذلك، وتحسين تجربة المستخدم الإجمالية. دعم متعدد اللغات: يتمتع ChatGPT بدعم متعدد اللغات، مما يسمح له بفهم اللغات المتعددة والاستجابة لها، وهذا يجعله أداةً مميزةً للشركات التي تعمل في بلدان متعددة وتحتاج إلى التواصل مع العملاء بلغات مختلفة. موفر للوقت وفعال من حيث التكلفة: ChatGPT هو حل موفر للوقت وفعال من حيث التكلفة للشركات التي ترغب في تقديم خدمة عملاء وليس لها عمالة بشرية كافية للقيام بذلك وفي كل الساعات، إذ يمكنه المساعدة في التعامل مع محادثات متعددة في وقتٍ واحدٍ. مقارنة ChatGPT مع بوتات محادثة AI الأخرى أصبحت بوتات الدردشة التي تعمل بالذكاء الاصطناعي شائعةً وبتزايد على مر السنين، إذ تستخدمها العديد من الشركات والمؤسسات، والمساعدين الافتراضيين، والتطبيقات الأخرى. ويتمتع بوت المحادثة ChatGPT بالعديد من المزايا، بما في ذلك قدرته على فهم مجموعة واسعة من الأسئلة والرد عليها وقدرته على المحادثة، فيما يلي سوف نقارن ChatGPT مع بوتات الدردشة AI الأخرى. القدرة على معالجة اللغة الطبيعية NLP تتمثل إحدى المزايا المهمة لـ ChatGPT على بوتات الدردشة الأخرى المدعومة بالذكاء الاصطناعي في قدرتها على البرمجة اللغوية العصبية، فقد صُمم ChatGPT لفهم مجموعة واسعة من الأسئلة والرد عليها، بما في ذلك الواقعية والقائمة على الرأي والمحادثة، كما يَستخدم بنية GPT لإنشاء استجابات مما يمكّنه من إنشاء نص متماسك وذو مغزى. في المقابل، صُممت بوتات الدردشة الأخرى التي تعمل بالذكاء الاصطناعي، مثل Siri و Alexa و Google Assistant لتنفيذ مهام محددة، مثل إعداد التذكيرات، أو تشغيل الموسيقى، أو الإجابة على الأسئلة الأساسية، أي أن لديهم قدرات محدودة في البرمجة اللغوية العصبية، لذلك هم غير قادرين على توليد استجابات معقدة. القدرة على إجراء محادثات مشابهة لمحادثات الإنسان الطبيعي ميزة أخرى لـ ChatGPT على بوتات الدردشة الأخرى المدعومة بالذكاء الاصطناعي هي قدرتها على المحادثة بطبيعية، فقد دُرب على مجموعات بيانات الحوار لتحسين قدرته على الاستجابة بطريقة المحادثة، بالتالي يمكنه فهم سياق المحادثة وإنشاء ردود تحاكي ردود الفعل البشرية. في المقابل، صُممت بوتات الدردشة الأخرى التي تعمل بالذكاء الاصطناعي لتكون أكثر توجهًا نحو تنفيذ المهام، وقد لا تكون قادرةً على توليد استجابات محادثة. التكامل مع التطبيقات يمكن دمج ChatGPT في العديد من التطبيقات، مثل بوتات الدردشة والمساعدين الافتراضيين ومنصات خدمة العملاء، وذلك من خلال الـ API الخاص به، فقدرته على توليد استجابات بلغة طبيعية تجعله مناسبًا لمجموعة واسعة من التطبيقات التي تتطلب تفاعلات شبيهة بالبشر. في المقابل، صُممت بوتات الدردشة الأخرى لتنفيذ مهام محددة، وقد لا تكون مناسبةً للتكامل في تطبيقات مختلفة. الأداء عامل حاسم آخر في مقارنة بوتات الدردشة بالذكاء الاصطناعي هو قدرتها على التخصيص والتكيف مع حالات استخدام محددة، حيث يمكن ضبط ChatGPT وفقًا لمجموعات بيانات محددة، مما يمكّنه من تحسين أدائه في مجالات معينة. في المقابل، قد تكون برامج الدردشة الأخرى محدودةً في تخصيصها وقدرتها على التكيف، مما يؤدي إلى أداء دون المستوى الأمثل في حالات استخدام محددة. الأخلاق والتحيز صُمم بوت ChatGPT مع مراعاة الأخلاق والتحيز، فقد نفذت شركة OpenAI العديد من الإجراءات لمنع النموذج من إنشاء محتوى مسيء أو ضار ونجحت في ذلك إلى حد كبير مقارنةً مع باقي بوتات الدردشة الأخرى التي انتُقدت بسبب تحيزاتها المحتملة. تطبيقات استخدام ChatGPT يمكن لـ ChatGPT نموذج لغة AI أن يقلّد المحادثة البشرية، وأدت هذه القدرة إلى مجموعة واسعة من تطبيقات الاستخدام، فيما يلي سنناقش أهم هذه الاستخدامات. كتابة الشيفرات البرمجية: على الرغم من أن بوت المحادثة ChatGPT ليس مخصصًا لكتابة الشيفرات البرمجية، إلا أنه قادر على مساعدة المبرمجين في توليد شيفراتهم البرمجية لبناء تطبيقات الويب والتطبيقات الذكية وحتى ألعاب الفيديو، كما يمكنه تحليل الشيفرة البرمجية للتطبيقات لتجنب الأخطاء البرمجية والثغرات الأمنية، وتوفير النصائح والحلول اللازمة لتحسين أداء الشيفرات البرمجية وجعلها أكثر فعالية. إنشاء المحتوى: يمكن استخدام ChatGPT لإنشاء محتوى لأغراض مختلفة، بما في ذلك المقالات ومنشورات لمنصات التواصل الاجتماعي وأوصاف المنتجات، فبفضل قدرته على إنشاء نَص يشبه الإنسان، يمكنه مساعدة منشئي المحتوى في توفير الوقت والجهد في إنشاء محتوى عالي الجودة. ترجمة اللغة: يمكن استخدام ChatGPT لترجمة اللغة مما يسمح للمستخدمين بالتواصل مع الأشخاص الذين يتحدثون لغات مختلفة، فيمكنه ترجمة النص في الوقت الفعلي بلغة جيدة بدرجة كبيرة، مما يجعله مفيدًا للتواصل التجاري والشخصي في عدة حالات. كتابة البريد الإلكتروني: يمكن الاستفادة من ChatGPT كأداة للتحسين الشامل لكتابة البريد الإلكتروني، مما يؤدي إلى تحسين الاتصال بينك وبين المتلقي، وتحقيق الأهداف المرجوة من البريد الإلكتروني بشكل أفضل، فهو يقلل الوقت والجهد اللازمين لكتابة البريد الإلكتروني، كما يمنحك أفكارًا لموضوع البريد الإلكتروني، وكذلك إجراء تصحيحات للجمل والكلمات والكشف عن الأخطاء الإملائية والنحوية والتنسيقية قبل إرسال البريد. الكتابة الإبداعية: يمكن استخدام ChatGPT في الكتابة الإبداعية بما في ذلك إنشاء القصص والنصوص والشعر، ويمكنه أن يوفر الإلهام وتوليد أفكار جديدة للكُتَّاب. المساعدون الافتراضيون: يمكن استخدام ChatGPT لإنشاء مساعدين افتراضيين للشركات والأفراد، ويمكن لهؤلاء المساعدين الافتراضيين التعامل مع مهام مثل جدولة المواعيد وإدارة رسائل البريد الإلكتروني وتقديم التوصيات. خدمة الزبائن: أصبحت بوتات المحادثة جزءًا لا يتجزأ من خدمة العملاء لدى عدة شركات، وبفضل قدرة ChatGPT على إنشاء ردود شبيهة بالبشر فيمكنه تزويد العملاء بدعم سريع وفعال، كما يمكنه التعامل مع استفسارات العملاء المتعددة في وقتٍ واحدٍ، ومع قدرته على فهم اللغة الطبيعية يمكنه الرد بدقة على مجموعة واسعة من الاستفسارات. التسويق: يمكن استخدام ChatGPT لتطوير استراتيجيات تسويق مخصصة، فمن خلال تحليل بيانات العميل يمكنه إنشاء رسائل وتوصيات مستهدفة بناءً على تفضيلات العميل وسلوكه، كما يمكن أن يساعد أيضًا الشركات على تطوير وتنفيذ حملات إعلانية قائمة على بوتات الدردشة، وتقديم رسائل عالية الاستهداف للعملاء. التعليم: يمكن استخدام ChatGPT في التعليم لتسهيل التعلم الشخصي، فهو قادر على إنشاء مواد تعليمية مخصصة والإجابة على أسئلة الطلاب، مما يجعل تجربة التعلم أكثر جاذبيةً وتفاعلية، ويمكن أيضًا استخدامه لتطوير الألعاب التعليمية والمحاكاة، مما يوفر للطلاب تجربةً تعليميةً غامرةً ومتعةً أكثر. مع ذلك، ننوه بهذه الجزئية إلى أن ChatGPT إلى غاية كتابة هذا المقال، ما يزال غير دقيق من ناحية المعلومات، حتى أن الكثير من تجاربه كانت فاشلة جدًا هنا، مع منح معلومات مغلوطة جدًا؛ لذا ينصح باستخدام البرنامج في إطار التعليم بحذر، كما ينصح بأن تكون للمتعلم أساسيات المجال الذي يريد تعلمه على الأقل، ليكون ChatGPT مجرد مساعد له في تعليمه وليس أساس التعليم نفسه. المساعدة الشخصية: يمكن استخدام ChatGPT كمساعد شخصي لمساعدة المستخدمين على إدارة مهامهم اليومية، فهو قادر على جدولة المواعيد وتعيين التذكيرات وتقديم التوصيات بناءً على تفضيلات المستخدم وسلوكه، كما يمكن استخدامه أيضًا لإنشاء قوائم تسوق مخصصة وإدارة الشؤون المالية للمستخدم. القيود والتحديات التي تواجه بوت المحادثة ChatGPT على الرغم من الفوائد العديدة التي يقدمها لنا بوت المحادثة ChatGPT، إلا أن هناك حدودًا لما يمكن أن يفعله، فيما يلي سنناقش بعض الحدود والتحديات التي تواجه ChatGPT: فهم السياق: يفتقر ChatGPT إلى فهم السياق مما يعني أنه لا يمكنه فهم المعنى الكامن وراء المحادثة بطريقة كاملة، ففي حين أنه يمكن أن يستجيب للإدخالات الفردية بنص شبيه بالبشر، إلا أنه لا يمكنه فهم القصد أو المعنى الكامن وراء المحادثة يعني هو عاجز حاليًا عن فهم ما بين السطور، ويمكن أن يؤدي هذا إلى تقديم استجابات ليست ذات صلة أو دقيقة لاحتياجات المستخدم. الفروق العاطفية: لدى ChatGPT قدرة محدودة على فهم الفروق الدقيقة العاطفية، فعلى سبيل المثال لا يمكنه فهم السخرية أو الأشكال الأخرى من اللغة التصويرية والتي يمكن أن تؤدي إلى ردود غير مناسبة أو غير دقيقة، بالإضافة إلى ذلك قد لا يتمكن ChatGPT من فهم الحالة العاطفية للمستخدم، مما قد يؤدي إلى ردود غير حساسة أو غير مناسبة. المعرفة المحدودة: بينما يتمتع ChatGPT بإمكانية الوصول إلى كمية هائلة من المعلومات، إلا أن معرفته لا تزال محدودةً حسب البيانات التي دُرِّبَ عليها، وهي محدثة حتى عام 2021 فقط، لذلك قد لا يتمكن من الوصول إلى أحدث المعلومات، أو قد لا يكون قادرًا على تقديم إجابات دقيقة لموضوعات معقدة أو متخصصة. عدم القدرة على التعلم: ChatGPT غير قادر على التعلم من التجارب الجديدة أو التكيف مع السياقات المتغيرة، يمكنه فقط تقديم ردود بناءً على البيانات التي دُرِّب عليها، مما يعني أنه قد لا يكون قادرًا على تقديم استجابات دقيقة أو ذات صلة للمواقف الجديدة أو الفريدة. الاعتبارات الأخلاقية كنموذج لغة ذكي، صُمم ChatGPT للتفاعل مع المستخدمين وتزويدهم بمعلومات دقيقة وذات صلة، مع ذلك فإن استخدام مثل هذه النماذج يثير العديد من الاعتبارات الأخلاقية التي يجب معالجتها، والتي سنناقشها فيما يلي: أولًا، من أهم الاعتبارات الأخلاقية التي تواجه ChatGPT هي حماية خصوصية بيانات المستخدم، يتمتع ChatGPT كنموذج لغوي بإمكانية الوصول إلى كمية هائلة من بيانات المستخدم، بما في ذلك المعلومات الشخصية والتفضيلات والأنماط السلوكية، لذلك من المهم التأكد من حماية هذه البيانات من الوصول أو الاستخدام أو الكشف غير المصرح به، وأن المستخدمين على علم بكيفية استخدام بياناتهم. ثانيًا، اعتبار آخر مهم وهو احتمال التحيز في البيانات المستخدمة لتدريب نموذج اللغة، إذ يمكن أن ينشأ التحيز من مجموعة متنوعة من المصادر، مثل اختيار بيانات التدريب أو تصميم النموذج أو الافتراضات التي أُجريت أثناء تطوير النموذج، وللتخفيف من آثار التحيز من المهم الاختيار بعناية بيانات التدريب التي تمثل مجموعةً متنوعةً من وجهات النظر والخبرات، والمراقبة المستمرة لأداء النموذج بحثًا عن علامات التحيز. ثالثًا، بالإضافة إلى خصوصية البيانات والتحيز، تُعد المساءلة من الاعتبارات الأخلاقية الرئيسية الأخرى لـ ChatGPT، إذ يفترض أن يكون لدى المستخدمين القدرة على مساءلة نموذج اللغة عن أفعاله وقراراته، ويتضمن ذلك الشفافية في كيفية عمل النموذج، وتقديم تفسيرات واضحة لقراراته، والتأكد من أن المستخدمين لديهم القدرة على الاعتراض على أفعاله أو استئنافها، وهو أمر غير متاح في ChatGPT. أخيرًا، تمتد الاعتبارات الأخلاقية المتعلقة بـ ChatGPT إلى ما وراء النموذج نفسه، فمع انتشار استخدام النماذج اللغوية على نطاق واسع من المهم النظر في تأثيرها على المجتمع، بما في ذلك القضايا المتعلقة بنقل الوظائف من الإنسان إلى الآلة، وتركيز السُلطة في أيدي عدد قليل من شركات التكنولوجيا. كيفية استخدام ChatGPT بالإمكان الوصول إلى بوت المحادثة ChatGPT ثم استخدامه من خلال أحد الطرائق الثلاث التالية: مباشرة من خلال الموقع الرسمي للبوت. مباشرة من خلال واجهة برمجة التطبيقات API الرسمية للبوت. من خلال أحد مواقع الطرف الثالث التي تقدم خدمات البوت. وفيما يلي سنعرض طريقة الاستخدام الأولى والثالثة، أما بالنسبة لطريقة الاستخدام الثانية من خلال API سوف نخصص لها مقالًا مستقلًا من هذا الدليل. الاستخدام من خلال الموقع الرسمي قبل أن نبدأ في شرح هذه الطريقة، وجب التنويه إلى أن خدمات شركة OpenAI للذكاء الاصطناعي تكون غير متوفرة في بعض البلدان وتأكد أن بلدك موجود ضمن قائمة البلدان التي توفر فيها OpenAI خدماتها، لذلك أثناء تنفيذك للخطوات التي سوف نقدمها أدناه قد تواجهك رسالة مفادها أن خدمات OpenAI غير متوفرة في بلدك الموضحة بالصورة التالية: لكن لا تشعر بالإحباط، فما زال بالإمكان الاستفادة من إمكانات هذا البوت من خلال أحد مواقع الطرف الثالث والتي سوف نشرحها بالفقرة التالية لهذه الفقرة. لنبدأ الآن في شرح خطوات كيفية استخدام بوت المحادثة ChatGPT من خلال الموقع الرسمي. أولاً، يجب أن يتوافر لديك عنوان بريد إلكتروني نشط للتسجيل من خلاله بالموقع، كما يجب أن يكون لديك رقم هاتف جوال لاستلام رمز التحقق من هويتك. ثانيًا، انتقل الآن إلى الموقع الرسمي للبوت ثم انقر على زر "التسجيل" لإنشاء حساب على الموقع. وقد تظهر لك رسالة تحقق للتأكد من أنك إنسان وليس بوت، فقط انقر على المربع الفارغ كما هو موضح بالصورة التالية: ثالثًا، من الصفحة التالية أدخل عنوان البريد الإلكتروني الخاص بك، أو بالإمكان ربط الحساب بأحد حساباتك على جوجل أو مايكروسوفت، ثم انقر على زر "استمر". رابعًا، من الصفحة التالية، أدخل كلمة مرور قوية لحسابك لا تقل عن 8 أحرف، ثم انقر على زر "استمر". خامسًا، من الصفحة التالية سوف يُطلب منك الانتقال إلى بريدك الإلكتروني الذي سجلته للعثور على رسالة التحقق التي أُرسلت إليك، كما هو موضح أدناه: انتقل إلى بريدك الإلكتروني، ثم اعثر على رسالة التحقق ثم انقر على زر "التحقق من عنوان البريد الإلكتروني"، كما هو موضح بالصورة أدناه: سادسًا، من الصفحة التالية أدخل بياناتك الشخصية (اسمك الأول والثاني)، ثم انقر على زر "استمر". سابعًا، من الصفحة التالية أدخل رقم هاتفك الجوال لاستلام رمز التحقق من هويتك، تلقائيًا سوف يحدد الموقع مفتاح الدولة حسب عنوان الـ IP الذي يستخدمه جهازك، وفي حالة كان مفتاح الدولة خطأ، فانقر على القائمة المنسدلة ثم اختر دولتك، بعدها اكتب رقم هاتفك الجوال، ثم انقر على زر "أرسل الرمز". أخيرًا، فور استلامك لرمز التفعيل المكون من ستة أرقام على جوالك، انتقل مرةً أخرى لموقع الويب لإدخال هذا الرمز بطريقة صحيحة لتتمكن من الدخول إلى حسابك. تهانينا، أصبح لديك الآن حساب رسمي على موقع OpenAI تستطيع من خلاله استخدام جميع خدمات الذكاء الاصطناعي التي أنتجتها الشركة والتي من ضمنها بوت المحادثة ChatGPT. بالإمكان الآن تقديم أي سؤال إلى البوت وسوف يُقدم إجابةً وافيةً عنه. دورة الذكاء الاصطناعي احترف برمجة الذكاء الاصطناعي AI وتحليل البيانات وتعلم كافة المعلومات التي تحتاجها لبناء نماذج ذكاء اصطناعي متخصصة. اشترك الآن الاستخدام من خلال جهة طرف ثالث تُعد طريقة الاستخدام من خلال جهة طرف ثالث مناسبةً لمن لا تتوفر في بلده خدمات شركة OpenAI للذكاء الاصطناعي، وتُوفر هذه الخدمات من خلال مواقع وإضافات طُورت بواسطة جهات طرف خارجي مختلفة، ومن بين تلك المواقع والإضافات ما يلي: huggingface.co: هي مكتبة مفتوحة المصدر لمعالجة اللغة الطبيعية التي تتميز بأحدث نماذج الذكاء الاصطناعي بما في ذلك نموذج GPT-4، ويمكن للمستخدمين الاستفادة من إمكانات الذكاء الاصطناعي في نموذج GPT-4 لتشغيل نماذج البرمجة اللغوية العصبية الخاصة بهم، أو اختبار الأفكار الجديدة، أو حتى إنشاء تطبيقات جديدة. ora.sh: هو نظام أساسي قائم على الويب يمكّن المستخدمين من إنشاء تطبيقات LLM بسرعة باستخدام واجهة الدردشة، وقدم هذا النظام مؤخرًا ميزة جديدة تتيح للمستخدمين تجربة نموذج GPT-4 بدون تكلفة، كما أنه لا يفرض أي قيود على الرسائل على الإطلاق، وعلاوةً على ذلك لا توجد قائمة انتظار لاستخدام نموذج GPT-4. الدردشة المدمجة بمحرك بحث Microsoft Bing: بالإضافة إلى Ora تتيح الدردشة المدمجة بمحرك بحث Microsoft Bing أيضًا استخدام نموذج GPT-4، فبعد أن أطلقت شركة OpenAI نموذج GPT-4 كشفت Microsoft أن Bing AI الخاص بها يستخدم بالفعل النموذج، ومن المثير للاهتمام أن Bing AI يأتي مزودًا ببعض الوظائف الإضافية التي لا توجد في ChatGPT 4. ChatGPT Sidebar: هي إضافة شائعة لمتصفح Chrome يَستخدم واجهة برمجة تطبيقات Chat GPT لإنشاء ردود شبيهة بالإنسان على أسئلة المستخدمين، ويساعد المستخدمين في الكتابة والترجمة والتلخيص وفحص القواعد النحوية وغيرها من الأغراض. تعمل الإضافة كشريط جانبي على أي صفحة ويب، وتدعم جميع محركات البحث الشائعة بما في ذلك: Google و Bing و duckduckgo. ChatGPT Writer: هي إضافة تعمل في جميع المتصفحات القائمة على Chromium، مثل: Chrome و Brave و Edge، تعمل هذه الإضافة على إنشاء رسائل البريد الإلكتروني كما أنها تقدم دعم محسَّن لخدمة البريد الإلكتروني Gmail. YouTube Summary: هي إضافة لمتصفح Chrome تتيح الوصول بسرعة إلى ملخص مقاطع فيديو YouTube التي تشاهدها باستخدام تقنية ChatGPT AI من OpenAI، فمع استخدام هذه الإضافة بالإمكان توفير الوقت والتعلم بطريقة أسرع. خاتمة بعد أن تناولنا النقاط الرئيسية لبوت المحادثة الرائد ChatGPT، يمكننا القول أن هذه التكنولوجيا قد غيرت المشهد على نحو كبير، فبفضل تطوراته في مجال تعلم الآلة ومعالجة اللغة الطبيعية، يمكن لـ ChatGPT توليد إجابات شبيهة بالإنسان والتفاعل بطبيعية مع المستخدمين، ومن المتوقع أن يتحسن استخدام ChatGPT وتطبيقاته باستمرار في المستقبل. مع ذلك، يجب مراعاة بعض الحدود الأخلاقية والتحديات الفنية التي قد تواجه تطبيقات ChatGPT، فمن المهم العمل على تقليل التحيز في بيانات التدريب والحد من أي تأثيرات سلبية قد تنشأ عن استخدام هذه التقنية، كما يجب أن يتحمل المطورون والمستخدمين المسؤولية في استخدام هذه التكنولوجيا بطريقة صحيحة وأخذ الاعتبارات الأخلاقية في الحُسبان. عدا ذلك، يمثل ChatGPT تقدمًا هائلًا في مجال الذكاء الاصطناعي، ويمكن استخدامه بطريقة فعالة في العديد من التطبيقات، مثل المساعدين الشخصيين وخدمة العملاء والمنصات التعليمية ودعم الصحة النفسية، كما يمكن لـ ChatGPT أن يساهم في تحسين العديد من المجالات في المستقبل. لذلك، يجب مواصلة العمل على تحسين هذه التكنولوجيا والعمل على استخدامها بطريقة أخلاقية ومسؤولة، فيمكن لـ ChatGPT أن يساعدنا في تحقيق نتائج إيجابية في المستقبل. وإلى هنا نكون قد وصلنا إلى نهاية هذا المقال الذي نتمنى أن يكون قد أضاف لكم معلومات جديدةً ومفيدة، وفي حالة وجود أي استفسارات لا تترددوا في ذكرها لنا في التعليقات. المصادر ChatGPT – An AI NLP Model What is Chat GPT? Everything you need to know about ChatGPT The Benefits and Challenges of ChatGPT: An Overview Training language models to follow instructions with human feedback 50 ChatGPT Statistics and Facts You Need to Know Behind ChatGPT’s Wisdom: 300 Bn Words, 570 GB Data Hacker News اقرأ أيضًا الحقيقة حول استخدام الذكاء الصنعي في مجال الدعم الفني المفاهيم الأساسية لتعلم الآلة الذكاء الاصطناعي: أهم الإنجازات والاختراعات وكيف أثرت في حياتنا اليومية النسخة الكاملة لكتاب: عشرة مشاريع عملية عن الذكاء الاصطناعي
    3 نقاط
  50. تنمو مجالات علوم الحاسب وهندسة البرمجيات أسرع من بقية مجالات العمل الأخرى، وتوفر للراغبين بدخوله مجموعة واسعة من الفرص والوظائف، فمعظم الصناعات اليوم تحتاج إلى مهندسي البرمجيات لتسيير أعمالها الرقمية. لذا سنشرح في مقال اليوم مجال هندسة البرمجيات الذي يعد أحد أهم التخصصات المطلوبة اليوم، ونوضح فرص العمل التي يمكن لمهندس البرمجيات التخصص بها، ونوفر مجموعة من النصائح الضرورية لتعلم هندسة البرمجيات بأقصر الطرق دون الحاجة لوجود أي خبرة تقنية مسبقة أو سلوك المسار الجامعي الطويل، ونختم المقال بأهم الميزات والتحديات المرتبطة بهذا التخصص لتكتشف بنفسك هل هذا المسار الوظيفي مناسب لك أم لا؟ ما هي هندسة البرمجيات؟ هندسة البرمجيات 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: الدليل الشامل
    3 نقاط
×
×
  • أضف...