מעבר משפת C לשפת C++11

יבגני34

New member
מעבר משפת C לשפת C++11

כמה מדובר במאמץ לימודי עבור מי ששולט ב-C?
ומכיר מעט C++?
למישהו יש ניסיון אמיתי במעבר הזה?
 

BravoMan

Active member
מאמץ זה עניין יחסי.

החומר הוא רב - יש הבדל עצום ביכולות השפות, והסינטקס של ++C, אפילו לפני תקן 11 הוא עמוס למדי בהשוואה ל-C.
&nbsp
מצד שני, זה בסה"כ סינטקס - לרוב, מתכנתים מנוסים בולעים את זה בקלות.
&nbsp
השאלה היא שונה: האם אתה מכיר תכנות מונחה עצמים והפרדיגמות שלו?
עקרונית, C היא שפה פרוצדורלית, ללא סינטקס מיוחד וכלים מובנים לתכנות מונחה עצמים, אבל היות ומדובר בסה"כ באוסף פרדיגמות ואבסטרקציות, אפשר לתכנת ככה גם ב-C, ויש פרויקטים די גדולים, דוגמת GTK, שעושים בדיוק את זה.
&nbsp
אז, עומדות בפניך 2 נקודות עיקריות:
1. הכי גדולה ולא באמת קשורה לשפה ספציפית: היכרות עם "מונחה עצמים" וכל מה שנגרר יחד עם זה.
2. השלמת הסינטקס והכלים של ++C.
&nbsp
אישית, חשבתי שאני יודע ++C עד שלקחתי לידיים ספר שלא היה מהסביבה המיקרוסופטית והתחלתי ללמוד יותר מסודר. מסתבר שמה שכתבתי עד עז היה "C עם תוספות", תערובת די גרועה אך נפוצה לצערנו...
 

BravoMan

Active member
ברור שלקרוא בלי לתרגל לא שווה!

זה נכון לכל שיטת לימוד.
גם לראות סרטון בלי לתרגל זה לא שווה.

אם ספר הוא הדרך המתאימה לך ללמוד, אני לא יודע...
זה עניין אישי.

הספר הזה לא לימד אותי תכנות, הוא לימד אותי כלי ספציפי שנקרא ++C.
זו המטרה לשמה קראתי אותה, והוא מילא אותה כמו שצריך.

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

אבל אם אתה מפתח תוכנה מנוסה שרוצה להוסיף עוד כלי לארסנל הכלים שלו, אני חושב שהספר הזה די טוב.

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

לטעמי - ספר טוב + פיתוח מעשי על הדרך היא השיטה המנצחת. לפחות כך זה היה עבורי.
 

הפרבולה

New member
אולי תשקול לעשות גם קורס

מעבר ללימוד דרך ספרים ותרגול תבקש מהמעביד שלך שישלח אותך לקורס C++ באחד המכונים הקיימים.
 

abcdoremy

New member
תתכונן ללמוד בשלבים, ואל תבזבז זמן לקלוט הכל.

כמו שכבר אמרו לפני, חלק מ ++C זה צורת חשיבה - איך לתכנן ולתכנת מונחה עצמים. זה לא משהו שקולטים מקריאה או מקורס, אלא צריך לתרגל ולקלוט לאורך זמן.

תתחיל עם היסודות, תצטרף לפרוייקט קוד פתוח, תלמד תוך כדי, ובשלב מסויים - הרבה לפני שתפנים הכל - תגיע לרמה שתאפשר לך לעבוד בשפה.

בהתאם, תקבע סדרי עדיפויות. לדוגמא, חשוב לדעת מה זה template, חשוב לדעת ש STL ממומש בעזרת templates ושיש חלוקה בין container (מכיל נתונים), אלגוריתם (עושה פעולה כמו למיין נתונים ב container), ו iterator שמאפשר לחבר בין האלגוריתם לנתונים. באמא שלי, אני לא זוכר מתי ראיתי מישהו כותב template בעבודה או מתי שאלו אותי הרבה מעבר לזה בראיון עבודה.

[OK, שאלו אותי שאלות בקיאות ב STL ברמה של מבני נתונים, במובן של האםן template כזה או אחר ממומש עם עץ מאוזן או hash ואיזה סיבוכיות זה גורר, אבל לא "תכתוב לנו template שעושה X, כולל iterator".]
 

vinney

Well-known member
אז זהו...

זה תלוי בטמפלייט, אבל כמעט בכל מקום בו הייתי וכתבו ב++C היה בcoding standards סעיף המבקש עד דורש (נוקשות משתנה ממקום למקום) לחשוב פעמיים לפני שמחליטים לכתוב טמפלייט.
&nbsp
טמפלייטים זה קוד בלתי קריא בעליל שקשה מאוד לדבג. כך שלרוב, לא מעודדים כתיבת טמפלייטים, אלא אם מדובר בדברים טריויאליים.
 

vinney

Well-known member
בדיוק. לך דבג קוד כזה.

כשזה בא מדובג ומלוטש, כמו boost או STL - אז וודאי שמשתמשים. אבל לכתוב כזה דבר מאפס - זה בדרך כלל מיותר.
 

Lhuna1

New member
זה שימושי יותר בספריות תשתית

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