• 0
AyoubHub

[ تمت الإجابة ]ما هي أهم الفروق بين سي و سي++ ؟

سؤال

السلام عليكم و رحمة الله تعالى و بركاته

 

يا إخواني أنا جديد معكم في هذا الموقع الذي ما أريد قوله في أول زيارة لي عنه أنه فعلا رائع و كنت أبحث عنه

 

المهم لندخل في صلب الموضوع ما أوده هو أخذ رأيكم في ما هي اللغة الأفضل من حيث الفعالية و السرعة و ليس السهولة فأنا الآن أكملت دراسة c و c++ من النت :evil:   و لكن ما أريده هو رأيكم في أي لغة يجب علي التركيز هل c ام c++ فأنا مبتدإ و أريد الإنطلاق الجيد في عالم برمجة البرامج و الألعاب و الحماية فبماذا تنصحونني :excited:

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

5 إجابة على هذا السؤال .

  • 0

السلام عليكم

 

السي عبارة عن procedural language أما سي++ فهي object-oriented language.

كل ما يمكنك فعله بالسي, يمكنك تقريبا فعله بالسي++ و العكس غير صحيح.

تم تصميم سي++ لكي تدعم الـ OOP و تحافظ في نفس الوقت على syntaxe السي لذلك تجد أن اللغتين متقاربتين في طريقة الكتابة لكن الـ Programming mentality تختلف بشكل كبير جداً.

 

يمكننا تلخيص أهم الفروق بين اللغتين في النقاط التالية :

  1. يُمكن الإعلان عن المتغيرات في أي مكان من الكود في سي++ أما في السي فلا.
  2. السي++ تدعم الـ Boolean variables أما في السي فلم تكن توجد مثل هذه المتغيرات قبل معيار C99.
  3. في السي, نستخدم الدالة printf للكتابة و scanf للقراءة أما في سي++ فنستخدم على التوالي الكائنين cin و cout.
  4. للرجوع إلى السطر نستخدم \n في السي و std::endl في السي++.
  5. على عكس السي++, يمكننا استدعاء الدالة الرئيسية main من خلال دوال أخرى في السي.
  6. يمكننا إسناد عنوان من نوع void* بشكل ضمني في السي, هكذا :
    int * x = malloc (sizeof (int) * 10);

    و لكن السي++ لا تسمح بذلك. السبب في رفض هذا النوع من الإسناد يعود إلى أن مصمم اللغة (Bjarne Stroustrup) يعتقد أن مؤشرات void ليست آمنة لأنه أحيانا يمكن أن تُشير إلى لا شيء و بالتالي عند إسناد العنوان الذي يُشير إليه المؤشر إلى مؤشر آخر لن تجد أي تحذير بخصوص الأمر.

  7. السي تسمح بالتمرير بالقيمة أو العنوان (pass by value/address) أما السي++ فأضافت نوعا جديداً وهو التمرير بالمرجع (pass by reference)
  8. السي تستخدم عائلة l*alloc (مثل malloc, valloc, calloc, realloc) لحجز الذاكرة و free لتحريرها و memset للتصفير أما سي++ فتستخدم المعامل new للحجز و delete للتحرير.
  9. السي++ تحتوي على المفاهيم التالية  على عكس السي :

Virtual functions

Operator overload

namespace

Exception handling

 

 

أنصحك بتلعم أساسيات السي ثم الإنتقال بعد ذلك إلى السي++.

تم تعديل بواسطه Snack3r
5

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

و عليكم السلام ورحمة الله و بركاته

 

أهلا بك معنا في هذا المنتدى الرائع و أرجو أن تستفيد و تفيد 

 

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

 

أرجو لك التوفيق و النجاح و الانطلاقة القوية....اجتهد حتى تحقق حلمك

 

ثـــــــــــــــــــــــــــابــــــــــــــــــــــــــــــر :)  :lol:  

تم تعديل بواسطه tantie L
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

@tantie L

مشكووور يا أخي على مشاركتك ، أصلا هم هنا في المغرب يقومون بتدريس لغة c# ولكن ذلك بعد الحصول على شهادة الباكلوريا واع يا لها من دراسة مشينة أنتظر حتى حصول على تلك الشهادة ثم بعد ذلك أبدأ بالتعلم و لغة c# التي أصلا تحدك في كل شيئ لذلك أنا أصلا تعلمت c ثم c++ من النت

 

مشكووور على تمنياتك أتمنى لك أيضا التوفيق و النجاح و بلوغ أي شيئ توده إن شاء الله

@Snack3r

مشكووور يا أخي على الشرح الرائع أظن أنه على التركيز و التعامل فقط ب c++ :huh:

 

مشكووور يا أخي على النصيحة هذا ما فعلته تعلم c ثم إنتقلت إلى c++ ^_^

تم تعديل بواسطه مصطفى 36a2
إزالة الاقتباس ودمج الردود
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
  1. يُمكن الإعلان عن المتغيرات في أي مكان من الكود في سي++ أما في السي فلا.

 

هذا فقط في c89، أما c99 ومايليها يمكن الإعلان عن المتغير في أي مكان.

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أهلا Mr.B :)

 

هذا فقط في c89، أما c99 ومايليها يمكن الإعلان عن المتغير في أي مكان.

 

صحيح, الملاحظتين الأولى و الثانية ينطبقان فقط على ما قبل المعيار C99.

كنت قد جمعتُهما في ملاحظة واحدة و عند فصلهما نسيتُ إضافة التنبيه في الملاحظة الأولى.

تم تعديل بواسطه Snack3r
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .