למה GO נבהל מכל panic?
-
כמו ש@yossiz אמר זה קורה בכל שפה נורמלית, זה לא באג אלא זה שכלול שהכניסו לכל שפה.
ושפת PHP לא מוכרת לי בעניין הזה, אבל ללא ספק יש את זה שם אבל יש לקחת בחשבון שני דברים:
א. קריסה בPHP זה סה"כ בהקשר של בקשה בודדת - זה היקף האפליקציה שרצה באותו רגע.
ב. יש מחלקות "סלחניות" שסובלות שגיאות. כל מתכנת יכול לעטוף כל קוד מחולל שגיאות בקוד משלו שיהיה סלחן ולעולם "לא יעשה בעיות" אבל זה יתנקם בבאגים הרבה יותר גרועים (בקושי לאתרם ובתוצאות המשונות שלהם) מאשר קריסה כוללת שמאוד קל לטפל בה. -
@WWW תחשוב על הטלפון, נניח אתה שומר פרטי איש קשר, ויש באג והשמירה לא נעשתה. אם המפתח דאג, תוצג לך שגיאה ותדע שאיש הקשר לא נשמר (ותנסה מהר להשיג את המספר שוב). אבל אם זו שגיאה שלא נצפתה, אילו התוכנה לא תקרוס יופיע לך כיתוב חגיגי שאיש הקשר נשמר בהצלחה.
בלינק הבא
https://softwareengineering.stackexchange.com/a/403344
יש דוגמה (קיצונית אמנם) שתאזן לך את השאלה: תוכנה של מטוס שתקרוס זה יחייב את הטייס לטוס "ידנית" ועם מעט מידע. אבל זה הרבה יותר טוב מאם התוכנה תמשיך לעבוד ותיתן מידע שגוי. -
על איזה תהליך צאצא אתה מדבר?
אני לא מכיר go אבל לא דיברת על תהליכי משנה.
מאוד יכול להיות שעצם הקריסה של תהליך גוררת שגיאה נוספת אצל האב והיא זו שגורמת לקריסתו (כל עוד לא טיפלו בתרחיש הזה).
בקיצור תיערך לשגיאות כדי שיקרו כמה שפחות ונסה ללכוד את אלו שכן יקרו ואז תחליט איך נכון להמשיך והאפליקציה שלך תמשיך. -
@dovid
כנראה שזה ההבדל
אני הפנמתי כבר בהתחלה שאין כאן הנחות (בשונה מPHP)
ואני דווקא נהנה מזה ,כי אז אתה לא נתקע עם זה בפרודקשן
אבל היום כאמור נפלתי עם טיפול במערך(יותר נכון מפה) ע"י שתי תהליכים במקביל
ומשום מה לא מזהירים על כך במדריכים למפות בGO
ורק אחרי שהלקוח הזעיק אותי למחשב ואחרי ניפוי באגים + חיפוש בגוגל
גיליתי את הסוד ורצתי לחפש את כל המקומות בו אני יוצר איברים למערך והוספתי נעילה
וזה די מתסכל שאני לא יכול לישון בשקט
שהשרת שלי ישאר למעלה גם אחרי שהרצתי בדיקות בסיסיות
(איך אני אמור ליצור כזאת שגיאה בתנאי מעבדה?)
@יוסף-בן-שמעון
בPHP אם אתה לא כותב את הסקריפט נכון הוא לא יתחיל
אבל לא נראה לי שיש הפתעות באמצע הריצה -
@nigun הבעיה היא אחרת. שאתה משתמש בפרודקשיין בשפה שהרגע למדת,
ולא רק השפה חדשה אלא גם כל הטכניקות שלה גם זרות לך לגמרי (כמו ריבוי תהליכים. ואם יש אזהרות במדריכים, שמה הם אמורים להיות).
לא רק שאין בזה בעיה אלא שזה הדרך הכי טובה ללמוד! אבל המחיר הוא השגיאות האלה. -
@יוסף-בן-שמעון אמר בלמה GO נבהל מכל panic?:
@WWW דוקא זכור לי שאם אתה כותב שתי פונקציות בשם זהה נזרקת חריגה והתהליך מתרסק, אני טועה?
זו שגיאת מהדר נראה לי.
-
@dovid אמר בלמה GO נבהל מכל panic?:
@WWW תחשוב על הטלפון, נניח אתה שומר פרטי איש קשר, ויש באג והשמירה לא נעשתה. אם המפתח דאג, תוצג לך שגיאה ותדע שאיש הקשר לא נשמר (ותנסה מהר להשיג את המספר שוב). אבל אם זו שגיאה שלא נצפתה, אילו התוכנה לא תקרוס יופיע לך כיתוב חגיגי שאיש הקשר נשמר בהצלחה.
יש עוד אלפי דגמי טלפונים שזה לא קורה.
מבחינתי בכזה מקרה אמור להיות הודעה :שגיאה כללית". -
@WWW אמר בלמה GO נבהל מכל panic?:
מבחינתי בכזה מקרה אמור להיות הודעה :שגיאה כללית".
אתה חי בקונספט של אקסס ואולי גם PHP, שחלק רב מהמערכת בכלל לא נכתב על ידך. אז הדרישות שלך מופנות למתכנת של חלק אחר בתוכנה.
אם אתה זה שכותב את הקוד, מאפס, מי ידאג לכזו הודעה אם לא אתה.
המתכנת אמור לעשות לכידת שגיאות ולכתוב את זה. ואם הוא לא לכד אנחנו מגיעים לנושא ש@nigun פתח.
הוא לא ציפה להודעה כזו אלא ציפה שחבר של nil יחזיר גם nil וכן הלאה ולא צריך לעשות שגיאות על כל דבר שחסר או לא מתאים.