שיחה:אופרטור (תכנות)

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה לניווט קפיצה לחיפוש

תרגום לעברית[עריכת קוד מקור]

אופרטור צריך לדעתי להקרא בעברית מפעיל ולא סימן פעולה. בדיוק כמו שבאנגלית הוא נקרא operation ולא operator sign. האופרטור כשמו כן הוא, הוא מפעיל את שני האופרנדים בדרך שהותוותה לו. --אפי ב.שיחה • 18:31, 12 מאי 2006 (IDT)

אופרטור לפי בבילון - (ז') מבצע, מוציא לפועל, מפעיל, פועל, זרוע מבצעת. --אפי ב.שיחה • 10:51, 22 בנובמבר 2006 (IST)

נקודת מבט צרה מאוד[עריכת קוד מקור]

המאמר כתוב מנקודת מבט צרה מאוד - אפילו לא של שפה ספציפית, אלא של צורת שימוש ספציפית בשפה ספציפית. הפרק לוגיקה פנימית של האופרטור, מלא באזכורים של מחלקות ופונקציות חבר. כל האמור בפרק לגבי טיפוסים רלבנטי רק לגבי שפות עם strong typging סטטי, ונכון רק לגבי חלקן. גם המינוח "מחלקת אב" שגוי, כי לא מדובר כאן כלל על הורשה.

עוד עניין הוא ה"טיפ" שניתן בפרק העמסת אופרטורים. בין אם הוא נכון ובין אם הוא לא נכון (והוא לא נכון), אין מקומו באנציקלופדיה. המתעתקשיחה 12:26, 24 בנובמבר 2006 (IST)

הטרמינולוגיה היא אמנם מונחת אובייקטים, אבל מעשית זה נכון תמיד, גם ב-Perl שרחוקה מלהיות strong typging סטטי, זה מה שקורה וגם ב-GWBasic זה אותו דבר אף על פי ששם אין בכלל אובייקטים. אתה רוצה לדבר על טיפוסים ומשתנים במקום מחלקות ואובייקטים? זה אפשרי, אבל מהותית דבר לא משתנה.
אין לי מושג על איזה טיפ אתה מדבר. טרול רפאים 12:45, 24 בנובמבר 2006 (IST)
עובדתית, זה לא נכון. באחת משפות התכנות מונחות-העצמים הפופולריות ביותר בעולם, שהיא גם אחת משפות התכנות הפופולריות ביותר בעולם באופן כללי (ושהיא השפה מונחית-העצמים ו-general-purpose הפופולרית ביותר בעולם), לא רק שאופרטורים אינם בהכרח שיטות של מחלקה, אלא מומלץ מאוד במקרים רבים שלא לעשותם כאלה.
בנוסף, לפי ה-Interface Principle של Herb Sutter פונקציה (וזה כולל אופרטור, לפי הכתוב בערך) הוא חלק מממשק של מחלקה, גם אם איננו חבר שלה.
בקיצור A+B הוא אולי A.+(B)‎, ואולי לא. אין פה שום חוק קוסמי, אלא שאלה של מימוש.
לגבי הטיפוסים: זו פשוט שגיאה לדבר על שגיאות הידור (מה עם שפות מפורשות) ועל כך שאם למשל "האופרטור השמאלי הינו מספר שלם והימני הינו מספר נקודה צפה, הערך יחתך או יעוגל כאשר תתבצע פעולה חשבונית בין שני האופרטורים, אף אם הערך יושם לתוך מספר של נקודה צפה" (כי לא בהכרח מוגדרים טיפוסים ספציפיים עבור הפונקציות, ובכלל זה האופרטורים).
הטיפ הוא הטיפ שהורדתי. המתעתקשיחה 13:00, 24 בנובמבר 2006 (IST)
בקיצור, אתה טוען שיש בלבול בין הממשק לבין החברות במחלקה? בסדר, אכן אפשר ב-C++ ליצור אופרטור הפועל על המחלקה מבחוץ ולפעמים זה הכרחי, זה אמנם אחד מהחסרונות המעיקים של השפה, אבל אין אפשרות להתעלם מכך.
כפי שציינתי לרוב הוא A.+(B)‎, אבל לא תמיד ואפילו נתתי דוגמה נגדית.
קודם כל, גם בשפות מפורשות יש שגיאות הידור, האבחנה היא הרבה פחות חשובה כי הן קורות כמעט באותו זמן כמו שגיאות זמן ריצה ולכן הרבה פעמים מתעלמים ממנה לחלוטין כי אין בה הרבה תועלת. פרט לכך, שוב פעם, זאת ההתנהגות בדרך כלל, אבל לא תמיד, ב-Perl למשל, הערך לא ייחתך ולא כלום אלא יושם לתוך המשתנה שישנה את הטיפוס שלו. יש להדגיש כי אין דבר כזה "אין טיפוסים" בשפה, תמיד ישנם טיפוסים כאלו, ההבדל היחיד הוא במידת הגישה שלך אליהם. אפילו ב-Command line של DOS (השפה הפרימטיבית ביותר שאני מכיר מהבחינה הזאת) יש טיפוסים (במקרה הזה הטיפוס היחיד הוא מחרוזת, אבל אפשר להיווכח בקלות שהוא קיים). אכן לפעמים אין לך אפשרות להגדיר את הטיפוס של המשתנה ולכן המשפט מתקיים כמו שאומרים על הקבוצה הריקה...
בקיצור, נראה לי שעדיף לשנות את הטרמינולוגיה, אם אתה לא הבנת, יש להניח שאחרים יבינו עוד פחות. טרול רפאים 13:40, 24 בנובמבר 2006 (IST)
כל מה שאמרתי הוא שזה לא נכון ש"באופן זה יש להתייחס לאופרנד השמאלי כאל מחלקת האב המכילה את האופרטור ביחד עם פונקציות חבר אחרות, ואילו האופרנד הימני הוא הפרמטר של פונקציית האופרטור". אין שום סיבה להתייחסות כזאת באופן כללי, רק כי זה המצב במימוש ספציפי. בהמשך לכך, הפסוודו-קוד שגוי, כי זה קוד נכון באותה מידה:
class cls
 constructor(p)
  x=p
 end constructor
 integer x
end Class
cls operator+(cls a, cls b) 
 return cls(a.x+b.x) 
end operator
לגבי טיפוסים: לא אמרתי ש"אין טיפוסים", אלא ש"לא בהכרח מוגדרים טיפוסים ספציפיים עבור הפונקציות, ובכלל זה האופרטורים". במעבדי אינטל, לדוגמה, יש רק שני טיפוסים אמיתיים: מספרים שלמים שנשמרים באוגרים הרגילים ומספרי נקודה-צפה שנשמרים במחסנית הנקודה-הצפה. כל זה נחמד ומעניין, אבל לא משנה לעניין שישנן שפות שבהן פונקציות לא מוגדרות עבור טיפוסים ספציפיים, ולכן ממילא אין המרות משתמעות כמו אלה שהוזכרו.
אני לא יודע למה הייתה הכוונה, ולמה התכוון המנסח, אבל נכתב ש"יש להתייחס", בעוד שהנכון הוא שניתן, בחלק מהשפות, להתייחס. המתעתקשיחה 16:15, 24 בנובמבר 2006 (IST)
כפי שציינתי, אתה מוזמן לשנות, התגובה שלך מבחינתי היא מספקת למסקנה שהערך לכל הפחות לא מובן בנקודה הזאת.
ההכללה של מעבדי אינטל איננה נכונה, היא תלויה מאוד במעבד, למעשה רק ל-4004 ול-8008 היה רק טיפוס אחד (8 סיביות), מאז יש כמה וכמה ומספרם הולך ועולה (גדלים שונים של מספרים שלמים ומספרי נקודה צפה, מחסנית שגם היא טיפוס נתונים, וקטורים במעבדי MMX ומעלה, במידה רבה גם מחרוזות ועוד טיפוסים שונים ומשונים). בקיצור, מדובר במידה רבה בעניין של מה אתה מגדיר טיפוס נתונים (פקודות מכונה המטפלות בטיפוס מספיקות?), אולם הדיון הוא לא לכאן. טרול רפאים 13:32, 25 בנובמבר 2006 (IST)
למתעתק, כאשר כתבתי זאת המטרה הייתה לנסות להמחיש את דרך הפעולה הפנימית של האופרטור. אם מדובר רק בחלק מהשפות, אין שום מניעה לציין זאת. ואם בחלק מהשפות הדבר עובד אחרת, אז אפשר לצרף פסידו קוד שימחיש את דרך הפעולה הנוספת, ואף לציין את ההבדל שבין שני הדרכים. --אפי ב.שיחה • 00:17, 18 ביוני 2008 (IDT)