مفهوم – السؤال: ما الفرق بين لغات البرمجة سي بلس بلس c++ وسي شارب c# وسي c؟
الجواب: سي بلس بلس c++ وسي شارب c# وسي c ثلاث لغات برمجة يتشابهون في الاسم والعامل المشترك بينهم حرف الـ c فما الإختلاف بين اللغات البرمجية الثلاثة وهل هناك ثمة علاقة بينهم.
اللغات الثلاثة تتشابه إلى حدا ما في طريقة كتابتها إلا أن كل لغة منفصلة عن الأخرى وتتشابه فقط في صياغة الكتابة وبعض هذه اللغات تعتبر متطورة عن اللغات الأخرى مثلا سي بلس بلس وسي شارب يتميزان بالبرمجة الكائنية الموجة (OOP).
نستعرض فيما يلي أهم الإختلافات بين اللغات الثلاث ثم نتحدث عن كل لغة على حد:
اختلافات رئيسية بين C وC++
تم إنشاء C++ كامتداد لـ C، مما يعني أنه يمكن لـ C++ تشغيل معظم كود C ولكن العكس ليس صحيحًا، إذ لا يمكن لـ C تشغيل شفرة C++.
باعتبارها لغة كائنية التوجّه، تدعم C++ بعض الوظائف غير الموجودة في C، مثل تعدّد الأشكال (polymorphism)، والتغليف (encapsulation).
في C، تكون البيانات، والمهام “كيانات حرّة”، مما يعني أنه يمكن معالجتها أو التلاعب بها برمزٍ (شيفرة) خارجيٍّ.
بما أن C++ تغلف البيانات والوظائف (المهام) معًا في “كائنٍ” واحدٍ، فإن هياكل البيانات ومشغلاتها تكون مخفيةً بالنسبة للرمز (الشيفرة) الخارجي.
تستخدم C وظائف (مهام) للإدخال والإخراج، بينما تستخدم C++ كائنات للإدخال والإخراج.
C++ تدعم المتغيرات المرجعية التي لا تدعمها C “المتغير المرجعي هو اسمٌ مستعارٌ لمتغيرٍ موجودٍ بالفعل، يستخدم لإنشاء تعليماتٍ مختزلةٍ، من أجل كتابةٍ أسرع.
لا تقدم C معالجةً للخطأ أو الاستثناء، ولكن C++ تقوم بذلك.
اختلافات رئيسية بين C++ و C#
باعتبارها لغة برمجة أكثر حداثة، تم تصميم C# للعمل مع إطار Microsoft .NET الحالي في كل من تطبيقات العميل والويب.
بينما تُعتَبَر C++ لغة كائنيّة التوجّه، C# تعتبر لغة برمجة موجهة “للمكونات” بمعنى (component-oriented).
البرمجة الموجهة للمكونات هي تقنيةٌ لتطوير تطبيقات البرمجيات من خلال الجمع بين المكونات الموجودة مسبقًا مع المكوّنات الجديدة، بنفس الطريقة التي يتم بها تصنيع السيارات من المكونات الأخرى.
فيما يلي بعض الاختلافات الرئيسية الأخرى بين C++ وC#:
تتطلب C++ منك معالجة الذاكرة يدويًا، ولكن C# تتيح التعامل مع إدارة الذاكرة تلقائيًا.
اقرأ ايضًا:
لا تستخدم C# مؤشرات، بينما يمكن لـ C++ استخدام المؤشرات في أي مكان.
يمكن استخدام C++ على أي نظام أساسي، على الرغم من أنه تم تصميمه في الأصل للأنظمة المستندة إلى نظام . C# نادرًا ما تُستَخدَم خارج بيئات Windows.
يمكن لـ C++ إنشاء تطبيقاتٍ وحدة التحكم، وتطبيقاتٍ مستقلةٍ (قائمة بذاتها).
يمكن لـ C# إنشاء وحدة تحكم، وتطبيقات Windows، و ASP.NET، وتطبيقات هواتف محمولة، ولكن لا يمكنها إنشاء تطبيقاتٍ مستقلةٍ (قائمة بذاتها).2
في حين أن C وC# ترتبطان تقنيًا ببعضهما البعض، إلّا أنهما مختلفتان بشكلٍ كبيرٍ، لذا هناك اختلافاتٌ أكثر من أوجه التشابه بينهما.
امتلاك خلفية مع C يمكن أن يكون مفيدًا لتعلم C# لأن بعض البُنى المتقابلة متشابهة؛ ومع ذلك، فإنّ تراكيب C# أسهل، بحيث يمكنك التعرّف عليها دون معرفة C على الإطلاق.
لغة C
تُعَد لغة C الأقدم والأكثر استخدامًا من بين الثلاثة اخترعها دينيس ريتشي في عام 1972 ثم نُشرَت في عام 1978، لتطوير نسخة جديدة من Unix؛ إذ استخدم نظام التشغيل Unix لغة التجميع، وهو أدنى مستوى من البرمجة يمكن قراءته بواسطة الكمبيوتر.
اختراع C شكّل ثورةً في البرمجة وأنظمة التشغيل إلى الأبد.
تستخدم لغة C على نطاقٍ واسع لأنها تعمل بسرعةٍ كبيرةٍ. وبالمقارنة مع بعض اللغات الأخرى، فإنّ لغة C أقرب إلى العتاد المادّي للحاسوب (Hardware)، إذ يمكنها الوصول إلى مهام المستويات الدنيا لنظام الكمبيوتر.
لا يزال المبرمجون يستخدمونها في أنظمة التشغيل، وبرامج تشغيل الأجهزة (العتاد)، وتطبيقات الاتصالات، والتطبيقات التي تحتاج إلى التعامل مع التعليمات البرمجية القديمة، وسيرى معظم مبرمجي المدارس القديمة أن لغة C هي أفضل لغة برمجةٍ تبدأ بها لأن العديد من اللغات الجديدة تنبثق منها.
إن مجموع مستخدميّ C أصغر عددًا، مما يجعلها أقلّ استهدافًا من القراصنة. وقد أصبحت لغة C معيارًا رسميًا للمعهد الأمريكي الوطني للمعايير (ANSI)، كما العديد من لغات البرمجة تقترض بناء الجملة (التركيب) من C.
لغة C++
تم تطوير لغة C++ كامتداد للغة برمجة C، وتم إنشاؤها من قبل طالب دكتوراه في الدنمارك يدعى بيارني ستيرستروب Bjarne Stroustrup، وكان هدفه هو تحسين C وإضافة قدرات البرمجة الكائنية التوجّه (object-oriented programming) دون التضحية بالسرعة أو الكفاءة.
تعتبر لغة C++ لغة برمجة متوسطة المستوى، حيث أنّها تعتمد على لغة C منخفضة المستوى ولكنّها تتمتع بقدراتٍ أكثر تقدمًا. ومنذ أن نُشِرَت أول مرة في عام 1985، أصبحت لغة برمجةٍ متعدّدة الاستعمالات، وشائعةٍ للغاية، حيث يتم استخدامها إلى جانب C في تطوير أنظمة التشغيل، كما وتستخدم في تطبيقات الخادم والكمبيوتر، وبالأخصّ في التطبيقات التي تعتمد بشكلٍ أكبر على الواجهة الرسومية (GUI)، حيث يوجد كمّ أكبر من التفاعل أو “الحوار” مع المستخدم.
من السهل جدًا فهم C++ إذا كان لديك بالفعل أساسٌ جيّدٌ في لغة برمجة C، ولكن حتى من دون ذلك، فإنّ بإمكانك تعلّم لغة C++ كلغةٍ أولى إذا كنت ترغب في الانتقال مباشرةً إلى البرمجة الكائنية التوجّه (object-oriented programming).
لغة C++ هي أيضًا معيار رسمي لـ ANSI. ويعتبر تجمع مطوري C++ أصغر حجمًا، كونها غير مستخدمةٍ بقوّةٍ لتطبيقات الويب والهاتف الذكيّ.
يمثل اسم لغة C++ اصطلاحًا متطورًا عن اسم لغة C؛ لأن الرمز “++” يمثّل عامل الزيادة في لغة C.
لغة C#
C# أو “C Sharp” هي لغة برمجةٍ عالية المستوى، وكائنية التوجّه، وقد تم بناؤها أيضًا كامتداد للغة C. تم تطويرها بواسطة فريق في Microsoft بقيادة أندريس هيجليسبرغ في 2002. وهي تستند إلى إطار عملٍ .NET (.NET framework;)، ولكن العمود الفقري لها لا يزال بشكلٍ واضحٍ هو لغة C.
في حين أن C# هي الأكثر تعقيدًا من الناحية التقنية من بين اللغات الثلاث، فإن تركيبها أقل عرضةً للخطأ من C أو C++ ويمكن تعلمها بسرعةٍ نسبيةٍ. C# تجمع بين وظائف لغة C ولغة C++ مع Visual Basic، ويتم استخدامها على العديد من أنظمة التشغيل، وليس Windows فقط. وبينما تدعم لغة C++ البرمجة الكائنية التوجّه والبرمجة الإجرائية، فإن لغة C# هي لغة برمجةٍ موجهةٍ كائنيةٍ فقط.
استُلهِم اسم C# من النوتة الموسيقية حيث تشير علامة “#” إلى زيادة نصف “بعد” موسيقيّ للعلامة في “النوتة”، ويشبه الرمز “#” أيضًا تركيبة الرموز “++++” (أي رمزي ++ معًا)، للإشارة إلى أن C# هي زيادةٌ إبداعيةٌ في لغة C++.
يتم استخدامها لبناء العديد من أنواع برامج سطح المكتب (الحاسوب الشخصي)، والتطبيقات القائمة على الويب، كما تُستَخدَم C# عادةً في التطبيقات الداخلية أو المؤسسات، بدلًا من البرامج التجارية. ورغم أنّ إطار عمل .NET framework يتيح إمكانية عمل لغات برمجةٍ مختلفةٍ معًا، لكنّ C# تم تطويرها خصيصًا لإنشاء تعليمة برمجية لـ .NET framework.
الاختلافات الرئيسية بين لغات C، C++، C#
C و C++ هما لغتي برمجة متشابهتين بشكلٍ ملحوظٍ، رغم من وجود الكثير من الاختلافات، ولكن، ومن ناحيةٍ أخرى، فإن C# لديها الكثير من القواسم المشتركة مع لغاتٍ أخرى مثل Java.
أي لغة يجب أن تتعلمها أولاً C، C++، C#
أوّلًا: المبرمجون الجدد:
إذا كنت لا تمتلك أي معرفةٍ سابقةٍ بلغات البرمجة ومفاهيمها بشكلٍ عام، وتريد البدء من الصفر تمامًا، فإن العديد من خبراء علوم الكمبيوتر يوصون بتعلم C أولًا؛ كونها لغةً أبسط مع خياراتٍ أقلّ من خليفتيها، إضافةً إلى أنّ العديد من اللغات الأخرى تستخدم البنى والمفاهيم التي قدمتها C؛ أي سيكون لديك متّسعٌ من الوقت، مع جهدٍ أقلّ لفهم لغاتٍ أخرى بعد تعلّم C.
ثانيًا: المبرمجون متوسّطو المستوى:
إذا كنت معتادًا على بعض مفاهيم البرمجة، وقمت بالفعل باستخدام بعض اللغات الأخرى، فقد ترغب في البدء مع C++. تعتبر لغات البرمجة الشيئية “الكائنيّة” أكثر شيوعًا في الوقت الحاضر من اللغات الإجرائية، وإذا كنت تمتلك بعض الخبرة في OOP )(Object-oriented programming فستجد C++ أسهل في التعلم.
ثالثًا: المبرمجون المتقدمّون (المختصون):
إذا كنت قد تعلمت بالفعل لغات برمجة متعددة وتحاول زيادة مستوى مهارتك، فإن اختيارك لأيٍّ من اللغات الثلاث يعتمد على ما كنت تأمل في الحصول عليه من التجربة.
يختار بعض المبرمجين الأصغر سنًا دراسة C كطريقةٍ لتعلم أساسيات الترميز، إذ يميل المبرمجون المخضرمون إلى ازدراء الجيل الأصغر لعدم احترامهم لجذورهم، لذا فإن معرفة C يمكن أن تكون نوعًا من المؤهلات “الشعبيّة” لأي وظيفةٍ جديدةٍ. وإذا كنت قد قضيت وقتًا في العمل باستخدام لغاتٍ كائنية التوجه، وكنت تبحث عن لغةٍ أخرى لإضافتها إلى سيرتك الذاتية بأقل جهدٍ، فإن C++ خيار رائع لذلك.
إذا كانت رغبتك الأساسية هي الوصول إلى تطوير .NET وweb-based، فقد تكون C# أفضل خيارٍ لك.