القائمة الرئيسية

الصفحات

التعامل مع المكتبات في سي بلاس بلاس | C++ Database

التعامل مع المكتبات في سي بلاس بلاس | C++ Database

مفهوم المكتبات البرمجية في C++

المكتبة ( Library ) عبارة عن ملف يمكن أن يحتوي على كلاسات و دوال جاهزة بمجرد تضمينها في المشروع تصبح قادر على استخدام كل ما هو موجود فيها و كأنها جزء من المشروع. في العادة عندما يجد المطور نفسه دائماً ما يستخدم نفس الكلاسات و الدوال في مشاريعه يقوم بوضعهم بداخل مكتبة واحدة و كلما احتاج إليها يقوم بتضمينها في مشروعه.

الآن, عليك معرفة أنه يوجد نوعين من المكتبات التي يمكن تضمينها في المشروع:

  • مكتبات ثابتة ( Static Libraries ) و يكون امتدادها .lib على نظام ويندوز و .a على نظامي لينكس و ماك.

  • مكتبات ديناميكية ( Dynamic Libraries ) و يكون امتدادها .dll على نظام ويندوز و .so على نظامي لينكس و ماك.

المكتبة التي تنشئها بنفسك أو التي تقوم بتحميلها من النت, يمكنك وضعها في أي مكان تريد على حاسوبك و نقصد بذلك أنك لست مجبر على وضع المكتبات في مكان محدد حتى يسمح لك باستخدامها. لاحقاً عند الحاجة لاستخدام المكتبة في أي مشروع, يجب إعلام المترجم بمكان وجودها حتى تصبح قادراً على تضمين أي ملف موجود فيها و البدء باستخدام الكود الموجود فيه.

الأفضل و الأسهل لك دائماً هو أن تخصص مكان في حاسوبك تضع فيه كل المكتبات التي قد تستخدمها.

أهمية بناء المشروع أو المكتبة في C++

من بداية الدورة و حتى الآن كنا نقوم دائماً النقر على الزر Build and run عندما نريد تشغيله و ليس فقط الزر Run, بمعنى آخر كنا نبني المشروع قبل بنائه.

الصورة التالية تذكرك بأسماء الأزرار التي نستخدمها في برنامج CodeBlocks لبناء و تشغيل المشروع.

المقصود من بناء المشروع هو قيام المترجم بالتأكد من أن كود المشروع لا يوجد فيه أي مشكلة من ناحية كتابة الأوامر (Syntax Error) و من ثم تحويل كل كود المشروع (Compile) لملف تنفيذي إمتداده .exe.

المقصود من تشغيل المشروع, هو تشغيل الملف التنفيذي الذي يمثل البرنامج النهائي الناتج عن عملية بناء المشروع فقط.


الفرق بين الحفظ (Save) و البناء (Build)

حفظ ملفات المشروع يعني حفظ الكود الذي تم كتابته فيها فقط.
بالتالي في حال قمت بحفظ ملفات المشروع فقط بدون بنائها سيظهر لك دائماً نتيجة آخر بناء فعلته عند التشغيل.


نقطة البداية في المكتبة

عندما نقوم بتجهيز مكتبة فنحن بذلك نقوم بتجهيز كود يمكن تضمينه في المشاريع و ليس كود عبارة عن برنامج بحد ذاته.
لهذا السبب المكتبة لا يفترض أن نضع فيها دالة إسمها main() نعتبرها كنقطة بداية كما نفعل في المشاريع العادية.

عدم وجود نقطة بداية في المكتبة معناها أنه يمكنك أن تفعل Build لها فقط و ليس Run لأنها بحد ذاتها ليست برنامجاً يمكن تشغيله.


أهمية بناء المكتبة بعد إجراء أي تحديث عليها

إعادة بناء المكتبة بعد أن تنتهي من كتابة الكود الخاص فيها في كل مرة من خلال النقر على على الزر Build أمر مهم جداً لكي يتم إنتاج نسخة جديدة من المكتبة نوعها .lib أو .a أو .dll أو .so على حسب نوع المكتبة (Static أو Dynamic) و نوع نظام التشغيل الذي تبني المكتبة عليه كما ذكرنا سابقاً.

الفرق بين المكتبات الثابتة و المكتبات الديناميكية في C++

من ناحية التعامل مع الكود الموجود في المكتبات سواء كنت تستخدم مكتبة ثابتة أو مكتبة ديناميكية فإنه لا يوجد إي إختلاف من هذه الناحية.

الإختلاف الأساسي بين النوعين هو أن المكتبات الثابتة يتم دمج الكود الموجودة فيها مع كود المشروع نفسه حين تقوم ببناء المشروع. في حين أن المكتبات الديناميكية تظل موضوعة بشكل منفصل عن كود المشروع حين تقوم ببنائه.

في كل مرة تقوم فيها بإجراء تعديل على كود مكتبة ثابتة تستخدمها في مشروعك, يجب إعادة بناء كود المكتبة و من ثم كود المشروع الذي يستخدمها لجعل المشروع يستخدم آخر نسخة تم تحديثها من منها. أما في حال إجراء تعديل على كود مكتبة ديناميكية في مشروعك, يجب إعادة بناء كود المكتبة فقط بدون الحاجة لإعادة بناء كود المشروع.


معلومة تقنية

أحياناً عندما تحاول تشغيل برنامج ما على حاسوبك يظهر لك خطأ يخبرك بأنه يوجد ملف .dll ناقص يحتاجه البرنامج حتى يشتغل كالتالي.

هذا الخطأ معناه بكل بساطة أن البرنامج الذي تستخدمه في الأساس يستخدم المكتبة الديناميكية MSVCR71.dll التي تم ذكر إسمها و التي لم يستطع إيجادها.

لحل هذه المشكلة في العادة تقوم بالبحث في النت عن إسم الملف المذكور (أي المكتبة) الذي يحتاجه التطبيق حتى يعمل.
في حالتنا نبحث عن الملف MSVCR71.dll و بعد إيجاده نقوم بإضافته في ضمن ملفات البرنامج فقط.

طريقة إنشاء مكتبة و استخدامها في C++

في البداية نود الإشارة إلى أننا نستخدم برنامج CodeBlocks في تطبيق الشرح و بالتالي سنشرح كيفية إضافة مكتبات خارجية بواسطته.
في حال كنت تستخدم برنامج آخر, ستخلتف قليلاً الطريقة التي تقوم فيها بتضمين المكتبة التي تنشئها في المشروع لأن كل برنامج يملك واجهة مختلفة للعمل.

الآن, بهدف جعل الشرح مبسط لأبعد حدود و يغطي كل المعلومات التي تحتاج معرفتها عند التعامل مع المكتبات, سنقوم بتقسيم المثال لأربع خطوات أساسية:

  1. إنشاء مشروع C++ عادي لأننا سنستخدمه لتجربة المكتبة.

  2. إنشاء مشروع آخر عبار عن المكتبة التي سنقوم بتضمينها في المشروع الأول.

  3. إضافة المكتبة في المشروع و استدعاء الدوال الموجودة فيها.

  4. إعادة التعديل على المكتبة و إضافة ملفات إمتدادها .cpp و .h فيها مع وضع الكود بداخل نطاق ( Namespace ).



خطوات إنشاء مشروع جديد باستخدام برنامج CodeBlocks

قم باتباع الخطوات التالية بدقة لإنشاء مشروع C++ إسمه Test.

  1. أنقر على File, ثم New, ثم Project... كالتالي.


  1. أنقر على Console application ثم على الزر Go كالتالي.


  1. أنقر على ++C و من ثم أنقر على Next كالتالي.


  1. قم بتحديد الإسم الذي تريد وضعه للمشروع و مسار المجلد الذي تريد أن يتم فيه حفظه على حاسوبك, ثم أنقر على Next كالتالي.


  1. لا تعدل أي شيء في هذه الصفحة و أنقر على Finish كالتالي.


  1. بعد أن يتم إنشاء المشروع بنجاح سيظهر بداخل قائمة المشاريع كالتالي.


الآن قم بالعودة للدرس و انتقل للخطوة الثانية التي ستتعلم منها طريقة إنشاء المكتبة harmash و التي ستعود لاحقاً و تضمنها في هذا المشروع.

خطوات إنشاء مكتبة ثابتة في CodeBlocks

قم باتباع الخطوات التالية بدقة لإنشاء مشروع إسمه harmash عند بنائه ينتج مكتبة ثابتة إسمها libharmash.

  1. أنقر على File, ثم New, ثم Project... كالتالي.


  1. أنقر على Static library ثم على الزر Go كالتالي.


  1. قم بوضع علامة صح على الخيار Skip this page next time ثم أنقر على Next كالتالي حتى لا تظهر لك هذه الصفحة مرة كلما أردت إنشاء مكتبة مستقبلاً.


  1. قم بتحديد الإسم الذي تريد وضعه للمشروع و مسار المجلد الذي تريد أن يتم فيه حفظه على حاسوبك, ثم أنقر على Next كالتالي.


  1. لا تعدل أي شيء في هذه الصفحة و أنقر على Finish كالتالي.


  1. بعد أن يتم إنشاء المشروع بنجاح سيظهر بداخل قائمة المشاريع كالتالي.


  1. بما أننا نريد كتابة كود بلغة C++ و ليس بلغة C سنقوم بتغيير إمتداد الملف main إلى .cpp كالتالي.


  1. قم بتسمية الملف main.cpp ثم أنقر على الزر OK كالتالي.


  1. قم بفتح الملف main.cpp و حذف أي كود إفتراضي تجده فيه كالتالي.


  1. بعدها أكتب الكود التالي بداخله لتعريف دالة إسمها printMsg() تقوم بطباعة جملة عادية عند استدعائها.

main.cpp
	  #include <iostream>

	  void printMsg()
	  {
	  std::cout << "First time using a static library!";
	  }
	

  1. بعد إضافة الكود في الملف main.cpp أنقر على زر حفظ كل التغييرات التي تم إجراءها كالتالي.


  1. آخر خطوة يجب أن تفعلها هي النقر على زر البناء ( Build ) حتى يتم إنتاج مكتبة من المشروع كالتالي.
    لاحظ أنه أخبرك أنه قد تم إنشاء مكتبة إسمها libharmash.a بداخل المسار bin\Debug في المشروع نفسه.


إذا شاهدنا ملفات المشروع من خارج برنامج CodeBlocks سنجد المكتبة libharmash.a كالتالي.


الآن قم بالعودة للدرس و انتقل للخطوة الثالثة التي ستتعلم منها طريقة تضمين المكتبة libharmash.a في المشروع Test.



خطوات إضافة مكتبة في المشروع باستخدام برنامج CodeBlocks

قم باتباع الخطوات التالية بدقة لإضافة المكتبة libharmash.a في المشروع Test و من ثم استدعاء الدوال الموجودة في المكتبة التي تم إضافتها للتأكد من أن ذلك قد تم بنجاح.

  1. في البداية أغلق أي ملف مفتوح حتى لا تشتت نفسك بسبب الملفات المفتوحة كالتالي.


  1. أنقر بزر الفأرة الأيمن على إسم المشروع Test ثم أنقر على Build Options... كالتالي.


  1. أنقر على Linker Settings لأنه القسم الذي يمكنك من خلاله إضافة المكتبات في المشروع.


  1. أنقر على الزر Add ثم على أيقونة المجلد حتى تبدأ بإضافة المكتبة في المشروع كالتالي.


  1. بعد تحديد المكتبة التي تريد إضافتها - و في حالتنا المكتبة libharmash.a - قم بالنقر على الزر Open كالتالي.


  1. أنقر على الزر No لحفظ مسار المكتبة الكامل ( Full Path ) كالتالي.


  1. أنقر على الزر Ok كالتالي حتى يتم إضافة المكتبة.


  1. أنقر على الزر Ok كالتالي حتى إغلاق النافذة أو أغلاقها بالنقر على زر الإغلاق.


  1. أنقر بزر الفأرة الأيمن على إسم المشروع Test ثم أنقر على Activate Project كالتالي.


  1. إفتح الملف main.cpp الموجود في المشروع Test كالتالي.


  1. أكتب الكود التالي بداخل الملف main.cpp حتى تستدعي الدالة printMsg() الموجودة في المكتبة libharmash.a التي ستطبع لك جملة عادية حين تتنفذ.

main.cpp
	  #include <iostream>

	  using namespace std;

	  // مع الإشارة إلى أنه حين يتم استدعاؤها main() حتى نتمكن من استدعائها في الدالة printMsg() هنا قمنا بذكر شكل الدالة
	  // libharmash.a سيقوم المترجم بالبحث عن تعريفها إلى أن يجدها, و بالطبع في حالتنا سيجدها بداخل المكتبة
	  void printMsg();

	  int main()
	  {
	  // printMsg() هنا قمنا باستدعاء الدالة
	  printMsg();
	  return 0;
	  }
	

  1. أنقر على الزر Build and run كالتالي حتى يتم حفظ الملف main.cpp و من ثم بناء و تشغيل المشروع Test.


  1. ستظهر لك النتيجة التالية بعد أن يتم تشغيل المشروع Test.


الآن قم بالعودة للدرس و انتقل للخطوة الرابعة و الأخير حيث سنقوم بإضافة ملفات .cpp و .h و من ثم تضمينها في المشروع أيضاً Test أيضاً.



خطوات تضمين ملفات المكتبة باستخدام برنامج CodeBlocks

قم باتباع الخطوات التالية بدقة لإضافة ملف إسمه Person.h و ملف إسمه Person.cpp في المشروع Harmash.
بعدها قمنا بتضمين الملف Person.h الموجود في المشروع Harmash في المشروع Test.
في النهاية قمنا باستخدام الكود الموجود في الملفات التي تم تضمينها للتأكد من ذلك قد تم بنجاح.

  1. في البداية أغلق أي ملف مفتوح حتى لا تشتت نفسك بسبب الملفات المفتوحة كالتالي.


  1. أنقر بزر الفأرة الأيمن على إسم المشروع Test ثم أنقر على Activate Project كالتالي.


  1. أنقر على أيقونة إضافة ملف جديد, ثم أنقر على Class... كالتالي حتى تضيف كلاس جديد في المشروع بداخل ملف .cpp خاص و معه الشكل العام للكلاس بداخل ملف .h دفعة واحدة


  1. قم بتسمية الكلاس Person ثم أنقر على الزر Create كالتالي حتى ينشئ لك ملف إسمه Person.cpp و الشكل العام له بداخل ملف إسمه Person.h.


  1. أنقر على الزر Yes لإضافة الملفات الجديدة التي تم إنشاؤها في المشروع Harmash كالتالي.


  1. أنقر على الزر Select All ثم على الزر OK كالتالي.


  1. لاحظ أنه تم إنشاء الملفين Person.cpp و Person.h و بداخلهما تم تجهيز كلاس فارغ إسمها Person أيضاً.


  1. إمسح الكود الإفتراضي الموجود في الملف Person.h و أكتب الكود التالي فيه.

Person.h
	  #pragma once

	  #include <iostream>

	  namespace harmash
	  {
	  class Person
	  {
	  public:
	  std::string name;
	  std::string phone;

	  Person(std::string name, std::string phone);

	  void printInfo();
	  };
	  }
	

  1. إمسح الكود الإفتراضي الموجود في الملف Person.cpp و أكتب الكود التالي فيه.

Person.cpp
	  #include "Person.h"

	  namespace harmash
	  {
	  Person::Person (std::string name, std::string phone)
	  {
	  this->name = name;
	  this->phone = phone;
	  }

	  void Person::printInfo()
	  {
	  std::cout << "name: " << name << "\n";
	  std::cout << "phone: " << phone << "\n";
	  }
	  }
	

  1. أنقر على زر البناء ( Build ) حتى يتم إنتاج مكتبة من المشروع Harmash كالتالي.
    لاحظ أنه أخبرك أنه قد تم إنشاء مكتبة إسمها libharmash.a بداخل المسار bin\Debug في المشروع نفسه, أي مكان المكتبة التي أنشأناها في السابق.


  1. أغلق جميع الملفات المفتوحة حتى لا تربك نفسك بها.

  2. أنقر بزر الفأرة الأيمن على إسم المشروع Test ثم أنقر على Build Options... كالتالي.


  1. أغلق على الزر Search directories كالتالي حتى تحدد مكان الملفات التابعة للمكتبة libharmash.a و التي تريد تضمينها في المشروع Test أيضاً.


  1. بداخل القسم Compiler أنقر على الزر Add كالتالي لأنك بحاجة لإعلام المترجم بمسار الملف Person.h الذي ستقوم لاحقاً بتضمينه في المشروع Test.


  1. أنقر على أيقونة المجلد حتى تبدأ بإضافة مكان وجود الملف Person.h كالتالي.


  1. بعد تحديد مكان وجود الملف Person.h - و في حالتنا المجلد include الموجود بداخل المشروع Harmash - قم بالنقر على الزر Select Folder كالتالي.


  1. أنقر على الزر No لحفظ مسار المجلد الكامل ( Full Path ) كالتالي.


  1. أنقر على الزر Ok كالتالي حتى يتم إضافة المكتبة.


  1. إنتقل إلى القسم Linker ثم أنقر على الزر Add و أضف نفس المسار الذي أضفته في القسم Compiler.


  1. بعد إضافة المسار, أنقر على الزر Ok كالتالي حتى إغلاق النافذة أو أغلاقها بالنقر على زر الإغلاق.


  1. إفتح الملف main.cpp الموجود في المشروع Test و إمسح كل الكود الموجود فيه كالتالي.


  1. أكتب الكود التالي بداخل الملف main.cpp حتى تنشئ كائن من الكلاس Person و تستدعي الدالة printInfo() منه حتى تطبع المعلومات التي مررناها للكائن حين تتنفذ.

main.cpp
	  #include <iostream>
	  #include <Person.h>

	  int main()
	  {
	  harmash::Person p("Mhamad", "70654200");

	  p.printInfo();

	  return 0;
	  }

	

  1. أنقر بزر الفأرة الأيمن على إسم المشروع Test ثم أنقر على Activate Project كالتالي.


  1. أنقر على الزر Build and run كالتالي حتى يتم حفظ الملف main.cpp و من ثم بناء و تشغيل المشروع Test.


  1. ستظهر لك النتيجة التالية بعد أن يتم تشغيل المشروع Test.

خطوتك التالية بعد تعلم لغة سي بلاس بلاس

مقدمة

إذا قمت بقراءة كل الدروس التي شرحناها في هذه الدورة و وصلت إلى هنا, فهذا يعني أنك أصبحت ماهراً في التعامل مع لغة C++.
الشيء الذي عليك البحث عنه الآن, هو كيف تبدأ باستخدام لغة C++ في المشاريع البرمجية من أجل أن تستفيد منها مادياً.

ماذا أتعلم بعد أن تعلمت لغة C++

في البداية, هناك مجالات عديدة يجب أن تتخصص بأحدها و ليس فيها كلها لأن هذا مستحيل.
أي لا تفكر أبداً بأن تتخصص في عدة مجالات في وقت واحد. لأنك إن حاولت ذلك فـأكد أنك في مرحلة ما ستيأس و تمل من شدة الضغط الذي سببته لنفسك.


إذاً, بعد أن تتعلم لغة C++ يمكنك إعتمادها في أحد المجالات التالية:

  • تطوير الألعاب (Game Development).

  • برمجة الروبوتات (Robotics).

  • بناء أنظمة التشغيل (Operating Systems).

  • تطوير تطبيقات للحاسوب (Software Development).

  • تطوير المواقع (Web Development).

  • الذكاء الإصطناعي (Artifical Intelligence).


إنتبه, تخصصك في مجال واحد لا يعني أنك لا تستطيع تعلم غيره. الفكرة هنا هي أن تتخصص في مجال واحد في كل مرة.
فعلى سبيل المثال, إذا قررت البدء بتعلم تطوير تطبيقات للحاسوب. عندها يجب أن تقضي فترة في تعلم ذلك و من ثم يجب أن تحاول بناء عدة تطبيقات بنفسك حتى تجد نفسك مرتاحاُ في هذا المجال و لا تخاف من البدء بتطوير تطبيقات و الربح منها مادياً.

بعد أن تجد نفسك أصبحت محترفاً في مجال تطوير تطبيقات الحاسوب, عندها نحن ننصحك بالبدء بتعلم مجال آخر من أجل أن تزيد فرصك في العمل و الربح.
فمثلاً إذا قررت تعلم تطوير المواقع بعد ذلك, فأنت الآن أصبحت قادر على العمل في مجالين و ليس في مجال واحد.

إستخدام لغة C++ في تطوير الألعاب

لغة C++ تعتبر من أفضل اللغات و أكثرها استخداماً في مجال تطوير الألعاب و السبب الرئيسي لذلك هو سرعتها في التنفيذ مقارنةً باللغات الأخرى.
هناك عدة محركات ألعاب ( Game Engines ) يمكنك برمجة اللعبة فيها بلغة C++ و من أشهرها Unreal Engine الذي تم تطوير لعبة PubG بواستطه.

إنتبه لنقطة مهمة, تطوير اللألعاب لا يتقصر على كتابة الكود فقط بل يتطلب أشياء كثيرة مثل إعداد الرسومات و الشخصيات و الخرائط و النغمات و غيرها.
دور C++ يقتصر على برمجة اللعبة فقط, مثل جعل اللاعب يتحرك عند النقر على الأسهم و جعله يستدير عند تحريك الفأرة, تحديد متى يظهر الأشرار في اللعبة, متى يخسر اللاعب, متى يفوز و نتقل لمرحلة أخرى إلخ..

تطوير تطبيقات للحاسوب باستخدام لغة C++

في C++ يوجد أطر ( Frameworks ) عديدة يمكنك إستخدامها لبناء تطبيقات للحاسوب أو ما يعرف بتطبيقات سطح المكتب ( Desktop Apps ).

أشهر الأطر المستخدمة حالياً في بناء تطبيقات للحاسوب هي التالية:

  • QT و يعتبر الأشهر لذلك.

  • wxWidgets له شعبية كبيرة أيضاً.

  • openframeworks مجاني و يمكنك استخدامه بكل حرية.

تطوير المواقع باستخدام لغة C++

في C++ يوجد أطر عمل عديدة يمكنك إستخدامها كوسيط بين الزوار و قاعدة البيانات الخاصة بالموقع أو الخدمات الخارجية التي يستخدمها الموقع.

أشهر الأطر المستخدمة حالياً في بناء تطبيقات للحاسوب هي التالية:

  • Wt.

  • CppCMS.

  • CSP.

إنتبه جيداً, من النادر أن تجد شركة تطوير مواقع تستخدم لغة C++ في هذا المجال لأنه يوجد خيارات أكثر سهولة لذلك و فعلياً لا يحتاجوا لذلك. في حين أن الشركات الضخمة التي تحتاج سرعة أداء عالية جداً مثل جوجل و فيسبوك تستخدمها لأنها بحاجة لأفضل أداء ممكن و فعلياً تجد أنهم قاموا بتطوير مترجمات بلغة C++ خصيصياً لهذا الغرض.

مؤخراً ظهر استخدام مهم جداً للغة C++ في تطوير المواقع من ناحية المستخدم يقال له WebAssembly حيث يتم كتابة كود الصفحة بالأساس بلغة C++ مما يعطيك سرعة عالية جداً مقارنةً بما إن كنت تستخدم لغة جافاسكريبت, لمزيد من التفاصيل حول هذا الأمر بالذات ننصحك بمشاهدة الفيديو التالي.

شاهد الفيديو »

إستخدام لغة C++ في الذكاء الإصطناعي

في البداية, عليك معرفة أن أفضل مجال لإستخدام لغة C++ و أكثر سبب لشهرتها هو شهرتها في هذا المجال.
فكرة الذكاء الإصطناعي بشكل عام هي بناء برنامج قادر على إتخاذ القرارات و كأنه إنسان عادي!

لا بد و أنك تتساءل الآن حول كيف يمكن جعل البرنامج قادر على التفكير من تلقاء ذاته و هذا سؤال منطقي.
الذكاء الإصطناعي لا يعني أبداً جعل البرنامج يفكر و يتصرف تماماً من تلقاء ذاته, بل جعله يعتمد الأسلوب الذي يعتمده الناس في التصرف و اتخاذ القرارات.

سنحاول شرح طريقة عمل الذكاء الإصطناعي من خلال المثال التالي:
لنفترض أنه يوجد مستشفى يقوم يومياً بإلتقاط عدة صور أشعة لصدور المرضى, و من ثم يأتي الطبيب و ينظر إلى هذه الصورة فيكتب تقرير مفصل عنها.
بعدها يتم حفظ كل صورة مع التقرير الخاص بها في قاعدة بيانات المستشفى.
بعد مرور 5 سنوات على سبيل المثال, سيصبح لدى المستشفى قاعدة بيانات فيها آلاف الصور مع التقارير الخاصة بها.
بعد أن أصبح المستشفى يملك كم هائل من المعلومات, أصبح بإمكان هذه المستشفى الإستفادة من الذكاء الإصطناعي و إدخاله في عملها.
الآن, أصبح بإمكان المبرمج أن يجعل أي صورة أشعة يتم إلتقاتها تقارن مع الصور الموجودة في قاعدة البيانات و على أساس أكثر صورة أو صور مشابهة لها يتم طباعة التقرير للصورة الجديدة التي تم إلتقاطها.
فمثلاً بعد المقارنة, قد يجد البرنامج أنه يوجد إحتمال بنسبة 98% أن يكون هذا المريض يعاني من مشكلة معينة لأن أغلب الصور المشابهة لها تعاني من نفس المشكلة.
عندها و بشكل مباشر سيقوم البرنامج بإعطائك التقرير المفصل لهذه الصورة و كأنه قد قام شخص ما بإعداد هذا التقرير.

في النهاية, نتوصل أنه كلما تم تمديد البرنامج بمعلومات أكثر, كلما حصلنا على معلومات أدق.
و كخلاصة للموضوع كله, الذكاء الإصطناعي يبني قراراته على أساس المعلومات التي تموله بها أو التي قمت سابقاً بتجهزيها له.


مجال الذكاء الإصطناعي ينقسم بدوره لعدة فروع يمكنك تعلم إحداها مثل:

  • التعلم الآلي ( Machine Learning ) : يرتكز على جعل الآلة تحفظ المعلومات التي تسجلها من تلقاء نفسها ثم بناءاً على هذه المعلومات و الخوارزميات التي تعتمدها تعطيك النتيجة. فمثلاً, عند البحث في جوجل تجده بشكل تلقائي يظهر لك خيارات أثناء إدخال المعلومات التي تريد البحث عنها. هذه الخيارات تم تخزينها في الأصل بشكل تلقائي عندما قام أشخاص قبلك بالبحث كما تفعل أنت الآن.

  • الروبوتات الذكية ( Robotics ) : يرتكز على بناء آلات تجمع المعلومات من تلقاء ذاتها باعتماد خوارزميات معينة و من ثم تتصرف أو تؤدي المهمات التي تطلب منها على أساس المعلومات التي تعلمتها بنفسها. فمثلاً إذا طلبت من روبوت أن يصعد إلى الدرج, فإنه قد يقضي بعض الوقت في المرة الأولى و هو يجرب كيف يجب أن يتحرك حتى يصعد الدرج بنجاح. في النهاية و بعد أن يتوصل للطريقة الصحيحة التي يجب أن يتحرك بها لصعود الدرج فإنه عندما يريد صعوده في المرة المقبلة سيستخدم بسرعة نفس الأسلوب الذي تعلمه بنفسه سابقاً.

  • الرؤية ( Vision ) : يرتكز على جعل الآلة قادرة على معرفة طبيعة الأجسام التي تصورها و تحليلها, فمثلاً إذا قمت بإلتقاط صورة لقنينة ماء, فإنها قادرة على معرفة أن ما في الصورة عبارة عن قنينة بل و أن هذه القنينة ممتلئة على سبيل المثال بنسبة 80%. كمثال آخر, عندما تقوم بإضافة صورة على فيسبوك, فإن فيسبوك تجده بشكل تلقائي يضع علامة على الوجوه, بل و يخبرك أحياناً أن الشخص الذي في الصورة هو فلان و يسألك إن كنت تريد أن تفعل له منشين.

  • التخطيط ( Planning ) : يستخدم كثيراً في الألعاب حيث يتيح لك تحريك الشخصيات بشكل تلقائي. مثلاً لجعل الأشرار في اللعبة يقتربوا منك أو يهربوا منك إلخ.

  • معالجة الصوت ( Speech Processing ) : جعل الآلة قادرة على فهم الأصوات و تحويلها إلى كلام أو جعل لنطق الكلام المكتوب.


ملاحظة

ما قمنا بذكره عن مجالات الذكاء الإصطناعي يعتبر سطحي جداً لأن هذا المجال ضخم و مجالاته كثيرة.


ما هي الاشياء التي يجب معرفتها قبل الدخول في مجال الذكاء الإصطناعي

من الناحية البرمجية فيجب أن تعرف لغة C++ و طريقة التعامل مع قواعد البيانات.
من ناحية أخرى فهذا المجال يتطلب مهارة كبيرة في الرياضيات إذا كان الشخص ينوي أن يبدع فيه.

من ناحية الرياضيات, يجب دراسة المواد التالية كبداية و التي يدرسها الطلاب في الجامعات:

  • Linear Algebra.

  • Calculus.

  • Probability and Statistics.

  • Discrete Mathematics.

  • Mathematical Logic.

في هذا الرابط تجد صور مبسطة جداً من شأنها أن توضح لك علاقة هذه المواد و أهميتها بالذكاء الإصطناعي إنتقل للموقع »

رسالة من الموقع

تطلّب إعداد هذه الدورة أشهراً من العمل المتواصل لتكون شاملة لكل اساسيات C++ التي يجب أن يعرفها المبرمج و بنفس الوقت لتكون سهلة الفهم.

لذا نتمنى دعمنا من خلال مشاركة الدورة مع أصدقائك في مواقع التواصل الإجتماعي و زملائك في الجامعة إذا كنت تجد أن هذه الدروس يمكنها إفادته.

نتمنى لك كل التوفيق و نسأل الله أن يوفقك و يبارك لك في علمك و عملك.