בחירת כלי תוכנה

jellymean

New member
בחירת כלי תוכנה

חבר ביקש ממני לעזור לו לכתוב סימולטור בתחום כלכלי. יש שם בעיקר חישובים ואנחנו מתלבטים בין 3 כלים ונשמח לקבל את עצתכם...
1) C++ יתרון יש אובייקטים כלומר OOD
2) MATLAB חסרון אין אובייקטים יש רק פונקציות
3) JAVASCRIPT יש אובייקטים אך פחות נוח לשמור נתונים לקובץ
 

choo

Active member
צריך לדעת דרישות ביצועים וקהל יעד

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

jellymean

New member
תשובה

באמצע בין 1,000 למיליון חישובים
כנראה ע"ג מחשב אחד
ללא ריבוי משתמשים (כנראה)
נתונים בקבצים עם עדיפות לפורמט נתמך אקסל כמו CSV
 

ipv6

Member
ה-use case לא מאד ברור

יש לך אוסף של קבצי CSV שמתארים מידע פיננסי כלשהוא (מחירים הסטוריים של מניות?)אתה מתכוון לקחת את הקבצים הללו ולהוציא פלט חד פעמי או שהמערכת הזאת תשרת בקשות שיגיעו ממשתמשים ? זה פרויקט לימודי בשבילך \ חבר שלך או מערכת אמיתית שתשרת לקוחות? עד כמה אתה רגיש ל-latency?

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

jellymean

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

שירות לקוחות - לא
ביצועים - לא ממש קריטי אבל צריך לרוץ בזמן סביר

אני אישית לא מכיר פייתון
 

choo

Active member
נראה לי שלגמרי פייתון

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

jellymean

New member
המגבלה עם שפת פייתון

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

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

choo

Active member
השליטה שלי ב-++C הרבה יותר טובה מאשר בפייתון

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

choo

Active member
לוקח יומיים ללמוד פייתון, ואז מתכנתים על בסיס גוגל

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

ipv6

Member
מה זה 'יודע פיית'ון'

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

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

גם בC++ אפשר לעשות הרבה דברים בכמה דרכים וב-usecase-ים בסיסיים (למשל פרויקט לימודי שעושים בבית) שניהם יעבדו\יראו עובדים, זה לא אומר ששתי הדרכים שקולות בכל המקרים או נכונות באותה המידה.
 

choo

Active member
למטרות של פרוייקט אקדמי לא בתיכנות - זה יספיק לו

 

HoneyBadger

New member
אני אישית תמיד בהינתן האפשרות הייתי בוחר בC++


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

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

HoneyBadger

New member
אני מינימליסט אז vscode זה כל החיים שלי

אם אתה מחפש יותר IDE מזה אז יש את הידועים, כמו eclipse וnetbeans ויש עוד אחד נפלא שקוראים לו codelite (וזה מנוהל על ידי בחור ישראלי
)
 

ipv6

Member
CLion

לא ניסיתי אבל הביקורות משבחות..
אני אישית גם מאד אוהב את PyCharm ושינהם מאותה החברה.
 

vinney

Well-known member
אני ניסיתי, כלי לא רע

עולה כסף (לחברה, אז לא איכפת לי), אבל יחסית לאקליפס שהיה לי קודם דווקא לא רע בכלל.
 

jellymean

New member
הי חברים, תודה לכולם על העזרה

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