• 0
hommeda

لماذا C++/CLI !؟؟

سؤال

السلام عليكم ورحمة الله

لا ادري لماذا قلة هم المهتمين بهذة البيئة التطويرية  في الوطن العربي بالتحديد ؟؟

 

 

الطريق الي C++/CLI بدا منذ زمن بعيد ما يقارب الاربعين عاما بكتابة اول برنامج بلغة السي

CLI ---> Common Lanagauge Infrastructure

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

العبارة الشهيرة  "hello ,world" في هذا الكود هي بداية الطريق الي  برمجه C++/CLI

الكود السابق ليس فقط بلغة السي , بل ايضا هو كود بلغة السي ++ !!! هذا ليس امرا غريبا  لغه السي ++ مولدة (derived) من لغة السي

 

وبالتالي يمكن القول بان لغة ++C اعلي درجة من لغة السي كما انها ترث معظم خصائص لغة السي

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

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

لعلك تلاحظ استخدام عبارة الاخراج في لغة السي وكذلك عبارة الاخراج cout المستخدمة في لغة السي بلص بلص

يمكن اعتبار الكود الاول بلغتي سي وسي بلص يلص اما الكود الثاني فهو بلغة السي بلص بلص ولا يمكن ان ينفذ علي السي

وبنفس الطريقة كانت البرمجة بـ C++/CLI هي امتداد للغة السي بلص يلص

انظر الي الكود التالي :

#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 spacestd::cout << ", ";// use a .NET class to print "world"System::Console::WriteLine("world");}

لطباعة العبارة استخدمنا عبارات الاخراج علي الشاشه السوداء من الثلاثة 

اذا كنت مبرمجا للغة السي او السي بلص بلص فبئة الدوت نت افضل بكثير من المنهجية التقليدية للبرمجة

يمكنك ان  تنتقل الي عالم الدوت نت والحفاظ علي لغتك التي تحبها فاذا قررت يوما الانتقال الي c++/cli فالبتاكيد لن تواجهك المشاكل في استخدامها

تجد ان العديد من المبرمجين يفضلون الابتعاد عن المكتبات الجاهزة ويفضلون كتابة اكوادهم من الصفر . هذا شانهم ولكن علي كل منا اختيار طريقة بنفسة

 

اذا كنت مبرمج بلغة السي او السي بلص بلص فالطريق اسهل ما يكون الي بيئة الدون نت

 

ارجو من كل من يرغب في الدونت نت مراجعة المواضيع التالية علي المنتدي :

 

 

ما هو مفهوم بيئة عمل الـ Net Framework.

وهذا استفاء بالمنتدي ويحوي نقاشات مفيدة :

ماذا لا يوجد اهتمام بلغة C++ CLI، سؤال موجه للأعضاء وخصوصا مبرمجي السي

 

كما ان هناك العديد من المواضيع التي تستحق القراءة بالمنتدي متعلقة الدوت نت عموما ومواضيع اخري بالvc.net التي هي جزء من الدوت نت

وادعو كل من لدية خبرة ولو قليلة المشاركة في اثراء هذا القسم ..

إن شاء الله نواصل >>>>

2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

3 إجابة على هذا السؤال .

  • 0

كل الامثله التى كتبتها عند ترجمتها من خلال C++/CLI سيحدث التالي:

 

فى المثال الأول إذا قمت بجعل ملف كود Compile As C Code فسيتم ترجمته بإستخدام لغة السي و إن كانت Compile As C++ Code فسيتم ترجمته بإستخدم لغة ++c و فى كلا الحالتين الكود الناتج سيكون native و فى الأخير سيكون نمط ++pure c.

 

فى المثال الثاني الكود سيتم ترجمته بإستخدام لغة ++c و الناتج سيكون native code فى نمط ++pure c.

 

فى المثال الثالث انت دمجت ++native c مع C++/CLI و بالتالي الكود الناتج يسمى بـ mixed code و يحتوى على native code و IL code.

 

 

لغة C++/CLI هى إضافات للغة الـ ++C موجهه لبيئة CLI و بالتحديد نسخة مايكروسوفت منها DotNet.

 

الـ C++/CLI تحتوى على العديد من الأضافات التى تخص CLI مثل الـ value class و ref class و الـ generics و الـ properties و events و delegates و غيرهم الكثير، و حيث انك تستطيع إستخدامهم جنبا إلى جنب مع إمكانيات لغة ++c فهذا يجعلها أقوى لغة موجهه لبيئة الدوت نت بلا منازع و لكن هذا يأتى على حساب السهوله فـ C++/CLI أضافة مستوى جديد من التعقيد للغه فمثلا فئات الـ ++C العادية تحتوى على constructor و destructor و الأن مع C++/CLI أضيف لهم Finalizer و إسلوب التسمية فى حد ذاته يجهد الرأس:

ref class MyClass{public:	MyClass() {} // constructor	~MyClass() {} // destructor	!MyClass() {} // finilizer};

لو كان الأمر بغختيارى لفضلت إستخدام #C على C++/CLI و ذلك فقط حتى استطيع تقييد نفسي و الأخرين فى إستخدام أدوات الـ DotNet فقط داخل المشروع و الإستعانة بأدوات خارجيه إن احتجنا لذلك و هذا ما لن يحدث أبدا إذا استخدمنا C++/CLI فهى بحق تحدى (ممتع!!).

 

 

و الله ولي التوفيق

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

تصلح c++/cli إذا كانت لديك مكتبة مكتوبة بـc/c++ وتريد ربطها مثلاً مع c# أو غيرها، يمكنك أن تغلفها باستخدام c++/cli وتستخدمها مباشرة في c#، أعتقد أن هذا سبب وجودها، تسهيل تغيلف الأكواد التي كتبت بـ c/c++، انظر كيف يتم ربط اللغات الأخرى مثلً java و python بـc/c++، عملية متعبة جداً.

 

لا أرى أنها تصلح لأن تكون لغة أساسية فهي أداة لغرض محدد، أستخدم c# أفضل من ناحية الجهد والوقت.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

 

  •  القابلية للقراءة Writeability
  • القابلية للكتابة Readability
  • الاعتمادية
  • التكلفة

وعندما تحدثت عن تلك الاكواد لم يكن الغرض منها الا توضيح بساطة كتابة الاكواد في c++/cli لمبرمجي السي والسي بلص بلص وانها لا تختلف عنها كثير

فمن الممكن انتاج برنامج كامل من استخدام اكواد C او C++ فقط وانت تعمل علي منصة الدوت نت الخاصة بـ c++/cli ] استخدام خصائصها المعقدة

نعلم جيدا انة من اهم الخصائص التي يتم بها الحكم علي الـWriteability و Readability سهولة فهم قراءة وكتابة البرامج المكتوبة بتلك اللغة وفي هذا اتفق معك
صعبة نوعا ما ولكن كما ذكرت انت -تحدي -.

اما الاضافات اليها فهي بصورة كبيرة تدعم مبدأ التجريد (من المنتِج) الذي بدأت تتجه الية معظم لغات البرمجة بصورة عامة مثلا الـevent يجعلك تجهل الكثير

فقط تهتم بالجزء الذي تريد .

ايضا تعدد الخصائص يضعف من الـWriteability و Readability ولكن يمكن التغلب عليها بالتخصص في جزئية محددة نكون فيها محترف ...

مازال الحديث طويل ولكن هذا بصورة مبسطة وحاولت ان اختصر بقدر الامكان .

اما عمليات اختلاف الـcomplier  فيمكن التغلب عليها بمزيد من الخبرة في البيئة ...

استخدام السي شارب رائع جدا فيمكنك التمتع بكل خصائص .NET Framework class libraries لكن ربما يكون عليك ان تنظر لـ c++ بعيد ..

اكرر تقديري فقد اضفت الكثير يا عزيزي..

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .