عدد الرسائل : 164 العمر : 36 المكان : جمهورية مصر العربية تاريخ التسجيل : 05/06/2007
موضوع: مقدمه في الفيجوال سي++ السبت يونيو 23, 2007 10:13 am
بسم الله الرحمن الرحيم ...
اذا كنت تريد البدايه في البرمجه تحت الفيجول سي++ ، وبناء تطبيقات 32 بت .. فهذا المقال موجه اليك !!
وسوف أجاوب على هذه الاسئله التي قد تكون خطرت على بالك عندما شاهدت عنوان الدرس .. بالاضافه الى بعض الاسئله ، ايضا في حال توفرت لديك بعض الاسئله ولن تشاهدها هنا فبادر بطرحها على الفور !
================ ما هو الفيجول سي++ ؟
Console Mode VS Win32 Mode
لماذا اتعلم فيجول سي++ ؟
كيف اتعلم فيجول سي++ ؟
اسئله بسيطه ؟؟
مثال بسيط ؟ برنامج فقط وليس سورس ؟
================
ما هو الفيجول سي++ ؟
ببساطه انه بيئه تطوير متكامله Integrated Development Environment ويطلق عليه اختصارا IDE .. ما ذا يعني هذا الكلام : اي انه تم وضع المترجم والرابط ومحرر النصوص ومحرر الادوات Resource Editor كلهم في اطار واحد او بيئه واحده (راجع درس : سي++ ما وراء الكواليس ، في هذا القسم . لمزيد من المعلومات حول الـ IDE) .
Console Mode VS Win32 Mode:
بالتأكيد ، انك تعلمت سي++ وحاليا وقمت بكتابه بعض البرامج البسيطه .. ولكن الشئ الذي يقلقك ويشغلك هو انك سمعت من احد اصدقائك او من الاحد المحترفين ان "اغلب برامج الويندوز مكتوبه بالسي++" .. مثلا برنامج الماسنجر مكتوب بالسي++ ايضا برنامج الفوتوشوب وبرنامج 3 دي ماكس وو الخ .. اغلب البرامج ان لم تكن جميعها تكتب بالسي++ .. ايضا الالعاب اغلبها مكتوبه بالسي++ ..
بالتأكيد ، هذا هو السؤال الذي تطرحه .. "كيف يمكن كتابه مثل هذه البرامج بالسي++ " ؟؟
الجواب :
عندما تعلمت سي++ ، تعلمتها تحت بئيه الكونسول
Console Mode .. وهذه البرامج تعمل تحت الدوز (في الحقيقه محاكي للدوز) .. هذه البرامج لا تستطيع التعامل مع الفأره ، ايضا لن تستطيع التعامل مع الاحداث .. ايضا تسير تحت تسلسل واحد اي انك لن تستطيع عرض المخرجات كلها دفعه واحده .. بل عليك الانتظار حسب ما يؤديه برنامجك ...
في الحقيقه ، تستطيع برمجه الفأره في هذه البيئه .. ولكن عليك ان تعمل تحت بيئه 16 بت وليس 32 بت ... ما معنى هذا الكلام ؟؟
حسنا ، لتسهيل الامر عليك .. عندما تكتب برنامج ما وتترجمه باستخدام احد المترجمات مثلا بفيجول سي++ او بولاند سي++ او ديف Dev - C++ .. كل هذه المترجمات تنتج تطبيق كونسول ، ولكنه في الحقيقه تطبيق 32 بت ... (الويندوز بدا من الاصدار ويندوز 98 اصبح 32 بت ، اما الاصدارات القديمه والدوز هي 16 بت) .... وعندما تستخدم بيئه 32 بت لن يمكنك برمجه الفأره باستخدام مقاطعات الدوز التي يجب ان يكون التطبيق 16 بت ...
نعود الى برامج مثل الرسام واي برنامج اخر ذو واجهه.. ونترك الدوز قليلا ..
هذه البرامج 32 بت كتبت بالسي او السي++ .. لكن باستخدام ما يعرف بواجهه برمجه التطبيقات
Application Programming Interface واختصارا API ... وايضا يطلق عليها win32 (لانها تعمل داخل انظمه 32 بت ، قديما كان هناك win16 ولكنها اصبحت لاغيه ... الجدير بالذكر ، انه كل اصدار من هذه الدول API يتم اضافه دوال جديده ، ولكن مع الاحتفاظ باسامي الدوال القديمه كما هي وذلك لكي يستطيع المبرمجين القدامي الانتقال بسهوله الى البيئه الجديده ... )
ماهي هذه API ؟
هي مجرد دوال موجوده في داخل ملفات تنتهي بالامتداد .dll وموجوده في مجلد النظام لديك ( c:windowssystem) ... هي باختصار نظام التشغيل ويندوز ... مثلا عندما ترى مستطيل فاعرف انه تم استدعائه من هذه الدوال .. عندما ترى قائمه ،وو كل شيئ تقريبا ...
حسنا ، عندما تستخدم هذه الدوال في برنامج تستطيع فعل ما تريد .. نعم ما تريد .. ويمكن استخدام هذه الدوال في اي لغه كانت سي ، سي++ ، فيجول بيسك ، وغيرها من اللغات . وفي الحقيقه عندما تتعامل مع اللغات ذات الوجهات مثلا دلفي او فيجول بيسك مثلا قمت برسم زر Command فهذه اللغه تستدعي الداول نيابه عنك لتسهيل الامر ..
نعم لتسهيل الامر ، فالأمر ليس بهذه البساطه ، معرفه الدوال امر مستحيل وصعب للغايه .. لذلك اغلب البرمجين لن يستخدموا تللك الدوال لوحدها فقط .. لكن مع لغه البرمجه مثلا VB يمكنك استدعاء تلك الدوال عندما اللغه لا تستطيع على فعل شيء (مثلا فتح السيدي ، معرفه معلومات الجهاز) في هذه الحاله سوف تستخدمها ..
عدد الدوال كبير جدا ، اذا مثلا كيف تريد معرفه داله ما .. ببساطه افتح
MSDN وهو موقع يحتوي على جميع الدوال .. ويمكنك تنزيله على شكل كتاب (تقريبا) ومن خلاله تستطيع معرفه اي داله وطريقه عملها ، بالاضافه الى مثال في بعض الدوال ..
اذا اردت تعلم دوال API مع لغه سي (سي وليست سي++) .. هناك كتاب Windows Programming للمؤلف Petzold (وهو موجود في قسم الكتب لو اردت تحميله) وهو كتاب يعلمك كيف ترسم اشكال ، قوائم ، تتعامل مع الماوس والكيبورد ، وغيرها من الكثير من المواضيع ، بل حتى يتعدى الاساسيات ويدخل مواضيع متقدمه في البرمجه مثل Multithreading و Memory Managment وغيره .. بالمناسبه البرمجه باستخدام هذه الطريقه غالبا ما يشار لها بالـ SDK -Style .
من هنا ، قامت مايكروسوفت بعمل كلاسات Classes وكبسلت هذه الدوال في هذه الكلاسات .. واصبحت هناك مكتبه متكامله من الكلاسات وسمتها MFC (وهي اختصار
Microsoft Foundation Class ) . اي ان التعامل معها بطريقه البرمجه الموجهه للكائنات Object Oriented Programming .. من هنا نستنتج انه لعمل برامج MFC يجب ان تكون ملم باساسيات السي++ بشكل جيد .. !! انتبه ...
في فيجول سي++ ، تستطيع عمل برامج بكلا الانواع سواء Console او win32 او MFC ... وطبعا الاخيره مقتصره فقط على الفيجول سي++ .... وتستطيع استخدام win32 في اي نوع من الانواع ... لذلك سوف نتعلم MFC ونستخدم هذه الداول عندما نحتاجها .
لماذا اتعلم فيجول سي++ ؟
اذا كنت تريد عمل برامج ذات واجهات
Graphical User Inteface GUI
اذا كنت تريد عمل تطبيقات انترنت وبرامج شبكيه Internet development, Network Programming
اذا كنت تريد بناء وصول لقواعد البيانات database access
اذا كنت تريد عمل تطبيقات component technology
وكنت تعرف في سي++ ، اذا عليك تعلمها ...
كيف اتعلم فيجول سي++ ؟
هذا يعتمد عليك اولا واخيرا ... فالمكتبه MFC مليئه جدا جدا .. ويصعب شرحها بشكل كامل .. هناك الكثير من الكتب المتوفره في هذا الموضوع .. ايضا يمكنك متابعه المواضيع هنا في العاصفه (ان بدئت) ... لكن لا تعتمد عليها فقط !! في حال اردت التعلم يجب ان يكون لديك على الاقل مرجع واحد تستطيع القرائه منه بشكل يومي ...
والفتره التي يقولها اغلب المؤلفين ... انه لكي تحترفها عليك على الاقل سته شهور من القراءه والتطبيق المستمر ... اعلم انه شيء صعب كثيرا .. لكن للقوه ضريبتها ، فهي اقوى لغه لذلك عليك ان تستحملها ...
اسئله بسيطه
ماهي الـ QT ولماذا البعض يفضلها على الـ MFC ؟
حسنا ، التطبيق الذي سوف تنتجه باستخدام mfc سوف يعمل فقط داخل انظمه ويندوز ... لانه مبني بالاعتماد على داول API كما ذكرنا .. وكل نظام تشغيل له دوال تختلف عن الاخر ..
ايضا التعامل مع Qt اسهل كما ذكر البعض (من انصار اللينكوس) ....
بالنسبه لي .. لا اعبئ كثيرا بهذا النظام .. لاني لا احبه ابدا .. لذلك سوف اتوجهه للـ MFC ... الكثير من اللى اعرفهم انتقلوا الى هذه المكتبه لانك تستطيع البرمجه بها من داخل ويندوز ولينوكس ... وتستطيع استخدامها في فيجول سي++ !! (لا تقل لي انك تريد تعلهما ) ...
Qt ، هي مكتبه متكامله شبيه بال MFC ... ولكن مع فارق بسيط انها تعمل في داخل لينوكس وويندوز ... اي ان البرنامج المكتوب بها سوف يعمل بدون اي مشاكل في اللينكوس وحتى الماكنتوش ... لانها اصلا من لغات التطوير في لينكوس ..
هل استخدم فيجول سي++ ام فيجول بيسك ( لا يزعل علينا ريد كاسبر) ؟
اذا تعلمت VC فهو شيء جيد ، اذا تعلمت VB فهو شئ جيد ايضا ، اذا تعلمتهما الاثنين فهو شيء رائع جدا ..
إن اختيارك للغة يعتمد بشكل كبير على البرامج التي أنت في صدد كتابتها . فبرمجة الموسوعات و قواعد البيانات هو أسهل في الفيجوال بيسك ، برمجة برامج التحكم والرسوميات و برامج تتعامل مع الويندوز وال API بكثرة هي أقوى وأسهل في الفيجوال سي . فهناك أمور تبرمج في الفيجوال سي بسهولة أكثر عن الفيجوال بيسك والعكس صحيح .
سوف أضرب لك مثال :
لدينا برنامج رسم مثل ال Corel Draw ولكن على شكل مبسط .. فأي لغة تختار :
إذا اخترت ال VB فسوف يأخذ معك وقت أكثر وجهد أكثر وسوف يكون البرنامج بطئ جدا .
أما إذا اخترت ال VC فسوف تجد مرونة تامة في برمجة الخوارزميات والسرعة الهائلة بالمقارنة مع تلك والاستخدام الاقتصادي للذاكرة .
الملخص أنه يوجد العديد من الأشياء التي يمكنك أن تفعلها في VC ولا يمكنك فعلها في باقي اللغات ، والعكس صحيح !!
طيب ما هي ميزات الفيجول سي++ ، اي الاشياء التي تميزها عن غيرها من اللغات ؟
إن كل سطر تكتبه في VC هو أسرع بمقدار عشر مرات من لغة ال VB وبحوالي 2 إلى 5 مرات من الدلفي ..
ال VC التي تعتمد على لغة ++C هي أفضل بكثير من بقية اللغات ولا تقارن معهم ويكفي أنك تبرمج في بيئة OOP مائة في المائة . فهل يمكنك مثلا في الدلفي أن تعمل تحميل للعوامل
Operator Overloading أو Multiple Inhiretince وغيرها الكثير .
يوجد في ++C مكتبة قياسية STL وهي تحتوي على العديد من الأمور المعدومة في باقي اللغات مثل بناء linked list و hash table أو map table ، والعديد غيرها وهي جاهزة من أجل الاستخدام . (جافا تحتوي ايضا ) .
استخدامك للمؤشرات بصورة سهلة جدا هو لوحده يكفي .
بالنسبة إلى برمجة الواجهات فهي مثل باقي اللغات وإن كانت باقي اللغات أسهل لما تقدمه من الكائنات الجاهزة . ولكنك يمكنك استخدام العديد من ال Classes أو الكائنات الجاهزة في برامجك .
"بالنسبة إلى قواعد البيانات فهي نفسها عن باقي اللغات . وإن كانت ال VB أسهل فإن ال VC إذا أتقنتها فلن تحس بأي مشكلة في برمجة قواعد البيانات باستخدام أي من التقنيات OLE DB أو ODBC أو DAO أو ADO .
هل سألت نفسك إن كانت ال VB تدعم بناء برامج قواعد البيانات مباشرة باستخدام OLE DB . طبعا هذا مستحيل !! إن استخدامك لل OLE DB مباشرة هو اختصار الطريق واهمال لطبقة ال ADO التي في المنتصف .
هل سألت نفسك إن كنت تستطيع بناء OLE DB Provider في ال VB طبعا لا . وهذا هو عبارة عن مقدم خدمات لقواعد البيانات . "
"
الفقره السابقه ، هو كلام احد الخبراء في فيجول سي++ ، لذلك ارفقت كلامه بين قوسين " .
حسنا ، ما هو الفيجول سي++ . نيت ؟؟Visual C++.NET
هو احدث الاصدارات من هذه البيئه .. على العموم لا اعرف الكثير عنها لكن تم وضع لغه جديده من السي++ وهي C++/CLI وهي لغه السي++ الخاصه بالدونت نيت !! ايضا كان هناك Managed C++ (وهي اول سي++ في اول اصدار لدوت نيت ، لكن الان تم استبدالها بالـ C++/CLI) ..
غير متأكد من MC++ وانه تم استبداله لكن سأبحث في هذا الشأن ... خاصه انه سي++ من اهم اللغات فلازم نجاري التطور ولو حتى فقط بمعرفه الاخبار ...
لماذا لا يكثر الحديث عن Visual C++.NET بالنسبه الى C# او جافا ؟؟
لأن اكثر ما يدور حاليا لدى المبرمجين فهو بناء التطبيقات .. وفي هذه الحاله السي++ تخسر الكثير بسبب الصعوبه بعكس لغات vb.net او جافا ...
اذا من اجل بناء تطبيقات عاديه == لديك vb.net او c# او delphi
من اجل بناء تكنلوجيا وانظمه كبيره جدا == فجيول سي++ ، سي++ ، سي
من اجل بناء برامج منخفضه المستوي === فجيول سي++ ، سي ، اسمبلي
"رأي شخصي 100%" .
اخيرا ،،
هذه المكتبه بصحيح للمحترفين !! نعم .. لا يوجد الكثير من يعرفها لانها صعبه على البعض .. لكنها عجتني لذلك سأكمل فيها حتى اخر رمق !!!