مبدأ أقل قدر من الدهشة
في تصميم واجهات المستخدم وتصميم البرمجيات ، [ 1 ] يقترح مبدأ أقل قدر من الدهشة ( POLA )، المعروف أيضًا بمبدأ أقل قدر من المفاجأة ( POLS )، [ أ ] أن يتصرف مكون النظام بطريقة يتوقعها معظم المستخدمين، وبالتالي لا يثير دهشتهم أو مفاجأتهم. وفيما يلي نتيجة منطقية لهذا المبدأ: "إذا كانت إحدى الميزات الضرورية تتطلب قدرًا كبيرًا من الدهشة، فقد يكون من الضروري إعادة تصميمها." [ 4 ]
يُستخدم هذا المبدأ في مجال التفاعل مع الحاسوب منذ سبعينيات القرن الماضي على الأقل. ورغم أنه وُضع في البداية في مجال تكنولوجيا الحاسوب، إلا أنه قابل للتطبيق على نطاق واسع في مجالات أخرى. فعلى سبيل المثال، عند الكتابة ، ينبغي صياغة الإشارة المرجعية إلى جزء آخر من العمل أو الرابط التشعبي بطريقة تُوضح للقارئ بدقة ما يمكن توقعه.
أصل
ظهرت إشارة مبكرة إلى "قانون أقل قدر من الدهشة" في نشرة PL/I عام 1967 (PL/I هي لغة برمجة أصدرتها شركة IBM عام 1966). [ 5 ] وبحلول أواخر الستينيات، اشتهرت PL/I بانتهاكها لهذا القانون، [ 6 ] فعلى سبيل المثال، بسبب قواعد تحويل الدقة في PL/I، [ 7 ] فإن التعبيرين 25 + 1/3و 1/3 + 25ينتجان إما خطأً فادحًا، أو، في حال كبت الأخطاء، ينتجان القيمة 5.33333333333 بدلاً من القيمة الصحيحة 25.33333333333. [ 8 ] [ 9 ] [ 10 ] [ 11 ]
ظهر القانون لأول مرة في الطباعة عام 1972: [ 12 ]
بالنسبة لأجزاء النظام التي لا يمكن تعديلها لتناسب خصائص المستخدم، ينبغي على مصممي لغة برمجة الأنظمة الالتزام بـ "قانون أقل قدر من الدهشة". باختصار، ينص هذا القانون على أن كل بنية في النظام يجب أن تتصرف تمامًا كما يوحي تركيبها النحوي. وينبغي اتباع الأعراف المقبولة على نطاق واسع كلما أمكن ذلك، وتقليل الاستثناءات من القواعد المُثبتة مسبقًا للغة إلى أدنى حد.
التركيبة
إحدى الصياغات النموذجية هي: "الناس جزء من النظام. يجب أن يتوافق التصميم مع تجربة المستخدم وتوقعاته ونماذجه الذهنية ." [ 13 ]
يهدف هذا المبدأ إلى الاستفادة من المعرفة الحالية للمستخدمين لتقليل وقت التعلم ، وذلك على سبيل المثال من خلال تصميم واجهات مستخدم تستوحي وظائفها بشكل كبير من "برامج مشابهة أو مماثلة وظيفيًا من المرجح أن يكون المستخدمون على دراية بها". [ 2 ] قد ترتبط توقعات المستخدمين في هذا الصدد ارتباطًا وثيقًا بمنصة حوسبة أو تقليد معين . على سبيل المثال، من المتوقع أن تتبع برامج سطر أوامر يونكس اصطلاحات معينة فيما يتعلق بالمفاتيح ، [ 2 ] ومن المتوقع أن تتبع أدوات برامج مايكروسوفت ويندوز اصطلاحات معينة فيما يتعلق باختصارات لوحة المفاتيح . [ 14 ] في بيئات أكثر تجريدًا مثل واجهة برمجة التطبيقات (API) ، يُعد توقع أن تتطابق أسماء الدوال أو الطرق بشكل بديهي مع سلوكها مثالًا آخر. [ 15 ] تتضمن هذه الممارسة أيضًا تطبيق إعدادات افتراضية مناسبة . [ 4 ]
عندما يتعارض عنصران من عناصر واجهة المستخدم، أو يكونان غامضين، ينبغي أن يكون السلوك هو ما يقلل من مفاجأة المستخدم ؛ وعلى وجه الخصوص، ينبغي للمبرمج أن يحاول التفكير في السلوك الذي يقلل من مفاجأة مستخدم البرنامج، بدلاً من السلوك الطبيعي الناتج عن معرفة آلية عمل البرنامج. [ 4 ]
قد يعتمد اختيار السلوك "الأقل إثارة للدهشة" على الجمهور المتوقع (على سبيل المثال، المستخدمون النهائيون أو المبرمجون أو مسؤولو النظام ). [ 2 ]
أمثلة
تتيح المواقع الإلكترونية التي توفر اختصارات لوحة المفاتيح عادةً الضغط ?لعرض الاختصارات المتاحة. ومن الأمثلة على ذلك Gmail [ 16 ] و YouTube [ 17 ] و Jira [ 18 ] .
في أنظمة تشغيل ويندوز وبعض بيئات سطح المكتب لنظام لينكس ، يفتح مفتاح الوظائف عادةً برنامج المساعدة الخاص بالتطبيق . يوجد اختصار مشابه في نظام ماك أو إس وهو ++ . يتوقع المستخدمون ظهور نافذة مساعدة أو قائمة سياقية عند الضغط على مفتاح (مفاتيح) المساعدة المعتادة. أما البرامج التي تستخدم هذا الاختصار لميزة أخرى، فمن المرجح أن تُثير استغراب المستخدمين إذا لم تظهر أي مساعدة . [ 19 ]F1⌘ Command⇧ Shift/
عادةً ما توفر المكتبة القياسية للغات البرمجة دالةً مشابهةً للشيفرة الزائفة ، تُنشئ عددًا صحيحًا قابلًا للقراءة آليًا من سلسلة من الأرقام القابلة للقراءة بشريًا . ويُفترض أن يكون الأساس 10، ما يعني أن السلسلة تُفسَّر على أنها عشرية (أساس 10). تدعم هذه الدالة عادةً أسسًا أخرى، مثل الثنائي (أساس 2) والثماني (أساس 8)، ولكن فقط عند تحديدها صراحةً. وخروجًا عن هذا الاصطلاح، اعتمدت جافا سكريبت في الأصل الأساس 8 للسلاسل التي تبدأ بـ "0"، ما تسبب في ارتباك المطورين وأخطاء برمجية . [ 20 ] وقد تم التخلي عن هذا في ECMAScript 3، وأُلغي في ECMAScript 5. [ 21 ]ParseInteger(string, radix)
تستخدم بعض مجتمعات التطوير مثل FreeBSD [ 22 ] POLA كأحد المبادئ التوجيهية لما يجعل تجربة المستخدم غير مفاجئة.
انظر أيضاً
ملحوظات
مراجع
- ↑ سيباخ، بيتر (1 أغسطس 2001). "مبدأ أقل قدر من الدهشة" . المستخدم المتذمر . IBM DeveloperWorks. مؤرشف من الأصل في 1 فبراير 2014. تم الاطلاع عليه في 23 يناير 2014 .
- 1 2 3 4 ريموند، إريك ستيفن (2003). "تطبيق قاعدة أقل قدر من المفاجأة". فن برمجة يونكس . faqs.org. ص 20. ISBN 978-0-13-142901-7تم الاطلاع عليه بتاريخ 23 أغسطس 2020 .
- ^ جيمس ، جيفري (1987). تاو البرمجة . كتب المعلومات. 4.1. رقم ISBN 0-931137-07-1تم الاطلاع عليه بتاريخ 2014-02-05 .
- ١ ٢ ٣ كوليشو، إم إف (١٩٨٤). "تصميم لغة REXX" (ملف PDF) . مجلة أنظمة IBM . ٢٣ (٤): ٣٣٣. doi : 10.1147/sj.234.0326 . تاريخ الاسترجاع: ٢٠١٤-٠١-٢٣ .
هل يمكن أن يكون هناك عامل دهشة كبير مرتبط بالميزة الجديدة؟ إذا قام المستخدم بتطبيق ميزة ما بشكل خاطئ عن طريق الخطأ، مما تسبب في نتيجة تبدو له غير متوقعة، فإن هذه الميزة تتمتع بعامل دهشة كبير، وبالتالي فهي غير مرغوب فيها. إذا كانت الميزة الضرورية تتمتع بعامل دهشة كبير، فقد يكون من الضروري إعادة تصميمها.
- ↑ ساوثوورث، آر إن (ديسمبر 1967). ساوثوورث، آر إن (محرر). "اقتراح لاسم مستعار لـ PL/I" . إشعارات ACM SIGPLAN . 2 (12) (نشرة PL/I رقم 5، الطبعة): 6. doi : 10.1145/1139502.1139504 . ISSN 0362-1340 . S2CID 12180929 .
- ↑ ديت، سي جيه (11 فبراير 2022). أحلام قواعد البيانات، المجلد الأول: كتابات علائقية منقحة ومُعاد إحياؤها . منشورات تكنكس. الفصل 2، المرجع 36. ISBN 978-1-63462-984-3وكما قال لي أحد أصدقائي ذات مرة -
لا بد أن هذا كان في أواخر الستينيات - مهما قلت عنه، هناك شيء واحد بالتأكيد ليس PL/I، وهو "لغة أقل دهشة".
- ↑ تريمبلاي، جان بول؛ سورنسون، بول ج. (1985). نظرية وممارسة كتابة المترجمات . نيويورك: ماكجرو هيل. ISBN 9780070651616.
PL/I هو المثال السيئ الرئيسي هنا؛ فهو مليء بالبنى التي لا تفعل ما يعتقده المبرمج، كما يتضح من القسمة الثابتة.
- ↑ هولت، ريتشارد سي. (مايو 1973). "تدريس المرض الفتاك: (أو) مقدمة في برمجة الحاسوب باستخدام PL/I" . إشعارات ACM SIGPLAN . 8 (5): 8-23 . doi : 10.1145/986948.986950 .
لسوء الحظ، ينتج عن التعبير '25 + 1/3' القيمة 5.33333333333333
- ↑ جولدن، دونالد (أكتوبر 1980). "نداء لبرمجيات سهلة الاستخدام" . ملاحظات هندسة البرمجيات ACM SIGSOFT . 5 (4): 4-5 . doi : 10.1145/1010884.1010885 .
لئلا يتوصل المبرمجون غير الملمين بلغة PL/I إلى استنتاج خاطئ بأن PL/I خالية من العيوب، فلننظر إلى الأمثلة التالية التي تُظهر صعوبة PL/I. قواعد تحويل الأنواع في PL/I كافية لإصابة المبرمجين بالقرحة. ما هي اللغة الأخرى التي قد تُنتج خطأً فادحًا عند تقييم التعبير (25 + 1/3)؟ (والأسوأ من ذلك، إذا تم تعطيل التحقق من الأخطاء، فإن نتيجة تقييم التعبير ستكون 5.3333...)
- ↑ ستانسيفير، رايان د. (1995). دراسة لغات البرمجة . إنجلوود كليفس، نيوجيرسي : برنتيس هول. ص 123. ISBN 978-0-13-726936-5تشتهر لغة PL/I بهذا الأمر ،
إذ تُحوّل أي نوع بيانات تقريبًا إلى أي نوع آخر، وأحيانًا بنتائج مُفاجئة. لنأخذ على سبيل المثال التعبير 1/3 + 25. في PL/I، تكون قيمة هذا التعبير 5.33333333333. لماذا؟ لأن قيمة الثلث تُحسب بدقة 15 رقمًا، 14 منها على يمين الفاصلة العشرية. ثم يُحوّل العدد 25 إلى نفس الدقة، ما يؤدي إلى فقدان الرقم الأكثر أهمية وهو 2! يُسبب هذا خطأً في PL/I، لكن الإعداد الافتراضي هو تجاهله. ظهر هذا الخطأ لأول مرة في مجلة بارون عام 1968، حيث ذُكر كخرق لقاعدة شائعة في تصميم اللغات: "قانون أقل قدر من الدهشة".
- ↑ "Enterprise PL/I for z/OS 5.3 - Language Reference" (PDF) . IBM. مارس 2021. الصفحات 57-62 .
لنفترض التعبير التالي: 25+1/3. نتيجة تقييم هذا التعبير غير مُعرَّفة، ويتم رفع حالة FIXEDOVERFLOW لأن القسمة الثابتة تُنتج قيمة ذات دقة قصوى مُحدَّدة للتنفيذ. [...] تم التوصل إلى نتائج التقييمين كما هو موضح في الجدول 29.
- ↑ بيرجيرون، آر دي؛ غانون، جيه دي؛ شيكتر، دي بي؛ تومبا، إف دبليو؛ دام، إيه فان (1972). "لغات برمجة الأنظمة". التقدم في الحوسبة . 12 : 175-284 . doi : 10.1016/s0065-2458(08)60510-0 . ISBN 9780120121120.
- ^ سالتزر، ج.ه. كاشوك، فرانس (2009). مبادئ تصميم نظام الكمبيوتر: مقدمة مورجان كوفمان. ص. 85. ردمك 978-0-12-374957-4.
- ↑ بيتروتسوس، إيفانجيلوس (2010). إتقان مايكروسوفت فيجوال بيسك 2010. وايلي. ص 133. ISBN 978-0-470-53287-4.
- ↑ بلوخ، جوشوا (2006). "كيفية تصميم واجهة برمجة تطبيقات جيدة ولماذا يُعد ذلك مهمًا" . وقائع مؤتمر OOPSLA '06 ، المصاحب للندوة الحادية والعشرين لجمعية ACM SIGPLAN حول أنظمة ولغات وتطبيقات البرمجة كائنية التوجه . جمعية آلات الحوسبة. الصفحات 506-507 . doi : 10.1145/1176617.1176622 . ISBN 1-59593-491-X. S2CID 27230400 .
- ↑ فيفيان (21-06-2013). "اختصارات لوحة المفاتيح لبريد جيميل" . شركة جوجل . تم الاطلاع عليه بتاريخ 27-07-2013 .
- ↑ "اختصارات لوحة المفاتيح ليوتيوب - مساعدة يوتيوب" . support.google.com . تم الاطلاع عليه بتاريخ 16 أغسطس 2022 .
- ↑ "استخدام اختصارات لوحة المفاتيح" . أتلاسين . تم الاطلاع عليه بتاريخ 27-07-2013 .
- ↑ كايزر، ج. (1 مارس 2010). "مايكروسوفت: لا تضغط على مفتاح F1 في ويندوز إكس بي" . كمبيوتر وورلد . تم الاطلاع عليه بتاريخ 10 نوفمبر 2019 .
- ↑ "لماذا يكون الأساس الافتراضي لدالة parseInt في جافا سكريبت هو 8؟" . Stack Overflow . 8 أبريل 2011.
- ↑ "parseInt()" ، شبكة مطوري موزيلا (MDN) ، 15 مارس 2024،
إذا بدأت سلسلة الإدخال بالرقم "0" (صفر)، يُفترض أن يكون الأساس 8 (ثماني) أو 10 (عشري). يعتمد اختيار الأساس على التطبيق. يوضح معيار ECMAScript 5 أنه يجب استخدام 10 (عشري)، ولكن لا تدعم جميع المتصفحات ذلك حتى الآن.
- ↑ "الأسئلة الشائعة حول FreeBSD 2.X و 3.X و 4.X" . FreeBSD. 11-06-2002 . تاريخ الاسترجاع: 15-02-2023 .
روابط خارجية
- الأساليب الاستدلالية
- بيئة العمل
- التفاعل بين الإنسان والحاسوب
- مبادئ البرمجة
