الفرق بين لغة سي ولغة سي بلس بلس


من الاسئلة التي تتكرر بكثرة في المدونة والفيس بوك وفي كل مكان والتي للأسف لم اجد لها جواباً شافياً باللغة العربية هو السؤال اعلاه والذي يسأله عادة من يتقنون احد اللغتين ويتسائلون عن الفرق بينها وبين اللغة الاخرى او من يحاولون البدء بتعلم هذه اللغات ويجدون ان اغلب الشروحات تكتب (C/C++) فلا يعرفون هل هي لغة واحدة او لغتين مستقلتين فتبدأ لديهم رحلة البحث عن الفرق وهنا سنحاول التركيز على اهم الفروقات بين اللغتين من وجهة نظر المبرمجين الكبار المختصين في هاتين اللغتين اضافة الى بعض الملاحظات بناءاً على التجربة الشخصية.

c-plus-plus-shares-most-of-c

بداية لا بد من ذكر الحقيقة التاريخية وهي ان لغة سي (C) هي الاصل وهي اللغة الاقدم والتي اشتقت منها لغة سي بلس بلس (C++) بعد مدة والتي كانت تسمى (C with additions) اي انها لغة سي مع الاضافات ثم تغير الاسم الى (C++) وكما هو معروف فأن (++)=(additions) 🙂 .

الفرق الرئيسي بين اللغتين هو ان لغة سي لغة اجرائية (procedural) لا تدعم الكلاسات (classes) ولا الكائنات (objects) بينما لغة سي بلس بلس هي تركيب من لغة برمجة اجرائية ولغة برمجة موجهة نحو الهدف (او كائنية التوجه كما يحلو للبعض ان يسميها) (procedural and object oriented programming language) ولذا يمكن تسمية لغة سي بلس بلس بأنها لغة هجينة (hybrid) والجدول التالي يبين الفروقات بين اللغتين بالتفصيل:

ملاحظة: هذه الفروقات فقط مما يعني ان كل شيء اخر متشابه ومن هنا شاعت الدورات والكورسات التي تتعامل مع اللغتين كأنهما شيء واحد (C/C++):

لغة سي لغة سي بلس بلس
تم تطويرها من قبل دينس ريتشي بين عامي 1969-1973 في مختبرات بيل في شركة (AT&T bell labs). تم تطويرها من قبل بيرني ستروسترب عام 1979 بأسم سي مع الكلاسات (C with classes).
لغة سي هي جزء من لغة سي بلس بلس اي ان كل امكانياتها موجودة في لغة سي بلس بلس ولكن العكس ليس صحيح لغة سي بلس بلس هي المجموعة الكبيرة (superset) التي تحتوي لغة سي كجزء منها.
لغة سي تدعم البرمجة الاجرائية (procedural programming) في تطوير الكودات البرمجية. لغة سي بلس بلس تدعم كل من البرمجة الاجرائية والبرمجة الموجهة نحو الهدف (object oriented programming) ولذلك تسمى لغة هجينة كما ذكرنا سابقاً.
لغة سي لا تدعم البرمجة الموجهة نحو الهدف ولذلك فهي لا تدعم بالنتيجة كل من تعدد الاشكال (polymorphism) والوراثة (inheritance) والكبسلة (encapsulation) لغة سي بلس بلس تدعم كل هذه الامور 🙂

 

في لغة سي فأن البيانات والدوال تكون منفصلة ومستقلة عن بعضها البعض في لغة سي بلس بلس فأن البيانات والدوال تكون مجموعة (Encapsulated) في كائنات (objects) والتي لتوليدها نحتاج الى كلاسات لتعريفها وتوفير هيكلها (blueprint).
البيانات في لغة سي هي عبارة عن وحدات مستقلة يمكن التعديل عليها من قبل اي كود خارجي لأن هذه اللغة لا تدعم اخفاء البيانات (information hiding) في لغة سي بلس بلس فأن الكبسلة تخفي البيانات مما يضمن ان هياكل البيانات والعمليات يتم استخدامها كما هو مطلوب فقط (دون السماح لكودات خارجية بأستخدام البيانات المخفية).
من مواصفات لغة سي انها تركز على الدوال (function driven) من مواصفات هذه اللغة (C++) انها تركز على الكائنات اي انها (object driven).
لا تدعم هذه اللغة ما يسمى التحميل المضاعف (overloading) لكل من الدوال والعمليات. تدعم التحميل المضاعف للدوال والعمليات.
لا تسمح هذه اللغة بتعريف الدوال داخل الهياكل (structures). تسمح لغة سي بلس بلس بتعريف واستخدام الدوال داخل الهياكل.
لا تدعم لغة سي خاصية حيز الاسماء* (namespace feature) تستخدم لغة سي بلس بلس حيز الاسماء لتجنب التضارب في الاسماء.
تستخدم لغة سي دوال مثل (printf, scanf) للأدخال والاخراج وتستدعي المكتبة الرأسية (stdio.h) التي تحتوي هذه الدوال. تستخدم لغة سي بلس بلس كائنات (objects) للأدخال والاخراج مثل (cin, cout) والموجودة ضمن المكتبة الرأسية (iostream).
لا تدعم هذه اللغة المتغيرات المرجعية (reference variables). تدعم لغة سي بلس بلس المتغيرات المرجعية.
لا تدعم لغة سي الدوال الافتراضية (virtual functions) والدوال الصديقة (friend functions) تدعم لغة سي بلس بلس كل من الدوال الافتراضية والدوال الصديقة.
توفر لغة سي دوال (malloc (), calloc()) لتخصيص الذاكرة ديناميكياً ودالة (free()) لأعادة تخصيص (تحرير) الذاكرة . توفر لغة سي بلس بلس عملية (new) لتخصيص الذاكرة وعملية (delete) لأعادة تخصيص الذاكرة (تحريرها).
لا توفر دعم مباشر للتعامل مع الاخطاء او ما يسمى ادارة الاستثناءات (exception handling). توفر هذه اللغة دعم لأدارة الاستثناءت. والاستثناءات في هذه اللغة تستخدم للأخطاء الصعبة التي تجعل الكود وتنفيذه غير صحيح.

* تم ذكر مصطلح (namespace) اعلاه دون اعطاء توضيح كافي له وهو في الحقيقة منطقة تصريح توفر حيز للمعرفات (اسماء الدوال والمتغيرات والانواع وغيرها). وهو يستخدم لتنظيم الكود في مجاميع منطقية لمنع التضارب في تسمية المتغيرات والدوال والذي يحصل خصوصاً عندما يستورد الكود خاصتنا عدة مكتبات (وقد تحتوي هذه المكتبات على عدة دوال متشابهة الاسماء). كل المعرفات في حيز الاسماء تكون مرئية لبعضها البعض بدون تفريق بينها. واما المعرفات خارج حيز الاسماء فيمكنها الوصول الى اعضائها بأستخدام الاسماء الكاملة لكل معرف وكما سيوضح ذلك المثال التالي:

1

الى هنا ينتهي درسنا اليوم واتمنى ان يكون قد اجاب عن اسئلة الكثيرين حول الفرق بين هاتين اللغتين وكما هو واضح مما سبق فأن هاتين اللغتين تكمل احداهما الاخر ولا يكفي معرفة احداهما دون الاخرى فلمبرمجي التطبيقات تكون سي بلس بلس اكثر فائدة ولكن لمبرمجي النظم التي تحتاج معرفة تفاصيل اكثر عن خطوات سير عمل البرنامج والنزول الى مستوى خوارزمياته الاولية فأن لغة سي هي الخيار الامثل.

نُشر بواسطة mustafasadiq

I am a Computer Engineer from Iraq my goal of this site is to increase the Arabic scientific materials online both in Quantity and in Quality by making lessons (written and videos) about everything related to my fields of interests which includes: 1- Computer Science and Engineering: Academic and technical contents. 2- English Language: both normal life English and academic English requirements like TOEFL, GRE, IELTS, ...etc. 3- Computer Cultural aspects: in normal people life's as articles and magazines. 4- General Literature, Economical, Political, and social aspects: as Articles and Magazines. Wish you will enjoy surfing my blog and always expect more and wait for better :)

رأيان حول “الفرق بين لغة سي ولغة سي بلس بلس

  1. السلام عليكم ..اتمنى تعطوني افكار بسيطه مثل منظومة أسئله ومنظومة مدرسه ..لأن الدكتور طلب منا أفكار انطبقوهم وانا نبي أي فكرة باش انحاول فيها

    إعجاب

    1. وعليكم السلام
      في هذا الموقع تبويب كامل للغة برمجة سي بلس بلس وفيه اكثر من 50 منشور تحتوي كلها على افكار وان شاء الله تفيدكم

      إعجاب

اترك رد

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

شعار وردبرس.كوم

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   /  تغيير )

Google photo

أنت تعلق بإستخدام حساب Google. تسجيل خروج   /  تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   /  تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   /  تغيير )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

The Union Of Arabian Academics

اتحاد الاكاديميين العرب - موسسسة عربية علمية بحثية . تاسس عام 2018 . تتكون من الاخوة و الاخوات الباحثين و الاكاديميين و العلماء العرب.

Scott H Young

Mustafa Sadiq ICT Academy

GETTING PUBLISHED

Comments and advice for academic authors

فِي سِتَّةِ أَيَّامٍ

أشياء أكتبها وأخرى أكتب عنها

مطور

Mustafa Sadiq ICT Academy

مدونة المبرمج العراقي فلاح كاطع

تتحدث عن اهم مشاريعي في تقنية المعلومات و انظمة التحكم الالكتروني المايكروكونترولر الاردوينو

Manarlogy

كتب | معرفة | تخطيط | تجارب

مدونة NetworkSet

مدونة تختص بأمور الشبكات والأجهزة التى تدعمها

مدونة علي عبد الغني

مدونة علي عبد الغني للبرمجة

Sciware Podcast

Not just another podcast (All my writings are copyrighted)

محمد توفيق علاوي

Mohammed Tawfik Allawi

عالم البرمجة

Mustafa Sadiq ICT Academy

شبكات الكمبيوتر

Mustafa Sadiq ICT Academy

مدونة عيسى حمدان العلمية

مدونة علمية تهتم بكل ماهو جديد بعلوم الحاسب الآلي والشبكات

خدمات ويب

Mustafa Sadiq ICT Academy

SWAT 771

St. Mildred's Women Advancing Technology: A FIRST Robotics team

Discover

A daily selection of the best content published on WordPress, collected for you by humans who love to read.

Virtual IT Support

information technology blog by Abubaker Siddiq Lasania

How-To Geek

Mustafa Sadiq ICT Academy

Em Turner Chitty

English Language, English Writing, Scientific Editing, Music, and Travel

TechCrunch

Startup and Technology News

The Curious Programmer

Software, Gadgets, Books, and All Things Geek

خوارزمى العرب

Mustafa Sadiq ICT Academy

المهندس وسام فوزي

Mustafa Sadiq ICT Academy

DrugMonkey

biomedical research, just another job...

Austin's blog

I make things

The Admin Guy's Blog

A blog for the impatient System Administrators

dadorran

placeholder for code and links

Live to Write - Write to Live

We live to write and write to live ... professional writers talk about the craft and business of writing

The Union Of Arabian Academics

اتحاد الاكاديميين العرب - موسسسة عربية علمية بحثية . تاسس عام 2018 . تتكون من الاخوة و الاخوات الباحثين و الاكاديميين و العلماء العرب.

Scott H Young

Mustafa Sadiq ICT Academy

GETTING PUBLISHED

Comments and advice for academic authors

فِي سِتَّةِ أَيَّامٍ

أشياء أكتبها وأخرى أكتب عنها

مطور

Mustafa Sadiq ICT Academy

مدونة المبرمج العراقي فلاح كاطع

تتحدث عن اهم مشاريعي في تقنية المعلومات و انظمة التحكم الالكتروني المايكروكونترولر الاردوينو

Manarlogy

كتب | معرفة | تخطيط | تجارب

مدونة NetworkSet

مدونة تختص بأمور الشبكات والأجهزة التى تدعمها

مدونة علي عبد الغني

مدونة علي عبد الغني للبرمجة

Sciware Podcast

Not just another podcast (All my writings are copyrighted)

محمد توفيق علاوي

Mohammed Tawfik Allawi

عالم البرمجة

Mustafa Sadiq ICT Academy

شبكات الكمبيوتر

Mustafa Sadiq ICT Academy

مدونة عيسى حمدان العلمية

مدونة علمية تهتم بكل ماهو جديد بعلوم الحاسب الآلي والشبكات

خدمات ويب

Mustafa Sadiq ICT Academy

SWAT 771

St. Mildred's Women Advancing Technology: A FIRST Robotics team

Discover

A daily selection of the best content published on WordPress, collected for you by humans who love to read.

Virtual IT Support

information technology blog by Abubaker Siddiq Lasania

How-To Geek

Mustafa Sadiq ICT Academy

Em Turner Chitty

English Language, English Writing, Scientific Editing, Music, and Travel

TechCrunch

Startup and Technology News

The Curious Programmer

Software, Gadgets, Books, and All Things Geek

خوارزمى العرب

Mustafa Sadiq ICT Academy

المهندس وسام فوزي

Mustafa Sadiq ICT Academy

DrugMonkey

biomedical research, just another job...

Austin's blog

I make things

The Admin Guy's Blog

A blog for the impatient System Administrators

dadorran

placeholder for code and links

Live to Write - Write to Live

We live to write and write to live ... professional writers talk about the craft and business of writing

%d مدونون معجبون بهذه: