stanford-oval/wikipedia huggingface dataset:
سي++
مزايا اللغة > القوالب

تتيح قوالب ++C البرمجة العمومية (بالإنجليزية: generic programming)‏. تدعم ++C كلاً من قوالب الصفوف وقوالب التوابع. يمكن إعطاء القوالب ثلاث أنواع من البارامترات: أنماط، ثوابت معرفة وقت التصريف، وقوالب أخرى. يتم تخصيص القوالب وبناء نماذج منها وقت التصريف. لبناء قالب يقوم المصرف باستبدال بارامترات القالب بوسطاء محددة من أجل توليد تابع حقيقي أو نموذج عن صنف.
بعض الاستبدالات غير ممكنة إلا أنها لا تولد أخطاءً، يعود الفضل في ذلك إلى سياسة تقرير التحميل الزائد للقوالب التي توصف بالعبارة التالية: «الفشل في الاستبدال ليس خطأ» (SFINAE) (بالإنجليزية: Substitution failure is not an error)‏ تحاول هذه السياسة استنباط الاستبدالات الصحيحة حتى وإن قادت بعض الاستنباطات إلى استبدالات خاطئة. تقدم القوالب أداة قوية يمكن استخدامها للبرمجة العمومية والميتا-برمجة (بالإنجليزية: metaprogramming)‏. باستخدام القوالب كذلك يمكن استخدامها في أمثَلة المصدر إلا أن هذه القوة لا تأتي دون تكلفة. قد تزيد القوالب من حجم المصدر، ذلك أن كل تخصيص للقالب ينتج نسخة من مصدر القالب: إلا أن نسخة توليد نسخة من أجل كل مجموعة من وسطاء القالب يكافئ إلى حد ما نفس حجم المى الناتج من كتابتها بشكل يدوي. إن هذا السلوك مخالف للكائنات العمومية (بالإنجليزية: generics)‏ التي تعمل وقت التنفيذ والمدعومة في عدد من اللغات (مثل لغة Java) حيث يحذف النمط وقت التصريف ويحفظ جسم وحيد للقالب ليتم استخدامه وقت التنفيذ.
تختلف القوالب عن الماكروز بعدة نواحٍ: على الرغم من أن كلا الميزتين توفران تصريفاً شرطياً إلا أن القوالب ليست محدودة بالاستبدال اللفظي فقط حيث أن لديها اطلاعا على معاني ونظام التنميط الخاص باللغة بالإضافة إلى معرفتها بتعاريف الأنماط وقت التصريف كما يمكنها القيام بالعديد من المهام العالية المستوى مثل إمكانية ضبط التدفق برمجياً من خلال تقييم البارامترات ذات الأنماط المعروفة قسراً. لدى الماكرو القدرة على القيام بالتحكم الشرطي في التصريف بناءً على شروط محددة سلفاً إلا أنها غير قادرة على خلق أنماط جديدة أو استدعاء نفسها ذاتياً أو القيام بتقييم الأنماط ويبقى تأثيرها محدوداً باستبدال السلاسل النصية و (عدم) تضمين النصوص مباشرة قبل التصريف. بمعنى آخر تستطيع الماكروز التحكم بتدفق التصريف بناءً على رموز معرفة سابقاً إلا أنها -على خلاف القوالب- غير قادرة على إنشاء رموز جديدة بمفردها. تعتبر القوالب أداة لتحقيق تعدد الأشكال (بالإنجليزية: polymorphism)‏ السكوني والبرمجة العمومية.
إضافة لما سبق تجدر الإشارة إلى أن القوالب هي ميكانيكية وقت التصريف خاصة بلغة ++C تتمتع بميزة أنها تورينغ-كاملة بمعنى أنه يمكن استخدام القوالب لكتابة برامج يمكنها القيام قبل التنفيذ بكافة الاحتسابات التي يمكن القيام بها باستخدام أي برنامج حاسوبي.
يمكن تلخيص ما سبق بالقول أن القوالب هي توابع أو صفوف مضاف إليها بارامترات تعمل وقت التصريف وتكتب دون معرفة مسبقة بالوسطاء المستخدمة لتحقيق نماذج مخصصة منها. إن المصدر الناتج من تخصيص القالب مكافئ للمصدر المكتوب بشكل يدوي خصوصاً من أجل الوسطاء الممررة. بهذه الطريقة توفر القوالب طريقة لفصل الجوانب العمومية والقابلة للتطبيق على نطاق واسع على شكل توابع وصفوف (مرمزةً بصفتها قوالب) عن الجوانب المخصصة (مرمزةً بصفتها بارامترات للقوالب) دون أن يسبب هذا التجريد خسارة في الأداء.
مزايا اللغة > الأصناف

تضيف ++C مزايا البرمجة الكائنية التوجه (OOP) إلى لغة C، فقد تم إضافة الأصناف التي تقدم بدورها الميزات كائنية التوجه الأربعة الشائعة في أغلب لغات البرمجة الكائنية التوجه (وكذلك بعض اللغات الغير كائنية التوجه): التجريد، التغليف، الوراثة، تعدد الأشكال. إحدى أهم ميزات أصناف ++C التي تفرقها عن باقي اللغات هي دعم الهوادم الحتمية والتي توفر بدورها دعماً لمفهوم استحواذ المصدر عبر تهيئته (RAII) (بالإنجليزية: Resouce Acquisition is Initialization)‏.
مزايا اللغة > الأصناف > التغليف

طالع أيضًا: التغليف في علوم الحاسب
التغليف هو إخفاء المعلومات بهدف ضمان أن بنى المعطيات والمعاملات سيتم استخدامها بالشكل المحدد ولجعل نموذج استخدامها أكثر وضوحاً بالنسبة للمطور. توفر لغة ++C إمكانية تعريف الإصناف والتوابع بصفتها تقنيات بدائية للتغليف. يمكن لأعضاء الصف أن يعرف عاماً (بالإنجليزية: public)‏ أو محمياً (بالإنجليزية: protected)‏ أو خاصاً (بالإنجليزية: private)‏ لتطبيق مفهوم التغليف صراحةً. يمكن لأي تابع الولوج إلى عضو عام في حين لا يمكن الولوج إلى الأعضاء الخاصة إلا من قبل التوابع الأعضاء بالإضافة إلى التوابع والأصناف «الأصدقاء» أي تلك الممنوحة صلاحية الولوج إلى الأعضاء الخاصة بالصنف (باستخدام الكلمة المفتاحية friend). يمكن الولوج للعضو المحمي من قبل كافة أعضاء الأصناف الوارثة إضافة إلى الصنف نفسه وجميع «أصدقاءه».
يشير المبدأ الكائني التوجه إلى أنه في حال كان لدى تابع صلاحية الولوج إلى البنية الداخلية لنمط ما وجب تغليف هذا التابع ضمن تعريف النمط. تدعم ++C هذا المبدأ (من خلال التوابع الأعضاء والتوابع الصديقة) إلا أنها لا تجبر المبرمج على تطبيقه: إذ يمكن للمبرمج أن يعرّف أجزاءً من تمثيل النمط بصفتها أعضاءً عامة بحيث يمكن الولوج إليها من قبل كيانات خارجية ليست بالضرورة جزءاً من تمثيل النمط. لهذا السبب لا تدعم ++C البرمجة كائنية التوجه فقط بل تدعم أيضاً نماذجاً برمجية أخرى ضعيفة التفكك مثل البرمجة التركيبية.
يعتبر جعل كافة الأعضاء البيانية خاصةً (أو محمية) بالإضافة إلى جعل فقط تلك التوابع التي توفر واجهة أصغرية لبقية مستخدمي الصف عامةً من الممارسات البرمجية الجيدة إجمالاً. ذلك أنه يمكن إخفاء تفاصيل تحقيق وظيفية الصنف بهذه الطريقة بشكل يتيح للمصممين إمكانية تغيير التحقيق بشكل كامل لاحقاً دون الاضطرار إلى تغيير الواجهة التي يستخدمها الآخرون.
مزايا اللغة > الأصناف > الوراثة

طالع أيضًا: الوراثة في علوم الحاسب
تتيح الوراثة لنمط بيانات ما أن يكتسب خصائص نمط بيانات آخر. يمكن للوراثة من صنف القاعدي (أو الصنف الأب) أن تعرف بصفتها وراثة عامة public أو محمية protected أو خاصة private. تتيح معرفات الوصول هذه تحديد فيما إذا كانت الأصناف المشتقة وعديمة الصلة تستطيع الولوج إلى الأعضاء العامة والمحمية الخاصة بالصنف القاعدي. إن الوراثة العامة فقط هي التي تتناسب مع المعنى المقصود عادةً بالـ«وراثة» ويعتبر النوعان المتبقيان أقل استخداماً بشكل كبير. في حال تم حذف معرف الوصول تكون الوراثة بين «الصنف» المشتق و«الصنف» القاعدي خاصة في حين تكون الوراثة بين «البنية» (struct) المشتقة و«البنية» الأب عامة. يمكن تعريف الأصناف القاعدية بصفتها أصنافا وهمية virtual؛ في هذه الحالة تسمى الوراثة وهمية. تضمن الوراثة الوهمية وجود نموذج (instance) واحد فقط من الصنف القاعدي في بيان الوراثة بشكل يجلي الغموض الذي قد يحصل بسبب الوراثة المتعددة.
إن الوراثة المتعددة هي ميزة تكاد تنفرد بها لغة ++C إذ لا توجد هذه الميزة في أغلب لغات البرمجة الأخرى، تتيح الوراثة المتعددة لصنف ما أن يُشتق من أكثر من صنف قاعدي واحد؛ تتيح هذه الميزة إنشاء علاقات وراثية أكثر دقة. فعلى سبيل المثال يمكن لصنف «القط الطائر» أن يرث من كلا الصنفين «قط» و«لبون طائر». بعض اللغات الأخرى مثل لغة Java ولغة #C تحقق هدفاً شبيهاً (على الرغم من كونه محدوداً أكثر) عبر إتاحة الوراثة من واجهات متعددة في حين حصر عدد الأصناف القاعدية بصنف واحد فقط (تتيح الواجهات -على خلاف الأصناف- إمكانية التصريح عن التوابع الأعضاء دون إمكانية إضافة تحقيق لها أو إضافة أعضاء بيانية). يمكن تعريف واجهة كما في لغة #C ولغة Java في لغة ++C أيضاً بصفتها صنف يحتوي فقط على توابع ظاهرية صرفة (pure virtual)، يعرف هكذا الصنف باسم صنف قاعدي مجرد (ABC) (بالإنجليزية: Abstract Base Class)‏. تعرّف التوابع الأعضاء الخاصة بصنف قاعدي مجرد عادةً بشكل صريح في الصنف المشتق ولا يتم توريثها ضمنياً. تتمتع الوراثة الظاهرية في لغة ++C بميزة إجلاءٍ للغموض اسمها الهيمنة (بالإنجليزية: dominance)‏.
مزايا اللغة > تعددية الأشكال

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

يمكّن التحميل الزائد للتوابع من كتابة توابع تحمل الاسم نفسه (ولكن لها وسائط مختلفة). يتم تمييز التوابع عن بعضها البعض من خلال عدد وأنماط بارامتراتها. لهذا السبب قد يشير اسم التابع ذاته إلى توابع مختلفة حسب السياق الذي يتم استخدامه فيه. من الجدير بالملاحظة أن نمط القيمة المعادة للتابع لا يستخدم للتفريق بين التوابع المحملة بشكل زائد وبؤدي في حال اعتماده إلى رسالة خطأ أثناء ترجمة البرنامج.
لدى التصريح عن تابع ما يمكن للمبرمج أن يسند لبارامتر واحد أو أكثر قيمة افتراضية. في حال القيام بذلك يمكن إهمال هذه البارامترات لدى استدعاء التابع ليتم تعويضها بقيمها الافتراضية. عند استدعاء تابع باستخدام عدد من الوسطاء أقل من عدد البارامترات المصرح عنها يتم مطابقة الوسطاء الممررة مع البارامترات الموافقة لها من اليسار إلى اليمين ومن ثم يتم إعطاء أي بارامتر لم تتم مطابقته قيمته الافتراضية. في الكثير من الحالات يفضل استخدام تصريح واحد للتابع مع قيم افتراضية بدلاً من توفير عدد من التوابع المعرفة بشكل زائد لديها أعداد وأنماط مختلفة من البارامترات.
توفر قوالب لغة ++C تقنية متطورة ومعقدة لكتابة مصدر عمومي متعدد الأشكال. تحديداً يتيح نمط القالب غريب التكرار (بالإنجليزية: Curiously Recurring Template Pattern)‏ كتابة نماذج من تعدد الأشكال السكوني تحاكي بشكل قريب أسلوب كتابة تجاوز التوابع الظاهرية. تستطيع قوالب ++C التعرف على الأنماط وتتمتع بكونها تورينغ-كاملة، تمكّن هاتين الميزتين من استخدام المصرّف لحل الشرطية العودية وتوليد برامج هامة باستخدام ميتا-برمجة القوالب. خلافاً للمعتقد السائد فإن استخدام القوالب لا يولد مصدرا عديم الفائدة عند التصريف بشرط استخدام الإعدادات المناسبة للمصرف.
مزايا اللغة > تعددية الأشكال > تعددية الأشكال الديناميكية > الوراثة

تستطيع المتحولات من نمط المؤشرات (والأدلة) التي تشير إلى صنف قاعدي أن تشير أيضاً إلى أي كائن من نمط صنف مشتق من ذاك الصنف القاعدي بالإضافة إلى الكائنات التي تطابق نمط المتحول. تمنح هذه الميزة مصفوفات وحاويات المؤشرات إمكانية الإشارة إلى كائنات من أنماط مختلفة. يحدث هذا السلوك وقت التنفيذ عادةً ذلك أن المتحولات غالباً ما تسند لها القيم وقت التنفيذ.
توفر ++C المعامل dynamic_cast الذي يتيح للبرنامج أن يحاول بأمان (بدون أخطاء) تحويل نمط كائن إلى نمط آخر أكثر تحديداً (على خلاف التحويل إلى نمط أكثر عمومية المسموح دائماً). تعتمد هذه الميزة على معلومات التنميط وقت التنفيذ (RTTI) (بالإنجليزية: Run-time type information)‏. يمكن للكائنات التي يعرف المبرمج سلفاً أنها من نمط معين أن تُحول إلى ذلك النمط باستخدام المعامل static_cast الذي يتم التحقق منه وقت التصريف ولا ينطوي على أي جهد إضافي وقت التنفيذ كما أنه لا يتطلب RTTI.
مزايا اللغة > تعددية الأشكال > تعددية الأشكال الديناميكية > التوابع الأعضاء الظاهرية

بشكل عام عندما يتجاوز تابع من صف مشتق تابعاً من صف قاعدي يحدد الإصدار الواجب استدعائه من ذلك التابع حسب نمط الكائن. يتم تجاوز تابع ما عندما لا يوجد اختلاف في عدد وأنماط الوسائط بين تعريفين أو أكثر من للتابع. بما أنه قد لا يمكن معرفة نمط الكائن المشار إليه بدقة وقت التصريف في حال استخدام متحول من نمط مؤشر إلى صف قاعدي فإنه المصرف لن يعرف في هذه المرحلة أي نسخة من التابع يجب استدعاؤها؛ لهذا السبب يؤجل هذا القرار إلى حين وقت التنفيذ وتسمى هذه السياسة الترحيل الديناميكي (بالإنجليزية: dynamic dispatch)‏. تتيح التوابع الأعضاء الظاهرية أو «الطرق» استدعاء النحقيق الأكثر تحديداً من التابع المُستدعى حسب نمط الكائن وقت التنفيذ. يتم تحقيق هذا الغرض بشكل شائع في تحقيقات لغة ++C عن طريق استخدام جداول التوابع الظاهرية. يمكن تجاوز استخدام جداول التوابع الظاهرية بإضافة الاسم المؤهل الكامل للصف قبل استدعاء التابع في حال معرفة نمط الكائن إلا أن الاستدعاءات العامة للتوابع الظاهرية يتم حلها وقت التنفيذ باستخدام هذه الجداول.
بالإضافة إلى التوابع الأعضاء القياسية يمكن لتوابع التحميل الزائد للمعاملات والهوادم أن تكون ظاهرية أيضاً. تقول القاعدة العامة أنه في حال وجود تابع عضو ظاهري واحد على الأقل في الصف يجب أن يكون هادم الصف ظاهرياً أيضاً. بما أن نمط التابع وقت إنشائه يكون معروفاً وقت التصريف فإن البواني (وكذلك البواني الناسخة) لا يمكن أن تكون ظاهرية. على الرغم من ذلك قد تظهر بعض الحالات التي يضطر فيها إنشاء نسخة من الكائن عند تمرير مؤشر إلى كائن مشتق كمؤشر إلى كائن قاعدي. الحل الشائع لحالة كهذه يمكن في إنشاء تابع ظاهري ()clone (أو أي اسم آخر) ينشئ ويعيد نسخةً من الصف المشتق لدى استدعائه.
يمكن للتابع العضو أن يكون «ظاهرياً صرفاً» (بالإنجليزية: pure virtual)‏ من خلال إضافة 0= في نهاية التصريح عن التابع وقبل الفاصلة المنقوطة. يسمى الصف الذي يحتوي تابعاً عضواً ظاهرياً صرفاً واحداً على الأقل باسم نمط بيانات مجرد. لا يمكن إنشاء كائنات من أنماط البيانات المجردة. يمكن فقط اشتقاق أنماط البيانات المجردة. أي صف مشتق يرث تابعاً ظاهرياً صرفاً (أو أكثر) يجب أن يوفر تعريفاً غير-صرفٍ له لكي يمكن إنشاء كائنات منه. أي برنامج يحاول إنشاء كائنات من صف يحوي تابعاً ظاهرياً صرفاً أو يرث تابعاً ظاهرياً صرفاً (دون توفير تعريف غير-صرف له) هو برنامج سيئ التشكيل (بالإنجليزية: ill-formed)‏ بالنسبة لقواعد كتابة برنامج باستخدام ++C.
مزايا اللغة > تجزئة ومعالجة كود ++C المصدري

إن كتابة مجزئ باستخدام إحدى خوارزميات التجزيء الكلاسيكية كخوارزمية المجزئ يسار يمين أمامي (1)LALR مهمة صعبة نسبياً. يعود السبب في ذلك جزئياً إلى أن قواعد لغة ++C ليست في الحقيقة LALR. نتيجة ذلك يوجد عدد محدود جداً من الأدوات القادرة على معالجة الكود وإجراء تحويلات غير بديهية عليه (كإعادة هيكلة الكود مثلاً). إحدى طرق التغلب على هذه الصعوبة تمكن في اختيار نحو مختلف. يمكن لبعض المجزئات الفعالة مثل مجزئ يسار يمين المعمم القيام بتجزئة الكود بسهولة (إلا أنها أبطأ).
إن التجزيء (بمعنى بناء شجرة نحوية) ليس أصعب المهام اللازمة لبناء أداة معالجة كود ++C. إذ يجب على أدوات كهذه الإلمام بمعاني المعرّفات المستخدمة في البرنامج تماماً كما يفعل المصرف. يجب على الأنظمة الفعالة التي تعالج كود ++C أن لا تقوم فقط بتجزيء النص المصدري، بل يجب عليها أيضاً أن تنسب كل معرف إلى التعريف المناسب له تماماً وفق السياق (على سبيل المثال يجب عليها أن تتعامل بشكل صحيح مع قواعد نطاقات التسمية المعقدة) كما يجب عليها أن تقرر نمط المعرف وكذلك أنماط التعابير المركبة.
أخيراً يجب أن تستطيع أداة معالجة كود ++C التعامل مع عدد من لهجات ++C المستخدمة بشكل شائع (مثل تلك المدعومة من قبل GNU Compiler Collection و++Microsoft Visual C) وأن توفر المحللات وتحويلات الكود وإعادة توليد الكود المصدري المناسب لها. إن الدمج بين خوارزميات المتطورة مثل خوارزمية مجزئ يسار يمين المعمم مع جداول الرموز وتقنية تحويل النصوص المصدرية يتيح بناء كافة أدوات معالجة ++C. توفر جميع المصرفات أدواتاً للتجزيء. على الرغم من أن هنالك مصرف وحيد فقط يوفر مجزئاً يتمتع بالمرونة الكافية لدمجه مع أدوات الأخرى وهو Clang حيث يمكن استخدام المجزئ الخاص به كمكتبة ++C (أو C) جاهزة للاندماج في أدوات أخرى كبيئة تطوير متكاملة مثلاً.
مزايا اللغة > التوافقية

يواجه منتجو المصرفات صعوبات جمة في بناء مصرف متوافق بشكل كامل مع معيار ++C. فقد طبقت العديد من المصرفات لسنواتٍ كثيرة لغة ++C بمستويات متفاوتة من ناحية التوافق مع المعيار، وقد اختلفت أساليب تحقيق بعض جوانب اللغة مثل تخصيص القوالب الجزئي فيما بينها إلى درجة عالية. تدعم الإصدارات الحديثة لمعظم مصرفات ++C الشهيرة أغلبية معيار C++ 1998.
لم تملِ لجنة معيار ++C كيفية تحقيق تغيير أسماء الرموز ومعالجة الاستثناءات ومزايا أخرى متعلقة بالتحقيق بهدف إعطاء منتجي المصرفات حرية أكبر في بناء مصرفاتهم. إن الجانب السلبي من هذا القرار هو أن الكود الكائني الذي تنتجه المصرفات المختلفة سيكون مختلفاً وغير متوافق على الأغلب. مع ذلك كان هناك عدة محاولات لتعيير المصرفات التي تعمل على أجهزة وأنظمة تشغيل محددة (على سبيل المثال مقاربة C++ ABI ) على الرغم من أن أغلبها يبدو مهملاً الآن.
مزايا اللغة > التوافقية > القوالب المُصدّرة

تعتبر الكلمة المفتاحية export إحدى النقاط التي ساد حولها خلاف كبير. تهدف هذه الكلمة المفتاحية إلى إتاحة إمكانية فصل التصريح عن القوالب عن تعريفها. تأخر تحقيق هذه الميزة حتى عام 2003، أي بعد خمس سنوات من نشر المعيار، وكان ++Cameau C/C أول مصرف يقوم بذلك؛ خلال عام 2004 طُرحت النسخة بيتا من المصرف Borland C++ Builder X مع دعم للكلمة المفتاحية export. كلا المصرفان مبنيان على الواجهة الأمامية من المصرف ++EDG C. في حين لا تدعم العديد من المصرفات كـGCC هذه الميزة أساساً.
في كتاب ++Beginning ANSI C يقدم المؤلف إيفور هورتون مثالاً عن كود ++C يستخدم فيه هذه الكلمة المفتاحية بحيث لا يعمل على أغلب المصرفات دون الإشارة صراحة إلى السبب في ذلك. لقد أوصى المدير السابق للجنة معيار ++C هيرب شتر إلى ضرورة إزالة هذه الكلمة المفتاحية من الإصدارات المستقبلية لمعيار ++C بهدف حسم هذه المعضلة بشكل نهائي. وبالفعل فقد قررت لجنة معيار ++C خلال اجتماعها في 10 آذار 2010 إزالة مفهوم القوالب المصدّرة بشكل كامل من المعيار C++11 إلا أنها قررت الإبقاء على الكلمة المفتاحية export من أجل الاستعمال المستقبلي.
مزايا اللغة > التوافقية > التوافق مع لغة C

غالباً ما يتم اعتبار لغة ++C أنها تشتمل على لغة C إلا أن هذا الاعتبار ليس تام الصحة. من الممكن القيام بتصريف أغلب الكود المكتوب بلغة C ضمن بيئة ++C بشكل صحيح إلا أن هذا لا ينفي وجود بعض الاختلافات التي تجعل بعض الكود المكتوب بشكل شرعي بلغة C غير صحيح أو مختلف الأداء ضمن بيئة ++C.
أحد الاختلافات الشهيرة بين اللغتين هو قيام لغة C بالتحويل ضمنياً للنمط *void إلى أنماط مؤشرات أخرى في حين لا تقوم ++C بذلك (بهدف تعزيز ميزة التنميط الآمن). توجد أيضاً مشكلات في المحمولية بين اللغتين إذ تعرف لغة ++C العديد من الكلمات المفتاحية الجديدة مثل new وclass والتي يمكن استخدامها كمعرّفات (أسماء متحولات على سبيل المثال) في برنامج مكتوب بلغة C.
لقد أزيلت بعض عقبات عدم التوافقية في تنقيح معيار لغة C (المسمى C99) الذي تم عام 1999، حيث أضيفت بعض ميزات ++C إلى لغة C كالتعليقات السطرية (//) وإمكانية الدمج بين التصاريح وبقية أجزاء الكود. في نفس الوقت أدخل المعيار C99 عدداً من الميزات الجديدة التي لا تدعمها لغة ++C مسببة عدم التوافق أو أنها موجودة في لغة ++C ولكن بأسلوب آخر مسببة زيادةً غير مرغوبة، على سبيل المثال تعرف C99 النمط complex المعرف بلغة ++C بالصف complex الموجود ضمن مكتبة ++C القياسية، كذلك دعم C99 للمصفوفات ذات الأبعاد المتغيرة وتعريفها النمط boolean كـاسم مستعار بـtypedef في حين أنه نمط بيانات أساسي في لغة ++C، إضافة إلى إضافة الكلمة المفتاحية restrict. أٌدخلت بعض ميزات C99 الجديدة في الإصدار التالي من معيار ++C وهو C++11:
ميزات المعالج التحضيري (بالإنجليزية: preprocessor)‏ الخاص بـC99 (بما فيها الماكرو ذات العدد المتغير من الوسطاء والعمليات الحسابية على معاملات كبيرة القيمة)
()Pragma_
النمط long long
__func__
الملفات الرأسية التالية:
cstdbool من (stdbool.h)
cstdint من (stdint.h)
cinttypes من (inttypes.h)
إن دمج كود C مع كود ++C يتطلب أن يسبق تصريح أي تابع يتم التعامل معه من اللغتين معلومةً تشير إلى ضرورة استخدام C للقيام بربطه مع بقية البرنامج (يتم ذلك عبر استخدام {*...*} "extern "C) تفادياً لاستخدام تقنية ربط ++C التي تغير اسم التابع (بهدف تمييز التوابع المحملة بشكل زائد عن بعضها).
انظر أيضا

قائمة بمصرفات ++C/C
الصفوف في ++C
المتحولات (المتغيرات) في ++C
الأنماط في ++C
التحويل (القسر) بين الأنماط في ++C
كاشف الصدمات

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

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

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

مبنى الرجل الميت
| 0 | 1 |
| --- | --- |
التصنيف:  فيلم تلفزيوني 
الصنف الفني:  فيلم غموض — فيلم مقتبس من رواية 
تاريخ الصدور:  1986
مدة العرض:  95 دقيقة  
اللغة الأصلية:  لغة إنجليزية
مأخوذ عن:  مبنى الرجل الميت 
البلد:  الولايات المتحدة الأمريكية
| 0 | 1 |
| --- | --- |
المخرج:  Clive Donner (en)  
البطولة:   القائمة ... بيتر أوستينوف  في دور: هرقل بوارو جان ستابلتون  كونستانس كامينغز  تيم بيجوت-سميث  Jonathan Cecil (en)  
التصوير:  Curtis Clark (en)  
الموسيقى:  جون أديسون 
| 0 | 1 |
| --- | --- |
المنتج:  Neil Hartley (en)  
التوزيع:  سي بي إس
نسق التوزيع:  فيديو حسب الطلب 
شبكة البث الأصلية:  سي بي إس 
تعديل - تعديل مصدري - تعديل ويكي بيانات
مبنى الرجل الميت (بالإنجليزية: Dead Man's Folly) هو فيلم بريطاني أمريكي تلفزيوني لعام 1986 ويضم محقق أجاثا كريستي الشهير هيركيول بوارو. ويستند هذا الفيلم إلى رواية لأجاثا كريستي بنفس الاسم. والفيلم من إخراج كلايف دونر ولعب بيتر أوستينوف دور بوارو.
بطولة

بيتر اوستينوف - هيركيول بوارو
جان ستابلتون - أريادني أوليفر
كونستانس كامينغز - ايمي فوليات
تيم بجوت سميث - السير جورج ستابس
جوناثان سيسيل - الكابتن آرثر هستنغز
كينيث كرانهام - المحقق المفتش بلاند
سوزان ولدريدج - أماندا بريوز
كريستوفر غارد - أليك ليجي
جيف ياغر - إدي ساوث
نيكوليت شيريدان - هاتي ستابس | طالبة الإيطالية (نيكوليت شيريدان)
رالف أرليس - مايكل ويمان
كارولين لانغريش - سالي ليجي
مراجع

↑  "معلومات عن مبنى الرجل الميت (فيلم) على موقع imdb.com". imdb.com. مؤرشف من الأصل في 2019-09-08.
↑  "معلومات عن مبنى الرجل الميت (فيلم) على موقع kinopoisk.ru". kinopoisk.ru. مؤرشف من الأصل في 2016-04-09.
↑  "معلومات عن مبنى الرجل الميت (فيلم) على موقع ssl.ofdb.de". ssl.ofdb.de. مؤرشف من الأصل في 2020-07-16.
بوابة المملكة المتحدة
بوابة الولايات المتحدة
بوابة تلفاز
بوابة سينما
بوابة عقد 1980
بيتر إي. بيرغر

| بيتر إي>  بيرغر | بيتر إي>  بيرغر |
| --- | --- |
 معلومات شخصية :  معلومات شخصية 
الميلاد: 30 مايو 1944     لوس أنجلوس  
الوفاة: 22 سبتمبر 2011 (67 سنة)       لوس أنجلوس  
مواطنة:  الولايات المتحدة  
 الحياة العملية  :  الحياة العملية  
المهنة: مونتير  
المواقع : المواقع 
IMDB: صفحته على IMDB  
تعديل مصدري - تعديل  : تعديل مصدري - تعديل  
بيتر إي. بيرغر (بالإنجليزية: Peter E. Berger)‏ هو مونتير أمريكي، ولد في 30 مايو 1944 في لوس أنجلوس في الولايات المتحدة، وتوفي بنفس المكان في 22 سبتمبر 2011.
مراجع

↑   http://www.variety.com/article/VR1118044606. {{استشهاد ويب}}: |url= بحاجة لعنوان (مساعدة) والوسيط |title= غير موجود أو فارغ (من ويكي بيانات) (مساعدة)
↑  "Explore the Awards | BAFTA Awards". Bafta.org. مؤرشف من الأصل في 2012-03-20. اطلع عليه بتاريخ 2013-10-03.
↑  Berger cut television program episodes for Carter in 1984 and 1990, and Carter's films starting with Metro (1997); see "Most Popular Films and Television Episodes With Thomas Carter And Peter E. Berger". Internet Movie Database. مؤرشف من الأصل في 2016-04-06. اطلع عليه بتاريخ 2015-11-06.
↑  "Peter E. Berger : Awards". IMDb.com. مؤرشف من الأصل في 2016-03-08. اطلع عليه بتاريخ 2013-11-28.
وصلات خارجية

بيتر إي. بيرغر على موقع IMDb (الإنجليزية)
بيتر إي. بيرغر على موقع ألو سيني (الفرنسية)
بيتر إي. بيرغر على موقع أول موفي (الإنجليزية)
بيتر إي. بيرغر على موقع قاعدة بيانات الأفلام السويدية (السويدية)
بيتر إي. بيرغر على موقع قاعدة بيانات الفيلم (الإنجليزية)
بيتر إي. بيرغر على موقع كينوبويسك (الروسية)
| ضبط استنادي  | ضبط استنادي  |
| --- | --- |
دولية:  الاسم المعياري الدولي (ISNI)  ملف الضبط الاستنادي الافتراضي الدَّولي (VIAF)  مركز المكتبة الرقمية على الإنترنت (WC Entities) 
وطنية:  الملف الاستنادي المتكامِل (GND)  مكتبة الكونغرس (LCNAF) 
بوابة الولايات المتحدة
بوابة أعلام
موجة P

موجة P
| 0 | 1 |
| --- | --- |
صنف فرعي من:  onde sismique de fond (fr)  موجة طولية 
العنوان:  Pressure-Waves (بالإنجليزية)  
اسم المُؤَلِّف بالحروف:  Ledyard LW 
لغة العمل أو لغة الاسم:  الإنجليزية 
تاريخ النشر:  1 فبراير 1890 
المُجلَّد:  15 
العدد:  366 
الصفحة:  99 
النقيض:  موجة S 
تعديل - تعديل مصدري - تعديل ويكي بيانات
تخطيط الموجة P
موجة P أو الموجة الأولية (بالإنجليزية: Primary Wave)‏، هي واحدة من اثنتين من الموجات المرنة أو ما يُسمى بالموجة الزلزالية، وهي أسرع الموجات وأولها وصولاً إلى جهاز السيزموجراف وهي موجات تضاغطية (دفع وجذب) سريعة الانتشار تنتقل خلال المواد الصلبة والسائلة والغازية، تؤدي إلى ذبذبة الوسط الذي تخترقه في اتجاه سيرها نفسه وتتراوح سرعتها بين 5. 5 و 13.8 كيلومتراً في الثانية وتزداد سرعتها كلما زاد العمق في باطن الأرض.
انظر أيضاً

موجة S
موجة سطحية
مراجع

1 2 3 4 5 6  "الطب للعموم في أوروبا" (بالإنجليزية). Retrieved 2020-01-05.
↑  "معلومات عن موجة P على موقع jstor.org". jstor.org. مؤرشف من الأصل في 2020-01-09.
بوابة الفيزياء
بوابة علوم الأرض