עבור לתוכן

אוקיי אז סיימתי 5 יחידות מדעי המחשב c#, מה הידע התיכוני שלי עוזר לי עכשיו?

Featured Replies

פורסם

עכשיו אחרי שאני יודע את הבסיס של ה- c# שכל ה- 3 שנים האלה עבדתי בסה"כ עם החלון CMD הזה של ה- console... אז עכשיו שאני יודע את הפקודות והכול ואני רוצה לכתוב תוכנה שנראית ויזואלית עם כפתורים וטקסטים, הידע התיכוני שלי מספיק לזה? או שזה פתאום בכלל משהו אחר לגמרי שצריך ללמוד דברים אחרים וחדשים לגמרי?

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

אם לא.. אז מה שווה מה שלמדתי כל השנים האלה? (הרי אני לא צריך את זה אפילו אם אני רוצה ללמוד אחרי זה מחשבים באוניברסיטה)

אשמח לתגובה, תודה :)

פורסם

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

פורסם
  • מחבר

תודה.. זה היה די מהיר P:

למדתי בעבר עוד לפני בצפר אפילו קצת VB ובזה כבר עשיתי תוכנות של ממש ואפילו יחסית מתקדמות .. מה הופך את c# לכזאת שאני צריך להעמיק עוד הרבה?

פורסם

כלום לא הופך אותה לקשה לכתיבה, כי היא לא. אבל הידע שלך מבית הספר הוא הבסיס. קשה לי לראות איך מישהו כותב תוכנה או סקריפט ללא הבנה באלגוריתמיקה. לא למדת באמת C# לא התעמקת בDOT NET. למדת להבין אלגוריתמיקה. אני יכול להגיד לך שתור מי שמתעסק עם תכנות מדי פעם לצורך התפקיד שלי, ה3 שנים בתיכון הקלו עליי מאוד כאשר למדתי שפה חדשה לחלוטין ביחס לאחרים שלמדו אותה בלי ידע מוקדם בתכנות.

במצב הנוכחי אתה צריך לבחור שפה, פייטון, פרל, C\++\#, JAVA VB לא חשוב, אבל תבחר, תתמקד בה, ברגע שהבנת את הראש/ האלגוריתמי התכנות הרבה יותר פשוט, והסינטקס של השפות פחות רלוונטי

פורסם
  • מחבר

אוקיי .. תודה :)

פורסם

C# שפה מחורבת שתומכת .NET FRAMEWORL. בכל מקרה אתה יכול לבנות המון משחקים טובים בC# למחשב בUNITY או בXNA.

בכל מקרה ממליץ לך ללמוד C ואז C++ ואז או JAVA או OBJECTIVE C ואז תוכל לעשות המון* דברים אם הידע שלך.

פורסם

C# שפה מחורבת שתומכת .NET FRAMEWORL.

אממ... שטויות. יש חסרונות ל-#C, אבל היא רחוקה מלהיות שפה מחורבנת. החסרון הכי בולט שלה הוא שאפשר לכתוב בה רק לפלטפורמות של מיקרוסופט, אבל יש לה הרבה יתרונות על פני שפות אחרות (כולל Java).

בכל מקרה ממליץ לך ללמוד C ואז C++ ואז או JAVA או OBJECTIVE C ואז תוכל לעשות המון* דברים אם הידע שלך.

לא לומדים C ואז ++C ואז Java. בשביל לדעת Java לא צריך ללמוד קודם ++C/C, ובשביל ללמוד ++C לא לומדים קודם C (לא הייתי ממליץ על זה בכלל), כי אמנם ++C בנויה על C אבל העקרונות התכנותיים שונים מאוד בשתי השפות. אם כבר מישהו רוצה לדעת את שפי השפות, הייתי ממליץ לו ללמוד קודם ++C, ואחרי שהוא כבר מנוסה ללמוד C (שזה בעצם מסתכם ב"מה היה לי ב-++C שאי אפשר לעשות ב-C, ואיך מסתדרים בלי זה").

מה כבר אפשר לעשות עם Objective C, חוץ מלתכנת לאייפון?

פורסם

odd100, מצחיק לראות שאתה אומר ש-C# היא שפה מחורבנת וממליץ על Objective C, הספיקה לי חצי שעה עם טוטוריאלים בשביל להבין שזאת שפה נכה לחלוטין ואם לא היו מכריחים אנשים להשתמש בה בשביל לתכנת לאיפון, היא היתה מתה כבר ממזמן.

אני באמת לא חושב שיש הבדל בין ללמוד C ואז C++ לבין ללמוד ישר C++ גם ככה ההבדלים בניהם הם רק באובייקטים (שלא קיימים ב-C). טוב אולי לא רק אבל אני לא מצליח לחשוב כרגע על שום דבר נוסף.

פורסם

אני דווקא מסכים עם הדעה שמומלץ ללמוד C ואז ++C ואז JAVA ו/או #C. אולי זה קשור לכך שבמקרה זה היה הסדר שבו אני למדתי (אגב לפני C למדתי פסקל), אבל יש בכך הגיון.

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

2) חלק מלימוד השפה הוא לימוד הסינטקס. הסינטקס של ++C עשיר לאין ערוך מזה של C, ואני רואה יתרון ללימוד הדרגתי.

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

כמובן, יש שיוצאים מנקודת הנחה שאין בכלל סיבה ללמד C בימינו - משהו שאני לא מסכים לו לחלוטין (אני אפילו חושב שחשוב שיהיה קורס בסיסי בassembly, אפילו ש99.9% בחיים לא יכתבו בזה כלום אחרי הקורס - פשוט כי זה מלמד על הדברים מתחת לפני השטח).

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

איש תוכנה מנוסה וחכם ממני שהתרעם על כך שמוסדות לימוד תוכנה רבים כיום מתחילים מJAVA תמצת זאת בכך שמי שמתחיל מJAVA - סיכוי גדול ששם גם ייעצר והדבר היחיד שמצפה לו בקריירה הוא copy-paste של קוד JAVA ממקום אחד למקום אחר.

פורסם

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

אם כך, אז למה לא ללמוד קודם אסמבלי? או קובול? גם הן התפתחו לפני C ו-++C...

אין ספק שהיום הפרדיגמה המומלצת והנפוצה לתכנות, ב-90% מהמקרים ויותר (אפילו הייתי אומר 99%), היא OOP, ולכן זה רק נשמע הגיוני להתחיל ממנה. לעבור בין פרדיגמות שונות כשאתה עדיין לא מנוסה לדעתי יכול סתם לבלבל.

2) חלק מלימוד השפה הוא לימוד הסינטקס. הסינטקס של ++C עשיר לאין ערוך מזה של C, ואני רואה יתרון ללימוד הדרגתי.

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

אז לומדים בהדרגה ++C, ולא לומדים C ואז ++C. אז כמה שיעורים ראשונים של ++C הם מאוד דומים ל-C, אבל מהר מאוד זה מתחלף. חוץ מזה, יש דברים ב-++C שמחליפים לחלוטין את C, ודברים שאתה מתרגל אליהם ב-C לא נהוגים בכלל ב-++C. ב-C לדוגמה משתמשים ב-malloc, printf ו-structים, בעוד שב-++C משתמשים ב-new, cout ו-classים.

הסיבה ללמוד C אחרי ++C היא לא כדי לעבוד בזה, אלא בעיקר בשביל להיות מסוגל לעבוד עם קוד C (לדוגמה, אם אתה רוצה להבין קוד שעובד עם Windows API מסיבה לא ברורה). כיוון שהשפות מספיק דומות, אפשר לעשות את זה בערך ביומיים.

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

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

איש תוכנה מנוסה וחכם ממני שהתרעם על כך שמוסדות לימוד תוכנה רבים כיום מתחילים מJAVA תמצת זאת בכך שמי שמתחיל מJAVA - סיכוי גדול ששם גם ייעצר והדבר היחיד שמצפה לו בקריירה הוא copy-paste של קוד JAVA ממקום אחד למקום אחר.

קשה לי לומר שאני מסכים עם זה. אגב, מתכנת חכם יודע מדי לכתוב את הקוד ומתי לעבוד copy-paste (או ליתר דיוק, להשתמש בחבילה מוכנה).

פורסם

אם כך, אז למה לא ללמוד קודם אסמבלי? או קובול? גם הן התפתחו לפני C ו-++C...

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

אז לומדים בהדרגה ++C, ולא לומדים C ואז ++C. אז כמה שיעורים ראשונים של ++C הם מאוד דומים ל-C, אבל מהר מאוד זה מתחלף.

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

חוץ מזה, יש דברים ב-++C שמחליפים לחלוטין את C, ודברים שאתה מתרגל אליהם ב-C לא נהוגים בכלל ב-++C. ב-C לדוגמה משתמשים ב-malloc, printf ו-structים, בעוד שב-++C משתמשים ב-new, cout ו-classים.

נכון ומבחינתי הדרך הטבעית היא ללמוד קודם את השיטות של C, ואז את אלה של ++C. ובכל מקרה - כן ללמוד את השיטות של C. למעשה, חוץ מmalloc/free (שבכל מקרה צריך לדעתי מישהו שיש איזשהו סיכוי שיראה קוד C בחייו), שימוש בפונקציות ספרייה של C בקוד ++C זה לא משהו שהייתי נרתע ממנו בצורה אוטומטית, ובין struct וclass בכל מקרה אין שום הבדל משמעותי, ואין שום דבר שפוסל שימוש בstruct גם ב++C כדי לתאר מבנים פשוטים.

קשה לי לומר שאני מסכים עם זה. אגב, מתכנת חכם יודע מדי לכתוב את הקוד ומתי לעבוד copy-paste (או ליתר דיוק, להשתמש בחבילה מוכנה).

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

פורסם

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

פורסם

לגבי C אני מסכים אבל אתה לא יכול להתעלם מהעובדה שהיא הבסיס לC++. וC# ללא התמיכה לא ממש הייתה שפה טובה ולגבי OBJ-C אני ממש לא מסכים איתך, אתה לא ראית איך HALFBRICK עשו מהאפליקצייה שלהם 6 מיליון דולר :) נכון שזה לא ממש שפה שימושית אבל היא יכולה להכניס הרבה כסף אם אתה בונה APPS לAPPSTORE.

בכל מקרה שווה ללמוד C++ ואז JAVA בגלל שJAVA CROSS PLATFORM GUI. וגם זה כמעט אותו SYNTAX. בכל מקרה לC# היום יש תמיכה גבוהה וכן היא יכולה להצליח, פשוט לפני כמה שנים שרציתי ללמוד C# התמיכה לא הייתה משהו ולא היה לי ממש כלים. היום שאני יודע VB ועכשיו לומד JAVA וכן יודע קצת C וC++. אני יכול להגיד לך שאני מצטער שלא עשיתי מאמצים ללמוד C# כי היום התמיכה גבוהה יש המון דברים שאפשר לעשות איתך אבל גם JAVA שפה טובה ואני לומד גם JAVASCRIPT כדי ליצור משחקים בUNITY :)

פורסם

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

פורסם

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

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים