כחלק מההתאמה של המייבא מישראבלוג ל-PHP 4, הצלחתי להתקל בהודעת השגיאה הבאה מ-PHP:
Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM in /home/sun/sources/wordpress/test.php on line 7
למי שלא רוצה לשבור את השיניים על הביטוי המוזר באותיות גדולות, מה שכתוב שם זה “T_פעמיים_נקודותיים”, בהמרת אותיות פשוטה לאנגלית.
בהתחלה חשבתי שמשהו בהגדרות של המערכת שלי אומר לו להוציא הודעות שגיאה בעברית, אבל לא הצלחתי למצוא שום הגדרה שכזו. אחרי עוד טיפה שבירת ראש על הנושא, הצלחתי להבין מה הבעיה.
נתחיל מזה שניתוח טקסט שמיועד להיות שפת מחשב מתבצע, בד”כ, בשני שלבים. הראשון נקרא lexical analysis, בד”כ מתבצע ע”י תוכנה בשם lex על גרסותיה, והוא מבוסס על שפות רגולריות. בשלב הזה עוברים על הקוד ומקצים ייעוד לכל קבוצת אותיות. זה מספר, זה מזהה של משתנה, זה סימן “ועוד” וכו’. בשלב השני שנקרא “parsing”, מייצרים עץ שמראה את היחסים בין המזהים שמצאנו בשלב הראשון.
אם נקרא עוד פעם את השגיאה, עכשיו אפשר להבין אותה יותר טוב. בזמן ה-parsing מצאנו מזהה מהשלב הראשון במקום שלא ציפינו למצוא אותו. שם המזהה שמצאנו הוא “T_PAAMAYIM_NEKUDOTAYIM”.
למי שלא יודע, PHP מפותח בעיקר בחברה בשם Zend, שהיא חברה ישראלית. כנראה שמה שקרה הוא שהמפתח שהיה אחראי על כתיבת הקוד ל-lex לא ידע איך להגיד “פעמיים נקודותיים” באנגלית (double colon, למי שתהה). מתוך הנחה שאף אחד ממילא לא יראה את הקוד הזה אף פעם, הוא החליט פשוט לתת שם בעברית.
אלא שההנחה שאף אחד לא יראה את הקוד היתה שגויה. חיפוש בגוגל מראה שלא מעט אנשים נתקלו בהודעות שגיאה שמכילות את שם המזהה הזה, ורובם חושבים שמדובר בשפה מזרח אסיאתית כלשהי. היה אפילו מקרה אחד שהציעו לשואל לבדוק אם יש לו וירוסים, מה שמספר לנו משהו על וירוסים, ומספר לנו אפילו יותר על בני אדם.
והמסר, ילדים, הוא זה. אם אתם לא יודעים איך אומרים משהו בשפה אחרת, תשתמשו במילון
שחר