
היסטוריה קצרה של סוויפט
אני זוכר כמה זה היה מרכזי כשסוויפט הוצגה ב WWDC של אפל 2014 (ועידת המפתחים העולמית). זה היה השיחה של העיר וכל המפתחים שעבדתי איתם לא יכלו לחכות לנסות את זה. קהילת ה- iOS סערה והייתה התרגשות רבה סביב השפה החדשה.
הוא פותח במטרה להמשיך כמה מושגים שראינו ב- Objective-C כגון תכנות הניתן להרחבה. אבל זה דחף לקראת גישה אחרת לקידוד עם העיצוב המכוון לפרוטוקול והגביר את הבטיחות עם הקלדה סטטית.
זה היה להיט ענק וראה את רקטת השמים הצמיחה שלה בשנים שלאחר ההקדמה. זו הייתה שפת התכנות האהובה ביותר בשנת 2015, השנייה האהובה ביותר בשנת 2016, שפת התכנות ה -11 הפופולרית ביותר בשנת 2017, והביסה את Objective-C, והיא ניצחה את Objective-C בשנת 2018.
סוויפט היא גם הימור של אפל על זכייה בטירונות כדי להפוך למפתחי iOS. התקווה היא שמפתחים חדשים ילמדו את השפה וישתמשו בה לבניית אפליקציות iOS. זה מגדיל את המערכת האקולוגית של חנות האפליקציות. מכיוון שסוויפט מותאמת לעבודה עם אפליקציות iOS, זה מבטיח שהאפליקציות שנכתבות הן באיכות גבוהה.
הפופולריות של Swifts רק ממשיכה לגדול, במיוחד עבור אפליקציות וסטארט-אפים קטנים יותר. הפער בין סוויפט לבין Objective-C רק ימשיך לגדול. העתיד מזהיר לשפה הצעירה הזו.
היסטוריה קצרה של Objective-C
Objective-C היא שפת תכנות מונחית עצמים המהווה קבוצת-על של C, כפי ששם השפה עשוי לחשוף. המשמעות היא שכל תוכנית C חוקית תתקבץ עם מהדר Objective-C. היא שואבת את כל התחביר שלה שאינו מונחה אובייקטים מ- C ואת התחביר שלה מכוון האובייקטים מ- SmallTalk. הוא פותח בשנת 1984, ולכן הספיק להתבגר כשפה והוא הרבה יותר יציב מסוויפט.
רוב האנשים מכירים את Objective-C כשפה המשמשת לפיתוח אפליקציות לאייפון, אך ההיסטוריה עמוקה הרבה יותר מכך. אני ממליץ לקרוא מאמר זה למבט מעמיק יותר.
נקודות החוזק של סוויפט
סוויפט צמחה מאוד בפופולריות מכמה סיבות עיקריות. ראשית, יש הרבה כלי פיתוח נהדרים שאפל סיפקה לעבודה בשיתוף עם סוויפט. אחד המועדפים האישיים עליי הוא מגרש המשחקים, שתואם רק לסוויפט. אפל הציגה את Playgrounds בשנת 2016. הם הוצגו כדרך ללמוד כיצד לקודד, אך אהבתי אותם מסיבה אחרת.
לפיתוח ניידים היו תמיד יותר חסימות מאשר פיתוח אתרים. אתה צריך סימולטור, בדרך כלל אתה צריך סביבת פיתוח משולבת (IDE) קניינית, ואתה צריך להקים פרויקט שלם רק כדי לבדוק איזה אב טיפוס קטן. במקרה של אפל, אתה זקוק גם לחשבון מפתח. הדבר הנחמד במגרשי המשחקים הוא שאתה עוקף חלק מזה. אתה אכן זקוק ל- Xcode או לאפליקציית Playgrounds, אבל זה הכל. ותוכלו להתחיל עם קידוד והידור הקוד שלכם מייד.
עם זאת, יתרון עצום נוסף של סוויפט הוא העובדה שהוא קוד פתוח. אם תהיתם פעם איך שפת תכנות עובדת מתחת למכסה המנוע, תוכלו ללכת לראות בעצמכם! זוהי דרך נהדרת להבין את שפת התכנות איתה אתה עובד מדי יום ברמה עמוקה יותר.
אזכור מכובד מגיע לכלי שירות נחמד שזמין רק לסוויפט, מנהל החבילות של סוויפט. מנהל החבילות של Swift הוא פשוט מנהל תלות שמשולב במערכת ה- Swift build. זה לא מחליף משחק בשום אופן, מכיוון ש- CocoaPods ו- Carthage עשו את העבודה הזה לפני זמן רב, אבל זה פיתרון אחר זמין במידת הצורך.
הרבה ראיות כאן תומכות בעובדה שאפל עושה הרבה כדי להפוך את סוויפט לנחשקת יותר כשפת התכנות הנבחרת עבור מפתחי iOS. הם יוצרים כלי עזר ועזר נאים כדי לפתות אנשים להתחיל להשתמש בשפה. זה מראה כי אפל דוחפת לסוויפט בכל הכוח.
מאפייני שפה
בואו ניכנס לכמה מפרטי השפה עצמה. סוויפט בטוחה יותר בשל ההקלדה הסטטית שלה והשימוש באופציות. ב- Swift, אם הקוד שלך דורש מחרוזת, התכונות של Swift יבטיחו שהקוד שלך יקבל מחרוזת ולא סוג אחר, כגון int. זה תלוי כמובן אם אתה משתמש בשפה כפי שהיא נועדה ולא מכריח את פריקת הכל.
תכונה נהדרת נוספת של סוויפט היא התחביר שלה. במיוחד בהשוואה ל- Objective-C. המילה הטובה ביותר לתאר את התחביר תהיה "תמציתית". אין צורך בחצי נקודתיים, קריאות לעצמי או סוגריים מסביב אם הצהרות. זה מרגיש כאילו אתה מדלג על הרבה דברים שבכל מקרה אתה לא באמת צריך. זה יכול לגרום לתהליך של הקלדת הרבה קוד "לזרום" טוב יותר.
יש אנשים שאומרים שזה מוביל לשיפור מהירות ההתפתחות, אבל לא בדיוק הייתי אומר את זה בעצמי. הצורך המתמשך לפתוח חפצים כדי לעמוד בבטיחות מסוג Swifts מקזז את רווחי הפיתוח שמלווים בתמציתיות.
לסוויפט יש גם הרבה אפשרויות זרימת שליטה מצוינות עם הצהרות, אם אפשר, הצהרות מתג מתקדמות, חזרה בזמן ודחייה. אני אוהב את כל האפשרויות השונות מכיוון שהוא מאפשר לאנשים לשלוט בזרימת הקוד שלהם בצורה הגיונית בעיניהם. הרבה אנשים שונאים מגנים אבל אוהבים שומרים ולהיפך. זה לא ממש משנה מה אתה אוהב או לא אוהב, אבל האפשרויות קיימות ותוכל לקודד בצורה שמרגישה לך הכי טוב.
אני לא יכול לשכוח את כל תכונות התכנות הפונקציונליות כגון סינון, מפה וצמצום. זה נהדר לטיפול באוספים ומועיל לעתים קרובות למדי.
החולשות
סוויפט היא שפה צעירה, ועם זה מגיעה קצת תזוזה. הנדידות בין גרסאות הן פשוט כאב. בחברה קטנה, כלי ההגירה שמספקת אפל יכול להועיל ולכסות את מרבית המקרים. זה הופך פחות מועיל ככל שיש לך יותר קוד. זה אפילו יותר גרוע אם בסיס הקוד שלך מכיל גם Objective-C וגם קוד Swift המשתלבים זה בזה.
בחברה האחרונה שלי, מאמץ ההגירה לקח קבוצה ייעודית לסוף שבוע שלם לעשות. הם נאלצו לעשות זאת בסוף השבוע כדי שלא יתקלו בעימותים של מיזוגים אחרים שדוחפים קוד. זה היה כואב להפליא לכל המעורבים.
סיבה להעברות אלה היא העובדה שסוויפט אינה יציבה ב- ABI. כלומר גרסאות חדשות יותר של סוויפט אינן יכולות לעבוד עם גרסאות ישנות יותר של סוויפט. זה גם אומר שלא ניתן לארוז את השפה עם מערכת ההפעלה. זה עניין גדול עבור חברות עם אפליקציות גדולות הנלחמות באופן פעיל בגודל האפליקציה מכיוון שסוויפט משולבת באפליקציה ומגדילה את הגודל.
נושא נוסף הוא שסוויפט לא משחקת טוב עם Xcode. Xcode מרגיש מאוד סוער כאשר עובדים עם סוויפט והשלמה אוטומטית פשוט לא עובד לפעמים. זה מוזר בהתחשב כמה קשה אפל לוחצת על סוויפט. הייתם חושבים שהם ירצו להפוך את חווית השימוש בסוויפט עם Xcode לתענוג.
לסוויפט יש גם בעיות בטיפול במחרוזות, עיין בדוגמת הקוד לעיל. זה מגושם כמו לעזאזל. ביומיום שלך זה לא נורא. איפה שזה נכנס לתמונה הכי הרבה זה במהלך ראיונות. לרוע המזל עבור משתמשי סוויפט, מראיינים אוהבים לשאול שאלות הכוללות מניפולציה במיתרים. לכך מורכבת העובדה שדרך הטיפול בחוטים השתנתה בין הגרסאות של סוויפט.
נקודות החוזק של Objective-C
Objective-C היא שפה מאוד דינמית ומכוונת עצמים. זה דינמי עד כדי כך שתוכל להחליף קריאות שיטה בזמן ריצה באמצעות טכניקות כמו Swizzling. היא מסוגלת לעשות דברים מסוג זה בשל פרדיגמת העברת המסר שלה. זה מאפשר לאובייקטים לשלוח הודעות לאובייקטים אחרים בזמן הריצה כדי לקבוע את קריאת השיטה שנקראת.
במטרות מעשיות, מה זה אומר? ובכן, יתרון אחד גדול הוא יכולת ההסתגלות בזמן הריצה. פירוש הדבר שגישה של ממשקי API פרטיים או ביצוע דברים כמו לעג לאובייקטים בזמן ריצה יתאפשרו. זה יכול להיות שימושי במיוחד כשמדובר בבדיקות יחידות. ספריות כמו OCMock מקלות על כך אפילו יותר ומאפשרות הגדרות בדיקה משוכללות מאוד. ביצוע בדיקות יחידה טובות יהפוך את האפליקציה שלך ליציבה ואמינה יותר.
אם כבר מדברים על יציבות, Objective-C קיים זמן רב מה שהופך אותו לשפה יציבה מאוד. עם סוויפט, תיתקל בבאגים די מפתיעים ושיפרו את יציבות האפליקציה שלך. בדוגמה שקישרתי לעיל, קריסה זו תיגרם על ידי השפה בפועל בה אתה משתמש לקידוד האפליקציה שלך, ולא בגלל שגיאה שנוצרה על ידי הקוד שכתבת. זה יכול להיות מתסכל.
הנקודה האחרונה, החשובה יותר עבור חברות מסוימות, היא תאימות לספריות C ו- C ++. מכיוון ש- Objective-C היא קבוצת-על של C, קל להשתמש בקוד C ו- C ++ עם Objective-C. אתה יכול אפילו להשתמש ב- Objective-C ++ אם אתה מרגיש כל כך נוטה. זה חשוב אם אתה תלוי בספריות C ו- C ++ של צד שלישי.
החולשות
התלונה העיקרית הראשונה שאני שומע על Objective-C היא תחביר. התחלתי את הקריירה המקצועית שלי באמצעות Objective-C ולכן אין לי שום בעיות עם זה. זה מילולית וקצת לא שגרתי עם שימוש בסוגריים מרובעים. אבל דעות על תחביר הן בדיוק זה, דעות. חשבתי שאפרט את הנקודה הזו כיוון שזה אחד הדברים הראשונים שעולים כשאתה מזכיר את Objective-C.
דבר אחד שאני כן מסכים איתו הוא שתחביר החסימה הוא מתסכל. יש אפילו אתר המוקדש לפענוח תעלומות הבלוקים ב- Objective-C. אני משתמש באתר זה לעתים קרובות למדי כהפניה.
הבעיה הגדולה ביותר שעומדת בפני Objective-C כרגע היא העובדה שיום אחד אפל עשויה להפיל את התמיכה ב- Objective-C עם קקאו וספריות נפוצות אחרות המשמשות ליצירת אפליקציות iOS. מכיוון ש- Objective-C משמש בעיקר ליצירת אפליקציות iOS, זה יהיה מוות לשפה. המשמעות היא גם שמצטרפים חדשים לקהילת iOS חוששים להתחייב ללמוד Objective-C כרגע מכיוון שלא ניתן יהיה להשתמש בה עוד בעתיד.
בואו נחזור לשפה עצמה. הוא נוטה להתקשות באגים בנושאים בגלל האופי הדינמי של השפה. היכולת לשלוח הודעות לאפס ולא להתרסק על רקע היעדר הקלדה קפדנית הן כמה דוגמאות לדברים שמובילים לבעיות קשות לניפוי באגים.
Objective-C לא אוחז בידך גם כשמדובר בדברים האלה. למרות שזה נחמד שהאפליקציה לא קורסת כשאתה שולח הודעה לאפס, היא עשויה להעמיד את האפליקציה שלך במצב מוזר. קשה מאוד לפתור באגים בנושאים כאלה. העובדה שלסוויפט יש הקלדה קפדנית והשימוש באופציות לא עוטפות מונעת דברים אלה בזמן הידור.
האם עלי ללמוד סוויפט או Objective-C?
התשובה עבור רוב האנשים תהיה סוויפט. אפל דוחקת בבירור את סוויפט כשפת הבחירה עבור קהילת פיתוח היישומים שלה ב- iOS. סוויפט רק תמשיך להיות ביצועים יותר עם הצגת יציבות ABI וסוויפט תארוז עם מערכת ההפעלה עצמה.
אם אתה מעוניין לקבל עבודה כמפתח iOS, סוויפט תהיה השפה שאתה רוצה ללמוד. לרוב חברות ההפעלה לחברות הבינוניים יישומי ה- iOS שלהם ייכתבו לחלוטין בסוויפט. פירוש הדבר שתוכלו להגיש מועמדות ולראיין למשרות נוספות אם תלמדו את סוויפט.
אפילו בחברות גדולות יותר שבהן עדיין משתמשים בכבדות ב- Objective-C, עדיין ניתן לבצע ראיונות ב- Swift. כך שתוכלו ללמוד Objective-C ברגע שתצטרפו לחברה ולא לדאוג להכביד על עצמכם בעוד דברים ללמוד לפני הראיון.
תרצה ללמוד Objective-C אם אתה כבר עובד בחברה מתחילה או ברמה בינונית ורוצה לקפוץ לחברה גדולה יותר. מיומנויות עם Objective-C יעניקו לך ידע מיוחד ויתרון לעומת מועמדים אחרים לראיון.
אהבת את מה שקראת? תסתכל על כמה מהמאמרים האחרים שלי:
טיפים לראיון הטכנולוגי הראשון שלך.
להתחיל קריירה טקית מכלום.
האם עליכם לקבל תואר במדעי המחשב?