Hicham Al Sayed ahmed

اهلا و سهلا بكم في منتدى تقنيات الحاسوب 2013


Join the forum, it's quick and easy

Hicham Al Sayed ahmed

اهلا و سهلا بكم في منتدى تقنيات الحاسوب 2013

Hicham Al Sayed ahmed

Would you like to react to this message? Create an account in a few clicks or log in to continue.

منتدى و عالم تقنيات الحاسوب و البرمجة وانظمة التشغيل و الصيانة 2013

تؤمن لكل من يحب ان يتعلم البرمجة و كل من يدرس في هذا الاختصاص برامج و مواضيع و افكار جديدة و كيفية العمل و الكثير و الكثير و ايضا تتيح لاي شخص ان ينضم لهذا المنتدى و خاصة طلاب تقنيات الحاسوب و انظمة التشغيل و الصيانة المادية و البرمجية
تعلم الفجوال بيسك - الدلفي - السي ++ - الباسكال و الكثير و الكثير

اطرح سؤالك على فريق العمل في الفيسبوك

تابعنا على الفيسبوك

مشاركة الموضوع عبر الفيسبوك

Log in

I forgot my password

Latest topics

» تفاصيل بسيطة ومعلومات عن الهكر
حول الغة السي++ I_icon_minitimeTue Nov 05, 2013 6:35 am by okba als

» ترحيب بالأعضاء
حول الغة السي++ I_icon_minitimeTue Nov 05, 2013 6:09 am by okba als

» برنامج يعلمك لغة الدلفي بشكل مثير
حول الغة السي++ I_icon_minitimeMon Nov 04, 2013 10:53 pm by سيد برتوكول

» دليل هاتف الدلفي
حول الغة السي++ I_icon_minitimeSun Nov 03, 2013 11:24 am by سيد برتوكول

» سلسلة فيبوناتشي
حول الغة السي++ I_icon_minitimeSun Nov 03, 2013 11:22 am by سيد برتوكول

» كود جميل ورائع جربه واعرف بنفسك ماذا يعمل
حول الغة السي++ I_icon_minitimeWed Apr 17, 2013 1:55 am by سيد برتوكول

» المبرمجون مستائون من الواجهة الرسومية لويندوز ٨ (Windows 8)(نسخة المطورين)
حول الغة السي++ I_icon_minitimeThu Jun 21, 2012 10:26 pm by pc-king.dahek.net

» حزيرة للعلماء
حول الغة السي++ I_icon_minitimeTue Apr 10, 2012 3:23 am by عفريت السويداء

» اسباب تجعل الكمبيوتر يعمل بشكل بطيء
حول الغة السي++ I_icon_minitimeSun Mar 18, 2012 6:49 am by عفريت السويداء

» دروس المبتدئين.....الدرس الأول (تعليم القص)
حول الغة السي++ I_icon_minitimeSat Mar 17, 2012 6:03 am by عفريت السويداء

Top posting users this week

No user

Who is online?

In total there are 2 users online :: 0 Registered, 0 Hidden and 2 Guests

None


Most users ever online was 85 on Tue Nov 05, 2013 5:00 am

تابعنا على الفيسبوك


2 posters

    حول الغة السي++

    سيد برتوكول
    سيد برتوكول
    Administrator
    Administrator


    نقاط : 146584

    حول الغة السي++ Empty حول الغة السي++

    Post by سيد برتوكول Sat Dec 10, 2011 5:05 am

    لغة
    C++/CLI لغة جديدة أصدرتها ميكروسوفت لدعم مواصفات تقنية الدوت نت (.Net)
    انطلاقا من لغة C المعيارية، منذ الانطلاق وحتى اليوم صاحب اللغة عديد من
    التطويرات والتغيرات.

    لتبسيط المفاهيم الخاصة بهذه اللغة وملحقاتها، سنأخذ كود لغة C التالي:

    plain text

    #include <stdio.h>
    int main()
    {
    printf("hello, world");
    }

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

    plain text

    #include <stdio.h>
    #include <iostream>
    int main()
    {
    printf("hello");
    std::cout<< ", world";
    }

    الفكرة تماما جاءت بها لغة C++/CLI الجديدة، فهي امتداد أرقى من لغة C++،
    ويمكن على مستوى أكوادها كتابة بنيات خاصة بلغة C/C++، والكود التالي يوضح
    هذا تماما:
    plain text

    [#include <stdio.h>
    #include <iostream>
    int main()
    {
    // use a C function to print "hello"
    printf("hello");
    // use a C++ object to print a comma followed by a space
    std::cout<< ", ";
    // use a .NET class to print "world"
    System::Console::WriteLine("world");
    }[/color]

    الشيء المثير في الكود السابق أننا استخدمنا فيه الـC والـC++ والـ.Net كلها معا لبناء الدالة الرئيسية main() .

    مصطلحات شائعة لا بد منها قبل البدء بـC++/CLI:

    هنالك مصطلحات شائعة تتكرر في أغلب لغات بيئة العمل الجديدة (نسبيا) .Net ،
    نبدأ هنا بقائمة هي من أهم المصطلحات والمفاهيم التي يجب أن يعيها مبرمج
    C++/CLI جيدا،
    ثم سنتطرق لشرحها:
    • CLI
    • CIL أو MSIL
    • CLR
    • Managed code
    • Native code

    ارفق صورة : monthly_12_2011/post-87237-081573500 1322924474.png

    مثلما هو واضح في الشكل أن هناك وسيط مشترك لجميع لغات بيئة الـ.NET تؤول
    إليه كلها في النهاية، هذا الوسيط المشترك يسمى بنية اللغة المشتركة
    (CLI (Common Language Infrastructure، تتضمن هذه البنية عنصرين هامين، العنصر الأول هو مكوّن اللغة الوسيطية المشتركة
    CIL Common Intermediate Language والمشروع المنجز من ميكروسوفت لهذا المُكوّن يدعى لغة ميكروسوفت الوسيطيةMSIL،
    أما العنصر الثاني فيسمى مكوّن وقت تشغيل اللغة المشتركة CLRCommon Language Run-time.
    الـمكون CLR هو عبارة عن مترجم من النوع اللحضوي JIT Just in time، أي أنه
    يعمل دائما وقتما يتم تشغيل البرنامج في هيئة اللغة الوسيطية المشتركة
    فيقوم بتحويل اللغة
    الوسيطية المشتركة CIL إلى أكواد لغة الآلة يفهمها
    عتاد الحاسوب ويتعامل معها. لهذا يمكن إطلاق اسم الآلة الظاهرية (Virtual
    Machine) لهذا المكون، أي أنه وسيط بين اللغة التي
    يفهمها عتاد الحاسوب وبين اللغة عالية المستوى، هذا الأسلوب يشابه تماما الفكرة المطبقة في لغة جافا وآلتها الظاهرية.
    أما مصطلح الكود المُدار (Managed code) فيشير إلى تلك المجموعة من
    الأكواد التي أتت وطُوّرت بشكل مخصوص لتتخاطب مع بيئة إطار العمل.NET ، أما
    أكواد اللغات القياسية
    القديمة الأخرى فتسمى بالأكواد الطبيعية (Native code) .

    مُلمْلِم النفايات (Garbage Collector):

    كما تم ذكره فإن لغة C++/CLI لم تقم بإحلال نفسها بديلا للغة C++
    المعيارية، بل أضافت لها القدرة على إنشاء وقبول الأكواد المُدارة (managed
    code) والميزات التي يتمتع بها إطار
    العمل.NET .

    مُلملم
    النفايات هو أحد التقنيات التي تتمتع بها اللغة C++/CLI، بهذه التقنية لم
    يعد مبرمج C++ قلقا من قضية نسيانه تحرير مواقع الذاكرة التي قام بحجزها
    ديناميكيا، فمثلا عندما
    يقوم المبرمج بإنشاء وخلق كائن (Object) بشكل
    ديناميكي من صنف معين (Class)، يقوم مُلملم النفايات - وهو عملية تعمل في
    الخلفية - بلملمة وتدمير الكائنات أي تحرير المواقع
    التي تم حجزها بعد الانتهاء من وظائفها. لاحظ المثالين التاليين.
    plain text

    class N {
    .
    .
    }
    N* n= new N;

    الأعلى يمثل كود C++ معياري، قمنا فيه بخلق صنف باسم N ومن ثم قمنا بإنشاء
    وحجز ذاكرة لكائن يُشار له بإسم n وهو بحجم الصنف N، لاحظ أننا استخدمنا
    الكلمة المفتاحية
    new لحجز ذاكرة للكائن في ذاكرة الكومة الطبيعية Native heap، ولتعريف المؤشر استخدمنا علامة * المعتادة.

    plain text

    ref class M {
    .
    .
    }
    M^ r= gcnew M;

    الأعلى يمثل كود ُمدار C++/CLI، قمنا فيه بالمقابل للكود السابق، لاحظ
    الاختلافات، حيث أننا نستخدم علامة الإقحام ^ بدلا من * ، هنا r تُسمى مقبض
    وليس مؤشر، ولاحظ كذلك
    استخدامنا ل gcnew بدلا من new، حيث قمنا بحجر ذاكرة للكائن على ذاكرة الكومة المدارة managed heap.

    كما شاهدنا في المثال، فإن gcnew هو مؤثر يقوم بحجز مساحة على ذاكرة
    الكومة المدارة (Managed heap)، وهذه المساحة هي حوض ذاكري يُدار بواسطة
    مُلملم النفايات
    (Garbage collector)، ومثلما نلاحظ فإن الحرفان الأوليان من الكلمة gcnew هما اختصار لـ garbage collector.

    رجوعا للمثال، يُسمى r بمقبض تتبع (tracking handle) وذلك لسببين اثنين،
    الأول هو أن ململم النفايات يستطيع تحرير الكائنات غير المفيدة، والثاني أن
    له الإمكانية كذلك في
    تحريك الكائنات حول الذاكرة بهدف تنظيم الكومة
    تحقيقا لكفاءة مُحسنة، وهذه العملية تسمى بتكنيز الكومة (Heap compaction)،
    وبديهيا لن يكون هنالك عنوان ثابت للكائنات،
    وعندما يقوم ململم النفايات بعملية التحريك والتنظيم يقوم مكوّن وقت التشغيل (Run time) بتحديث العناوين.

    حسنا نستطيع الآن القول وبكل فخر أن مبرمج C++/CLI يستطيع العمل على نوعين
    من ذاكرة الكومة (Heap) هما ذاكرة الكومة الطبيعية (Native heap) وكذلك
    ذاكرة الكومة المُدارة (Managed heap)! لاحظ كيف تجمع C++/CLI بين قوة C++
    المعيارية والميزات التي تقدمها بيئة العمل دوت نت. بقي أن نقول أن عملية
    الخلط هذه يجب مراعاة عدة أشياء فيها لجعل الكود يؤدي غرضه بكل أمان.

    نظام النوع المشترك (Common Type System) :

    بكل سهولة ودون إطالة نختصر موضوع نظام النوع المشترك بالقول أن لغات
    الدوت نت ومن ضمنها C++/CLI تشترك بنوع بيانات موحد في ما بينها يسمى نظام
    النوع المشترك أوCTS،
    فمثلا النوع int في لغة C++/CLIليس إلا اسما آخر
    للنوع Int32الذي تشترك فيه جميع لغات الدوت نت والذي ينحدر من مجال الأسماء
    System كباقي الأنواع الأخرى
    عفريت السويداء
    عفريت السويداء
    عضو مميز
    عضو مميز


    نقاط : 1157

    حول الغة السي++ Empty Re: حول الغة السي++

    Post by عفريت السويداء Wed Dec 21, 2011 1:15 am

    سيد البرتوكول

    مشكور على هذه المعلومات المفيدة والقيمة

    لك مني أجمل وردة حمراء

    لك تحياتي مع خالص تقديري
    afro afro


      Current date/time is Tue May 14, 2024 12:13 am