سي شارب: الفرق بين النسختين

[مراجعة غير مفحوصة][مراجعة غير مفحوصة]
تم حذف المحتوى تمت إضافة المحتوى
JarBot (نقاش | مساهمات)
ط بوت:إزالة تشكيل وصلة
سطر 26:
'''سي#''' {{إنج|#C}} (تلفظ سي شارب) هي [[لغة برمجة]] [[نمط برمجة#اللغات متعددة أنماط البرمجة|متعددة الأنماط]] تتمتع بكونها [[تنميط سكوني|سكونية التنميط]] و[[برمجة أمرية|أمرية]] و[[برمجة تعريفية|تعريفية]] و[[برمجة وظيفية|وظيفية]] و[[برمجة إجرائية|إجرائية]] و[[برمجة عمومية|عمومية]] و[[شيئية المنحى|شيئية المنحى (غرضية التوجه)]] (باستخدام [[صنف (علوم الحاسب)|الصفوف]]) كما تخضع لمبادئ [[برمجة تركيبية المنحى|البرمجة التركيبية المنحى]].
 
قامت [[مايكروسوفت]] بتطوير هذه اللغة في إطار عملها على تطوير [[إطار عمل دوت نت|دوت نِتنت]] وتمت الموافقة على تعييرها من منظمة Ecma (المعيار Ecma-334) و[[المنظمة الدولية للمعايير]] (المعيار ISO/IEC 23270:2006). إن سي# إحدى لغات البرمجة المصممة للعمل على [[سي إل أي|البنية التحتية المشتركة للغات البرمجة (CLI)]]. صُممت لغة سي# لتكون لغة بسيطة وحديثة وعامة الأغراض و[[شيئية المنحى]]<ref name="ECMA-334">{{مرجع كتاب
|مسار= http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-334.pdf
|العنوان= توصيف لغة #C (بالإنجليزية)
سطر 209:
* استنباط نمط الباني
* [[مراحل إصدار البرمجيات#المرحلة بيتا|مرحلة تقييم المجتمع للتكنولوجيا]] (أيلول 2012)
* [[نحو (لغات برمجة)|نحوٌنحو]] موجز للبواني الرئيسية
* صفات قابلة للقراءة فقط
* استخدام التعابير كصفات (صفات لامبدا)
سطر 234:
 
=== المزايا الفارقة ===
تتفرد لغة سي# عن غيرها من [[لغات برمجة]] [[إطار عمل دوت نت]] في كونها مرتبطة بشكل وثيق بمزايا البنية التحتية المشتركة للغات البرمجة (CLI)، فعلى سبيل المثال تنسب معظم الأنماط الحقيقية إلى قرائنها من أنماط القيمة {{إنج|value-types}} الموجودة في CLI. على الرغم من ذلك فإن توصيف اللغة لا يتطرق إلى متطلبات توليد الكود الخاصة [[مصرف (برمجة)|بالمصرّفبالمصرف]]، بمعنى أن التوصيف لا يرغم مصرف سي# على توليد كود متوافق مع [[وقت التنفيذ المشترك للغات]] (CLR) أو توليد تعليمات متوافقة مع اللغة المشتركة الوسيطة {{إنج|Common Intermediate Language}} أو أي تنسيق آخر. وهكذا يمكّن (نظرياً على الأقل) مصرّف سي# من توليد كود [[لغة الآلة]] مباشرة على غرار باقي المصرفات كمصرّف [[سي++]] ومصرّف [[فورتران]]. فيما يلي بعض من المزايا الجديرة بالاهتمام كونها تميز لغة سي# عن لغتي [[سي (لغة برمجة)|سي]] و[[سي++]] (بالإضافة إلى [[جافا (لغة برمجة)|جافا]] لدى ذكر ذلك صراحة):
* تدعم سي# التصريح الضمني عن المتحولات قوية التنميط عن طريق [[كلمة مفتاحية|الكلمة المفتاحية]] {{كود|var}} بالإضافة إلى التصريح الضمني عن المصفوفات المنمطة عن طريق الكلمة المفتاحية متبوعة بمهيئ المجموعة.
* إن إمكانية الميتا-برمجة {{إنج|Meta Programming}} من خلال استخدام السمات {{إنج|Attributes}} هي جزءً من توصيف اللغة. توفر العديد من هذه السمات وظيفية مطابقة لتلك التي توفرها موجهات قبل التصريف المعتمدة على المنصة المدعومة من قبل [[جي.سي.سي]] و[[مايكروسوفت فيجوال سي++|فيجوال سي++]].
سطر 266:
# أنماط المرجع
# أنماط القيمة
تتصف الكائنات من نمط القيمة بأنها لا تملك ''محدداً مرجعياً'' ولا تمتلك خصائص المقارنة المرجعية - فمعاملات المساواة وانعدام المساواة بين أنماط القيمة تقوم بمقارنة القيمة الحقيقية للبيانات الموجودة ضمن الكائنات ما لم تكن معاملات المقارنة هذه محملةً بشكل زائد. تُشتق أنماط القيمة من النمط {{كود|System.ValueType}} ولديها دائماً قيمة افتراضية كما يمكن إنشاؤها ونسخها في أي وقت. من أهم القيود المفروضة على أنماط القيمة هو عدم المقدرة على الاشتقاق من بعضها البعض (إلا أنها تستطيع تحقيق الواجهات) كما أنها لا يمكن أن تحوي [[دالة البناء (برمجة كائنية التوجه)|بانياًبانيا]] افتراضياً (بدون بارامترات). إن الأنماط البسيطة مثل النمط {{كود|int}} (عدد صحيح ذو إشارة بطول 32 بتاً) والنمط {{كود|float}}(عدد فاصلة عائمة بطول 32 بت معرف من [[جمعية مهندسي الكهرباء والإلكترونيات|آي تربل إي]]) والنمط {{كود|char}} (وحدة كود من نظام [[يونيكود]] بطول 16 بت) والنمط {{كود|System.DateTime}} (يعرف لحظة زمنية ما بدقة [[نانوثانية]]) هي أمثلة على أنماط القيمة. كذلك النمط {{كود|enum}} (نمط تعدادي) والنمط {{كود|struct}} (بنى معرفة من قبل المستخدم).
 
بمقابل ذلك تمتلك أنماط المرجع مفهوم المحدد المرجعي - أي أن كل كائن من النمط المرجعي يمتلك محدداً متميزاً عن محددات بقية الكائنات حتى وإن كان البيانات الموجودة ضمن كائنين هي ذاتها. ينعكس هذا المفهوم على عمليات مساواة أو عدم مساواة أنماط المرجع حيث تقوم باختبار المساواة المرجعية ولا تختبر مساواة القيم بينها إلا في حال تحميل المعاملات المقابلة بشكل زائد (كما هو الحال بالنسبة للنمط {{كود|System.String}}. بشكل عام لا يمكن إنشاء كائنات من النمط المرجعي ولا نسخ كائن موجود ولا إجراء مقارنات بين قيم كائنين مرجعيين، على الرغم من ذلك توفر بين أنماط المرجع خدمات كهذه عبر التصريح عن بانٍ عام أو عبر تحقيق الواجهة الموافقة (مثل {{كود|ICloneable}} و{{كود|IComparable}}). بعض الأمثلة على أنماط المرجع النمط {{كود|Object}} (الصف الأساسي الذي تشتق منه كافة الصفوف الأخرى) والنمط {{كود|System.String}} (سلسلة محرفية من النمط [[يونيكود]]) والنمط {{كود|System.Array}} (الصف الأساسي الذي تشتق منه كافة المصفوفات).
سطر 311:
 
== مثال "أهلاً بالعالم" ==
فيما يلي برنامج بسيط بلغة سي#، وهو إصدار من برنامج [[برنامج أهلا بالعالم|أهلاًأهلا بالعالم]] التقليدي:
 
<syntaxhighlight lang=CSharp>