خطوتك التالية بعد تعلم لغة سي بلاس بلاس
مقدمة
إذا قمت بقراءة كل الدروس التي شرحناها في هذه الدورة و وصلت إلى هنا, فهذا يعني أنك أصبحت ماهراً في التعامل مع لغة 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++ التي يجب أن يعرفها المبرمج و بنفس الوقت لتكون سهلة الفهم.
لذا نتمنى دعمنا من خلال مشاركة الدورة مع أصدقائك في مواقع التواصل الإجتماعي و زملائك في الجامعة إذا كنت تجد أن هذه الدروس يمكنها إفادته.
نتمنى لك كل التوفيق و نسأل الله أن يوفقك و يبارك لك في علمك و عملك.