למידת שפה חדשה

Pinukee

New member
למידת שפה חדשה

שלום,
אני מהנדס תוכנה כבר כ-9 שנים, התחלתי בתור מפתח net. כמה שנים (עם נגיעה גם javascript אך לא ברמות הגבוהות של protoypes וכו׳) ולאחר מכן עברתי לפיתוח Backend ב-Java. כיום מפתח ב-Scala בעבודה ושוקל ללמוד באופן אישי שפה חדשה (עם הפריימוורקים הרלוונטים, האקו-סיסטם וכו׳). c וc++ למדתי באוניברסיטה. אני רוצה שפה שיש לה ביקוש בשוק, שלא נראה שהולכת לשום מקום ושתעזור לי בעתיד (מעוניין להמשיך בתחום הbackend), ובחברות יחסית חדשניות ולא בשלות לגמרי עדיין (אך לא מדבר על חברות של 3 אנשים). אני מתלבט בין:

  • Python - אני יודע שמאוד פופולרית היום (בעיקר בגלל תחום הML שאישית פחות מדבר אליי), אך היא שפה דינמית ולא יודע אם מיועדת לפיתוח מערכות שלמות או רק ל״משימות מיוחדות״ בעיקר.
  • Go - שפה ביעילות גבוהה ותחום חם היום אך מנסה להבין אם מודל הירושה שם (composition בעצם, ששונה ממה שאני רגיל אליו) הוא אויב או חבר... וגם כל הreference ו-dereference די מרתיע אותי (די הספיק לי מזה באוניברסיטה...)
  • Node.js (פחות שפה, יותר פלטפורמה) - גם תחום חם היום, אך העובדה שזה single-threaded ומודל העבודה של הcallbacks נראה לי גורם לקוד מסורבל (יחסית) ויש לה גם את החסרונות של היותה שפה דינמית (וגם את היתרונות מן הסתם). לא הכי בקיא בהתקדמויות השפה אבל כל הprototyping הזה נראה לי לא הכי נוח (הבנתי שבגרסה האחרונה כבר יש תמיכה יותר טובה בשפה לclasses וכו׳). אפשרות נוספת היא שימוש ב-TypeScript אך לא יודע כמה נפוץ עדיין.
  • Kotlin - עולה מאוד בפופולריות בזמן האחרון, בעיקר בזכות הדחיפה של גוגל. שפה נחמדה, שבעצם מנסה להוריד את הבעיות של Java ומוסיפה קצת עליה, ולא מתרחקת ממנה יותר מידי כמו Scala. אם זאת, השאלה אם שווה לי להשקיע בעוד שפה לjvm בהתחשב שאת האקו-סיסטם אני כבר מכיר די טוב (מעבודה בJava וScala), וגם נושא שינוי מדיניות העדכונים והרישיונות של oracle שעדיין לא ברור ולא יודע כיצד ישפיע.

אז אני מחפש עצה מכם - אז מה אתם אומרים?
 

choo

Active member
במקומך הייתי לומד פייתון

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

Pinukee

New member
השאלה אם היא טובה כאשר robustness נדרש

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

יבגניי34

New member
robustness זה באזוורד. פייתון שפה וורסטילית בשימוש נרחב.

יש לה ביקוש בשוק, לא נראה שהולכת לשום מקום ותעזור לך בעתיד.
 

user32

Well-known member
מנהל
גם וורסטילי זה באזוורד


אבל אני מסכים עם מה שכתבת.
 

יבגניי34

New member
האמת שלא, מונח בר כימות ומדיד

פייתון משמשת בהרבה תחומים רחוקים לכאורה, לזה אני קורא וורסטיליות. אף אחד לא כותב שרתי ווב בפרל או עושה IoT prototyping ב R.
 

user32

Well-known member
מנהל
הקיץ הוא זמן מעולה לדיונים חסרי תכלית

לפי הגדרת המילה "באזוורד":
https://en.wikipedia.org/wiki/Buzzword

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

יבגניי34

New member
אוקי. 1-0 לך. אבל... עונת המלפפונים רק החלה... הישמר

revenge is a dish best served cold
 

user32

Well-known member
מנהל
לגמרי

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

choo

Active member
כן, יש מוצרים גדולים שכתובים בפייתון (עם או בלי עוד שפות)

&nbsp
מכיר כמה חברות storage שאת החלק הניהולי של המוצר שלהן (להבדיל מה-data path) כתבו בפייתון, מוצרים שנמצאים בשימוש יום-יומי אצל לקוחות בעולם.
&nbsp
openstack, עם כל הביקורת שלי כלפיו, כתוב ברובו בפייתון. ולצערי אני מכיר גם יישומים שלו בשטח (כלומר במוצרים שנמצאים בשימוש יום-יומי אצל לקוחות).
&nbsp
ברמה האישית, הייתי מעדיף לכתוב קוד מהסוג הזה בג'אווה, אבל עולם התוכנה של העשור האחרון מצביע על שימוש הולך וגדל בשפות דינמיות, דוגמת פייתון וג'אווהסקריפט, לפיתוח תוכנות צד שרת שלא צריכות לספק ביצועים מדהימים פר שרת. זה שכיח יותר בסטארטאפים, אבל גם "סטארטאפים" כמו גוגל, פייסבוק ואמאזון...
 

Pinukee

New member
הסתכלתי קצת

כמו שאתה יכול לראות בהודעה שלי, יש כמה דברים ״מרתיעים״, אתה מוזמן לשפוך עוד אור במידה ויש לך מה לתרום
 

eveik

New member
שאלתי את choo :)

לא יצא לי לעבוד עם השפה, אבל כבר כמה שנים יש התלהבות דיי רצינית והיא backed by google אז זה כבר חיובי אני חושב. אהבתי (ממה שיצא לי לראות..) את העובדה האסינכרונית שם, משהו שמאוד חסר לי בשפה שאני עובד איתה היום (רובי).
 

choo

Active member
לא הסתכלתי עליה, והיא לא רלוונטית לשואל המקורי

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

ipv6

Member
גם כלי ניטור ו-recovery

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

&nbsp
Python מיועדת לפיתוח מערכות שלמות.
Go - שפה ביעילות גבוהה ותחום חם היום אך היא יותר באז וואד מאשר שפה מאוד פופולרית. אם נשווה את כמות השורות שנכתבות ב-GO לעומת כמות השורות שנכתבות בפייתון או בJAVA או ב-C# תגלה שהיא לא כזו פופולרית, לפחות בארץ. החסרונותץ שץיארת הם חסרונות של קוד מקומפל.
Node.js בגירסה האחרונה שכיום מפתחים רק בה שנקרת ES^ יש קלאסים נורמליים. יש יש גם async await שפותר את בעיית התכנות האסינכרוני. (בגירסאות מאוחרות יותר) אגב, TypeScript מאוד נפוץ. יש לה מעלה גדולה שבגלל שהיא JS היא תעזור לך גם לפיתוח ווב.
Kotlin - היא פחות פופולרית בצד שרת.
&nbsp
גם לדעתי לך על פייתון.
 

Pinukee

New member
השאלה לגבי Go היא...

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

zaske

New member
חלק מהאבחנות שלך לא נכונות לגמרי

והייתי מצפה ממישהו עם 9 שנות נסיון ״לא לפחד״ מרפרנסינג ודה-רפרינסינג, אם אם עבד רק בג׳אווה וסי שארפ רוב הקריירה.

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