טעינה...
לפרק את הבייט
איזו שפת תכנות הכי גרועה?
ישלחו אתכם לגיהינום
צילום: flickr, Plutor, cc by
עודכן
14:37 26/01/2009
קוד תכנות שנראה כמו מתכון, שפת תכנות שמיועדת לאורנג אוטנגים ואחת שיצאה מהגיהינום - עידו גנדל על שפות התכנות המזוויעות והבלתי שימושיות ביותר

שפת התכנות היא האויב הכי גדול: המשחק Abuse שנכתב ב-Lisp
צילום: Youtube
צילום: Youtube
קיימות שפות תכנות קלאסיות, שכוללות מאפיינים מסמרי שיער עבור המתכנת המודרני הממוצע. בשפת Lisp, למשל, יש כמות עצומה של סוגריים שמקיפים כל דבר וגם אחד את השני, ופעולות מתמטיות/לוגיות נכתבות בה בייצוג פולני הפוך מזעזע. שפת Prolog, לעומתה, נראית כאילו הומצאה על ידי סדיסט חובב שאלות היגיון בנוסח המבחן הפסיכומטרי, ועל COBOL בכלל מוטב לשתוק. מודעות דרושים למתכנתים בשפות אלה נדירות כמעט כמו פוליטיקאים ישרים, ועם זאת מדובר בכלי תכנות ממשיים שמראים תוצאות בשטח. ב-Lisp אפילו נכתב משחק מחשב נאה (לזמנו), Abuse.
כדי למצוא את הזוועות הגדולות באמת, עלינו לחפש שפות שהומצאו במטרה מפורשת להיות איומות ונוראות. ותאמינו או לא, מתברר שיש הרבה כאלה!
Intercal: אם כל המפלצות
פרסומת
לתכנת או לא לתכנת? זו השאלה

300 גרם צלעות קוד, בבקשה
צילום: עילית אזולאי
צילום: עילית אזולאי
שפת "שף" פועלת לפי עיקרון דומה – לגרום לקוד להיראות כמו מתכון. רשימת המצרכים היא, כמובן, הגדרות המשתנים ("50 גרם חמאה" מגדיר משתנה בשם "חמאה" שערכו 50), והוראות ההכנה כוללות את פקודות הקלט ("קח מהמקרר"), הפלט וכמובן העיבוד אשר מתרחש בעזרת מחסניות, או במינוחי שף, "קערות" ו"תבניות אפיה".
טיורינג מתהפך כפרופלור
ענף אחר של שפות אזוטריות בחר להתמקד בסט הפקודות של מכונת טיורינג, הלא היא הבסיס לכל תורת המחשוב המודרני. זהו אוסף זעיר של פקודות בסיסיות להחריד, ששום מתכנת שפוי לא היה משתמש בהן לצורך מעשי – וזה בדיוק העניין! המרכזית מבין שפות אלה היא השפה בעלת השם ההולם "Brainfuck", בעלת שמונה פקודות בלבד, כל אחת מיוצגת באמצעות תו יחיד. הקטע הבא, שנלקח מויקיפדיה, הוא לולאה שרצה עשר פעמים ומטרתה להציב בארבעה תאי זיכרון את הערכים 70, 100, 30 ו-10:
++++++++++[>+++++++>++++++++++>+++>+<<<<-]
שפת "אוק!" (Ook!) עובדת באופן דומה, אך מכיוון שהיא מיועדת לאורנג-אוטנים, היא מורכבת משלושה אלמנטים בלבד: "Ook.", "Ook!" ו-"Ook?". מהשלושה ניתן להרכיב תשעה זוגות, ששמונה מתוכם מייצגים פקודות כמו ב-Branfuck (הזוג "Ook? Ook?" נשאר חסר שימוש)
++++++++++[>+++++++>++++++++++>+++>+<<<<-]
שפת "אוק!" (Ook!) עובדת באופן דומה, אך מכיוון שהיא מיועדת לאורנג-אוטנים, היא מורכבת משלושה אלמנטים בלבד: "Ook.", "Ook!" ו-"Ook?". מהשלושה ניתן להרכיב תשעה זוגות, ששמונה מתוכם מייצגים פקודות כמו ב-Branfuck (הזוג "Ook? Ook?" נשאר חסר שימוש)
שפת Whitespace כוללת פקודות מתקדמות קצת יותר, וכולן נכתבות באמצעות צירופים של רווחים וטאבים, מה שהופך אותה לבלתי נראית לחלוטין. ממציאיה ביקשו, כך מספרים, להחזיר את הכבוד האבוד לתווים אלה, שרוב שפות התכנות הקיימות מתעלמות מהם, והקומפיילר של Whitespace עצמו מתעלם מכל תו שאינו רווח או טאב. מלבד היותה מטורפת לחלוטית, שפה זו מעניינת במובן זה שאפשר לשבץ קוד שלה בתוך קוד של כל שפה אחרת כמעט, מבלי ששתי התוכניות השונות יפריעו זו לזו!
מימין לשמאל: מתכנת ב-Ook!, תוכנה ב-Piet שכותבת "Piet" וקוד מגניב בשפת Whitespace. תוכיחו שלא.
צילום: Malene Thyssen ,Thomas Schoch. רשיון cc-by-sa
שפת Piet כוללת גם היא מספר קטן של פקודות, והייחוד שלה הוא באופן התכנות המעיק – לא בהקלדת תווים כמו כל השפות האחרות, אלא בציור תמונות צבעוניות שנקראות בכיוון השעון וכל פיקסל בהן יכול לייצג פקודה או ערך. שפה זו נקראת על שם פיאט מונדריאן, הצייר ההולנדי שהמציא את סגנון הציור הצבעוני והמשונה הזה.
ללקוד עם חתולים
בהשראת האופנה האינטרנטית המרגיזה של תמונות חתולים עם כיתובים באנגלית משובשת, שזכו לכינוי LOLCATS, נולדה שפת תכנות חדשה – LOLCODE. זוהי שפה גבוהה יחסית, ועיקר הייחוד שלה הוא ברפרנס המשעשע (בדקה הראשונה, לפחות) לתמונות החתולים. הנה הקוד, מויקיפדיה, שמציג את המספרים בין 1 ל-10:
HAI
CAN HAS STDIO?
IM IN YR LOOP UPPIN YR VAR TIL BOTHSAEM VAR AN 10
VISIBLE SUM OF VAR AN 1
IM OUTTA YR LOOP
KTHXBYE
HAI
CAN HAS STDIO?
IM IN YR LOOP UPPIN YR VAR TIL BOTHSAEM VAR AN 10
VISIBLE SUM OF VAR AN 1
IM OUTTA YR LOOP
KTHXBYE
נטשו כל תקווה, אתם המתכנתים

ממציא Malbolge במעונו (גוסטב דורה, ויקיפדיה)
ראשית, Malbolge עובדת לא בבסיס בינארי או עשרוני כמו כל שפה נורמלית, אלא בבסיס 3. יש בה שלושה משתנים בלבד, a, c ו-d, כאשר c הוא מספר רץ שמשמש כמצביע למיקום הפקודה הנוכחית. כאשר תוכנת Malbolge מופעלת היא נטענת לתחילתו של מרחב זיכרון בעל גודל קבוע, ושאר הזיכרון הזמין – במקום להיות מאופס – ממולא למרבה חוסר הנוחות בשרשרת של ערכים שונים. משתנה המצביע מאופס ל-1 (הפקודה הראשונה), והפקודות עצמן אינה נקראות ישירות אלא מחושבות באמצעות חיבור הערך של תו הפקודה למיקומו בזיכרון, וחישוב השארית של חלוקת התוצאה בתשעים וארבע. גם כאן יש שמונה פקודות, חלקן מופרכות לחלוטין, כמו למשל הפקודה שמבצעת חישוב חסר היגיון בבסיס שלוש על משתנה a ועל המיקום בזיכרון שעליו מצביע משתנה d, תוך העברת התוצאה הן ל-a והן לאותו מיקום. בשביל דברים כאלה בדיוק הומצא הביטוי WTF.
וכאילו זה לא מספיק, לאחר ביצוע כל פקודה, אותה פקודה מוצפנת בזיכרון באמצעות פעולת שארית נוספת וטבלת צופן מיוחדת, כך שאין שום דרך הגיונית לבצע לולאה על אותן הפקודות שוב ושוב.
הזדון העמוק המובנה בכל מאפיין ומאפיין של Malbolge הופך אותה, ללא שום תחרות, לשפת התכנות האיומה, הנוראה והבלתי שימושית ביותר בעולם. גם אם מאלצים אתכם ללמוד שפת תכנות כלשהי שלא מוצאת חן בעיניכם, תזכרו שתמיד יכול להיות הרבה, הרבה יותר גרוע.
לרשימה מקיפה של שפות תכנות אזוטריות.
הזדון העמוק המובנה בכל מאפיין ומאפיין של Malbolge הופך אותה, ללא שום תחרות, לשפת התכנות האיומה, הנוראה והבלתי שימושית ביותר בעולם. גם אם מאלצים אתכם ללמוד שפת תכנות כלשהי שלא מוצאת חן בעיניכם, תזכרו שתמיד יכול להיות הרבה, הרבה יותר גרוע.
לרשימה מקיפה של שפות תכנות אזוטריות.
עוד כתבות במדור
לפרק את הבייט
כל הזכויות שמורות 2011 © נענע 10 בע"מ






