מעבר לGO למה? איך? ומתי?
-
איני מכיר את GO בכלל, אבל אני כלל לא בטוח שהיא מתאימה במיוחד לעולם הווב, כמו ש- NodeJS מתאימה.
אם היעד שלך הוא פיתוח ווב, לדעתי תלך על NodeJs. במיוחד בגלל שזה נותן לך אפשרות פיתוח צד לקוח,ובעצם להיות מפתח Full stack.
זה פשוט תלוי מה מעניין אותך.
בכל מקרה, דעתי היא שאפשר לעבור משפה לשפה בחופשיות. לא צריך להינעל על שפה מסויימת.
אני לא רואה כ"כ משמעות ויתרון לדעת שפה אחת ברמה הכי גבוהה.
מה שחשוב זה להכיר את הטכנולגיות ואיך הדברים עובדים.
גם קל לחבר תוכנות שנבנו בשפות שונות, בשביל לקבל ייתרון שיש בכל שפה.דוגמה מעצמי:
אני לדוגמה מפתח ב C#, VB6, JS, ו Java.
C++ וקצת פייתון.
חלק מהשפות אני מכיר ממש טוב, וחלק אני מכיר בצורה חלקית או בסיסית.
ולכל שפה הגעתי מצורך מסויים.
נניח, ל JAVA הגעתי כי הייתי צריך לפתח אפליקציה קטנה.
ל C++ הגעתי מפיתוח חומרה.
אני משתדל מידי פעם לשדרג את הידע שלי בשפה, ולראות איך עושים את הדברים "לפי הספר". -
@מנצפך
כרגע לא מעניין אותי כ"כ פיתוח front end
א. חוש העיצוב שלי לא משהו
ב. אני ממש לא מסתדר עם html (רק מה שאני חייב לעשות)לגבי פיתוח בback end אני עדיין מנסה להבין מה NodeJs נותן יותר משפות אחרות
א. קלות פיתוח: בנוד זה נראה לי גהינום מיותר כל העניין של הקוד האסינכרוני
חוץ מזה שJS לא נחשבת השפה הכי חכמה
ב. ביצועים: לפי כל המבחנים שראיתי (אם הבנתי נכון מה כתוב) GO מהיר הרבה יותר ולפעמים אותו דבר כמו NodeJs ככה שלא הרווחתי כלום מקוד האסינכרוני (במיוחד בAPI שבכל מקרה אתה לא יכול להמשיך לפני שכל הקריאות הסתיימו)
אם יש כאן איזה קטע שלא הבנתי אשמח לתובנות שלכם (לכן פתחתי את הנושא)אבל בכל מקרה אני מסכים עם זה שלא יזיק לנסות לטעום מטכנולוגיות שונות
ואכן שאלתי את השאלה שלי אחרי שקצת שיחקתי עם GO
אבל לא הרבה יותר משלום עולם בHTTP
ואני מתלבט אם ומתי לקפוץ למים ולבנות את הפרוייקט הבא שלי בGO
זאת אומרת למה זה מתאים מתי זה יותר טוב מPHP או כל שפה אחרת? -
נשמע לי הזוי לפתח אפליקציית ווב ב GO, זה נועד לאפליקציות ענק בסדר גודל של גוגל, בנוד יש לך הכל מוכן על מגש של כסף, ב GO אין קהילה גדולה כמו נוד ולא עשירית מהכמות של הספריות והתמיכה, נסה לגגל על שאלות ב GO ותראה כמה תוצאות תקבל, ולעומת זה כמה תוצאות תקבל בנוד, אין בכלל יחס ביניהם. למה אתה צריך להמציא את הגלגל?
-
@nigun אמר במעבר לGO למה? איך? ומתי?:
GO מהיר הרבה יותר ולפעמים אותו דבר כמו NodeJs ככה שלא הרווחתי כלום מקוד האסינכרוני
זה לא דבר והיפוכו
המהירות ב-GO מושגת במידה רבה משימוש רחב בא-סינכרוניות ומקביליות מאוד מובנה וזורם עם הקוד.קצת מוזר שאתה נכנס לדקויות של הפרשים בין נוד לGO בזמן שהוא קטן הרבה הרבה יותר מההפרש מהירות הריצה שבין PHP לשניהם.
-
@יוסף-בן-שמעון אמר במעבר לGO למה? איך? ומתי?:
נשמע לי הזוי לפתח אפליקציית ווב ב GO, זה נועד לאפליקציות ענק בסדר גודל של גוגל,
למה זה נשמע הזוי? זה לא מקובל ? זה סתם מסובך לכתוב?
אבל אתה צודק בזה שנוד לא נועד לדברים גדולי כי גם Ryan Dahl (הממציא של נוד) חושב ככהבנוד יש לך הכל מוכן על מגש של כסף, ב GO אין קהילה גדולה כמו נוד ולא עשירית מהכמות של הספריות והתמיכה, נסה לגגל על שאלות ב GO ותראה כמה תוצאות תקבל, ולעומת זה כמה תוצאות תקבל בנוד, אין בכלל יחס ביניהם. למה אתה צריך להמציא את הגלגל?
אממ... נראה לי שיש יותר מעשירית
בגיט האב מופיעים 19,867 ספריות בgo לעומת 66,428 בnodejs
השאלה היא כמה מהספריות האלו הם front end וכמה back end
וחוץ מזה משום מה בPHP אני לא משתמש בכל כך הרבה ספריות משוכללות אפילו שיש שם 52,349 ספריות בPHP
(סתם קטע מעניין שPHP הומצא 14 שנה לפני nodejs ולא הגיע לכל כך הרבה ספריות וגם לjs (שיצא עם php) יש 118,225 ספריות אולי זה אומר משהו על אופי השימוש)
@אהרן
אין לי מושג למה GO מהיר אני רק רואה את ההשוואות
אם יש לך מקור לדבריך אני פתוח לשמוע
בכל מקרה אני יודע שPHP הוא איטי וזה אחד מהסיבות שאני מעדיף לעבור עכשיו שפה
בשביל לא לנעל על PHP ואז להיתקע כש(בעז"ה) יהיה לי פרויקטים שדורשים ביצועים גבוהים
אז אם הסיבה שלי למעבר זה בעיקר ביצועים ומהירות פיתוח אז go נראה לי שעונה על דרישות אלו ולא nodejs
כי למיטב ידיעתי נוד לא יותר מהיר מגו (וגם אם במקרים מסוימים נוד יותר מהיר, זה לא משמעותי)בקיצור כולם אומרים לי כאן שזה הזוי וכו' אבל אני רוצה לשמוע "למה???"
-
@יוסף-בן-שמעון
עוד נתון מעניין זה שgo כל השנים האחרונות במגמת עליה
כך שאם (אולי) חסר משהו במשך השנים זה יפתר -
@nigun
לדעתי חד וחלק, אין לך מה לחפש ב GO.
לא תגיע לבעיות ביצועים כ"כ מהר.
בעיות ביצועים הם בדר"כ במסד נתונים או בגישה למערכת קבצים, שזה בכל מקרה לא משנה מה השפת תכנות שלך.
אלא"כ אתה כותב אלגוריתמים בלמידת מכונה או ראייה ממוחשבת, שאז וודאי אין לך מה לחפש ב JS...איך שנשמע ממך אתה מחפש תחליף ל PHP, וודאי שזה NodeJS ולא GO.
GO זה תחליף ל C++ (גם ע"פ ויקיפדיה וגם איך שזה נראה).בנית פעם שרת ב C++? א"כ מתאים לך GO. אם בנית שרת ב PHP מתאים לך NodeJS ככפפה ליד.
בהצלחה בהחלטה. -
@מנצפך
לא כל כך הבנתי מה אתה מתכוון
האם מי שבא מPHP יותר קל לו ללמוד נוד?
לא כ"כ מבין למה, הרי יש קושי הסתגלות ללמוד את הקוד האסינכרוני (עיןן בכל השאלות שחוקר הסתבך אתם במעבר מPHP לנוד)
משאין כן בgo (כי לא חייבים להשתמש בקריאות מקביליות)
ובכל מקרה מכל הביקורות שמצאתי ברחבי הרשת לא מצאתי מישהו שאומר שזה לא מתאים לפיתוח back end
אני יעשה קצת סיכום של הסיבות שמצאתי למה לא go-
go לא מתאים לfront end
-
טיפול בשגיאות לא מובנה בשפה וצריך להשתמש בספריה מיוחדת
-
יותר קשה למצוא מתכנתים בgo ולכן פחות חברות עובדות עם זה (וזה יכול ליצור קושי למצוא עבודה)
-
לא כ"כ מתאים ליצירת רעיונות דהיינו "בא נתחיל לכתוב ונראה מה יצא" (דווקא בזה PHP מצוין)
-
יש יותר חבילות בנוד
-
בgo הקהילה יותר קטנה
-
צריך לקמפל אותו וזה קצת מציק כשלומדים בשיטת הניסוי וטעיה (לא ראיתי שמישהו כתב את זה, פשוט מהנסיון של כמה שעות עם go)
והמעלות
-
יותר קל לכתוב ולקרוא את הקוד
-
בעיקרון יותר מהיר (יכול להיות שזה משנה רק בדברים גדולים)
בקיצור קלות פיתוח הכי מדבר אלי
ואני לא הולך לרובי או פייתון
כי אם כבר ללמוד משהו אז ללכת על משהו מהיר -
-
@nigun
ביקשת עצה, כולם התנדבו לתת.
ביקשת לנמק, נימקו.
תעשה טובה, לא באנו לריב איתך,
אתה מבקש לעמת את הנימוקים, עם מה שנראה לך מחיפושי גוגל והתרשמויות, וזה כבר נראה לי כבר הטרדה.
קח דוגמה - אתה לא כתבת קוד בנוד ובגו, ו@יוסף-בן-שמעון כן כתב. הוא כתב לך שאין בגו עשירית מספריות שזמינות לנוד,
וטענת שזה לא נכון תוך הבאת נתון לא קשור של מספר הפרוייקטים בגיטאב מכל שפה.
יאללה תתחיל עם גו ותבוא לפה עוד חודש להזים את כל הטענות (לא בדיוק, תצטרך בשביל זה גם לכתוב טיפה בנוד).
-
@dovid
סליחה אם אני נשמע מתלהם
אבל אין לי פה שום אינטרס שgo יצא מנצח
רק רציתי להבין את הטענות, כי לא שמעתי כאן הסברים מפורטים
אבל כנראה זה באמת עניין של טעם (ולכן כולם מקללים את PHP)
( @magicode איך יודעים איזה שפה לאהוב?)
נ.ב. למה מספר הספריות בגיטהאב זה לא אינדיקציה? (אולי יש לך אינקדיציה אחרת?)אבל בכל מקרה תודה רבה לכולם על הרצון לכוון ולעזור
(תכל'ס זה עזר לי לחדד את הנושא אצלי)
ובעז"ה אני אוכל לעדכן איך זה נראה מבפנים (אם אני יהיה עקבי)
(רק מה, כנראה אני לא אוכל לשגע את כולם כאן עם שאלות של איך עושים X
כי אני אקבל מבטים בסגנון של "אמרנו לך") -
-
@dovid אמר במעבר לGO למה? איך? ומתי?:
ביקשת עצה, כולם התנדבו לתת.
ביקשת לנמק, נימקו.
...וזה כבר נראה לי כבר הטרדה.
@nigun אמר במעבר לGO למה? איך? ומתי?:
בקיצור כולם אומרים לי כאן שזה הזוי וכו' אבל אני רוצה לשמוע "למה???"
האמת שגם אני הרגשתי שלא נימקו מספיק.
למשל,
@dovid קובע:לטעמי הכי קל זה ללמוד NODEJS, והכי יעיל זה לפתח עם דוטנט.
@מנצפך קובע: -
אתה מחפש תחליף ל PHP, וודאי שזה NodeJS ולא GO.
GO זה תחליף ל C++
@יוסף-בן-שמעון כותב/קובע: -
נשמע לי הזוי לפתח אפליקציית ווב ב GO, זה נועד לאפליקציות ענק בסדר גודל של גוגל,
אני מבין שהדברים נכתבו ע"י בעלי נסיון וותק של שנים מתוך נסיון והבנה בתחום, ואני לא בא להטיל ספק בקביעה, אבל עדיין הם לא נימוקים, אלא קביעות. בַּמֶה GO דומה יותר ל-++C? משום מה GO מתאים יותר לאפליקציות ענק? למה יותר קל ללמוד נוד?
וא"כ אני מבין מאוד למה זה לא מספק את @nigun. אם זה היה נוגע אלי, גם אני הייתי רוצה לקבל נימוקים ולא רק קביעות ש: "לא, זה לא בשבילך."בינתיים, לסיכום, כתבו נימוק אחד ויחיד (אם אין לי בעיות קשות בהבנת הנקרא...): יש קהילה גדולה יותר מסביב לנוד.
חוץ מזה קבעו שיותר קל לפתח בנוד ושנוד יותר מתאים לאפליקציו ווב, ושזה מספיק מהר. (אני לא נכנס לוויכוח אם מספר הפרוייקטים בגיטהאב הוא אינדיקציה, כי בלי לבדוק, לדעתי זה לא אמור להיות אינדיקציה. ברור לי שיש קהילה פי כמה יותר גדול מסביב לנוד.)כדי שלא להשאיר את הגליון חלק
אכתוב מה שנראה לי מתוך הכירות שטחית מאוד ב-GO. מה שאולי כולם התכוונו לזה אבל אף אחד לא כתב בפירוש.
GO הוא יותר low level מנוד.
זה מתבטא בכמה וכמה צורות:- Data Structures: לדוגמה, שב-JS יש את Object שאפשר להשתמש בו לכל מיני שימושים כמו Array HashMap וכו'.
- GO הוא statically typed. לעומת JS שהוא dynamically typed
- ב-JS יש המון קיצורי דרך בשפה שמקילים על חיי המתכנת, ב-JS יש closures ו-פונקציות כאובייקטים, ועוד סוגי דברים שקיימים בשפות דינאמיים ולא בסטטיים, שמקילים מאוד על הפיתוח המהיר.
-
@yossiz אנ ממש לא מסכים איתך. נעבור על כל המשתתפים, שלטעמי ענו מעולה וקיבלו יחס ממש לא ראוי.
אני כתבתי "לטעמי", והוספתי אחרי שהבנתי שיידרשו מאה הסברים את המילים
"את דעתי כתבתי, לא נראה לי שאני יכול לתרום לך תובנות נוספות מעבר למה שכתבתי."
אז אני לפחות הייתי פטור מנימוקים (שאם תאמר מי שלא מנמק שלא יכתוב כלום חזרת לבעיה שהזכרתי, שדעת אנשים מנוסים גם בלי נימוקים היא מכרה זהב שחבל לאבד אותו לטובת "נימוקים").
@nigun שכנראה כמוך חושב אחרת, כתב לי אחרי שתי אלו "אתה יכול לפרט תובנות יותר מפורטות?".
במילים אחרות אני לא אניח לך להפריח דעות ללא הוכחות.@יוסף-בן-שמעון הואיל לכתוב את דעתו (הוא לא יעשה את זה אם יבקשו ממנו לכתוב מאמר של 8 עמודים למה הוא חושב ככה)
א. GO לא עשויה להרים אפליקציה מהר, כי רוב הדברים לא מוכנים לך בקלות, לעומת נוד. בגו בהרבה נושאים אתה "ממציא את הגלגל"
ב. לGO יש קהילה קטנה בהרבה שמחייבת הרבה יותר לימוד עצמי וטרחה בפתרון בעיות מאשר נוד.@מנצפך כתב המון דברים נכונים ומנומקים די הצורך, א. ההשוואה של GO לC++ שזו השוואה שמסבירה את עצמה כמו שאתה עצמך ניסחת את זה אקדמית: GO היא LOW LEVEL בהרבה הבטים. ב. כפי לשונו "בכלל לא בטוח שהיא" מתאימה לעולם הווב לעומת NODEJS. כל אחד יודע שנוד נבנתה להוות שרת אינטרנט וזה לא סתם ספריה כל שהיא. ג. ביצועים זה לא משהו שבאמת מגביל אותך ביישום ווב טיפוסי
@nigun ענה על דבריהם בהרבה יומרה ובלי הרבה לדעת, אני מבין שהוא התכוון להאיץ בהם לתת יותר פרטים אבל זה היה נראה לי "אלים" מידי. ולכן כתבתי מן "גערה" בעניין.
גם אתה @yossiz בהודעתך די מזלזל במי שכתב קודם, כי אתה מסכם שלא נאמר כלום וכולם "קבעו", בהסתייגות שאולי יש לך בעיה בהבנת הנקרא ואני אומר בעייתך היא שאינך מעריך כיאות דעת אחרים, שאם תעריך תדע למצוא הרבה בדבריהם ולדון בפניהם בכבוד הראוי, ולא בדרך שנקטתם: התגרות אינטלקטואלית מעצבנת. -
בנוגע למה שכתבת אין קשר בין תחביר השפה הפשוט לבין היותה low level.
יש לGO לזכרוני כמה עקרונות פשוטים:
א. כמה שיותר פשוט (אין את רוב הפיצ'רים של שפות הOOP בכונה תחילה, הם מתייחסים לזה כover-engineering)
ב. כמה שיותר אחיד (שלא יהיו כמה דרכים לעשות פעולה אחת, שכן יהיו פונקציות שעושות כמה דברים בעלי אותו רעיון).
ג. כמה שפחות הפשטות (= low level, זה קצת על חשבון עושר השפה, אבל הרוב מגיע מסעיף א')
ד. מהירותאולי אני לא מדייק, אבל לדיוק יש ויקיפדיה, אנחנו פה בשביל לשתף מניסיון ומעושר בלי להיות "חייב" לתת דו"ח אקדמי על כל מילה.
-
אויש @dovid אתה לוקח את זה קשה מדי...
בלי להפוך את האשכול לוויכוח סרק... אכתוב בקיצור.
תכונה חשובה עבור מפתח הוא מדת סקרנות. בסה"כ @nigun רוצה להבין.
אם אין לך זמן להסביר, אל תסביר.
אבל מה רע בבקשת הסבר? האם לא היה לומד יותר מתוך הסבר מפורט?
הוא לא כפה על אף אחד להשיב, סה"כ ביקש.@dovid אמר במעבר לGO למה? איך? ומתי?:
כי אתה מסכם שלא נאמר כלום
נכון הגזמתי קצת אבל גם אתה מגזים קצת במילים אלו. אני מעריך מאוד את הדעות המקצועיות אבל זה לא הוסיף הרבה להבנת הענין.
-
@dovid אמר במעבר לGO למה? איך? ומתי?:
אין קשר בין תחביר השפה הפשוט לבין היותה low level.
אני הבנתי שיש קשר. לא כתבתי שהתחביר של JS יותר פשוט מ-GO, אדרבה נ"ל שההיפך נכון. כתבתי שיש קיצורי דרך שהכניסו לתוך התחביר, מה שלא יכניסו ל-GO. למשל הסיבה ש(להבנתי) לא יוסיפו ל-GO את התחביר
[array...]
או... for ...in
וכו' הוא בגלל שזה קורא פונקציות מאחורי הקלעים, מה שלא מתאים לשפה lowlevel.@dovid אמר במעבר לGO למה? איך? ומתי?:
כפי לשונו "בכלל לא בטוח שהיא" מתאימה לעולם הווב
לא יודע מה זה עולם הווב, זה כן נעשה בפירוש עבור שרתים שצריכים מקביליות גבוהה, וביצועי I/O טובים.
אנחנו פה בשביל לשתף מניסיון ומעושר בלי להיות "חייב" לתת דו"ח אקדמי על כל מילה
אל תרגיש "חייב" לענות
אני אישית פה בשביל ללמוד מאחרים. מצטער, אין לי שום נסיון עשיר לחלק לאחרים
. זה שאני (או מישהו אחר) מטיל ספק במה שאתה או מישהו אחר כתבו לא נובע מזלזול אלא מרצון להבין.