الفريق العربي للهندسة العكسية
2.10 سلامة النوع - Type safety - نسخة قابلة للطباعة

+- الفريق العربي للهندسة العكسية (https://www.at4re.net/f)
+-- قسم : منتديات البرمجة - Programming Forums (https://www.at4re.net/f/forum-5.html)
+--- قسم : البرمجة بلغة السى و السى بلس بلس ++C & C (https://www.at4re.net/f/forum-17.html)
+--- الموضوع : 2.10 سلامة النوع - Type safety (/thread-4026.html)



2.10 سلامة النوع - Type safety - R333T - 19-05-2024

[صورة مرفقة: dark.jpg]
رحلة في عالم البرمجة: إتقان أساسيات البرمجة وتطبيقاتها باستخدام لغة C++

https://www.youtube.com/playlist?list=PL...qaKxmAKHrq


# الفصل 0 : تمهيد # الفصل 1 : # الفصل 2 : 


سلامة النوع - Type safety.

كل كائن يتم تعيينه نوعًا عند تعريفه، وهذا النوع لا يتغير أبدًا.
يكون البرنامج - أو جزء من البرنامج - آمنًا من النوع عند استخدام جميع الكائنات وفقًا لقواعد نوعها.
يعتبر الأمان التام من النوع المثالي والقاعدة العامة للغة.
للأسف، لا يمكن لمترجم C++ بمفرده ضمان الأمان التام من النوع للكود التعسفي، لذا يجب علينا تجنب التقنيات غير الآمنة.
أي أنه يجب علينا الامتثال لبعض قواعد البرمجة لتحقيق الأمان من النوع.

هناك طرق لفرض هذه القواعد، ولكن تاريخيًا، اعتبرت هذه القواعد محدودة بشكل زائد ولم يتم فرضها بشكل منتظم.
نظرًا للاعتماد على الإصدارات القديمة من C++ (قبل المعايير الحديثة لـ ISO C++) والتقنيات المعتمدة من لغة C، كان ذلك لا مفر منه ولذلك ليس غير معقول.
ومع ذلك، عند استخدام C++ الحديثة وأدوات التحليل الحديثة، يمكن التحقق من أمان النوع لمعظم استخدامات C++.
الهدف هو أبدًا استخدام ميزات اللغة التي لا يمكن إثبات سلامتها من النوع قبل بدء تنفيذ البرنامج: الأمان الثابت من النوع.
باستثناء الكود المستخدم بوضوح لتوضيح التقنيات غير الآمنة، يتبع إرشادات نواة C++ [CG] وقد تم التحقق من أمان النوع.
الهدف من الأمان من النوع مهم للغاية عند كتابة الكود الموثوق به.
لهذا السبب نقضي وقتًا على ذلك.
يرجى ملاحظة المصائد وتجنبها.
إذا لم تفعل ذلك، فستواجه الكثير من الإحباط وسيحتوي الكود الخاص بك على العديد من الأخطاء الغامضة.




على سبيل المثال، استخدام متغير غير مبتدئ ليس من الأمان من النوع:
int main()
{
double x; // we "forgot" to initialize: the value of x is undefined
double y = x; // the value of y is undefined
double z = 2.0+x; // the meaning of + and the value of z are undefined
}


قم دائمًا بتهيئة متغيراتك! يمكن للتنفيذات تنفيذ هذه القاعدة بسهولة، ولكن لسوء الحظ عادةً ما لا يفعلون ذلك افتراضيًا. باستثناء، لحسن الحظ، لأنواع مثل السلسلة والفكتور حيث يتم ضمان التهيئة الافتراضية.
اكتشف كيفية تمكين التحذيرات (غالبًا بخيار المترجم -Wall)  (often a -Wall compiler option) والالتزام بها. فعل ذلك سيوفر لك الكثير من العناء.

تأتي تنفيذات C++ الحديثة أيضًا مع أدوات تحليل ثابتة مهمة تسمح لنا بمنع المشاكل الأكثر دقة.
يستخدم المحترفون مثل هذه الأدوات بشكل واسع، وسوف تستخدمها أيضًا إذا أصبحت أو تهدف لتصبح محترفًا، ولكن في هذه المرحلة الأولية من التعلم، اتبع فقط القواعد والأساليب المستخدمة.


 dance