"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > جورج وروبرت يدخلان إلى الحانة...

جورج وروبرت يدخلان إلى الحانة...

تم النشر بتاريخ 2024-08-01
تصفح:990

George and Robert walk into a bar...

قد يبدو العنوان وكأنه مجرد مزحة تنتظرك هنا (أعلم أنها كارثة تحسين محركات البحث). آسف أن يخيب. يتعلق هذا المنشور في الواقع بعوامل التعيين المنطقية لجافا سكريبت المقدمة في ES2021. تابع القراءة لتعرف ما علاقة جورج وروبرت بهذا...

خلفية تاريخية

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

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

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

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

جورج بول

تُنسب الدراسات المبكرة للمنطق إلى اليونانيين القدماء، وخاصة أرسطو، الذي يُطلق عليه غالبًا "أبو المنطق". لقد طور نظامًا رسميًا للمنطق والذي وضع الأساس لاستخدام العوامل المنطقية.

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

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

  • و (اقتران)
  • أو (الانفصال)
  • ليس (النفي)

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

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

روبرت ريكورد

تم تقديم علامة المساواة في عام 1557 من قبل عالم الرياضيات الويلزي روبرت ريكورد في كتابه "The Whetstone of Witte". سئم ريكورد من كتابة "يساوي" بشكل متكرر في عمله، لذلك اختار خطين متوازيين لهما نفس طول رمز المساواة. وعلى حد تعبيره، كان السبب في ذلك هو أنه "لا يمكن أن يكون هناك شيئان متساويان أكثر". كان هذا تطورًا كبيرًا في التدوين الرياضي، مما يوفر طريقة موجزة وواضحة للتعبير عن المساواة.

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

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

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

    قدم ألغول، الذي تم تطويره في الستينيات، رمز := للتخصيص، وتمييزه عن مقارنة المساواة.
  • قامت لغة C لاحقًا بنشر استخدام = للتخصيص و== لاختبار المساواة، وهو تقليد اتبعته العديد من اللغات اللاحقة.
بمرور الوقت، قدمت لغات البرمجة أشكالًا مختلفة من عوامل التعيين للتعامل مع العمليات المختلفة بكفاءة، مثل عوامل التعيين المركبة (=، -=، وما إلى ذلك) ومؤخرًا، عوامل التعيين المنطقية في JavaScript.

فهم عوامل التعيين المنطقية

عوامل الإسناد المنطقية هي عبارة عن سكر نحوي في جافا سكريبت يجمع بين الإسناد (=) مع عامل منطقي (&&، ||) أو عامل اندماج لاغي (؟؟). هناك ثلاثة أنواع:

    التخصيص المنطقي (&&=): يقوم بتعيين القيمة الموجودة على اليمين للمتغير الموجود على اليسار فقط إذا كان المتغير الأيسر صحيحًا.
  • التخصيص المنطقي (||=): يقوم بتعيين القيمة الموجودة على اليمين للمتغير الموجود على اليسار فقط إذا كان المتغير الأيسر خطأ.
  • مهمة التحالف الفارغة (؟؟=): تقوم بتعيين القيمة الموجودة على اليمين للمتغير الموجود على اليسار فقط إذا كان المتغير الأيسر خاليًا أو غير محدد.
المنطقي والواجب (&&=)

يعد عامل التشغيل &&= اختصارًا لتعيين قيمة المتغير فقط إذا كان يحمل قيمة صحيحة حاليًا. إنها مفيدة بشكل خاص في السيناريوهات التي يجب أن يستمر فيها الإجراء فقط إذا ظل شرط معين صحيحًا.

مثال لحالة الاستخدام: تبديل الميزة

تخيل سيناريو حيث يجب تمكين ميزات معينة للمسؤولين فقط:


const isAdmin = user.isAdmin(); Let canAccessDashboard = isAdmin; canAccessDashboard &&= user.isAuthenticated(); console.log(canAccessDashboard); //صحيح إذا تمت مصادقة المستخدم، وإلا فسيكون خطأ
const isAdmin = user.isAdmin();
let canAccessDashboard = isAdmin;

canAccessDashboard &&= user.isAuthenticated();
console.log(canAccessDashboard); // true if user is authenticated, otherwise false
يضمن مقتطف الكود هذا أن canAccessDashboard صحيح فقط إذا كان كل من isAdmin وuser.isAuthenticated() صحيحين، مما يحمي الميزة بشكل فعال بشرطين.

الواجب المنطقي أو (||=)

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

مثال لحالة الاستخدام: ضبط الإعدادات الافتراضية


إعدادات المستخدم الثابتة = { الموضوع: لاغية، }; // قم بتعيين السمة الافتراضية إذا لم يتم تحديد أي شيء userSettings.theme ||= "dark"; console.log(userSettings.theme); // النواتج "مظلمة"
const isAdmin = user.isAdmin();
let canAccessDashboard = isAdmin;

canAccessDashboard &&= user.isAuthenticated();
console.log(canAccessDashboard); // true if user is authenticated, otherwise false
يعتبر هذا العامل مثاليًا لتهيئة المتغيرات التي لم يتم تعيينها، مما يضمن أن التطبيق الخاص بك يستخدم افتراضيًا معقولاً دون الكتابة فوق القيم الخاطئة التي قد تكون ذات معنى مثل 0 أو خطأ.

مهمة الدمج الفارغة (؟؟=)

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

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

مثال لحالة الاستخدام: إعدادات التكوين الافتراضية


كونست التكوين = { المهلة: 0، }; config.timeout ??= 5000; // قم بتعيين المهلة الافتراضية إذا لم تكن محددة، أي غير محددة أو فارغة console.log(config.timeout); // المخرجات 0، مع الحفاظ على القيمة الخاطئة المحددة بشكل صريح
const isAdmin = user.isAdmin();
let canAccessDashboard = isAdmin;

canAccessDashboard &&= user.isAuthenticated();
console.log(canAccessDashboard); // true if user is authenticated, otherwise false
يعد عامل التشغيل هذا مفيدًا بشكل خاص في التكوينات والإعدادات حيث يجب أن تملأ الإعدادات الافتراضية القيم المفقودة فقط دون استبدال الإعدادات الخاطئة الأخرى ولكن الصالحة مثل 0.

الفوائد والاعتبارات العملية

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

مذكرة إضافية

يوجد المزيد من عوامل التعيين في JavaScript، مثل عامل إسناد التحول الأيسر (

(صورة الغلاف في الأعلى بواسطة starline على Freepik)

بيان الافراج تم نشر هذه المقالة على: https://dev.to/codejet/george-and-robert-walk-into-a-bar-413e?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3