הבדל בין C ל CPP

הבדל בין C ל CPP

שלום רב
סיימתי שנה א במדמח , למדנו קורס מבוא למדמח ב CPP ו סדנא ב CPP
למדנו על מצביעים,פולימורפיזם,הורשה ,מחלקות אבסטרקטיות ,זיכרון דינאמי וכו'
רציתי לדעת,במידה ואני רואה עבודה שדורשת שפת C , כמה אני בכיוון?האם אפשר לשבת כמה ימים מול האינטרנט ולבוא מוכן?
כמה קל המעבר מ CPP ל C ? , היו חומרים שאמרו לנו שזה בשפת C (לא זוכר כבר מה) ואפשר לעשות גם ב CPP ,
האם זה מעבר קשה? או נקודות של סינטקסט? מה ההבדל בין השפות? האם חשיבה מחדש או בקטנה?
תודה רבה
 

פרסאוס

New member
CPP תומך C. ההפך לא.

אין דברים חדשים ללמוד, אלא דברים קיימים לא להשתמש.
אין ירושה, אין מחלקות...
לשפת C יש "טריקים" שלא מממשים בדכ בCPP כמו שימושים הרבה יותר תכופים במקרו.
אם אתה טוב ב CPP, כמה ימים ברשת צריכים להספיק להבין את ההבדלים.
להתרגל אליהם, זה סיפור אחר.
 
ואו...

אין ירושות ומחלקות?
אז הכל נעשה בפונקציות? אין בניה של עצמים? איך אפשר לעבוד ככה?
(כמובן שאפשר אבל זה נשמע רע)
 

פרסאוס

New member
אין עצמים כמו שאתה מכיר בCPP.

יש מבנים, אבל בניגוד ל CPP הם לא יכולים להכיל פונקציות, רק נתונים.
יש כל מיני טריקים עם מאקרו ליצירת תבניות (גם את זה אין בC) אבל אובייקטים כמו מחלקות אין.
(אז כן, הכל נעשה בפונקציות ואין אפילו מרחב שמות)
 

BravoMan

Active member
זו תגובה מעניינת ממי שמגיע דווקא מ-++C

בד"כ, מי שרגיל שכל דבר חי במחלקה, הם דווקא אנשי Java או #C, שם אין פונקציות שאינן חלק ממחלקה כלשהי, אפילו לא main.
++C לאומת זאת, מאפשרת שימוש עם או בלי החלק מונחה העצמים שלה, ולפעמים, זה טוב שאפשר ליצור אוסף של פונקציות שירות, לא בהכרח קשורות, בלי להעמיס עוד מחלקה ולהתחיל להגדיר מתודות סטטיות.
&nbsp
אבל, הלכה למעשה, אם רוצים, אפשר לעבוד בשפת C בצורה "מונחית עצמים", גם אם אין סינטקס ייעודי לזה.
זה גם יכול להיות תרגיל נחמד שירחיב את ההבנה שלך ב-++C.
&nbsp
למשל, גם C וגם ++C תומכים במצביעים לפונקציות.
ב-++C, אובייקט מכיל טבלת מצביעים לפונקציות ששייכות לו והיא נקראת VTABLE. אתה בתור מתכנת לא רואה אותה, כי הקומפיילר בונה אותה לבד.
ב-C, אם תרצה, תוכל לממש טבלה כזו בעצמך, ודרכה את כל מנגנון הירושה והפולימורפיזם.
&nbsp
אם הנושא ממש מעניין אותך, תציץ בספרייה שנקראת GTK. אולי יש דוגמאות טובות יותר למימוש תכנות מונחה עצמים ב-C, אבל אני פשוט לא מכיר.
הספרייה הזו מדגימה בנייה ופירוק של אובייקטים, ירושה ושאר ירקות, והכל ב-C נקי.
 

nocgod

New member
ציטוט של לינוס טורוולדס

http://harmful.cat-v.org/software/c++/linus

ואם כבר אז הנה עוד כמה https://en.wikiquote.org/wiki/Linus_Torvalds

עד כמה שאני יודע לשפה שגוגל פיתחו (GO) אין classes, ואין קונספט של הורשה (אחרי הלימודים השתמשתי מעט מאוד בהורשה, עיקר השימוש היה במימוש ממשקים)
זה לא הופך שפה ללא OOP, זה רק הפוך את הקונספט של OOP בשפה הזאת לקצת שונה מאיך שהיית מצפה
 
למעלה