המרחק בין מתכנת למתכנת אמבדד

February 29, 2012


קודם כל חשוב לומר שאין קשר לסביבת הפיתוח, לתשתיות, לאוסף הכלים וה- API. שום קשר.


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


1. Win32 API, User-Mode, C\++, C#, MFC, Java, וכד’


2. שרתים, Asp.Net, HPC, וכד’


3. Windows CE


4. Windows NT Kernel


5. WebBrowser, JavaScript, AJAX, וכד’


למי ששואל את עצמו, הגרסאות השונות של Windows Embedded הן בעצם דרך לבנות Desktop או Server.


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


מי שמכיר אותי יודע שיש לי נסיון רב בתשתיות תוכנה ובאפליקציות למשל Windows Internals ופיתוח דרייברים, שרתי מדיה, IIS, ו- HPC, וגם UI ב- MFC ובבורלנד C++. זה מוכיח שלא מדובר בסוג שונה של אנשים ומתכנת אפליקציות web יכול להיות גם מפתח דרייברים.


ההבדל העיקרי הוא בגישה.


לדוגמא כאשר אני עובד עם C#, אני מתאמץ פחות לבדוק פרמטרים ולוודא שאובייקטים מתוחלים. יכול להיות למשל שתמונה שנשלחה לעיבוד היא בגודל 0X0. אני לא טורח לבדוק את זה ברוב המקרים כאשר אני עובד עם C#. מה העלות של שגיאה? מקסימום נקבל הודעה ונלחץ Continue. לעומת זאת כאשר אני מקבל תמונה לקוד C\++ אני מוודא שלתמונה יש משטח עבודה לפני שאני מתחיל לעבוד איתה. בעבודה של פיתוח דרייברים אני מקפיד לוודא שהזכרון בגודל הנכון ושיש הרשאות גישה אל האובייקט לפני שאני בודק את הפרמטרים שאחד מהם הוא התמונה. העלות כאן היא מאד גבוהה כיוון שטעות תגרום למסך כחול.


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


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


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


דוגמא מהתחום האפור היא למשל נגן המדיה של מיקרוסופט שעובד מול כל קודק שמותקן על המחשב ונתמך DirectShow (או Media Foundation). לעיתים הנגן פולט הודעה לא ברורה כמו “הרכיב דיווח שגיאה מסוג 80003452, לא ניתן לנגן או אין קובץ”. הסיבה לכך היא שנגן המדיה משתמש בכל רכיב צד שלישי והדיווח היחיד שהוא מקבל מהתשתית הוא מספר תקלה שלעיתים מסמל תקלה כללית כמו פרמטר לא נכון או תקלה פנימית.


כדוגמא לא טובה מהתחום האפור נקח את Windows Live Movie Maker של חלונות 7. כאשר עבדתי על הוידאו שבקישור, לאחר סיום העריכה ניסיתי לייצר את הוידאו וקיבלתי הודעה שאומרת שיש בעיה לייצר את הוידאו הערוך בגלל בעיה בקובץ. “הסר מהפרוייקט קובץ שמפריע ונסה שוב”. זאת דוגמא לא טובה כיוון שהתוכנה יכלה לספר לי באיזה קובץ מדובר אלא שמישהו סתם התעצל לוודא את תהליכי התוכנה.


המסקנה שלי היא שגם אם חלונות CE תעלם מן העולם ולא יהיו יותר מערכות הפעלה ייעודיות לשרתים, וכל הפיתוח יתבצע על מערכת הפעלה חלונות 9 ועל אנדרואיד, עדיין יהיה הבדל מהותי בין סוגי הפיתוח השונים, ויהיו מתכנתי אמבדד על C# (עם UMDF) ויהיו מתכנתי מודולים ב- C שלא יודעים על איזו סביבה הם רצים (Metro, Win32, Android, וכד’).


לסיום חומר למחשבה:


יש סוג נוסף של פיתוח שלא הזכרתי: אלגוריתמיקה ופיתוח אלגוריתמים. זהו הדבר היחיד שאי אפשר להעתיק במזרח או לבצע ב- outsource בחו”ל. נתראה שם בעוד 5 שנים.

Add comment
facebook linkedin twitter email

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

2 comments

  1. אהבתי!March 6, 2012 ב 17:34

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

    Reply
  2. AsafShellyMarch 6, 2012 ב 22:17

    צור איתי קשר ישירות.
    לא לגמרי ברור לי מה אתה מחפש ומה אתה יכול לעשות.

    Reply