06-10-2005, 22:11
|
|
|
חבר מתאריך: 20.12.01
הודעות: 20,962
|
|
לא טענתי ש-CPP תהיה יעילה יותר, אם כי בוודאי גם קיים תרחיש כזה...
הנקודה היא פשוטה: מאחר ו-CPP היא "C עם תוספות" מבחינה טכנית(ועובדה היא
שמהדרי CPP הראשונים תירגמו CPP ל-C, ואז ביצעו הידור C כרגיל), היעילות תהיה
זהה בדיוק.
עכשיו, כדי לקבל תפקוד מסויים ניתן לכתוב הרבה קודים שונים, וכל ה"מסביב" יכול לגזול
יעילות(כמו בדיקות גבולות מערך ש-VB אוהבת לעשות לדוגמה). במקרה של CPP מדובר
במערכות כמו מערכת החריגים. אבל במידה ולא משתמשים בה, אנחנו מקבלים גרסה
נוחה יותר לעבודה של C - גרסה עם מחלקות, עם כימוס, עם הורשה, עם תבניות - ועם
זאת, עם ביצועים זהים בדיוק.
התרחיש שבו CPP תהיה יעילה יותר מ-C הוא ניסיון לממש את המנגנונים האלה ב-C
באופן ידני. אני מוכן להודות שאתה מתעלה עלי ב-C, אבל תהיה בטוח שביורן ואנשי GNU
שמים אותך בכיס הקטן שלהם. אם תנסה לממש פונקציות ווירטואליות וחריגים ב-C בעצמך,
לא תוכל להגיע לאותה רמת שלמות שאליה הם הגיעו, וכאן - שימוש במנגנונים המוכנים של
CPP יהיה עדיף על ניסיון אומלל ליצור את הגלגל מחדש.
ונחזור על זה פעם נוספת כדי שזה יהיה ברור, CPP שקולה ל-C לא רק מבחינה תיאורטית,
בכך ששתיהן שקולות למכונת טיורינג, אלא מעשית - שכן ניתן לבנות, ואף נבנה, מהדר CPP
שמשתמש במהדר C קיים ובשפת C כשפת ביניים.
לכן, CPP שקולה ל-C מכל בחינה שהיא בעצם, נחותה ממנה כשמשתמשים בפיצ'רים בלתי
נחוצים שלא לצורך, ועדיפה עליה כשמנסים לממש לבד את מה שמתכנתים טובים יותר כבר
מימשו.
לגבי מה שכתבת בהודעה למטה: ההבדלים הללו רחוקים מלהיות זניחים, וזוהי בדיוק הסיבה
שלא תמצא אפילו תוכנת RT אחת שמשתמשת במנגנון החריגים של CPP...
|