07-09-2007, 15:22
|
|
|
חבר מתאריך: 30.07.05
הודעות: 949
|
|
אני לא הולך להכנס לוויכוח כשאין לי את כל העובדות וכל הנתונים.
למען האמת, אני לא בדיוק מומחה בתחום, די רחוק מזה בעצם.
מי שאמר לי את הנתון שציטטתי הוא אדם שהוא כן מומחה בתחום, ואפילו מומחה רציני.
אני מניח שבקשר לזמן הריצה כדאי לזכור שיש תוכנה ב-++C ויש תוכנה ב-++C.
אתה יכול לכתוב את אותו האלגוריתם בהרבה מאד צורות ואופנים.
חשוב לזכור של-++C יש את כל האפשרויות של C ובנוסף אפשרויות מסביב, לכן מתכנת ++C מנוסה ידע מתי כדאי להשתמש בעקרונות של C במהלך תוכנית ++C (לדוגמא רשימה מקושרת שבנוייה על void* במקום על template כאשר יש שימוש בתוכנה מסויימת ברשימות מהמון סוגים, ורק לעטוף את המחלקה ב-Template ריק, כדי למנוע אינטראקציה בין רשימות של סוגים שונים).
יש כל מני טריקים שאפשר לעשות ב-++C לצורך אופטימיזציות כאלו...
בעיה אחת, היא שהמון מתכנתים חושבים שהם יודעים לתכנת ב ++C אבל שוכחים, או פשוט לא יודעים, למה מתורגם הקוד שלהם בתאכלס.
כבר יצא לי לראות קוד ++C שבלתי יעיל בעליל יהיה מחמאה בשבילו...
לעיתים מתכנתים פשוט שוכחים על קיומם של ה-Ctors וה-Dtors מה שגורם לכך ששורת קוד אחת שלהם מזמנת 6 פונק' ואף יותר (דוגמא הכי פשוטה היא מחלקה יורשת ממחלקה יורשת שה-Ctor שלהן לא הוגדר טוב).
מאידך, שימוש נכון ב-Const Reference פותר בעיות מאין אלו.
ממה שהצלחתי להסיק ממעבר על האינטרנט הוא שהבעיה היא בעיקר בזמן הטעינה, וניפוח קובץ ההרצה כתוצאה ממחלקות ופונק' template, אלא שבעיה זו ניתן לפתור אם אתה יודע לאיזה צרכים אתה כותב את הפונק' הזו, והמנעות משימוש בפונק' שישוכפלו מאות פעמים.. פה נכנס כבר עניין של עיצוב תוכנה.
בקשר לזמן הטעינה, אז לא הייתי מייחס לזה עודף משמעות... לא שזמן הטעינה לא חשוב, אבל בואו לא נשכח שזו היא בעיה חד-פעמים עבור כל הרצה, ונשאלת השאלה של מה ההבדל יהיה בזמן הריצה עצמו?
לסיכום אני אפנה אתכם למשהו שנתקלתי בו כשעברתי על הנושא:
http://unthought.net/c++/c_vs_c++.html
לדור: לא כל מה שמישהו כתב באינטרנט לפני 5 שנים הוא תורה מסיני, וגם לא בהכרח נכון. אני לא יודע מי אלו האנשים שדיברו והגיבו שם, ולכן אני לא בטוח שיהיה חכם מדי להתייחס אליהם כסמכות ממעלה כלשהי... כמו שכבר אמרתי - יצא לי להתקל בספרים שנכתבו ע"י אנשים בטון סמכותי ומבין, והיו מלאים בשטויות...
יותר מזה, לא אמשיך.
אני לוקח בחזרה את מה שאמרתי על הבדלי זמן הריצה בין C ל-++C פשוט כי אין לי כרגע דרך להגן על העמדה שלי, וכי אין לי בטחון מלא בה, ואני מעדיף שלא לדבר על דברים בהם אני לא מתמצא.
שבת שלום,
_____________________________________
חתימתכם הוסרה כיוון שלא עמדה בחוקי האתר. לפרטים נוספים לחצו כאן. תוכלו לקבל עזרה להתאמת החתימה לחוקים בפורום חתימות וצלמיות.
נערך לאחרונה ע"י Dark Knight בתאריך 07-09-2007 בשעה 15:26.
|