שפות dynamic typing לפרויקטים גדולים

שרעבי100

New member
היתרון הגדול לצוות שמשתמש בml

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

יבגניי34

New member
אני מניח ששמעתם על type hinting? תתקדמו לפייתון 3.

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

I130Form

New member
בדיוק! אז למה לא לכתוב בשפה static typed

האמת שהקוד כתוב בפייתון 2. אם אנחנו צריכים להסב את הקוד לפייתון 3 לטובת מערכת typing בסיסית, אולי עדיף כבר להשתמש בפלטפורמה עם מערכת typing מבוססת ועשירה יותר?
&nbsp
לפחות מהבחינה הזו.
 

יבגניי34

New member
אני מניח שאתה יודע את התשובה לזה

הסבת קוד מפייתון 2 ל-3 זו פעולה שיש לה roadmap ידוע, כלים תומכים, ורבים וטובים עשו אותה לפניך.

לקחת קוד לא טריווילי ולכתוב אותו מאפס בסקאלה או R זו מטלה אדירה שצריך סיבה מאד מאד טובה להכנס אליה. ולפני כן תצטרך לוודא שיש לך את כל עושר כלי ה data science שפייתון נותנת לך חינם (ובתמורה מקבלת ממך קיטורים ודיבות)
 

user32

Well-known member
מנהל
אין הבדל גדול

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

I130Form

New member
זה מרגיש כמו הבדל בין blacklist ל whitelist

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

מנסיוני: אם מדובר ב backend, אז גם כל הנושא של deployment lifecycle וכן תיקוני באגים הוא יותר מהיר.
כל עניין ה build פשוט לא קיים.
שחרורי גירסה הם הרבה יותר מהירים, ועם מעט מאוד ״אורקסטרציה״.
בסטארטאפים, בעיקר בשלב ההקמה של ״לרוץ מהר עם פיצ׳רים כדי לכבוש את השוק״, זה הרבה יותר מקובל לעשות deployment מעמדת הפיתוח עצמה ישירות לשרתים, נניח ע״י Ansible או סתם fabric, כי זה החלפה מאוד מהירה של קבצי טקסט (!) ופקודת restart ל service הרלוונטי (לא למכונה עצמה).
בצוות מספיק קטן ומתואם, זה עובד מצויין.
 

dabon

New member
dynamic typing לא לפרוייקטים גדולים

אם ניתן ללמוד משהו מהניסיון של החברות הגדולות:
  • פייסבוק פיתחו את Hack
  • מיקרוסופט את typescript
  • טוויטר עברו מ-ruby ל-scala ו-java
 
למעלה