C#: مقدمة إلى لغة C#
إذا سبق لك أن لعبت بمكعبات البناء، فأنت تفهم بالفعل جوهر البرمجة — وهو دمج القطع البسيطة لتشكيل هياكل معقدة. ولغة C# هي بالضبط هذا النوع من «مكعبات البناء»: فهي تتميز ببناء جمل برمجية واضح، وتتمتع بأمان الأنواع، وقوة الأداء، مما يتيح لك إنشاء تطبيقات ذات مستوى احترافي منذ السطر الأول من الكود.
1. ما هو لغة البرمجة C#؟
C# (تُنطق «سي شارب») هي لغة برمجة موجهة للكائنات طورتها شركة مايكروسوفت في عام 2000، بقيادة المصمم الرئيسي أندرس هيلسبيرغ، وتم إصدارها رسميًا في عام 2002. يُشير الحرف # في اسمها إلى ترتيب أربعة أحرف +، مما يوحي بأنها تتقدم بخطوة واحدة عن لغتي C/C++.
تعمل لغة C# على منصة .NET، حيث يتم ترجمتها وتنفيذها بواسطة CLR (بيئة تشغيل اللغة المشتركة)، مع دعم غني لواجهة برمجة التطبيقات (API) من FCL (مكتبة فئات الإطار). وببساطة:
| المكون | الدور | التشبيه |
|---|---|---|
| لغة C# | قواعد بناء الجمل في كتابة الكود | دليل قيادة السيارة |
| CLR | يقوم بتجميع البرامج وتشغيلها | محرك السيارة |
| FCL | يوفر وظائف جاهزة | مستودع قطع غيار السيارات |
| .NET SDK | مجموعة أدوات التطوير | مصنع السيارات بأكمله |
2. لماذا نتعلم لغة C#
- ارتفاع الطلب في السوق: تحتل لغة C# مكانًا ثابتًا ضمن أفضل 10 لغات برمجة، وتتمتع بمكانة مهيمنة بشكل خاص في مجال تطوير تطبيقات الشركات وتطوير الألعاب
- بناء جمل أنيق: تحافظ لغة C# على مستوى عالٍ من أمان الأنواع، مع إدخال عناصر إضافية موجزة في بناء الجمل بشكل مستمر، مما يجعل الكود سهل القراءة للغاية
- متعدد المنصات: عملت إصدارات .NET 5 وما بعدها على توحيد منصات Windows وLinux وmacOS
- منظومة ناضجة: يُعتبر Visual Studio على نطاق واسع أحد أقوى بيئات التطوير المتكاملة (IDE)، كما يوفر NuGet مئات الآلاف من المكتبات التابعة لجهات خارجية
- مناسب للمبتدئين: يساعد نظام الكتابة القوية بالإضافة إلى تلميحات المُجمِّع الشاملة المبتدئين على تقليل الأخطاء والتأقلم بسرعة
- مسارات مهنية متنوعة: من تطوير الألعاب إلى تطبيقات المؤسسات، ومن الويب إلى الأجهزة المحمولة — لغة واحدة تغطي العديد من المجالات
3. ما يمكن أن تفعله لغة C#
| المجال | المجموعة التقنية | الوصف |
|---|---|---|
| تطوير الألعاب | Unity + C# | يُعد Unity محرك الألعاب الأكثر شهرةً في العالم، ويستخدم لغة البرمجة C# كلغة برمجة |
| تطبيقات الويب | ASP.NET Core | واجهات برمجة تطبيقات الويب عالية الأداء ومواقع الويب التي تعمل بنظام MVC |
| تطبيقات المؤسسات | .NET + EF Core | أنظمة الأعمال الكبيرة مثل ERP و CRM |
| تطبيقات الجوال | .NET MAUI / Xamarin | قاعدة كود واحدة تعمل على كل من أندرويد وiOS |
| تطبيقات سطح المكتب | WPF / WinForms | برامج سطح المكتب الأصلية لنظام ويندوز |
| الخدمات السحابية | Azure + C# | اللغة المفضلة في منظومة مايكروسوفت السحابية |
| إنترنت الأشياء (IoT) والأنظمة المدمجة | .NET nanoFramework | تشغيل لغة C# على الميكروكونترولرات |
| التعلم الآلي | ML.NET | إطار عمل التعلم الآلي الأصلي لـ .NET |
4. الميزات الرئيسية للغة C#
(1) أمان الأنواع
لغة C# هي لغة ذات أنواع محددة بشكل صارم. يقوم المُترجم بالتحقق من تطابق الأنواع قبل تشغيل البرنامج، مما يمنع حدوث فئة كبيرة من أخطاء وقت التشغيل.
▶ مثال
int age = 25;
string name = "C#";
age = name;
يؤدي هذا إلى ظهور خطأ في وقت التحويل البرمجي — لا يمكن تعيين قيمة string إلى متغير int:
error CS0029: Cannot implicitly convert type 'string' to 'int'
(2) البرمجة الموجهة للكائنات
لقد كانت لغة C# موجهة للكائنات منذ بدايتها، حيث تدعم الركائز الثلاث الأساسية المتمثلة في التغليف، والوراثة، والتعدد الشكلي. فكل شيء هو كائن.
▶ مثال
class Animal
{
public string Name { get; set; }
public virtual void Speak() => Console.WriteLine($"{Name} makes a sound");
}
class Dog : Animal
{
public override void Speak() => Console.WriteLine($"{Name} says: Woof!");
}
var dog = new Dog { Name = "Buddy" };
dog.Speak();
Buddy says: Woof!
(3) متعدد المنصات
لقد وحدت منصة .NET 5+ بين الإصدار القديم من .NET Framework (لنظام Windows فقط) و.NET Core (متعدد المنصات). وأصبح الآن من الممكن تشغيل قاعدة برمجية واحدة على أنظمة Windows وLinux وmacOS.
(4) تطور قواعد اللغة الحديثة
تصدر لغة C# إصدارًا رئيسيًّا كل عامين تقريبًا، وتستمر في تبني ميزات لغوية حديثة مثل البرمجة الوظيفية، ومطابقة الأنماط، والبرمجة غير المتزامنة، وذلك للحفاظ على حيوية اللغة.
5. نبذة تاريخية عن لغة C#
| الإصدار | سنة الإصدار | الميزات الرئيسية |
|---|---|---|
| C# 1.0 | 2002 | مبادئ البرمجة الكائنية الأساسية، الفئات، الواجهات، المندوبون |
| C# 2.0 | 2005 | الأنواع العامة، والأساليب المجهولة، والأنواع القابلة للقيمة «null» |
| C# 3.0 | 2007 | LINQ، تعبيرات لامدا، طرق التمديد، الخصائص التلقائية |
| C# 4.0 | 2010 | الربط الديناميكي، المعلمات المسماة، التباين/التباين العكسي |
| C# 5.0 | 2012 | البرمجة غير المتزامنة باستخدام async/await |
| C# 6.0 | 2015 | الاستيفاء السلسلي، عامل الشرط القيم «null»، مرشحات الاستثناءات |
| C# 7.0 | 2017 | مطابقة الأنماط، المجموعات، الدوال المحلية |
| C# 8.0 | 2019 | أنواع المراجع القابلة للقيمة الفارغة، تدفقات غير متزامنة، طرق الواجهة الافتراضية |
| C# 9.0 | 2020 | أنواع السجلات، العبارات ذات المستوى الأعلى، واصلات الوصول init |
| C# 10.0 | 2021 | استخدام «using» عالمي، مساحات الأسماء المحددة بنطاق الملف، إدراج السلاسل الثابتة |
| C# 11.0 | 2022 | القيم الثابتة للسلاسل الأولية، وأنماط القوائم، والمُعدِّل الإلزامي |
| C# 12.0 | 2023 | منشئات أولية، تعبيرات المجموعات، المصفوفات المضمنة |
6. تطور منظومة .NET
| الحقبة | الاسم | الوصف |
|---|---|---|
| 2002—2019 | .NET Framework | نظام التشغيل Windows فقط، حتى الإصدار 4.8، لم تُضاف أي ميزات جديدة |
| 2016—2019 | .NET Core | إعادة كتابة البرنامج ليتوافق مع منصات متعددة، من الإصدار 1.0 إلى 2.0 إلى 3.1 |
| 2020 | .NET 5 | دمج .NET Core و Mono، مع تخطي الإصدار 4 لتجنب الالتباس |
| 2021 | .NET 6 | أول إصدار موحد يدعم الدعم طويل الأمد (LTS) |
| 2022 | .NET 7 | إصدار STS (الدعم القياسي المحدود المدة) |
| 2023 | .NET 8 | الإصدار الثاني من الإصدارات طويلة الأمد (LTS)، موصى به للاستخدام في بيئات الإنتاج |
| 2024 | .NET 9 | أحدث إصدار من STS |
7. لغة C# مقارنةً باللغات الأخرى
| ميزة | C# | Java | C++ | Python |
|---|---|---|---|---|
| نظام الأنواع | أنواع محددة بدقة، مع استدلال الأنواع | أنواع محددة بدقة، أكثر تفصيلاً | أنواع محددة بدقة، أكثر تعقيدًا | أنواع ديناميكية |
| التنفيذ | مُجمَّع بواسطة JIT | مُجمَّع بواسطة JIT | مُجمَّع أصليًّا | مُفسَّر |
| الأداء | مرتفع | مرتفع | الأعلى | أقل |
| تطور الصيغة | سريع (إصدار جديد كل سنتين) | بطيء (إصدار جديد كل 3–4 سنوات) | مستقر | معتدل |
| متعدد المنصات | .NET 5+ | JVM | يتطلب إعادة التجميع | دعم أصلي |
| تطوير الألعاب | الخيار الأول في Unity | LibGDX، وغيرها | الخيار الأول في Unreal | البرمجة النصية/الأدوات المساعدة |
| إدارة الذاكرة | التجميع التلقائي | التجميع التلقائي | يدوي | التجميع التلقائي |
| صعوبة التعلم | متوسطة | متوسطة | عالية | منخفضة |
8. برنامجك الأول بلغة C#
▶ مثال
باستخدام العبارات ذات المستوى الأعلى التي أُضيفت في C# 9.0، لن تحتاج سوى إلى سطر واحد:
System.Console.WriteLine("Hello, World!");
Hello, World!
▶ مثال
النهج التقليدي الذي يستخدم نقطة دخول الأسلوب Main (النمط القياسي قبل الإصدار C# 9.0):
using System;
namespace HelloWorld
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
}
}
}
Hello, World!
9. كيفية إتقان لغة C#
- التدريب العملي: لكل نقطة نحوية تتعلمها، اكتب على الفور شفرة برمجية للتحقق منها — لا تكتفِ بالقراءة دون ممارسة
- فهم بيئة تشغيل .NET: تعرف على كيفية قيام CLR بترجمة الشفرة وتنفيذها لمساعدتك في كتابة برامج أكثر كفاءة
- الاستفادة من Visual Studio: تساهم ميزة IntelliSense، وتصحيح الأخطاء باستخدام نقاط التوقف، وأدوات تحليل الأداء في جعل عملية التطوير أكثر إنتاجية بكثير
- اقرأ الوثائق الرسمية: Microsoft Learn هو المرجع الأكثر موثوقية
- التعلم خطوة بخطوة: قواعد اللغة الأساسية ← البرمجة الموجهة للكائنات ← LINQ ← البرمجة غير المتزامنة ← مشاريع واقعية
❓ أسئلة شائعة
📖 ملخص
- تم تصميم لغة C# على يد أندرس هيلسبيرغ من شركة مايكروسوفت، وأُطلقت في عام 2002، وتعمل على منصة .NET
- تتمتع لغة C# بمجالات تطبيق واسعة: الألعاب (Unity)، الويب (ASP.NET Core)، تطبيقات سطح المكتب (WPF)، الأجهزة المحمولة (MAUI)، السحابة (Azure)
- الميزات الأساسية: أمان الأنواع، والتوجه الكائني، والتوافق مع مختلف الأنظمة الأساسية، وبناء جمل يتطور باستمرار
- تطورت منظومة .NET من .NET Framework إلى .NET 8 LTS / .NET 9، محققةً بذلك التوحيد عبر الأنظمة الأساسية المختلفة
- لغة C# تتطور بوتيرة أسرع من لغة Java، وهي أكثر أمانًا من لغة C++، وتتميز بأداء أقوى ونظام كتابة أكثر صرامة من لغة Python
- يجب أن تستخدم المشاريع الجديدة تعليلات المستوى الأعلى + .NET 8 LTS
📝 تمارين
- قم بتثبيت حزمة أدوات تطوير البرامج (.NET SDK)، ثم قم بتشغيل الأمر
dotnet new console -n MyFirstAppفي نافذة الأوامر، بعد ذلك استخدم الأوامر من المستوى الأعلى لعرض اسمك وتقديم نبذة موجزة عن نفسك - أعد كتابة العبارات ذات المستوى الأعلى من التمرين 1 وفقًا للأسلوب التقليدي
Program.Main، وقارن بين الطريقتين - ابحث عن ماهية LINQ (التي أُدرجت في C# 3.0)، ولخص الغرض منها في جملة واحدة