בפיתוח תוכנה נהוג להבדיל בין השמה לבין השוואה.
השמה
השמה (באנגלית: Assignment) או לחלופין החזקה (באנגלית: Holding) היא מצב בו מבנה מידע מסוים מכיל מידע מסוים אשר "הושם בתוכו" או ש"הוא מחזיק".
דוגמה פשוטה היא פרמטר (קבוע או משתנה) אשר מחזיק ערך אחד או יותר.
בשפות מחשב שונות, אופרטור נפוץ להשמה או החזקה הינו סימן קו כפול יחיד (=
).
במקרים כאלה, אופרטור נפוץ לשוויון יהיה שני סימני קו כפול (==
) ואף שלושה סימני קו כפול (===
), תלוי בשפת המחשב הספציפית.
השוואה
השוואה (באנגלית: Comparison) היא מצב בו מבנה מידע מסוים או ערכו שווה בקירוב או שווה במדויק למבנה מידע אחר או ערכו והדבר ניתן לבדיקה.
דוגמה לבדיקת שוויון מדויק (זהות) היא לבדוק אם הערך של משתנה A שהוא 1, שווה לערך של משתנה B שגם הוא 1. אם כן או אם לא, תבוצע פעולה מסוימת.
דוגמה לבדיקת שוויון רפוי (קירוב) היא לבדוק אם הערך שמחזיק משתנה A (אשר הינו 2), שווה לכמות הערכים שמחזיק משתנה B (אשר הינו רשימה עם 2 פריטים); אם בדקנו אם הערך של משתנה A תואם את מספר הפריטים של משתנה B אז נקבל שוויון בין הערכים. אם כן או אם לא, תבוצע פעולה מסוימת.
עוד דוגמה היא השוואת שם משתמש, למשל, אם משתמש חדש רוצה להירשם לאתר שלנו עם שם משתמש X אז תבוצע בדיקה אם השם שווה לאיזה שהוא שם שכבר מופיע במערכת ← אם יתקיים שוויון כזה, כלומר, אם שם המשתמש הנבחר אכן יהיה שווה לאחד השמות במערכת, יינתן ארור למשתמש שמעוניין להירשם והוא יתבקש לבחור שם אחר.
ביצוע פעולות בהתאם לשוויון או היעדרו
לאחר בדיקת "אם אז" ניתן לבצע פעולה מסוימת, בהינתן והיה שוויון או בהינתן ולא היה שוויון.
סימון פורמלי
בשפות מחשב שונות, אופרטור נפוץ להשמה הינו =
אופרטור נפוץ להשוואה בקירוב הינו ==
ואופרטור נפוץ להשוואה במדויק הינו ===
אם כי הכל תלוי בשפת המחשב הספציפית.
ייתכן מצב בו בשפת מחשב ניתן יהיה להשוות רק במדויק.
למה מתכנתים רבים מתבלבלים לפעמים בין השמה לבין השוואה
מתכנתים ותיקים ומנוסים לפעמים מתבלבלים בין השמה להשוואה ומתקנים אחד את השני בנושא.
במקרים רבים התחביר מאד דומה, למשל, סימן שוויון אחד לעומת שניים או שלוש והדבר נובע לדעתי מחסור בתווים ייחודיים במקלדות הסטנדרטיות.
אם היה תו ייחודי להשמה ותו ייחודי להשוואה סביר להניח שלא היה כל כך הרבה בלבול בין שתי הפעולות החשובות האלה בתכנות.