أحْمدُ بْنُ عليٍّ
أحْمدُ بْنُ عليٍّ

@aa10y11

8 تغريدة 3 قراءة Sep 18, 2021
ثريد جديد 🌼
سألنا في الثريد السابق هذا السؤال، والذي بعده
أولا: لماذا لم يطوروا في ال Compiler الخاص بلغة C ليفهم OOP بدلا من اختراع لغة جديدة؟
وهنا يأتي السؤال: هل لغة ++c كانت فقط مجرد تطوير للغة C؟
ومعروف أنها تعد بمثابة C with classes
🧵.
@programming_4
والجواب: في الحقيقة لم يكن هدف مطور أو مخترع لغة ++C هو تطوير لغة C في الأساس.
فلغة ++C مبنية في الأصل على لغة C، وذلك لأن مطورها كان مغرما بلغة برمجة تسمى (سيمولا) [1962-1967]؛ لأن هذه اللغة كانت تدعم مفهوم OOP، لكنها كانت بطيئة.
🧵..
فدمج بين مميزات لغة سيمولا، وهي احتواؤها على Classes وبين سرعة لغة C وأنها متعددة الأغراض ، فصارت لغة قوية تسمى ++C، أو C with classes
ليستغل شهرة لغة C في تلك الآونة، فتشتهر لغته أيضا.
وأضاف ميزة إمكانية كتابة كود C داخل بيئة عمل ++C.
🧵..
والسؤال هنا: لماذا لم يطور في Compiler لغة C بحيث يفهم OOP بدلا من اختراع لغة جديدة؟
والجواب: كم عدد ال Compilers المستخدمين لترجمة لغة C؟ (الجواب سؤال) 😄
الجواب: كثيرة، منها مفتوحة المصدر، ومنها مغلقة المصدر.
إذن: كان مرهقا جدا تطوير كل تلك ال Compilers
🧵.
فقام بعمل Compiler جديد يستطيع ترجمة لغة C وترجمة ما يود إضافته للغة C ألا وهي مفاهيم ال OOP
بشكل آخر: Compiler يترجم لغة C ولغة ++C
لكن لماذا غير في أسماء الدوال في لغة ++C كدوال الإدخال والإخراج مثلا؟
لماذا لم يقتصر على عمل Compiler جديد وفقط؟
🧵..
لسبب مهم: وهو أن دالتي الإدخال والإخراج في لغة C لابد لهما من كتابة ال format، فكانت ذلك مشكلة عند أكثر المبرمجين، إلى جانب مساوئهما الأمنية.
إذا: لماذا لم يحذف منهما ال format وطورهما من الناحية الأمنية وترك اسمهما كما هو؟
🧵..
ماالداعي على تغيير printf إلى cout، وتغيير scanf إلى cin؟
والجواب: لأن عملية ال formatting مع هذه الدوال فرض عليك في لغة C، وكما أشرنا إلى أنه يمكنك كتابة لغة C في بيئة عمل لغة ++c وسيتم ترجمتهما بنفس المترجم
🧵..
فكيف يترجم ال Compiler نفس الدالتين بنفس الاسم مرة مع وجود format والأخرى بدون وجود format؟ 🤷‍♂️
لذلك غير اسمهما تجنبا لحدوث Error لل Compiler نفسه.
كان هذا كل شيء 😄
شكرا لكم 💙

جاري تحميل الاقتراحات...