עד כמה שפת תכנות משנה בקבלת תפקיד?

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

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

אני יכולה להעיד מניסיון של מתכנתת C++ שיצא לי בעבר לעבוד בערך חודשיים שלושה בג'אווה ובשנים האחרונות גם לעבוד קצת ב C# - ובשני המקרים המעבר היה די קל (כנראה בין השאר כי העבודה לא כללה שימוש ב frameworks מעל ג'אווה או C#).

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

vinney

Well-known member
יש עקומת למידה במעבר בין שפות
אם יש מועמדים שלא צריכים את הלמידה הזאת - למה לקחת אותך?
&nbsp
יש בהחלט הבדלים בינהם, גם בצורת עבודה, גם בגישה, וגם בספריות נלוות. אני רואה את זה בכיוון ההפוך, של ג׳אוואיסטים שעובדים ל++C - זה לפעמים לוקח חודשים להפנים את ההבדלים האלה ולהתחיל להכיר את השפה.
&nbsp
זה לא רק הסינטקס.
 
אתה צודק לגבי ספריות נלוות...
ואני מניחה שגם לא פעם מדובר על מעבר תחומי תכנות - למשל מעבר ל C++ כדי לעבוד ב low level שזה משהו שלא קיים בג'אווה.

אז איך אנשים עוברים בעצם בצורה יעילה בין שפות? פשוט לומדים לבד את השפה ואת הספריות הנפוצות?
 

קלייטון

New member
מזכיר לי מתכנת אחד שהכרתי פעם
הוא בא מפסקל ובמקום בו עבד עבדו ב-C.
בפסקל סוגרים בלוקים ב-begin end. לאסונו ב-C זה הרבה פחות אינטואיטיבי. אז מה עושים? הבחור גילה שב-C יש פרהפרוססור. אז הגדיר בפרהפרוססור את begin כ-}, את end כ-{, ומשם והלאה בשמחה המשיך להשתמש ב begin end האהובים.
 

vinney

Well-known member
אתה תגלה שהרבה אנשים בפורום הזה לא יבינו את הבדיחה
כי כבר בשנות ה90 פסקל היה די פסה..
 
היית צריך לספר את זה לאוניברסיטה שבה למדתי...
היה קשה לשכנע אותם לעבור משפת פסקל לשפת C, וזה בתקופה ששפות object oriented כבר היו פופולריות יותר משתיהן יחד (שנה או שנתיים אחרי הם כבר התחילו ללמד את הקורסים הבסיסיים בג'אווה).
 

vinney

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

vinney

Well-known member
נראה לי זה באמת טרול...
פסקל תומכת בתכנות מונחה עצמים עוד מסוף שנות ה80....
 
אותנו לימדו פסקל ללא תכנות מונחה עצמים בתואר...
וזה היה הרבה אחרי סוף שנות השמונים. כשרצו ללמד אותנו את הנושא של תכנות מונחה עצמים בכמה תרגולים באחד הקורסים בשנה השניה או השלישית שלנו, לימדו אותנו C++, ושנה שנתיים אחרי העדיפו להעביר את הקורסים שנלמדו עד אז בפסקל בג'אווה בדיוק כי הבינו את הצורך לעבור לשפות מודרניות יותר.

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

jellymean

New member
בסופו של דבר
כל ה- Ojbect Oriented לא באמת קיים במחשב.
ברמת התוכנה הכל יורד לשפת אסמבלר. אין אובייקטים.
מה שיש זה קטעי קוד ב- code segment ונתונים ב- data segment.
כל ה- OO וה- design patterns הם רק מודלים שעוזרים לבני אדם לתכנן.
 

vinney

Well-known member
שפה זה כלי. כמו כל כלי, צריך ללמוד להשתמש בו.
כן, לומדים. לא בהכרח לבד, לומדים מהקוד הקיים, מהאנשים האחרים בצוות, מהאינטרנט, וכו' וכד'.
 

BravoMan

Active member
לדעתי, זה תלוי בסובלנות את החברה:
כפי ש-vinney אמר, יש עקומת למידה.
אחד ההבדלים הגדולים בין Java ל-++C למשל, הוא ניהול זיכרון.
&nbsp
יש חברות שמוכנות לספוג זמן למידה של שפה, ויסכימו לקחת מפתח עם וותק מסוים גם אם אין לו ניסיון בשפה שדרושה למשרה הספציפית, מתוך שיקול שעדיף הניסיון הכללי \ ניסיון דומיין של המפתח זה, מאשר הכרות עם השפה.
&nbsp
מהצד השני, יש חברות שיעדיפו להשקיע עוד זמן בחיפוש מעומד יותר מתאים, או יעדיפו ידע בשפה מאשר ידע בדומיין הספציפי.
במיוחד אם מדובר בדומיין צר שלא מסתובבים הרבה אנשים עם ידע מוכן בו.
 
אני תמיד חשבתי שבג'אווה ניהול הזיכרון קל יותר...
כי אין טיפול בפוינטרים (למרות שהחל מ C++ 11 והכנסת ה smart pointers) גם ב C++ זו כבר פחות בעיה.
 

BravoMan

Active member
כן, ולא.
מצד אחד, Java יותר קלה למתכנתים מתחילים כי ניהול הזיכרון הוא אוטומטי, תמיד, ויש Garbage Collector שדואג להרבה דברים.
&nbsp
מצד שני, תמיד יש דרכים לשבור אותו אם לא זהרים (שמירת רפרנס שתגרום לדליפת זיכרון), ואם נכנסים לשאננות זה מביא לתוצאות לא טובות.
&nbsp
גם ב-++C וגם ב-Java יש אוסף מכשולים שקשור לניהול זיכרון, רק שהוא שונה מאוד בשתי השפות.
 

ipv6

Member
תפקיד C++-י ממוצע
יצריך ככל הנראה הכרות יותר אינטימית עם ניהול\חתימת זיכרון מאשר תפקיד ג'אוואי.

כמובן שכל מקרה הוא אינדיבדואלי אבל לדעתי מעבר מ-CPP ל-ג'אווה יהיה לרב האנשים קל יותר מאשר ההיפך.


אגב אני חושב שפותחת השרשור היא טרול..
 

hadooper

New member
 

user32

Well-known member
מנהל
זה יותר הדומיין מאשר השפה
רוב הפרוייקטים בC++ הם בעלי מאפיינים מסויימים. לא יודע כמה אפליקציות ווב מפתחים בC++, לדעתי מעט מאוד ב15 שנים האחרונות (בעבר זה היה נפוץ).
בג'אווה, מעבר לשפה עצמה יש את הציפיה שהמתכנת יכתוב בצד שרת בסטנדרטים מסויימים. לטעמי, ללמוד את הספריות הנלוות ואת המוסכמות זה יותר מורכב מלהחליף את הסינטקס של השפה.
לכן מי שפיתח ווב בג'אווה יכול די בקלות לעבור לnode, python, רובי ואחרות. באותו אופן מי שמפתח אפליקציות מובייל יכול לעבור יחסית בקלות לשפות אחרות במובייל.
כשלמדת באוניברסיטה היה הרבה פחות שימוש בספריות, פרימוורקים, שפות מנוהלות וסביבות ריצה.
 

ronenw3

New member
מי שפיתח במונוליתים כמו weblogic ייתקשה לעבור לעולם של דוקר
ו microservices .
 
למעלה