מעבר לGO למה? איך? ומתי?
-
@dovid אמר במעבר לGO למה? איך? ומתי?:
אין קשר בין תחביר השפה הפשוט לבין היותה low level.
אני הבנתי שיש קשר. לא כתבתי שהתחביר של JS יותר פשוט מ-GO, אדרבה נ"ל שההיפך נכון. כתבתי שיש קיצורי דרך שהכניסו לתוך התחביר, מה שלא יכניסו ל-GO. למשל הסיבה ש(להבנתי) לא יוסיפו ל-GO את התחביר
[array...]
או... for ...in
וכו' הוא בגלל שזה קורא פונקציות מאחורי הקלעים, מה שלא מתאים לשפה lowlevel.@dovid אמר במעבר לGO למה? איך? ומתי?:
כפי לשונו "בכלל לא בטוח שהיא" מתאימה לעולם הווב
לא יודע מה זה עולם הווב, זה כן נעשה בפירוש עבור שרתים שצריכים מקביליות גבוהה, וביצועי I/O טובים.
אנחנו פה בשביל לשתף מניסיון ומעושר בלי להיות "חייב" לתת דו"ח אקדמי על כל מילה
אל תרגיש "חייב" לענות אני אישית פה בשביל ללמוד מאחרים. מצטער, אין לי שום נסיון עשיר לחלק לאחרים . זה שאני (או מישהו אחר) מטיל ספק במה שאתה או מישהו אחר כתבו לא נובע מזלזול אלא מרצון להבין.
-
@nigun אמר במעבר לGO למה? איך? ומתי?:
@dovid
אם יורשה לי לשאול (כמובן אתה לא חייב לענות)
איך אני אמור לדעת מי כאן סך הכל בנה כמה אתרים חמודים בוורדפרס ומי ארכיטקט ראשי של IBM?אם אתה לא מסוגל להעריך את יכולות המשתתפים כאן לפי היסטורית ההודעות שלהם, בשביל מה שאלת כאן?
אתה 'סותר' את התשובות עם הנחות שגויות אותם אתה שולף תוך כדי תנועה ("אסינכרוני זה דבר איום", מביא הוכחה 'גרועה' מ @חוקר שהוא הוכחה לגמרי הפוכה, בנה מע' די מורכבת וקריטית (תרומות) שהושמשה מיד עבור אלפי משתמשים, והשיג המהרה של 1000%, וכל זה בלימוד תוך כדי תנועה כשלפני זה לא היה לו מושג ירוק בנוד) - במקרה הטוב, או שכבודו פשוט 'לא מסתפק' בתשובות, ויוצא 'צודק'.
מערכות היום נהיות יותר ויותר תלויות תקשורת, והברזלים מרובי ליבות, ללא א-סינכרוניות ומקבליות איך תקבל מהירות משמעותית?
הכלים החדשים מהירים יותר במידה רבה בגלל שינוי צורת החשיבה שהם מביאים איתם.
בנתיים נראה שאתה רוצה שהכל ישאר כשהיה, ו'קסם' כלשהו יעשה עבורך את השדרוג.@yossiz להבנתי (נתחרה על אי הבנת הנקרא), ההסבר שלך לא הוסיף לי שום הבנה על יתרונות השפה.
-
@אהרן
אני יודע שאנשים כאן מבינים יותר ממני בתכנות באופן כללי
אבל אני לא יודע במה אתה מבין יותר מ@yossiz
אני מסכים שצריך לשאול בצורה מכובדת
אבל זה לא אומר שאני צריך ללכת בעיניים עצומות אחרי כל פסק של כל אחד
בלי לשאול שאלות
אמנם אם אני יודע שמי שמדבר איתי יש לו ניסיון רב בנושא המדובר
אז אני מוכן לשמוע "קביעות" בלי שום הסברים
כי יש לו הרבה ניסיון בעניין ולמה שאני אחזור על טעויות של אחרים
אבל אם זה סתם מישהו שהנחות היסוד שלו זה מהאינטרנט או מתחושת בטן
אז אם אין סימוכין לטענותיו הם לא שווים הרבה
במיוחד שהם סותרים (לכאורה) את מה שכתוב באתרים הרבה יותר מקצועיים מהפורום המכובד הזה(לגבי go לא ידוע לי על אף אחד כאן שכותב בשפה הזאת חוץ מ@magicode שבחר לענות תשובה קצת יותר חכמה (לדעתי)
אם מישהו כותב בשפה הזאת מן הראוי שבתחילת דבריו היה מציין זאת )נ.ב. אני סתם מנסה לחשוב האם בstackoverflow תוכל למצוא תשובות בסגנון של:
"טכנולוגיה X לא מתאימה ל.... כי ככה אמרתי " -
@dovid
אני עובר על מה שכתבתי ואני לא רואה התלהמות
או חוסר כבוד למתכנתים שהרבה יותר מומחים ממני
חוץ ממה מה שהצקתי לך בהתחלה
כשכתבתיאתה יכול לפרט תובנות יותר מפורטות?
אחרי שהכרזת שאתה לא מעוניין לכתוב עוד
(ושם פשוט לא הבנתי את הרמז וחשבתי באמת שאתה לא יודע עוד, אבל אתה כן יכול להסביר את מה שכתבת ולכן ביקשתי פירוט) -
@nigun אמר במעבר לGO למה? איך? ומתי?:
אבל אני לא יודע במה אתה מבין יותר מ@yossiz
תיקון קטן:
רמזתי כמה פעמים באשכולים קודמים שאני לא מנוסה בתכנות
השפה היחידה שאני משתמש בה בחיי היום יום זו אנגלית
אז תמיד תמיד לקחת את הדעה שלי בערבון מוגבל.
ד"א, זה הסיבה שאני כמעט תמיד מקדים התנצלות שאני לא מנוסה או משהו בסגנון וגם לא זכור לי שכתבתי פעם "דעה" על משהו רק הסברים ודברים שמוכחים מצד עצמם. -
@dovid אמר במעבר לGO למה? איך? ומתי?:
@nigun ענה על דבריהם בהרבה יומרה ובלי הרבה לדעת, אני מבין שהוא התכוון להאיץ בהם לתת יותר פרטים אבל זה היה נראה לי "אלים" מידי.
ננסח את זה שונה
האם אתה יכול להביא לי דוגמא מתוך דברי מה נקרא יומרני (כמעט בכל הודעה כתבתי שאני לא יודע ואני רק שואל)
אני מציק לך אם השאלות האלו כי הבנתי ממך שכנראה אתה רוצה שינוי ולא שהדיון יתנהל אותו דבר גם פעם הבא, אז אם לא יסבירו לי ברחל בתך הקטנה אני לא יבין . -
@nigun זה מיותר לדעתי.
התיקון הוא שצריך לכבד כל אדם ולמצוא מה אפשר ללמוד מתשובתו, כמובן מותר לחשוב שהוא טועה, אבל הבסיס צריך להיות ללמוד מכל אחד ולכבד אותו כ"רב" לעניין מה שמעוניינים ללמוד ממנו. בא נניח לנושא, תוכל להתכתב איתי במייל אם תרצה. -
יש כאן נושא שאני מרגיש שנוגע לכולנו גם השואלים וגם העונים וזה יושב לי הרבה זמן על הבטן.
כאשר מדובר בהתכתבות בפורום ולא בדיבור פנים מול פנים, אף פעם לא כדאי לקמץ במילים.
זה נוגע לשואלים. יש לך שאלה? תסביר את הרקע, איזה שפה, איזה טכנולוגיה, לא "X ו-Y לא עובד, יש פתרון?"
וגם לעונים. אתה משקיע כמה דקות/דקה/כמה שניות בתשובה כי אתה רוצה לעזור לשואל? למה לא תשקיע טיפה יותר שיהיה מושלם. שגם השואל יצא עם הרגשה נעימה ומידע מועילה, וגם אתה עזרת למישהו. תהיה נדיב במילים, בפרטים, בדוגמאות, (עד גבול מסויים כמובן), תקרא את התשובה שוב לראות אם יש מה לשפר, מה להוסיף, מה לחדד, כולם יצאו מרוויחים מזה.
ובכלל זה, תנסה להבין מבין השורות מה חסר לשואל, איפה הוא טעה, ונסה לתקן את זה. -
@yossiz אני מסכים איתך.
בלי להיכנס לאשכול הנוכחי.אל תשכח שלמי שעונה לא תמיד יש זמן להרחיב. למרות הרצון (ומה שהלב חושק הפנאי עושק)
אתה באמת תמיד עונה עם סבלנות (וגם עוד הרבה מהאנשים הטובים שמסתובבים כאן [אני לצערי קצת פחות. בעיקר מחוסר זמן ])
-
אז ככה.
אני ג"כ התחלתי עם PHP, והכל זרם בטוב ובנעימים, הרמתי פרוייקטים גדולים ב"ה בהרבה תחומים (הכל סביב מערכות טלפוניות בימות המשיח), ו PHP סיפק לי כלים מספקים למה שהוצרכתי.
עד שהגיע יום, ובקמפיין של סורוצקין - עטרת שלמה היו לי 2500 מאזינים על הקו בו זמנית, מה שגרם שהשרת לא החזיר תשובה לכולם (אני לא יודע מה נקרא שרת קרס, שזה נכבה? הופעל מחדש? לא הגיב מספיק?, בכל מקרה כאן ראיתי שהשרת לא מספיק לענות לכולם,) וזה מדובר על PHP עם אפאצ'י.
שאלתי כאן מה עושים, וההצעה הייתה לעבור לנוד.
אמרתי לעצמי, מה זה הקסם הזה נוד? למה ומדוע זה יותר מהיר? יש לו יותר יכולות מPHP? מה ואיך? לא היה לי כ"כ ברור.
אבל אמרתי, את המצב הנוכחי אני לא ממשיך, אני חייב להתכונן לפרוייקט הגדול הבא.
(בשעתו הרמתי בAWS עוד חמישה שרתים חדשים עם תמונת מערכת של השרת הרגיל, ואז וויסתתי את העומס במערכת וזה סיפק יחסית תפוקה לא רעה).
התחלתי ללמוד נוד, למרות שכמעט ולא היה לי רקע מעשי הJS ולא הבנתי מה בדיוק המושג JS על השרת.
עדיין לא קלטתי מה הרעיון שנוד יהיה יותר מהר.
ואז הגיע @magicode ונתן לי דוגמה של (אריכט... לא יודע איך לכתוב את זה) ויחיד עם הסבר של @אהרן שנתן לי בעצם הבנה שנוד הוא משהו שרץ כל הזמן ואתה יכול לעשות בו פעולות ללא קשר למשתמשים, והשרת יכול להכין מידע וכו' למשתמשים עוד לפני שהם גלשו, ולבצע פעולה אחת שתשמש אלפי גולשים בו זמנית.
זה היה לי חדש לגמרי העולם הזה, אני הייתי רגיל רק לPHP שהכל הוא סקריפט שמתחיל ומסתיים כשהלקוח קורא לדף, ואתה צריך לטעון הכל מחדש לכל משתמש, מה שגורם לשרת לבצע לכל משתמש הרבה תהליכים (ולדוגמא במצ'ינגים בPHP הייתי בודק לכל משתמש 3 קריאות מול השרת של צ'רידי, מה שאין כן בנוד יש בדיקה אחת מתוזמנת של מצב הקמפיין כל 10 שניות, ובדיקת המתרימים כל 3 דקות, זה חסך המון משאבים וזמן).
ובנוסף כאשר אני צריך לולאה לבצע עשר פעולות שלוקחות זמן, בPHP אתה ממתין לכל דבר בסבלנות שיגמור הכל, בנוד הכל מבוצע מיידית.
בהתחלה זה היה לי נורא! לא הסתדרתי עם זה, לא רציתי להסתגל לזה, ללמוד תובנות חדשות, והאמת שאז חיפשתי ברשת וראיתי ג"כ פוסטים שGO יותר מהיר מנוד, ונכנס לי חשק כמוך להתחיל לכתוב בנוד, למה לחכות שזה יהיה הַשפה, אני כבר יכול לרוץ לשם מיד.
אבל במבט מלמעלה ראיתי שזה עבור בנק הפועלים, לא עבורי.
זה דורש קימפול או איך שקוראים לזה, ואין לזה עדיין מספיק קהילה ועוד, ובעיקר כי זה באמת מיותר!
וב"ה המשכתי עם הצעת החברים כאן, למדתי להבין איך להשתלט על האי-סינכרוני (האמת, עד היום אני לא יודע בע"פ מה זה סינכרוני ומה זה אי-סינכרוני), למדתי להשתמש בפרומיס ( @dovid כן אני כבר משתמש עם זה גם בלי ליידע אותך..), למדתי את התחביר של השפה, איך מבצעים פעולות על משתנים ע"י אובייקטים שבתוך המשתנה(string.action()) לעומת PHP שכל דבר הוא פונקציה שמקבל ארגומנט את המשתנה (action(string)).
כתבתי כבר מחלקות לחיבור לבסיס נתונים ועוד ועוד.
המערכות הראשונות שלי שם היו באמת כתובות לא מידי חכם, אבל עשו את עבודה, הייתי חייב במיידית משהו שעובד, וב"ה עם הזמן ובעזרת החברים כאן הגעתי להישגים מאוד יפים בנוד.
נכון לעכשיו אני עדיין משתמש בנוד רק למצ'ינגים ולישיבה על קברו, כי אני לא לוקח כעת פרוייקטים חדשים (אני מקוה בעזה"י להכניס עובד, ואז אוכל לחזור לפיתוחים חדשים), ושאר הפרוייקטים הפעילים עדיין על PHP ולא קריטי להעביר אותם לנוד.
בישיבה על קברו למשל, יש ביום כ18000 השתתפויות של לימודים בנדרים ובטלפון, בPHP על כל תנועה, השרת היה בודק מול בסיס הנתונים כמה וכמה שאילתאות, את רשימת המסלולים להיום, טבלת השאלות והתשובות ועוד, בנוד לעומת זאת, כל חמש דקות יש רענון מול השרת בקבלת הנתונים הקבועים, ורק בדיקות ברמת המשתמש (האם כבר השתתף היום, ועדכון השתתפות) מבוצעות מיידית.
השרת נותן כעת ביצועים הרבה יותר טובים ומהירים בגלל זה.
בקיצור הארכתי מאוד, אבל ראשית רציתי לומר לך, שמע לחברי הקבוצה, שהרימו כבר פרוייקטים ולכל הפחות כמו הפרוייקט הרציני הגדול הבא שלך, ויש להם ידע ורצון לעזור.
א. בגלל עצם המענה להם שזה מה שכדאי עבורך.
ב. כי הם יעזרו לך בהמשך הדרך וההסתגלות.
ושנית, זה היה במה נוספת להביע הכרת הטוב לאלו שסייעו לי להבין ולכתוב בנוד, אלו שהזכרתי לעיל, וכן @יוסף-בן-שמעון (ואולי פיספסתי מישהו א"כ אנא ראה כאן את הכרת הטובה בעילום שם) הן על ההצעה, הן על הלימוד, והן על ההבנה בקשיי ההסתגלות.
ואם מדובר על שפה אהובה, לאחר לימודה אני מחבב אותה יותר מאשר את PHP, למרות שאני כמה שנים הייתי בPHP והייתי בטוח שאין יותר נחמד ממנה.
בהצלחה לכולם -
@חוקר
תודה על התגובה
כבר הרבה זמן אני מחכה לשמוע ממך איך זה לעבור שפה
יש לי עדיין כמה שאלות
א. האם אתה מתכוון לעזוב לגמרי את PHP כדי להתרגל לכתיבה של נוד או שיש דברים שתמיד יהיה יותר נוח לכתוב אותם בPHP למשל לעשות תפריט פשוט בלי מסדי נתונים וכו'
ב. היה לך כאן שאלה פעם אחת על חיבור לFTP של ימות לדעת האם יש קבצים מסוימים במערכת
האם זה היה תרוץ על מה להתאמן או שבאמת זה מועיל עם זה כתוב בנוד (אני שואל כי אני מנסה להבין את המוגבלויות של PHP)
ג. אתה לא חייב לענות אבל מעניין אותי האם הפסקת לקבל עוד עבודות בגלל שאתה עסוק בלימוד נוד או שלא קשור (זאת אומרת האם זה היה יקר לעבור או לא, ואם כן האם זה שווה את המחיר) -
@nigun
ראשית, לעבור שפה, כל זמן שלא הבנת לעומק את ההבדל בין השפה הקודמת לחדשה, ואתה מגיע עם תפיסות שאת זה עושים כך, ואת זה עושים כך וכו', ולא הבנת מהו התחביר והרעיון שעומד מאחורי השפה החדשה, זה מאוד קשה להבין איך עושים פעולות מורכבות בשפה החדשה, אבל אחרי שנהיה הקליק בעזה"י, רואים פה ושם דוגמאות קוד ומהלכי עניינים, ומבינים את צורת העבודה, אתה כבר יודע לתכנן איך לכתוב את הקוד, יודע איך לגלגל ולחפש (כמובן לפני ששואלים כאן מותר לחפש האם מישהו כבר הסביר איך עושים את זה באיזה מקום אחר ברשת), והכל יותר קליל.
א. בנוד, האפליקציה/השירות הוא תהליך, ויש לך ברירה או שאתה כותב את כל המערכות שלך תחת אפליקציה אחת, או לכל דבר תהליך נפרד, זה נראה לי עדיין קצת מסובך, בשביל שרת שנותן שירות פשוט של באם הקשת X הוא ישמיע Z ואם Y הוא ישמיע E, נראה לי יותר קל קוד PHP קטן מרוכז בסקריפט אחד ויש לך שליטה מלאה, ולא צריך להפעיל מחדש את תהליך הנוד המרכזי עבור כל שינוי.
אם כי באם זה כבר דורש חיבור לבסיס נתונים, ובעיקר אם יהיו שאילתות נתונים שחוזרים על עצמם, אני יעדיף לכתוב את זה בנוד.
(כנראה שאצור תהליך חדש עבור כל השירותים החדשים, בצורה שאוכל בקלות לבנות אותה בהתאמה להוסיף מערכות ושירותים בקלות.
ב. הלוואי והיה לי זמן להתאמן, זה היה בשביל ישיבה על קברו, וכחלק מהמעבר של ישיבה על קברו מPHP לנוד, וע"י האי-/סינכרוני (לא זוכר מה נכון לכתוב) זה מבוצע במקום בדיקה של 2 דקות בPHP, מבוצע ב כעשר שניות בנוד. (התהליך הוא בדיקה על כל מסלול האם קיימים כל השאלות והתשובות בימות המשיח).
ג. ב"ה אני 2 סדרים בכולל, ולכן אין לי כ"כ זמן, זה הסיבה. לימוד שפה, דורש זמן, אבל בדר"כ זה לא מחייב זמן על חשבון עבודה, כי את הלימוד התיאורטי ניתן לעשות כשאתה בין כך לא מרוכז וכו', והלימוד המעשי אתה מתחיל באמת לבנות את המערכת ואתה מתחיל להתקדם.
אני לא יודע מה לומר על גו כל זמן שלא ניסיתי את זה, אבל בהחלט בנוד אחרי שהבנתי את הרעיון, אני כבר עובד מראש עם פרומיס, והכל מסודר בצורה שזה לא משנה ולא מפריע זה שזה א-סינכרוני.
ולסיום, לפי הראש שלי, לימוד תיאורטי של קריאת מדריכים של סתם פונקציות ורעיונות בשפה, מומלץ כשאתה לא מרוכז, וזה נותן לך פה ושם תובנות נוספות על השפה, אבל הכי טוב זה להגיע עם תוכנית ברורה של שירות שאתה רוצה להפעיל, ולחפש ולגלגל איך להתקדם ולקדם את זה! (ייתכן ואחרים ניגשים אחרת, כל אחד והטבע והראש שלו).
אאחל לך הצלחה במה שתחליט!