Romansy
خواطر Geek في مجال البرمجه والتشفير ، سأكتب هنا عن كل ما أحب في مجال التقنيه والانترنت !!

:: ما هو الفيجوال سي++ ؟

ما هو الفيجوال سي++ ؟

 
بالتأكيد ، انك تعلمت سي++ وحاليا وقمت بكتابه بعض البرامج البسيطه .. ولكن الشئ الذي يقلقك ويشغلك هو انك سمعت من احد اصدقائك او من الاحد المحترفين ان "اغلب برامج الويندوز مكتوبه بالسي++" .. مثلا برنامج الماسنجر مكتوب بالسي++ ايضا برنامج الفوتوشوب وبرنامج 3 دي ماكس وو الخ .. اغلب البرامج ان لم تكن جميعها تكتب بالسي++ .. ايضا الالعاب اغلبها مكتوبه بالسي
++ ..

بالتأكيد ، هذا هو السؤال الذي تطرحه .. "كيف يمكن كتابه مثل هذه البرامج بالسي"++ ؟؟
الجواب:
عندما تعلمت سي++ ، تعلمتها تحت بئيه الكونسول Console Mode ، وهذه البرامج تعمل تحت الدوز (في الحقيقة محاكي للدوز) .. هذه البرامج لا تستطيع التعامل مع الفأره ، ايضا لن تستطيع التعامل مع الاحداث .. ايضا تسير تحت تسلسل واحد اي انك لن تستطيع عرض المخرجات كلها دفعه واحده .. بل عليك الانتظار حسب ما يؤديه برنامجك ...

في الحقيقه ، تستطيع برمجه الفأره في هذه البيئه ، ولكن عليك ان تعمل تحت بيئه 16 بت وليس 32 بت ، ما معنى هذا الكلام ؟؟

حسنا ، لتسهيل الامر عليك .. عندما تكتب برنامج ما وتترجمه باستخدام احد المترجمات مثلا بفيجول سي++ او بولاند سي++ او ديف Dev - C++ .. كل هذه المترجمات تنتج تطبيق كونسول ، ولكنه في الحقيقه تطبيق 32 بت ( الويندوز بدا من الاصدار ويندوز 95 اصبح 32 بت ، اما الاصدارات القديمه والدوز هي 16 بت) .... وعندما تستخدم بيئه 32 بت لن يمكنك استخدام مقاطعات الدوز التي يجب ان يكون التطبيق 16 بت ...

نعود الى برامج مثل الرسام واي برنامج اخر ذو واجهه.. ونترك الدوز قليلا   .


هذه البرامج 32 بت كتبت بالسي او السي++ .. لكن باستخدام ما يعرف بواجهه برمجه التطبيقات         Application  Programming Interface واختصارا API  (وايضا يطلق عليها win32 لانها تعمل داخل انظمه 32 بت ، قديما كان هناك win16 ولكنها اصبحت لاغيه ... الجدير بالذكر ، انه كل اصدار من هذه الدول API يتم اضافه دوال جديده ، ولكن مع الاحتفاظ باسامي الدوال القديمه كما هي وذلك لكي يستطيع المبرمجين القدامي الانتقال بسهوله الى البيئه الجديده ).

ماهي هذهAPI ؟
هي مجرد دوال موجوده في داخل ملفات تنتهي بالامتداد .dll وموجوده في مجلد النظام لديك (c:\windows\system) ... هي باختصار نظام التشغيل ويندوز ... مثلا عندما ترى مستطيل فاعرف انه تم استدعائه من هذه الدوال .. عندما ترى قائمه ،وو كل شيئ تقريبا ...

حسنا ، عندما تستخدم هذه الدوال في برنامج تستطيع فعل ما تريد .. نعم ما تريد .. ويمكن استخدام هذه الدوال في اي لغه كانت سي ، سي++ ، فيجول بيسك ، وغيرها من اللغات . وفي الحقيقه عندما تتعامل مع اللغات ذات الوجهات مثلا دلفي او فيجول بيسك مثلا قمت برسم زر 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 في اي نوع من الانواع ...

لماذا اتعلم فيجول سي++ ؟


اذا كنت تريد عمل برامج ذات واجهات  Graphical User Inteface GUI
اذا كنت تريد عمل تطبيقات انترنت وبرامج شبكيه Internet development, Network Programming
اذا كنت تريد بناء وصول لقواعد البيانات database access، اذا كنت تريد عمل مكونات component technology
وكنت تعرف في سي++ ، اذا عليك تعلمها ...  
 

كيف اتعلم فيجول سي++ ؟

هذا يعتمد عليك اولا واخيرا ... فالمكتبه MFC مليئه جدا جدا .. ويصعب شرحها بشكل كامل .. هناك الكثير من الكتب المتوفره في هذا الموضوع  (هناك كتب مترجمه موجوده في المكتبه ، لكنها غير كافيه) ، وفي حال اردت التعلم يجب ان يكون لديك على الاقل مرجع واحد تستطيع القرائه منه بشكل يومي ...

والفتره التي يقولها اغلب المؤلفين انه لكي تحترفها عليك على الاقل سته شهور من القراءه والتطبيق المستمر  اعلم انه شيء صعب كثيرا .. لكن للقوه ضريبتها ، فهي اقوى لغه لذلك عليك ان تستحملها ...


 
ماهي الـQT ولماذا البعض يفضلها علىالـMFC ؟


حسنا ، التطبيق الذي سوف تنتجه باستخدام mfc سوف يعمل فقط داخل انظمه ويندوز ... لانه مبني بالاعتماد على داول API كما ذكرنا .. وكل نظام تشغيل له دوال تختلف عن الاخر ..

Qt
، هي مكتبه متكامله شبيه بال MFC ولكن مع فارق بسيط انها تعمل في داخل لينوكس وويندوز ... اي ان البرنامج المكتوب بها سوف يعمل بدون اي مشاكل في اللينكوس وحتى الماكنتوش لانها اصلا من لغات التطوير في لينكوس ..

ايضا التعامل مع Qt اسهل كما ذكر البعض من انصار اللينكوس.

حسنا ، ما هو الفيجول سي++ . نيت  Visual C++.NET؟؟
هو احدث الاصدارات من هذه البيئه .. على العموم لا اعرف الكثير عنها لكن تم وضع لغه جديده من السي++ وهي C++/CLI وهي لغه السي++ الخاصه بالدوت نيت !! ايضا كان هناك Managed C++ وهي اول سي++ في اول اصدار لدوت نيت ، لكن الان تم استبدالها بالـ C++/CLI .

لماذا لا يكثر الحديث عنVisual C++.NET كما هو الحال معC# او جافا ؟؟
لأن اكثر ما يدور حاليا لدى المبرمجين فهو بناء التطبيقات ،  وفي هذه الحالة السي++ تخسر الكثير بسبب الصعوبه بعكس لغات  vb.net او جافا ...
اذا من اجل بناء تطبيقات عاديه ،  لديك vb.net او c# او delphi
من اجل بناء تكنلوجيا وانظمه كبيره جدا ،  فجيول سي++ ، سي++ ، سي
من اجل بناء برامج منخفضه المستوي  ،  فجيول سي++ ، سي ، اسمبلي 

  romansy

(2) تعليقات

:: برامج مفتوحة المصدر.

برامج مفتوحة المصدر.

 

جميعنا تواجهنا الكثير من المشاكل اثناء كتابة البرامج ، واغلب هذه المشاكل تكون غير محلوله في كتب البرمجه لذلك كان لا بد من التوجه الى مصدر اخر لحل المشاكل وتحسين طرق الحل . الا وهو البرامج المفتوحه المصدر

 

لست هنا بصدد الحديث عن اهميه هذه البرامج ، والرخص GPL وغيرها . هنا اريد ان اذكر اين يمكن ان نجد مثل هذه البرامج ..

 

المواقع التاليه عباره عن مواقع لبرامج open Source (يعني يأتي الكود مرفق بها ) ، تصدقوا هذه المواقع تحتوي على ما نريد من برامج وحتى في مشاريع التخرج ..

 

يعني باختصار هي كنز لمن يعرف قيمته ..

 
 

وحتى اريحك من عناء حفظ تلك المواقع ، توجه الى صديقنا google واكتب free open source . واستمتع بعدها بالنتائج ..

 

 

وهناك مواقع مخصصه للبحث في السورسات فقط ..
 
 
 

اتمنى ان تستفيدوا منها .

romansy

(0) تعليقات

:: Coding Standard

 

Coding Standard

 

من احد اكبر العوامل في سهوله متابعة وتصحيح البرامج هو طريقه كتابتها ، نعم ، ففي حال تم كتابة البرنامج بصوره واضحه ومرتبه تكون عمليه التصحيح والتتبع امر في منتهي السهوله ..

 

بالاضافه الى انه اغلب الشركات والمؤسسات تتبع اسلوب معين في كتابه البرامج من ناحيه تسميه المتغيرات والثوابت وطريقه كتابه البرنامج حتى يستطيع باقي المبرمجين التعامل معها .

 

ولو نظرنا الى طلاب جامعتنا الموقرين ، لوجدنا انه اغلب برامجهم عباره عن طلاسم !! فلن تستطيع فهم اي سطر الا بعد التعديل هنا وهناك .

 

ومن هنا كان يجب ان ننوه عن هذا الموضوع ولو بمجرد ملاحظات بسيطه ، ( سوف يكون الحديث هنا عن كيفيه كتابه البرنامج من ناحيه تسميه المتغيرات وطرق التوثيق Comments  ، ولن اتكلم عن طرق تحسين البرنامج optimization ولا عن افضليه اختيار طريقه من اخرى لانه ببساطه موضوع اخر ويدخل ضمن Programming Skills) .

 

تسميه المتغيرات :

وهنا يجب ان يكون اسم المتغير يدل على وظيفته ، فلو كان لدينا متغير عددي صحيح يستخدم لتخزين رقم الطالب فيصبح اسم المتغير :

int studentNumber ;

char studentName[10];

 

وهكذا بالنسبه الى بقيه المتغيرات التي تستخدم داخل البرنامج ..

 

حاله خاصه وهي المتغيرات التي تستخدم كعدادات counter ، وجرت العاده من ايام لغه الفورتران حيث كانت لا تسمح باستخدام عدادات الا بالاسماء : i,j,k,l,m... etc ..

(etc -- يشير الى "الى اخره" ، وليس الى اسم متغير :) ).

 

حسنا ، هناك ثلاث طرق مستخدمه في تسميه المتغيرات وهي التي يتبعها اغلب المبرمجين في العالم ، وطبعا تستطيع استخدام النمط او الاسلوب الذي يعجبك .

 

النوع الاول : underscore notation :

وهنا في هذا النمط يجب استخدام الشرطه السفلي (underscore) للفصل بين الكلام في اسم المتغير

مثال :

int student_number ;

char student_name[10];

 

وهذا الاسلوب لا يستخدم بكثره ، لانه متعب ، يعني حتى اضغط المفتاح shift ثم بالاصبع الاخر - ، الامر طويل وخاصه نحن شعب كسول :) .

 

النوع الثاني : camel Notation :

او اسلوب الجمل ، لا تستغرب من الاسم لانه في الحقيقه يدل على نوعه . في هذا النوع يتم استخدام الحرف الكبير Capital letter في كل كلمه ابتداء من الكلمه الثانيه . (يشبه سنام الجمل) .

مثال :

 

int studentNumber ;

char studentName[10];

 

وهذا النوع منتشر وبكثره واغلب الكتب تستخدمه ، وانا ايضا استخدمه . (ايضا هو يستخدم في تسميه الداول function ).

 

النوع الثالث : hangarain notation :

التسميه الهنغاريه ، وهي تسميه اخترعها احد مبرمجين شركه مايكروسوفت ، وتستخدم في تسميه برامج الويندوز التي تستخدم دوال API وايضا برامج سي++ المكتوبه بالمكتبه MFC .

 

طريقتها : هي ان نضع حرف في بدايه اسم المتغير للدلاله على نوعه ، الحرف n يدل على عدد صحيح

مثال :

int nStudentNumber ;

char cStudentName[10];

 

 

 

تسميه الدوال Function والفئات classes :

-

 

يفضل في تسميه الدوال استخدام الـ Camel Notation ، وفي لغه جافا جميع الدوال الموجوده في المكتبات مكتوبه بهذا الاسلوب ..

 

بالنسبه الى تسميه الفئات او الطبقات classes ، فكل حرف من كل كلمه يكون بالحرف الكبير Capital letter مثال :

class MyCar

class CheckBox

 

تسميه الثوابت :

 

هنا جميع الحروف تكون بالحرف الكبير Capital letter ..

 

مثال :

const int MAX = 10 ; // here in c++ only

final int MAX = 10 ;        // here in java 

 

 

التوثيق ، التوثيق :

 

احد العوامل المساعده في فهم البرامج هي التوثيق وكتابه التعليقات ، بالطبع هذه الخاصيه مختفيه جدا لدى جميع الطلاب وكأنها امر غير ضروري !! . (المفترض ان يتم محاسبه  الطلاب في حال قيامهم بكتابه برنامج بدون تعليقات) .

 

طبعا كتابه التعليق لن تكون في اي جمله واي مكان ...

 

مثال :

int studnetNumber ;    // this is number of student

 

هذا التعليق متخلف جدا ان صح التعبير ، لان اسم المتغير يدل على فعله Self-Document (لذلك كما اشرنا سابقا ، التسميه عامل من اهم العوامل ) .

 

يكون التعليق لتوضيح عمل داله معينه مثلا قمت بكتابه داله معينه ، عليك بكتابه تعليق يوضح الغرض من هذه الداله ، هل هناك مدخلات ، هل هناك مخرجات ، وهكذا ...  (فقط يكون قبل الداله) ..

 

ايضا تستخدم التعليقات في بدايه البرنامج ، لوضع معلومات حول المبرمج ، اسمه ، وبريده الالكتروني ، ايضا تكون هناك معلومات حول المترجم المستخدم ، ووقت كتابه البرنامج ..

 

 

تنسيق الكود نفسه :

 

هنا اقصد بدايات ونهايات البرنامج (او اي block) تكون في سطر خاص بهما ،

 

مثال :

for (int i=0 ; i<10 ; i++ )

{

cout << "hi i Study in Neelian University \n" ;

cout << "and i love Computer Sceince\n" ;

}

 

(لاحظ بدايه ونهايه الـ Block تكون في سطر خاص بهما ، وجسم الحلقه (او الداله بنفس الطريقه) يكون في سطر ويكون مبتعد عن بدايه السطر بمقدار 8 حروف (بالضغط على مفتاح tap ).

 

 

كانت هذه لفته بسيطه ، على امل ان  تتحول تلك الطلاسم الى برامج مقروئه ، وتتغير طريقه كتابتكم للبرامج بطريقه افضل ...

 

تحياتي ..

romansy

(0) تعليقات

:: إجعل العمل هو لسانك الناطق

هذه مقاله رائعه للدكتور عائض القرني ، سأضعها هنا على أمل ان التزم بكل حرف جاء بها ..

أترك أعمالك تتحدث عنك واسكت أنت، فلا تلقِ خطباً تتحدث فيها عن إنجازك وتفوقك وجميل سيرتك فتبتلى بمكذبٍ وحاسد، وتكون عرضة للسخرية والازدراء، ولكن قدم علماً حسناً جميلاً بدعياً يسر الناظرين، وأعطِ مثلاً حياً من الأخلاق والسيرة الحسنة والسجايا الحميدة، فهي أعظم شهادة على عظمتك وسموك وعلو منـزلتك. إن الفاشلين أكثر الناس أقوالاً وأقلهم أعمالاً فهم يتحدثون عن أعمال وهمية وعن منجزات خيالية ليكسبوا رضا الناس وإعجابهم فما يزدادون إلا مقتاً، وليتهم اكتفوا بذلك، بل زادوا الطين بلة، فنشروا الأراجيف والشائعات واستهلكوا أوقاتهم في كثرة الكلام، وتركوا (العمل)، ولم يقدموا للأمة سوى (الكلام)، لكن الناجحون يقدمون من النتائج الباهرة الرائعة ما يلفت الأنظار، ويخطف الأضواء، ويدهش العقول. إن أخطر حالات الذهن يوم يفرغ صاحبه من العمل فيكون كالسيارة المسرعة في انحدار بلا سائق؛ تجنح ذات اليمين وذات الشمال، ثم تهوي إلى الأسفل!، فانتبه –أخي القارئ- ودعك من كثرة الكلام بلا طائل، واقض على أوقات الفراغ التي يحلو فيها القيل والقال، ويعذب فيها الاسترخاء، وهيئ نفسك للقيام بأعمال مثمرة، بدلاً من إرهاق حبالك الصوتية بالكلام، وتعذيب نفسك بتتبع عورات الناس.. قم الآن صلِّ، أو اقرأ، أو سبِّح، أو طالع، أو اكتب، أو رتب مكتبتك، أو أصلح بيتك، أو انفع غيرك حتى تقضي على الفراغ، واقتل الكلام بالعمل.

إن الحياة لا تعترف باللابثين في أماكنهم، القابعين في ثكناتهم، لكنها ترحب بالعالمين العاملين، الصاعدين سلم المجد درجة درجة، الذين يؤدون رسالتهم في الحياة، ويلبون مراد النشأة الأولى، والمطلب الحق، ويجيبون على سؤال فاطرهم (أيحسب الإنسان أن يترك سدى) ؟!.. وإذاً فاصمت وأعمل وأسكت وأبذل فسوف تجد من أصحاب الضمائر الحية من يدعو لك، ويثني عليك، ويشيد بأعمالك الجليلة وخصالك النبيلة، والناس شهداء الله في أرضه، وقل لكل حاسد: الجواب ما تراه دون ما تسمعه !..

(0) تعليقات

:: Simple Calculater v.01

السلام عليكم ..

اول برنامج لي في لغه الجافا ، برنامج بسيط حبيب عباره عن اله حاسبه بسيطه لأبعد الحدود ، تقبل العمليات الاربعه (+ ، - ، / ، * ) و= طبعا :) ..

على العموم ، سأقوم باضافه بعض العمليات مثل الاس التربيعي ، الجذر ، المضروب وغيرها من العمليات في الاصدار الثاني باذن الله ، مع تزيين الواجهه قليلا ..

البرنامج حاليا لا فائده منه سوى اني استفدت في برمجه الواجهات فقط ، وفعلا هي سهله جدا في الجافا بعكس الواجهات في MFC ..

السورس في المرفقات ،
 

تحياتي ...... :)

الاله الحاسبه ، الكود ..
(2) تعليقات

:: Hello World

مره اخرى ، بعد فتره انقطاع طويله من الكتابه ،،
 
هأنذا عدت للكتابه في هذه المدونه ، التى اتمنى ان تستمر وتعمل بشكل جيد ، وليست كالمدونه الاخيره التي شاء الله ان تتوقف من العمل :( ..
 
على العموم ، سأحاول ان اكون اكثر جديه واكتب فيها بشكل احترافي اكثر :) ...
 
 
تحياتي ....

(2) تعليقات