رمز ميت
يُستخدم مصطلح "الرمز الميت" بتعريفات متعددة. فبعضهم يستخدمه للإشارة إلى التعليمات البرمجية (أي التعليمات الموجودة في الذاكرة) التي لا يمكن تنفيذها أثناء تشغيل البرنامج. [ 1 ] [ 2 ] [ 3 ] وفي بعض مجالات برمجة الحاسوب ، يُعرَّف الرمز الميت بأنه جزء من شفرة المصدر لبرنامج ما، يتم تنفيذه ولكن لا تُستخدم نتيجته في أي عملية حسابية أخرى. [ 4 ] [ 5 ] ويؤدي تنفيذ الرمز الميت إلى إهدار وقت المعالجة والذاكرة.
على الرغم من أن نتيجة عملية حسابية غير مستخدمة قد لا تُستخدم أبدًا، إلا أنها قد تُثير استثناءات أو تُؤثر على حالة عامة، وبالتالي فإن إزالة هذا النوع من التعليمات البرمجية قد تُغير مُخرجات البرنامج وتُدخل أخطاءً غير مقصودة . عادةً ما تكون تحسينات المُترجم مُتحفظة في نهجها لإزالة التعليمات البرمجية غير المستخدمة إذا كان هناك أي غموض حول ما إذا كانت إزالة هذه التعليمات ستؤثر على مُخرجات البرنامج. يُمكن للمُبرمج مُساعدة المُترجم في هذا الأمر من خلال استخدام الدوال الثابتة و/أو الدوال المُضمنة بشكل إضافي ، وتمكين استخدام تحسين وقت الربط .
مثال
دالة foo ( int x , int y ) { int z = x / y ; return x * y ; }في مثال كود C أعلاه، على الرغم من أن عملية القسمة على xصفر yتُحسب ولا تُستخدم، إلا أنها ستُثير إشارة خطأ SIGFPE (إشارة استثناء الفاصلة العائمة) عند حدوث قسمة على صفر. لذلك، قد يؤدي حذف هذا الجزء من الكود إلى تغيير مخرجات البرنامج.
تحليل
يُعدّ حذف التعليمات البرمجية غير المستخدمة أحد أساليب تحسين أداء المترجمات ، حيث يتمّ إزالة التعليمات البرمجية غير المستخدمة من البرنامج. ويمكن إجراء تحليل التعليمات البرمجية غير المستخدمة باستخدام تحليل المتغيرات النشطة ، وهو أحد أشكال تحليل التعليمات البرمجية الثابتة ، بالإضافة إلى تحليل تدفق البيانات . وهذا يختلف عن تحليل التعليمات البرمجية غير القابلة للوصول، والذي يعتمد على تحليل تدفق التحكم .
تندرج تقنية إزالة التعليمات البرمجية غير المستخدمة ضمن نفس فئة التحسينات مثل إزالة التعليمات البرمجية التي لا يمكن الوصول إليها وإزالة التعليمات البرمجية الزائدة .
في مشاريع البرمجة الكبيرة، يصعب أحيانًا تحديد التعليمات البرمجية غير المستخدمة وإزالتها، لا سيما عندما تصبح وحدات برمجية كاملة غير مستخدمة. قد يُوهم تصميم نماذج الاختبار بأن التعليمات البرمجية لا تزال قيد الاستخدام، وفي بعض الأحيان، قد تتطلب بنود العقد تسليم التعليمات البرمجية حتى عندما تصبح غير ذات صلة. [ 6 ]
تتمتع بعض بيئات التطوير المتكاملة (مثل Xcode و Visual Studio 2010 [ 7 ] و Eclipse Galileo [ 8 ] ) بالقدرة على تحديد موقع التعليمات البرمجية غير المستخدمة أثناء مرحلة التجميع.
بينما تسعى معظم تقنيات التحسين إلى إزالة التعليمات البرمجية غير المستخدمة في التنفيذ، قد يكون من المستحسن أحيانًا، في حالات التحسين القصوى لتقليل الحجم، إدخال تعليمات برمجية تبدو غير مستخدمة وتشكيلها بعناية، وذلك عندما يسمح ذلك بدمج أجزاء من التعليمات البرمجية غير المترابطة (وبالتالي تقليل حجمها الإجمالي) بحيث لا تؤثر هذه التعليمات الإضافية على مسار التنفيذ الأول، بل تُستخدم لتنفيذ الإجراءات اللازمة لمسارات التنفيذ البديلة، والتي قد تصبح أجزاء أخرى من التعليمات البرمجية غير مستخدمة فيها. على مستوى وظيفي أدق، يمكن اعتبار ذلك بمثابة إدخال مصطنع لآثار جانبية غير ضارة/مفيدة وتقليل لتكرار التعليمات البرمجية، كما يمكن استخدامه حتى على مستوى التعليمات البرمجية الفرعية للسماح باستخدام تعليمات أقصر، وهو أمر غير ممكن عند دمج تسلسلات التعليمات البرمجية دون إدخال الآثار الجانبية الناتجة عن التعليمات البرمجية غير المستخدمة.
انظر أيضاً
- إزالة التعليمات البرمجية غير المستخدمة
- كود زائد
- رمز غير قابل للوصول
- رمز أوكس بو
- 0xDEADC0DE هو رقم سحري مكتوب بلغة Hexspeak ويستخدم كعلامة في برنامج OpenWRT الثابت
مراجع
- ↑ "هونغوي شي، إزالة التعليمات البرمجية غير المستخدمة من خلال الأنواع التابعة" (ملف PDF) . مؤرشف من الأصل (ملف PDF) بتاريخ 10 مارس 2012. تم الاطلاع عليه بتاريخ 6 مايو 2020 .
- ↑أُرشف بتاريخ ٢٠ مايو ٢٠٢٠ في أرشيف الإنترنت (Wayback Machine) DO-178B
- ^ دو-178ب ويكيبيديا/دو-178ب.
- ↑ ديبري، إس كيه، إيفانز، دبليو، موث، آر، ودي سوتر، بي. 2000. تقنيات المترجم لضغط الكود. معاملات ACM لأنظمة لغات البرمجة 22، 2 (مارس 2000)، 378-415.
- ↑ أبيل، أ.و. 1998. التنفيذ الحديث للمترجمات في جافا. مطبعة جامعة كامبريدج.
- ↑ دوغلاس دبليو. جونز، صيانة التعليمات البرمجية الميتة، المخاطر 8.19 (1 فبراير 1989)، مؤرشف في 8 يوليو 2011 على موقع Wayback Machine
- ↑ حبيب حيدريان، شركة مايكروسوفت
- ↑ دليل مطوري Eclipse
روابط خارجية
- يقوم كاشف التعليمات البرمجية غير المستخدمة (DCD) ببساطة بالعثور على التعليمات البرمجية التي لم يتم استخدامها مطلقًا في تطبيقات Java/JEE الخاصة بك
- مقارنات بين بعض أدوات كشف التعليمات البرمجية غير المستخدمة في جافا
- إضافة UCDetector لبرنامج Eclipse للعثور على أكواد جافا غير المستخدمة
- بناء المترجم
- شفرة المصدر
- شذوذ البرمجيات
