معهد الصحافه
b]ازيك يابشمهندس (ه)عامل (ه) ايه هتفضل تلف كتير كده يلا ادخل سجل معانا[/b]
لمعرفه النتيجه تابع الموقع ده
http://www.mohe-edus.edu.eg/default.aspx
اداره المنتدى
معهد الصحافه
b]ازيك يابشمهندس (ه)عامل (ه) ايه هتفضل تلف كتير كده يلا ادخل سجل معانا[/b]
لمعرفه النتيجه تابع الموقع ده
http://www.mohe-edus.edu.eg/default.aspx
اداره المنتدى
معهد الصحافه
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.


 
الرئيسيةالبوابةأحدث الصورالتسجيلدخول

 

 سي بلس بلس المسقبل إلى أين ؟

اذهب الى الأسفل 
كاتب الموضوعرسالة
medo
المدير العام
المدير العام
medo


ذكر
تاريخ الميلاد : 05/01/1990
تاريخ التسجيل : 15/01/2008
الموقع https://s7afa.ahlamontada.com

سي بلس بلس المسقبل إلى أين ؟ Empty
مُساهمةموضوع: سي بلس بلس المسقبل إلى أين ؟   سي بلس بلس المسقبل إلى أين ؟ I_icon_minitimeالسبت أبريل 05, 2008 5:05 pm

سي بلس بلس المسقبل إلى أين ؟ Moz-screenshotسي بلس بلس المسقبل إلى أين ؟ Moz-screenshot-1سي بلس بلس المسقبل إلى أين ؟

كلنا
يعرف الدوت نت , وأغلب المطورين يعرفون Visual Studio .NET , وكثير منا
سمع عن آخر تحديث للسلسة مصرفات الدوت نت بصدور Visual Studio 2005 نسخة
البيتا 1 في شهر July السابق .

حصة ال VB.NET وحصة ال C#.NET كبيرة في عائلة الدوت نت , لكن لم يكن الحال كذلك بالنسبة للسي++ حتى VS2005.NET الأخير .
فلنتحدث
عن الماضي القريب, المشكلة هي أن مايكروسوفت لم تكن تعرف ماذا تفعل عندما
أصدرت ال MC++ اختصارا ل Manged ++c , وهي أول Visual c++.NET تصدر ,
وصدرت مع مصرف ال Visual Stdio.NET الأول عام 2001 .

وبعدها بدأ الهرج والمرج , وبدأت اصوات الاحتجاج تعلو شيئا فشيئا بسبب تهميش ال C++ جزئيا بين لغات الدوت نت الجديدة ,,


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

المهم في الموضوع أن ماحدث يعود لواحد من سببين :
الأول أن مايكروسوفت لم تكن تعرف ماذا تفعل حقا .

الثاني
أن تكون لعبة لافساح المجال أمام السي# لتنضج أكثر , ولكي تتضح معالم
الدوت نت أكثر , والتأكيد على أنها بيئة تطوير سريعة ومثوقة ومنافسة بشدة
لل J2ME والجافا , وأن السي# هي البديل الأفضل لأهل الجافا ولمستقبل تطوير
البرامج المكتبية والموزعة .
وبعد ماتصدرت السي# قائمة لغات التطوير بدأت مايكروسوفت تصرح عن اللغة القادمة ++/CLI لتضع النقاط على الحروف لمستقبل الدوت نت ,,

كتابة
برامج قواعد بيانات وأنظمة ويندوز مكتبية للمؤسسات أو غيرها وكتابة كود لل
ASP.NET وال Web Services بال VB.NET والسي# مناسب جدا .

و
كتابة أكواد تحتاج للسرعة ويمكن أن تفعل بها كل شيء , حتى كتابة كود لصفحة
انترنت ASP.NET و Web Services اتجاها الى كتابة ألعاب كاملة 3D بال
Manged DirectX ,, وكتابة برامج لل 64 بت أو حتى أنظمة ال simulation اذا
أردت , طبعا بحرية الوصول لدوال ال Win32 API كلها وحتى التي تتوقع تمرير
متغيرات من النوع ** أو غيره "والتي لايمكن فعلها بالسي# أوغيرها " الا
بواجهة تسيير بكتابة كلاس بواسطة ال C++/CLI "وهي طريقة سريعة ومباشرة" أو
بكتابة دالة لملف dll بالسي++ الصرفة .

هذا جزء من الموضوع باختصار ,, ودعونا من الكلام النظري , ولنرى عن كثب ماحل بالسي++ :
كود بسيط ل Hello World بال C++/CLI ,,
<# CODE

using namespace System;
int main()
{
Console::WriteLine("Hello World");
return 0;
}
الكود
قريب جدا من السي++ العادية , لكن تمت اضافة أوامر جديد كليا ودوال وفئات
لمنصة الدوت نت للتعامل مع كل شيء تقريبا في الوندوز .
مثلا الدالة
WriteLine الموجودة داخل الفئة التي اسمها Console بطريقة منطقية تطبع
سطرا في الكونسول , وطريقة استخدامها مباشرة جدا , فقط مرر السلسلة وستتم
طباعتها بشكل مباشر .

لاحظ في الأعلى
using namespace System , وبنفس المفهوم في السي++ العادية وقد كنا نستخدم
هذا التعبير في السي++ العادي اذا أردنا أن ننظر داخل تجمع namespace معين
, وأن نستدعي الفئات والدوال الموجودة داخله بشكل مباشر , دون كتابة
البادئة ::System كل مرة اختصار للمجهود .

خذ عندك الكود التالي لبرنامج يطبع Hello World أيضا لكن بنفس طريقة السي++ العادية .
<# CODE

#include
using namespace std;
int main()
{
cout << "Hello World";
return 0;
لاحظ
أننا استخدمنا المكتبة القياسية iostream عوضا عن iostream.h , السبب أن
iostream.h غير موجودة بكل بساطة , وال iostream القياسية تقدم دخل وخرج
أفضل من الذي في ال iostream.h .
طبعا يجب استخدام ال namespace std لنستطيع استدعاء مافي ال iostream .

لكن
لاينبغي استعمال دخل خرج ال سي++ كال cout وال cin , لأنه توجد أنواع
جديدة في الدوت نت لاتستطيع التعامل معها , خذ عندك كمثال ال Object وال
Array .

الان فالندخل قليلا ولنرى ماحدث فعلا , خذ الكود طويل قليلا لكن تأمل فيه ستعرف بعض الأمور التي استجدت :
<# CODE


// This is the main project file for VC++ application project
// generated using an Application Wizard.
#include "stdafx.h"
#include
using namespace std;
using namespace System;

class Native
{
protected:
int Q;
static const int h=0;
public:
Native():Q(10){}
void Print(int *z)
{
Q=*z;
Console::WriteLine(Q);
}
};
class Derive_Native : public Native
{
public:
Derive_Native():Native(){}
};
/////////////////////////////////////////////////////////////

ref class REF_CLASS
{
private:
int* R;
int ^ Z;
public:
REF_CLASS()
{
R = new int;
Z = gcnew int;
*R=*Z=10;

Console::WriteLine("Constructor Of GC HEAP Begines !");
}

//Despose() Function .. In IDisposable Interface
//!REF_CLASS(){} <---ERROR Now .. But Will be Include in next Updates
//Finalizer Not Constructor ...
//There Is no Constructor in "ref class" Type
~REF_CLASS()
{
Console::WriteLine("Tremenate Object");
}
};
value class VALUE_CLASS
{
private:
int Q;
public:
//VALUE_CLASS(){} <-- ERROR ! Still Dont Know Whay !
};
int main()
{
// TODO: Please replace the sample code below with your own.
Console::WriteLine(L"Hello World");

REF_CLASS ^ ref_ = gcnew REF_CLASS;
//REF_CLASS % ref; <-- ERROR
Native * _native = new Native;
Native native;
Derive_Native d_native;
Derive_Native *_d_Native = new Derive_Native;
VALUE_CLASS ^ value_ = gcnew VALUE_CLASS;
VALUE_CLASS * _value = new VALUE_CLASS;
VALUE_CLASS %value =*_value;
VALUE_CLASS %value__ =*value_;
VALUE_CLASS &_value_ =*_value;

//Native ^ native= gcnew Native; <--- ERROR
//REF_CLASS * f; <--- ERROR
//REF_CLASS f; <--- ERROR
//int q;
//cout << q; <--- OK
//cout << ref; <--- ERROR
//Console::WriteLine(ref_); <--- OK

//Stop Screen
Console::ReadKey();
//return 0;
}
من الكود أعلاه ستجد بعض الرموز الجديدة التي أضيفت للغة وبشكل سريع :
1)
السي++ القديمة كودها سيعمل بدون أي مشاكل مع كود ال C++/CLI بشرط تشغيل
مفتاح التصريف أو ال Option وهو clr/ , وهو يخبر المصرف بأن الكود الموجود
مخلوط بين كود native وكود CLR .
2) إضافات جديدة على السي++ وهي بمواصفات CLI .
3)
أنواع فئات جديدة بالبدائة ref أو البادئة value , والأولى من النوع
المرجعي والثانية من النوع القيمي وهي بنفس مفهوم الأنواع القيمية
والمرجعية في C# .
4) رموز جديدة لتسهيل فهم الكود وللتعامل المرن مع الذاكرة المدارة في CLR وهي كما في المثالين :
<# CODE


VALUE_CLASS ^ value_ = gcnew VALUE_CLASS;


وأيضا :
<# CODE


VALUE_CLASS %value =*_value;
5) مفاتيح تصريف متعددة وهي :
clr/ : وتستخدم لتصريف كود مخلوط mixed بين ال Native Code و Manged Code .
clr:pure/
: وتستخدم في حال كان الكود كاملا كود مدار في CLR وميزتها أنها تسرع
تنفيذ الكود نظرا لأن صورة الملف التنفيذي الناتجة ستحوي فقط معلومات MSIL
وهي MSIL instructions .
clr:oldsyntax :وتستخدم لتشغيل وتصريف كود
MC++ وهي كما قلنا السي++ التي صدرت مع بداية ظهور VS.NET من 2001 وحتى
مصرف VS2003 , لكنها إستبدلت نهائيا بمواصفات C++/CLI , وللتوافقية في
تطوير التطبيقات أتيحت الفرصة لتشغيل أكواد MC++ .
الرجوع الى أعلى الصفحة اذهب الى الأسفل
 
سي بلس بلس المسقبل إلى أين ؟
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
معهد الصحافه :: الكليه التكنولوجيه بالصحافه :: شعبه تك معلومات :: البرمجه وقواعد البيانات-
انتقل الى: