Silverlight Moonlight ומה שבינהם…

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

אז מה זה Silverlight? מדובר במוצר של Microsoft שאמור להתחרות בפלאש. במקום לנסות להסביר מה המוצר עושה אצטט מהאתר של מיקרוסופט:

"Microsoft Silverlight is a cross-browser, cross-platform, and cross-device plug-in for delivering the next generation of .NET based media experiences and rich interactive applications for the Web"

נשמע מבטיח… Cross-Browser, Cross-Platform, Cross device Plugin
מהציטוט ניתן להניח שתהיה תמיכה גם בלינוקס, לא? הקלקתי על הדוגמא הראשונה באתר של Silverlight ומה קיבלתי?

silverlight1.png

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

החלטתי לחקור את הנושא לעומק, וגיליתי שדווקא הכוונות של מיקרוסופט אינם זדוניות כמו שאני חושב. הם פנו ל- Novel במטרה ליצור Plugin ללינוקס. ה- plugin לא נקרא Silverlight אלא Moonlight (למה שינו את השם?). הורדתי והתקנתי את הגרסה היציבה של התוסף (1.0), וניגשתי שוב לדף הבית של Silverline. הצלחתי לראות משהו? לא! רק מסך שחור…

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

Python 3000 ואומנות התוכנה

בעקבות דיון ב- whatsup צפיתי הרגע בהרצאה של Guido Van Rossum שגרמה לי להיות מוטרד. בהרצאה Giudo נשמע די מיוסר מהארכיטקטורה של שפת Python והחליט שבגרסה שנקראת Python 3000 הוא יבצע את רוב התיקונים עליהם חלם אך לא מימש בגלל הרצון לשמור על תאימות לאחור. כדי שמי שלא מתכנת יבין את הנפש של Giudo אציין שתכנות היא עבודת אומנות של ממש. יש הרבה תכנתים שכותבים קוד ברמה ירודה ומעט שכותבים קוד "אומנותי" (ואני לא מדבר על באגים אלא על היופי והאלגנטיות שבכתיבה). אם תשאלו כל תכנת מקצועי הוא בטח יגיד לכם שהוא לא שלם עם התוכנות שהוא כתב והיום הוא בטח היה כותב אותם אחרת. אז למה לא עושים זאת? עצלות (כי בדר"כ מדובר בהרבה עבודה), פחד להכניס באגים חדשים למשהו "שעובד", שיקולים כלכליים ועוד…

אתן לכם דוגמא ממני: אני לא תכנת במקצועי. תכנות היה ויהיה תמיד תחביב מועדף שאפשר לי, גם בעבודה, לכתוב מספר תוכנות יפות. בתקופה האחרונה התחלתי ללמוד שתי שפות חדשות: Java ו- FPC. מי שעזר לי להכנס לשפת FPC הוא עידו קנר ובהזדמנות זאת אני רוצה להודות לו על התמיכה הרציפה שנתן לי בפורום FPC-IL#. למי שלא יודע אז השיטה הטובה ביותר ללמוד שפה חדשה היא לכתוב באמצעותה פרוייקטים שונים. כתבתי תוכנית בלזרוס שמבצעת חישוב ובדיקה של ספרת ביקורת בתעודת זהות ישראלית. הקוד היה תקין ולא היו באגים, אך עידו העיר לי  על שני נושאים עיקריים: שכפול קוד וכתיבת קוד ארוך מידי… בסופו של דבר מימשתי בעזרתו את אותו הקוד בשליש שורות קוד. הקוד נראה עכשיו יפה ואלגנטי ואני מרוצה ממנו. אמשיך ואבחן את התוכנה "מזרים". גם ממנה אני לא ממש מרוצה: יש בה שכפול קוד ובאופן כללי ניתן היה לכתוב אותה בצורה אלגנתית וחכמה יותר. עכשיו אתם בטח יכולים להבין את Guido… בזמנו כמפתח יחיד (לפני יותר מ- 10 שנים), הוא קיבל החלטות שונות שחלקם היו עיגול פינות (בגלל מחסור בזמן). עכשיו, כעובד Google, הוא מעוניין לתקן את כל אותם טעויות ארכיטקטוניות שבשפה. הבעיה היא שהתמיכה לאחור "תישבר" ולא ניתן יהיה להמיר קוד בצורה בטוחה מפייתון 2 ל- Python 3000.

כאמור ההרצאה של Guido גרמה לי להיכנס לדיסונאנס קוגניטיבי:

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

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

ezid.png

dev/null/ ,/dev/zero/ ו- dev/random/

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

אך גם בלינוקס יש חורים שחורים. החור השחור המפורסם ביותר הוא dev/null/. כל מה שתעתיקו/תכתבו לקובץ זה יעלם כלא היה. זה נחמד ושימושי (כשגם במזרים אני עושה בו שימוש: את כל הודעות השגיאה אני מפנה לשם…). אך מה פשר dev/zero/ ?/dev/zero/ משמש כמחסן אינסופי ל- 0 לוגי. אם תריצו את הפקודה: dd if=/dev/zero of=/dev/hda8 תכתבו "0" לכל המחיצה שמעוגנת ל- /dev/hda8/ (ולא משנה מה גודלה). נחמד, רק שהייתי שמח יותר אם במקום לייצר "0" הוא היה מייצר "$"…

ומה בקשר ל- dev/random/? מדובר בקובץ שמחולל מספרים אקראיים. הקרנל של לינוקס עושה בו שימוש בנושא הצפנה ו- hashing (קריאה נוספת כאן). עד כאן פינתי בנושא חורים שחורים והקשר שלהם ללינוקס וחלונות.