בפיתוח תוכנה, המונח "קולבק" הוא אחד המונחים הכי פחות פורמליים ועם הכי הרבה הגדרות שונות, מה שיוצר חוסר סדר, חוסר בהירות או בלבול.
מהניסיון שלי, ההגדרה הכי תמציתית ופרקטית של המונח מתארת שני מצבים אפשריים והיא:
פרוצדורה המועברת כארגומנט.
או
קריאה לפרוצדורה המועברת כארגומנט.
בהתאם לכך, קולבק יכול להיות או הפרוצדורה שהעברנו כארגומנט איפה שהוא, או הקריאה שהעברנו כארגומנט איפה שהוא.
הסבר:
אם בעת קריאה לפרוצדורה הועבר לה ארגומנט שהוא פרוצדורה בעצמו, או, קריאה לפרוצדורה בעצמו, אז נכון יהיה להגיד שפרוצדורה כזו או קריאה לפרוצדורה כזו היא פרוצדורה מועברת (passed procedure) או קריאה מועברת (passed call) ולכן בכל פעם שהפרוצדורה שמכילה את הארגומנט\ים הזה\הללו תרוץ, אז גם הקוד המועבר ירוץ.
המונח "קולבק" כמונח מטעה
לפי דעתי, המונח "קולבק" בעצמו מטעה שכן העברת פרוצדורה או קריאה לפרוצדורה איננה בהכרח "בק" (בחזרה, כלומר פעם שנייה ואילך) אלא אולי מתרחשת פעם ראשונה (ואף ראשונה ואחרונה) שהרי לפחות עקרונית, בכל פעם שהפרוצדורה המכילה אותה תיקרא ← הפרוצדורה המועברת, או הקריאה לפרוצדורה המועברת, תיקרא גם כן ואין הכרח שזה יקרה יותר מפעם אחת.
איך לסיים את הויכוחים על המונח הזה בקרב מתכנתים?
לפי דעתי, הדרך הנכונה היא פשוט להגיד מונחים ארוכים יותר אבל מדויקים וברורים יותר כמו:
- פרוצדורה המועברת כארגומנט.
- קריאה לפרוצדורה המועברת כארגומנט.
אין צורך להגיד מונחים אלה שוב ושוב אלא פשוט לציין אותם בהערות קוד במקום פשוט לכתוב בהערת קוד את הביטוי העמום "קולבק".