تكنولوجيا

ماهو الفرق؟ – تقنية المعلومات الذكية

الصورة أعلاه / تحسين المهارات

مشاكل الكمبيوتر. سوف نحصل عليها عاجلاً أم آجلاً. يعد فهم خصوصيات وعموميات الأخطاء والتأكيدات والانهيارات وما إلى ذلك أمرًا ضروريًا لمعرفة المزيد حول المشكلة المطروحة. افهم كل هذا.

ما هو تأكيد؟

عندما يبدأ المطورون في كتابة التعليمات البرمجية ، سيقدمون قريبًا if من بين البيانات.واحد if استخدم العبارة كلما احتجت إلى اختبار حالة معينة.على سبيل المثال ، قد يكتب شخص ما قطعة من الشفرة الزائفة if البيان كالتالي:

if (water_stage > significant_water_mark) then 
  elevate_warn


بمعنى آخر ، إذا تجاوز منسوب المياه المستوى العالي ، فسيتم إصدار إنذار. ولكن ربما يكون مستشعر المياه مكسورًا ، لذلك نقوم بتحديث الكود ليتوافق:

if (sensor_readout == nonsensical) then 
  increase_error
  fail
else
  if (h2o_level > significant_h2o_mark) then 
    raise_inform
  


رائع ، إذا كان sensor_readout لا معنى له ، فسنحصل الآن على خطأ ونتسبب في فشل الروتين.وفقط إذا ثبت أن القيمة معقولة (بسبب else فقرة – أي ما يجب فعله في الحالة المعاكسة) ، استمر في التحقق من مستوى الماء وفقًا للعلامة المائية العالية.

ومع ذلك ، ربما قام شخص ما بإيقاف تشغيل الطاقة عن المستشعر. يمكننا الاستمرار في القيام بذلك لفترة من الوقت. يمكننا تغطية جميع السيناريوهات الممكنة التي يمكن تخيلها ، لكننا ما زلنا نفتقد بعضها.بالطبع ، يمكننا تغطية جميع المواقف الممكنة عن طريق المطابقة else البنود وتحقق مما إذا كان كل شرط قد تم التحقق منه مقابل شرط آخر ، ولكن حتى في هذه الحالة ، ربما فاتنا بعض مجموعات المتغيرات.

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

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

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

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

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

سوف نتحقق من درجة حرارة أقصاها 70 درجة مئوية بدلاً من درجة الغليان (100 درجة مئوية) ، والتي ، على الأقل في رأينا ، لن تصل أبدًا إلى درجة الحرارة هذه عند التفكير في تجميع مياه الأمطار. تذكر كلمة “رأي” لأنها تصبح مهمة عند التفكير في حكمة المطور الذي ينفذ التأكيد. (المزيد عن هذا أدناه).

if (sensor_readout == nonsensical) then 
  elevate_error
  fail
else
  assert (h2o_temp < 70.0) &#13
    raise_assert_message &#13
    fail &#13
    exit &#13
   &#13
  if (water_level> significant_h2o_mark) then 
    increase_notify
  


نكتب التأكيدات بدورنا. يجب أن يؤكد الكود أن درجة حرارة الماء أقل من 70 درجة مئوية. إذا لم يكن الأمر كذلك ، فسيتم تنفيذ كتلة التعليمات البرمجية ، والتي ستطلق رسالة تأكيد ، وبعد ذلك سيفشل البرنامج ويخرج.

التأكيد في الكود الفعلي مشابه جدًا للمثال أعلاه. إنهم يختبرون ما إذا كان الموقف المعين قابلاً للتطبيق ثم يوقفون (أو يتعطلون بطريقة خاضعة للرقابة) البرنامج / البرنامج في متناول اليد.

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

عادة ما تكون رسائل التأكيد أخطاء ، على الرغم من أنها قد تكون مجرد أخطاء في منطق المطور. بعد كل شيء ، من قال أنه في غضون 1000 عام ، قد لا يتجاوز المطر 70 درجة مئوية؟ (لكننا لا نأمل!)

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

Assert: (water_temp < 70): (88 < 70): false&#13

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

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

ما هو خطأ؟

لأسباب مختلفة ، تستمر أخطاء الحساب في الحدوث. تحدث على مستوى المطور والمستخدم وفي كل خطوة بينهما. على سبيل المثال ، قد ينسى مهندس DevOps تضمين الملفات الضرورية ، أو قد يستخدم الموقّع على الحزمة المفتاح الخطأ لتوقيع البرنامج ، وما إلى ذلك.

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

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

الأخطاء مختلفة تمامًا ومختلفة عن رسائل التأكيد ، حتى لو كانت رسالة التأكيد نفسها يمكن اعتبارها خطأ ، أو بالأحرى حالة غير محددة يغطيها التأكيد الآن. بشكل عام ، يمكن عادةً ترجمة أخطاء الكمبيوتر بشكل جيد إلى "أنا بحاجة إلى شخص لحل هذه المشكلة".

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

ما هو تصادم؟

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

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

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

إذا كنت تريد معرفة المزيد حول تصحيح الأخطاء ، بما في ذلك تحليل ملفات التفريغ الأساسية ، فقد تجد أننا مهتمون بمقالة تصحيح أخطاء GDB: الشروع في العمل.

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

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

يتم إحتوائه

في هذه المقالة ، استكشفنا مفاهيم التأكيدات والأخطاء والأعطال والعلاقة بينها. لقد بحثنا في الشكل الذي قد تبدو عليه التأكيدات داخل الكود ، وكيف يرتبط ذلك بأمثلة حقيقية لاستخدام مستشعرات المياه لمراقبة مستوى المياه ودرجة الحرارة. في المرة القادمة التي تصادف فيها رسالة تأكيد ، يرجى التحقق منها بعناية والاستمتاع بالتصحيح!

مقالات ذات صلة

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى