כמה מילים על ה-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 שיערך עוד שבועיים (וישודר כולו ב-יוטיוב. הידד, אין צורך מכשיר אפל כדי לצפות בשידור!) תקדיש את רוב הכנס לעיצוב גרפיקה וממשקים למכשירים בגדלים שונים, אז גם אם אתם שונאים שנאת נפש אנדרואיד, תציצו בוידאו. אולי תחסכו לעצמכם עבודה בעתיד כשעוד מכשירים מבית אפל יצאו עם רזולוציות שונות.