מלחמות הקומפיילרים

ציור בסגנון פיקסאר של מתכנת מיואש (נוצר ע"י Stable Difusion)

תוכן

הקדמה

הפוסט הזה נולד משירשור יחסית ארוך שיצרתי בבלוסקיי.

אני מהנדס תוכנה בהכשרתי, וככזה אני מוצא עצמי מתעניין כל הזמן בשפות תכנות. זה סוג של פטיש אצלי - נתקלתי בשפה חדשה? סביר להניח שאתקין אותה אצלי ואתחיל לשחק בה בעזרת Visual Studio Code.

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

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

כל הניסיונות האלה העשירו לא מעט את הידע שלי בתכנות, אם כי באופן רוחבי. כלומר, לא התמקצעתי בכלי אחד, אבל כן למדתי או העמקתי במעט את הידיעות שלי על לא מעט כלים ופלטפורמות. איך אומר הפתגם? Jack of all trades, master of none.

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

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

פרל

פרל: פססססט... היי, חבר!

מתכנת: כן?

פרל: אתה יכול לקצר.

מתכנת: כן, אבל זה לא יהיה כזה ברור.

פרל: אבל זה יהיה קצר.

מתכנת: לא... לא יודע...

פרל: אתה תיראה מגניב, כולם ירצו להיות חברים שלך, תראה כמה יפה לך הביטוי הרגולרי הזה, נשמה.

מתכנת: כן, זה באמת יפה לי.

פרל: נכון! קדימה, תכתוב...

מתכנת: כתבתי.

פרל: (צחוק מרושע)

מתכנת: ססססססאימא שך יא זין.

ג'אווה

מתכנת: אני צריך רק להדפיס את המחרוזת הזו.

ג'אווה: את המחרוזת הזו?

מתכנת: בבקשה בלי דאווינים.

ג'אווה: אל תדאג, נשמה.

מתכנת: אוקיי.

ג'אווה (מרים מגאפון): יאללה חבר'ה, תתחילו להרים פה עניינים, אני רוצה לראות קלאסים זמניים, גרבג' קולקטורים כאילו אין מחר, אני רוצה לראות את האקליפס טוחן ת'אימא, תקמפלו כל מה שזז, יאללה בלגן!

C\C++

מתכנת: היי, אני רוצה לקדם את הפוינטר הזה.

סי: בטוח?

מתכנת: כן.

סי: אין בעיה.

מתכנת: יופי.

סי: אתה אומר אני עושה.

מתכנת: תודה.

סי: לא משנה מה יקרה.

מתכנת: רגע מה

סי: חבל יש לך עיניים יפות.

מתכנת: מה... מה הולך, אחי?

סי:

מתכנת:

סי (נותן לו סטירת לחי): למה אתה בלי כובע?

אסמבלי

מתכנת: תראה, אני צריך...

אסמבלי: רגע!

מתכנת: מה רגע?

אסמבלי: תתחיל מהתחלה.

מתכנת: אני צריך...

אסמבלי: שנייה, בוא נתמקד באות הראשונה.

מתכנת: אבל אחי...

אסמבלי: היה בהתחלה א'.

מתכנת: כן...

אסמבלי: ואחרי זה נ'.

מתכנת: כן...

אסמבלי: ואז י'.

מתכנת: כן...

אסמבלי: מה יצא לנו?

מתכנת: "אני".

אסמבלי: אהא. תמשיך.

מתכנת: בקיצר, אני צריך...

אסמבלי (סוטר לו בכוח): שים קודם ברג'יסטר, יא חרא.

PHP

מתכנת: אבל... מה הולך כאן?

PHP: הכל זורם, אהבה, רק תשים דולר בשם משתנה.

מתכנת: אבל אין לך פה אכיפה בשיט.

PHP: עזוב אכיפה, רק אהבה, ושים דולר.

מתכנת: מה קורה אם לא שמים דולר?

PHP: אני תולה אותך ושורף לך את הבית המסריח יא פאשיסט אייכמן.

מתכנת:

PHP: אהבה.

מתכנת: אה... אתה אולי זוכר במקרה מה הטיפוס של הפרמטר שהגדרתי לפני רגע?

PHP:

מתכנת:

PHP: לא.

גו

מתכנת: קודם כל, רציתי להודות על המהירות והשירות.

גו: בשמחה, אדוני.

מתכנת: דבר שני, מה לגבי הורשה?

גו: הו... הורשה?

מתכנת: כן. אני רוצה לכתוב הורשה, איך...

גו: פפפפחחח (משתנק) (נחנק) (צוחק צחוק מטורף) (מוציא נייד) הלו? קובי?! שומע, אחי? אתה לא מאמין איזה שרוט הגיע לפה, אני מספר לך מה הוא שואל אותי אתה נגנב, אתה מת.

SQL

מתכנת: אני צריך קצת מידע.

SQL: אין בעיה אחי, אני שולף לך מה שתרצה.

מתכנת: אז אני צריך את הרשומות האלה...

SQL: סגור, אחי.

מתכנת: ממוין ומקובץ לפי סכומים...

SQL: סגור, אחי.

מתכנת: אה, ותסנן לי גם לפי תנאי מסויים בתאריך, פלוס בדיקת טקסט עם ביטוי רגולרי קצר.

SQL: פחחחח איך זיינו אותך, יאללה פתח גוגל, בהצלחה במסע המרגש שלך.

#C

מתכנת: תראה, באמת שהכל אחלה כאן.

סישארפ: תודה, אדוני.

מתכנת: רציתי רק לוודא שבלינוקס הקוד הזה יעבוד על המונו בדיוק כמו שהוא עובד כאן. אתה יכול לבדוק לי?

סישארפ:

מתכנת:

סישארפ (לוחץ על זמזם) (נכנסים בריונים בחליפות) (תופסים את המתכנת): תוודאו שלא יישארו שרידים.

פייתון

מתכנת: ...אבל למה הכל פאבליק אצלך כברירת מחדל?

פייתון: אין בעיה אחי, אני כאן לעזור.

מתכנת: תודה לך.

פייתון: הכל טוב, הכל בזרימה. אתה רגוע?

מתכנת: עכשיו כן.

פייתון: יופי, פשוט תשים _.

מתכנת: אוקיי.

פייתון: בעצם שים __.

מתכנת: טוב.

פייתון: תעטוף אותם בדסקריפטורים.

מתכנת: רגע.

פייתון: עזוב, התכוונתי פרופרטיז.

מתכנת: אחי.

פייתון: לא ככה, שים דקורטור.

מתכנת: אבל.

פייתון: הכל טוב, בלי לחץ, הכל בזרימה, אני כאן לעזור.

מתכנת: אולי אפשר פשוט לשים get ו-set כמו שאני רגיל?

פייתון: בטח אחי...

מתכנת: תודה לך.

פייתון: ...במיוחד אם אתה רוצה שאחתוך לך את המעיים ואשלח למשפחה שלך בדואר.

פייתון #2

מתכנת: שיט, התבלבלתי בהזחה. תעשה לי טובה, בבקשה אל...

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

CSS

מתכנת: כל מה שאני רוצה זה שהאלמנט הזה יהיה צמוד לשני.

CSS: סבבה, יענו מעליו.

מתכנת: לא, לידו.

CSS: יענו שיסתיר אותו.

מתכנת: לידו.

CSS: אחד באמצע, אחד בקיבינימט של הקצה השני של המסך אבל למטה.

מתכנת: לידו, יא זין.

CSS: לידו, אבל נראה חרא במובייל.

מתכנת:

CSS: בוא פשוט תקיש את כל האופציות, כולל align-items שספק אם אי פעם עבד למישהו.

JavaScript

מתכנת: חכה רגע, לא נראה לי הקוד הזה.

ג'אווסקריפט: נראה דווקא טוב מאוד, אחי.

מתכנת: ירוץ בלי תקלות?

ג'אווהסקריפט: ירוץ פגז, אל תדאג, עובר קומפייל.

מתכנת: אתה... בטוח?

ג'אווהסקריפט: אם אני אומר שזה עובד, זה עובד.

מתכנת: טוב.

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

TypeScript

טייפסקריפט: לא נראה לי הקוד הזה.

מתכנת: למה?

טייפסקריפט: הטיפוס לא בסדר, הנה הודעה מהתחת שמסבירה.

מתכנת: אבל... לא הסברת כלום.

טייפסקריפט: מה לא ברור?

מתכנת: הכל.

טייפסקריפט: עזוב, העיקר שירוץ.

מתכנת: ירוץ? בטוח?

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

מתכנת:

טייפסקריפט: גם לא כתבת מה הפונקציה מחזירה, אפס.

NodeJS

מתכנת: זה... זה עבד!

NodeJS: ברור.

מתכנת: אתה הרמת לי שרת... בשתיים וחצי שורות קוד!

NodeJS: בוודאי, למה אני פה אם לא בשביל זה? עשיתי לך שירות אקספרס.

מתכנת (בקול רועד): ואפילו... אפילו לא ניסית לדפוק אותי.

NodeJS: חס וחלילה נשמה, אני בחיים לא אעז לדפוק אותך ככה.

מתכנת (בדמעות): תודה לך.

NodeJS: ועכשיו שב ותכתוב את כל הקוד שאתה צריך...

מתכנת: אוקיי.

NodeJS: בג'אווהסקריפט.

מתכנת: רגע מה

NodeJS: ככה אני הולך לדפוק אותך.

ריאקט

מתכנת: אוקיי, אז נראה לי שהבנתי בגדול מה הולך פה.

ריאקט: אחלה.

מתכנת: יאללה, הלכתי לבנות אפליקציה.

ריאקט: עם מה?

מתכנת: מהז'תומרת? איתך.

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

VUE

VUE: היי אחי, מה המצב?

מתכנת: הכל טוב, מה הולך נשמה?

VUE: תסביר לי רק מה עשית פה.

מתכנת: אויש מתנצל, טעיתי בוי דיירקטיב. סורי, לא יקרה עוד פעם.

VUE: אין בעיה, הכל טוב.

מתכנת: תודה.

VUE: בפעם שאתה טועה בזה אני לוקח את ה-V השגוי, הופך אותו ומכניס לך את השפיץ לאפנדיציט.

מתכנת:

VUE: אז מה הולך אחי, איך בעבודה?

Angular

אנגולר: אז למה שלא נעבוד ביחד בעצם?

מתכנת: שוב פעם אתה שואל?

אנגולר: למה ככה?

מתכנת: בפעם הקודמת נרדמתי באמצע ההתקנה שלך, וכשהתעוררתי שכחתי מה עשיתי.

אנגולר: וואללה.

מתכנת: רגע, מה אתה עושה פה בעצם?

אנגולר: אני מעולם לא עזבתי. התחבאתי בבוידעם.

מתכנת:

אנגולר: בסדר, אני אלך.

מתכנת: תודה.

אנגולר: אבל קודם כל יש לי כמה הודעות שגיאה עבורך.

ELM

מתכנת: מצטער, זה פשוט לא מסתדר.

אלם: כוונתך שהפונקציה שלנו לא מסתדרת.

מתכנת: זה לא אתה, זה אני.

אלם: כוונתך שזה לא אתה, אלא הפונקציה שמחזירה אותך.

מתכנת: רואה? על החרא הזה בדיוק אני מדבר.

אלם: אין אובייקט חרא, יש רק פונקציה שמחזירה חרא.

מתכנת:

אלם:

מתכנת: טוס החוצה.

אלם: עליך לשלוח את ההחוצה כהודעה לפונקציה שלי.

jQuery

מתכנת: שיט, מה אתה עושה פה?!

jQuery : היי, אנחנו צריכים לדבר.

מתכנת: זה לא יכול להיות.

jQuery: נכון?! אני לא מאמין שיוצא לנו לדבר סופסוף!

מתכנת: אני לא מאמין שאתה עדיין חי, עוף לי מהבית יא הומלס.

ביטויים רגולרים

מתכנת: אוף, מה הבעיה עם זה עכשיו?

ביטוי רגולרי: זה בגלל ששכחת להתנות את הסימן המיוחד ההוא ב<שקרכלשהו>.

מתכנת: מה זה <שקרכלשהו>?

ביטוי רגולרי: תת מחרוזת בין 2 סימנים שהמצאתי הרגע.

מתכנת: אבל כן כתבתי את זה.

ביטוי רגולרי: חבל על הזמן שלך.

מתכנת: עזוב, אני אעשה את החיפוש והחלפה הזה באופן ידני.

ביטוי רגולרי: ידעתי שאתה חלש, בשואה היית מת מזמן.

לראבל

מתכנת: היי, אני צריך כולה סרוויס קטן ש...

לראבל: (בקול מהדהד) וזה יהיה סרוויס מפואר!

מתכנת: מה?

לראבל: עוד רבות יסופר על הסרוויס ההוא, קוטל הדרקונים, מנפץ השלשלאות!

מתכנת: אבל...

לראבל: הסרוויס המקודש, מלווה במודל כה אלוהי המאבן כל בן אנוש שיעז להביט בן ישירות!

מתכנת: רגע...

לראבל: כה אמר הארטיזן הגדול!

מתכנת: אבל למה זה תמיד קורה לי?


פוסטים קשורים