כמה מילים על ה-WWDC של אפל

wwdc-2014אפל פתחה אתמול רשמית את כנס המפתחים העולמי שלה (WWDC) עם תצוגה בת שעתיים של דברים חדשים שאפל פיתחו. אני מעוניין להתייחס לכמה נקודות שאפל הכריזו.

אפל הכריזו על גירסה חדשה ל-iOS, גירסה 8. בגירסה זו ישנם תוספות רבות כמו אוטומציה לבית (עדיין אפל צריכים להרחיב על כך), שיפורים ויזואליים בממשק, הכנסה סוף סוף של Widgets צד ג' (משהו שקיים עוד מאנדרואיד 1.6!), אפשרות סוף סוף להחליף למקלדת אחרת כמו Swipe (שוב, קיים באנדרואיד מאז 2.0!), שיפורים ב-Notifications ועוד. אפל באמת, בלי שמץ של ציניות, הוסיפו המון חלקים שהיו קיימים אצל המתחרים והוסיפו עוד דברים נחמדים מאוד. כשמגיע מחמאות לאפל – אני בשמחה אתן.

אבל הבעיה המרכזית, למי שלא שם לב, היא שאפל שוב נוטשת משתמשים קבועים שלה. היכן? בדיוק בחלקים שקשורים לאינטרקציה חיצונית, מחוץ לאייפד/אייפון/מק. כך לדוגמא, ב-iOS 8 אתה יכול להתחבר ישירות מהמק אל הטלפון שלך ולהשתמש בחבילת הגלישה הסלולרית, כל זאת מבלי לנגוע בכלל בטלפון שלך (אגב, הפונקציה הזו לא תהיה פעילה מיד, יש צורך שהספק הסלולרי שלך יאפשר זאת, מה שיגרור בוודאי בישראל עלויות נוספות לחבילה שלכם, לפחות בהתחלה. זוכרים איך חברות תקשורת סלולריות מסויימות בישראל גבו יותר על Tethering? אותו דבר). אפשרות מאוד נחמדה אחרת היא לקבל את ההודעות ולשלוח אותם ישירות מהמחשב שלך, בין אם מדובר ב-SMS, ב-iMessage וכו'. תוכל לשלוח הודעות גם מהמחשב כולל וידאו, תמונות וקול. הטלפון נמצא מחוץ להישג ידך ויש שיחה? תוכל לענות ולהוציא שיחות ישירות מהמחשב שלך מבלי שהמכשיר יהיה ליידך (שוב, רק כשספק התקשורת שלך תומך ב-WIFI Calling, משהו שעדיין לא נתמך בארץ). או הפונקציונאליות הנחמדה שאם אתה כותב אימייל באייפון/אייפד שלך, תוכל להמשיך לכתוב אותו ישירות מהמחשב או מאחד המכשירים שלך – שזה מאוד נחמד.

הצרה? כל אותן פונקציות זמינות רק לבעלי מק. אם אתה מאוד אוהב את האייפון שלך והמחשב שלך הוא PC שמריץ Windows, אתה לא תקבל אף אחת מהפונקציות הללו. רבים מהחברות היו מוכנים להכניס מק במקום PC ל-Corporate, אם היו חבילות אופיס ועוד כמה תוכנות זמינות למק עם עברית (כן, אני יודע שיש אלטרנטיבות, אבל שום חברה גדולה לא תהיה מוכנה להכניס מק לעובדים שלה אם אין לו אופיס 2010/2013/2014 עם עברית מלאה מובנית ומיקרוסופט עדיין מתעקשת שלא ליישם RTL מלא באופיס על מק).

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

מבחינה תחבירית של השפה, אפל לקחו מכל חור אפשרי. הם העתיקו הרבה חלקים מ-Python, מ-Javascript, מ-Lua, מ-RUBY ועוד כמה שפות. גם Swift כמו שפות רבות אחרות, משתמש בקומפיילר כדי להדר את הקוד לשפה בינארית והוא משתמש ב-LLVM.

אפל רצו להרשים את המפתחים והציגו ביצועים של הצפנה עם RC4. עם Python היתה מהירות של X1 ועם Swift פי 220. זה נראה מרשים למי שלא כתב שום קוד ב-Python, אך אם תשאלו מהנדסים בגוגל (בגוגל משתמשים המון ב-Python וכל מהנדס תוכנה שם מחוייב לדעת את השפה) ובמקומות אחרים – הם יאמרו לכם שהכל תלוי איך אתה כותב, איזה ספריות אתה משתמש כדי לכתוב את האפליקציה וכו'. אפל מנסה להשוות תפוחים לתפוזים (Python לא משתמש בקומפיילר כמו בשפות C או ++C והוא מריץ קוד ישירות). והם כמובן לא חשפו את הקוד שמראה מה הם עשו כי אם הם היו חושפים, אחרים היו שמחים להראות שניתן להציג ביצועים הרבה יותר גבוהים מ-Python. ככלל Python לא בנוי להתחרות מול C או ++C או כל שפה שמתקמפלת לקבצים בינאריים, Python מיועדת לכתיבת קוד שיכול לרוץ בכל פלטפורמה עם מינימום שינויים (ובמקרים רבים אין צורך בשום שינוי קוד) והיא מיועדת לכתיבת אפליקציות שלא מצריכות מהירות. Swift לעומת זאת, בנויה כדי למשוך מפתחים חדשים וכדי לתת להם שפה שנותנת מהירות.

הבעיה המרכזית עם Swift היא ששוב – אפל חושבת רק על עצמה ולא על שוק המפתחים. שפת Swift יכולה לשמש אך ורק לפיתוח אפליקציות למק ול-iOS. לעומת זאת, המתחרים כשמוציאים שפה נוקטים בשיטה אחרת: מיקרוסופט לדוגמא הוציאה בזמנו את #C ל-Windows אך היא גם הגישה אותו ל-ITU כדי להפוך אותו לסטנדרט חדש ובמקביל הם סייעו ל-Xamarin להכין קומפיילר ללינוקס ולאנדרואיד כך שתוכל מבחינה טכנית לכתוב אפליקציות לסביבות לא מיקרוסופטיות עם #C. גוגל כששחררה את GO, שחררה אותו מהרגע הראשון ללינוקס, מק ו-Windows, וגם ל-FreeBSD והכל כקוד פתוח. אפל כמובן לא משחררת כרגע אפילו שורת קוד אחת מ-Swift.

למי שמעוניין ללמוד Swift – עכשיו זה הזמן, אבל עדיין, חברות שכותבות אפליקציות למכשירי אייפון/אייפד יצטרכו או לכתוב קוד ב-Swift ו-Object C או להתעלם מ-Swift. הסיבה? אפל בינתיים לא רוצה לשחרר שום runtime שיאפשר לקוד שנכתב ב-Swift לרוץ על מכשירים מבוססי iOS 7 אלא רק על iOS 8, ו-iOS 8 לא ירוץ על אייפון 4 ואייפד 2, כך שקוד שנכתב ב-Swift לא ירוץ על מכשירים אלו.

אפל מרוויחה מ-Swift קהל יותר גדול של מפתחים חדשים (השפה באמת קלה ללימוד, מאפשרת שילוב של Objective C ב-Swift ולהיפך, והיא גם, אציין לטובה, עוזרת בכתיבת קוד יותר מאובטח), אבל היתרון הגדול שיהיה ל-Swift בהמשך הדרך, הוא שתוכל להדר את האפליקציה שלך לא רק שתרוץ על מק ו-iOS, אלא שהיא תוכל לרוץ ב-2 הפלטפורמות גם כשהמק כבר לא ישתמש יותר בצ'יפ של אינטל. "סוד" גלוי וידוע הוא שאפל מאוד רוצה לנטוש את המעבדים של אינטל כדי להוציא מחשבי מק מבוססים ARM ועם אורך חיי סוללה שנמדדים בימים ולא בשעות, אבל הדרך שזה יקרה עדיין ארוכה והמעבד הכי חזק שמבוסס ARM ממשפחת A53 ומעלה, עדיין מציע ביצועים די גרועים מאוד בהשוואה למעבדים כמו i5 או i7 (תסתכלו לדוגמא בטבלה הזו) שמציגים תוצאות פי 10 ומעלה יותר מכל מעבד מבוסס ARM ועוד לא דיברתי על מעבדים מבוססי Xeon כמו שיש במק פרו – אבל אפל רוצה לעבור, ואולי ה-A9 (ה-A8 כבר בייצור ע"י סמסונג בטקסס) יקבל בתוכו כמה חלקים נוספים שמזכירים דברים שקיימים ב-i7 של אינטל, ואז המפתחים לא יצטרכו לתכנן את כל האפליקציות מחדש אלא רק לקמפל ולשחרר.

עוד נקודה אחת שלא כל כך קשורה ל-WWDC אך כן קשורה בעקיפין לאפל ולעיצוב GUI ולכן אני כותב אותה למפתחים ולמעצבי UX: גוגל בזמנו שחררה מדריכים וקליפים כיצד לעצב ממשקי משתמש למכשירים בגדלים שונים, ורוב המעצבים לאייפון/אייפד די התעלמו מההוראות. אחרי הכל, הם מפתחים למכשירים של אפל, מה להם ולאנדרואיד? זה איכס פיכס, נכון? אז זהו – שאפל הולכת (לפי השמועות) להכריז בספטמבר (כנראה) על האייפון 6, ושוב יהיה שינוי רזולוציה מאסיבי, שוב יצטרכו לתכנן אייקונים ואת הממשקים לאפליקציות. גוגל, בכנס I/O שיערך עוד שבועיים (וישודר כולו ב-יוטיוב. הידד, אין צורך מכשיר אפל כדי לצפות בשידור!) תקדיש את רוב הכנס לעיצוב גרפיקה וממשקים למכשירים בגדלים שונים, אז גם אם אתם שונאים שנאת נפש אנדרואיד, תציצו בוידאו. אולי תחסכו לעצמכם עבודה בעתיד כשעוד מכשירים מבית אפל יצאו עם רזולוציות שונות.

Comments

comments

18 תגובות בנושא “כמה מילים על ה-WWDC של אפל

  1. בעיקרון הכל נכון רק שאייפד 2 כן יקבל עדכון ל iOS 8
    ככה זה במצגת שלהם לפחות.

  2. כמה תיקונים קלים…
    פייתון מקמפלת, ועוד איך… אתה רק לא רואה את זה… הקוד שפייתון מריץ מקומפל בצורה אוטומטית בפעם הראשונה שהוא מורץ (או אחרי שינוי) לBYTE CODE שאותו מריץ מנוע הפייתון.
    ניתן, בקלות, לכתוב אפליקציות מהירות בפייתון, ואם צריך, זה קלי-קלות לשלב קוד C/CPP (וגם הפוך, כדרך אגב) או אפילו אסמבלר

    • נכון, פייתרון יוצרת קבצי pyc בעת ההרצה הראשונה, אבל זה עדיין לא קימפול עד רמת האסמבלר למיטב ידיעתי.
      נכון, אפשר להכניס inline של ++C/C ואסמבלר, אבל אישית אני לא רואה שמישהו עושה זאת למען האמת.

  3. ניטפוק: אתה קצת משכתב את ההיסטוריה של C#‎ ומונו: מיקרוסופט יצרה את השפה כתקן כדי לעקוף את ג'אווה. כזכור, היא ניסתה בהתחלה ליצור גרסה משלה לג'אווה (ולא תואמת: Microsoft J), היא הסתבכה במשפטים עם סאן ונאלצה לוותר. לכן היא יצרה שפה דומה לשפה של סאן והחליטה להפוך אותה לתקן של ISO. התקן נשאר בשליטתה המוחלטת (הוא הוגש בדיוק באותו מסלול שבו הוגש יותר מאוחר תקן OpenXML הידוע לשמצה).

    גם לג'אווה היו באותו זמן כמה מימושים חלופיים (לדוגמה: kaffe, jamvm). עם יצירת השפה של מיקרוסופט נוצרו שני מיזמים ליצור לו מימוש חלופי: מונו ועוד מיזם של גנו שלא הצליח בסוף כמעט להתרומם. יחסי מיקרוסופט עם מפתחי מונו ידעו עליות ומורדות. מצד אחד אנשי מיקרוסופט רצו יותר משתמשים בשפת C#‎ בפלטפורמות אחרות (על חשבון ג'אווה), אך מצד שני הם העדיפו שישתמשו ב־C#‎ עם הכלים של מיקרוסופט בסביבת מיקרוסופט.

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

    • אני מכיר היטב את ההיסטוריה הזו. אני לא מנסה לשכתב, אני מדבר על החלק האחרון, לאחר שהיא כתבה את #C ודוט נט (2 דברים שונים) היא הגישה את זה ל-ITU כתקן ISO. כמובן שההיסטוריה שאתה מדבר עליה היא נכונה ומיקרוסופט אפילו חשבו לתבוע את סאן על Open Office אבל "בזכות" #C ודוט נט, לסאן היה טיעון מאוד משכנע נגד מיקרוסופט בגלל פטנטים שהופרו ב-#C ודוט נט.

      מיגל דה איקזה אכן הרים את זימיאן ואכן זימיאן עשו מעין Porting ל- #C שהם היו כבר זמרין. (הם גם עשו Porting ל-Silverlight אבל בגלל מיקרוסופט מיזם זה נכשל)

  4. והערה מתבקשת: הנה התממשות הפחד של סטולמן מנעילת שפות על ידי אפל. אפל (סליחה: NeXT, בניהולו של ג'ובס. נבלעה מאוחר יותר באפל והורישה לה את OS/X) רצתה למנוע את שחרור המימוש של Objective-C ל־gcc אבל הרישיון לא אפשר את זה.

  5. "גוגל בזמנו שחררה מדריכים וקליפים כיצד לעצב ממשקי משתמש למכשירים בגדלים שונים"

    גם אפל שיחררה הרצאה על אותו נושא בדיוק: http://devstreaming.apple.com/videos/wwdc/2014/216xxcnxc6wnkf3/216/216_sd_building_adaptive_apps_with_uikit.mov?dl=1

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

  6. ״תוכל לענות ולהוציא שיחות ישירות מהמחשב שלך מבלי שהמכשיר יהיה ליידך (שוב, רק כשספק התקשורת שלך תומך ב-WIFI Calling, משהו שעדיין לא נתמך בארץ)״

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

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

    ממש לא, כל מה שזה עושה זה להפעיל אוטומטית את הtethering. אם יש לך היום tethering זה יעבוד מבלי שהספק ידע על זה.

  8. ״הסיבה? אפל בינתיים לא רוצה לשחרר שום runtime שיאפשר לקוד שנכתב ב-Swift לרוץ על מכשירים מבוססי iOS 7 אלא רק על iOS 8״

    פשוט טעות. הם במפורש אומרים שIOS 7 כבר היום מאפשר ריצה של קוד Swift. למעשה הם אמרו שהתוכנה של WWDC (בעדכון האחרון שלה שיצא לפני יומיים) כתובה בSwift. (ועובדת מן הסתם על IOS7)

סגור לתגובות.