ריקוד המכונה

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

למשל בעולם האינטל/AMD יש לנו חיים מאוד קלים. אנחנו עובדים עם אינדיאנים קטנים (Little Endian). מי שמתעסק במעבדי ARM, עדיין עם חיים קלים, אינדיאנים קטנים והוראות מעבד ממש דומות, אבל לא זהות. ההתעסקות עם המעבד המתמטי של ARM ועוד כמה הוראות שונות לגמרי מאשר מעבדי Intel.

זו הסיבה שיש שפות עיליות, אשר נועדו להוריד מאיתנו כמה שרק ניתן את הצורך לטפל בפרטים ה"קטנים" האלו של שינוי המעבדים. אבל רובן אינן באמת מגנות עלינו מזה. כלומר בשפות כמו פסקל או C/++ עדיין יש השפעה על גודל האינדיאנים, או כמה ביט שהקוד רץ בו, ועוד כל מיני דברים קטנים ומעצבנים. הן רק לוקחות מאיתנו את הצורך לחשוב בצורה של drop down rules אל תוך שיגרות, אובייקטים (לפחות בפסקל ו ++C) ויכולות הקצאה דינמיות בצורה ידידותית יותר מאשר ברירת המחדל בשפות האסמבלר השונות.

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

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

אז החלטתי לפשט את השאלה המקורית שלי, וגם עניין אותי לקבל תשובה לנושא, ושאלתי את תותחי הקוד הפתוח בwhatsup, עד שלימון אחד סיפק תשובה.

אני חייב לציין שזו הפעם הראשונה מלמעלה מ13-15 שנה (עצוב שאני יכול להגיד דברים כאלו) שאני פיזית כותב קוד בשפת אסמבלר (תחביר att במקרה הזה), והיה נחמד להיזכר, אבל הטרול הזה הצליח לגרום לי להבין משהו שאני לא הבנתי לפני זה. אני כל הזמן מסביר שבשפת פסקל אפשר לרדת לרמה הנמוכה ביותר, ואפשר לעלות לרמות מאוד גבוהות, שלפעמים מזכירות יותר שפות דינאמיות (אבל השפה עצמה היא לא), מאשר שפה "עילית" כדוגמתה, והדוגמא הזו מוכיחה שגם כאשר יורדים לרמה הכמעט נמוכה ביותר (לפני שפת מכונה), עדיין היא ידידותית וקלה יותר לפיתוח מאשר שפת C, או בשפה המתמטית: מ.ש.ל.

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

ההקדמה מאוד הזכירה לי את השיר של משינה בשם ריקוד המכונה, שהוא בעצם חיקוי (כמו כמעט כל השירים של הלקה) של השיר של madness בשם One Step Beyond.

9 מחשבות על “ריקוד המכונה

  1. ik_5 מאת

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

    במידה ואי אפשר לקחת משהו קיים, אז צריך לממש את ה API של המהדר למעבד הרצוי. שים לב שזה מחייב גם לכתוב את יחידת system שתתאים למערכת ההפעלה שרצה על המעבד במידה ואין תמיכה קיימת.

  2. disabilion

    טוב, לא הבנתי כלום. 🙂

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

  3. ik_5 מאת

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

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

  4. יום

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

    חוץ מזה אני חייב לומר לך שאני לא מת על הגישה שלך, גם בויכוח יש כללים נאותים להביע את דעתך וחבל שאתה מתעלם מהם (במיוחד חרה לי השימוש במילה "עדה" שכל מי שבקיא בנושא יודע למי התכוונת).

  5. ik_5 מאת

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

    אני מותקף הרבה מאוד שנים כבר על ההבחירה שלי מכל כיוון אפשרי ומהרבה מאוד מקומות, עד שכמה אנשים הסבירו לי בכל מיני צורות שאסור לי להזכיר את שפת פסקל כי זה עושה ממני צחוק, כי זו שפה שלא בנויה לתכנות אמיתי (אנשים מה"קהילה").
    https://idkn.wordpress.com/2009/11/28/there-are-3-technologies-in-the-world/

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

    זה שאתה מתעלם גם מדברים שקוראים בצורה גלויה, נגיד הדיון כאן של תום, שמצהיר שהוא לא יודע וזה לא מפריע לו לצאת בהצהרות שונות:
    http://whatsup.org.il/modules.php?op=modload&name=News&file=article&sid=6633

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

    בחצי שנה האחרונה אני נתקלתי בהרבה מתכנתי דלפי לשעבר שכיום עובדים בהרבה טכנולוגיות (כולל .NET ו ++C) שמתים שיהיה להם איך לחזור לתכנת בדלפי, וכשהכרתי להם את לזרוס הם היו בשוק שיש דבר כזה בכלל.
    אבל אני רואה פרסום של הרבה כלי קוד פתוח בעולם, ודווקא של כלי כמו לזרוס ו FPC יש התעלמות מוחלטת, גם כאשר אני מנסה לגרום לזה להיות מפורסם, ולמעט מאיר שמאפשר לי להגיש מאמרים ב whatsup, אין הרבה מקומות שמאפשרים את זה.

    כאשר פרסמתי כאן בפוסט שלי שפעם ראשונה בהיסטוריה שאני מכיר של הקוד הפתוח יש פרוייקט קוד פתוח ללא תמיכה מסחרית שמעניין את העולם המסחרי מספיק בשביל שהוא יצור בשבילו כלים, ניסו לשכנע אותי שזה לא נכון, ולא רק זה, אלא הסבירו שזה לא מעניין כי מדובר בפסקל ולא בטכנולוגיה אחרת.
    https://idkn.wordpress.com/2010/08/28/why-fpc-and-lazarus-should-interest-also-open-source-people/

    כאשר אני ביקשתי מהמקור שטח לתרגום עברי נורמאלי של כלי עבודה עבור פסקל, אמרו לי "פתח דפים בוויקי, ואולי משם תתקדם". זה בדיוק אותו הדבר כבר שאכתוב את התעוד בוויקי של FPC/Lazarus, בעוד שהכונה שלי היתה בית לתרום עברי נטו.

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

  6. יום

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

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

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

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

    בכל אופן זהו דו-שיח של חרשים, אתה תתעקש שכל העולם לא מכיר את פסקל ויש לו דעות קדומות עליה, ואני אתעקש שהדיון הוא לא פסקל אלא חוסר היכולת שלך "לראות שונה".

  7. ik_5 מאת

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

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

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

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

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

  8. יום

    אתה לא צריך להסכים אתה צריך לשנות את הגישה, וברגע שתבין את זה את שני הסנטים שלי תרמתי. מותר לך לדבר על דלפי, לזרוס, FPC, firebird, mysql או כל טכנולוגיה אחרת כאשר זה *רלוונטי* (כמובן אף אחד לא יכוון לך אקדח לראש אם תעשה את זה במקומות שזה לא רלוונטי אבל תתכונן להתמודד עם התוצאות). אם יש קשר ישיר בין גישה מסויימת בלזרוס לדעה מסויימת שאתה רוצה להעביר עליה את דעתך, זכותך וזה אף מבורך אך לא בכל מקום שמוזכרת המילה gtk, לזרוס צריך להופיע והיכן ש-C או GCC מופיעים צריך להופיע FPC.

    אני למשל אוהב ואת רוב הניסיון שלי שואב מפיתון, אבל לא בכל מקום שבו אני רואה דיון על php ו-OOP אני אצעק לא כך מיישמים OOP נורמאלי, תסכלו על פיתון שיש לה OOP נקי ולא רק זה היא גם תומכת ב-XYZ, כי זה פשוט לא רלוונטי.

    שוב, אף אחד לא מכוון לך אקדח לראש ואם אתה מעוניין לדבר על פיתון בהצלחה. אבל הוכחת מעל כל ספק שהניסיון שלך בפיתון הוא אפסי לכלום, ואני לא מתכוון לזה במובן פוגע אבל אתה לא יכול לכתוב דברים שאין לי מילה אחרת כיצד להגדיר אותם חוץ מאולי שטויות ולצפות שאנשים יתיחסו אלייך ברצינות כשאתה כותב על השפה. לדוגמה הדברים שכתבת בפוסט הבא -> http://whatsup.org.il/index.php?name=PNphpBB2&file=viewtopic&t=54463&highlight=%F4%E9%FA%E5%EF+%F1%E9%F0%E8%F7%F1

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

להשאיר תגובה

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

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s