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