יום רביעי, 17 בפברואר 2010

מה חדש ב- MATLAB ?

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

חברת The MathWorks, מפתחת הכלים MATLAB ו-Simulink, מוציאה גרסת מוצרים
חדשה פעמיים בשנה, ואותה זכאים לקבל הלקוחות אשר נמצאים תחת חוזה שירות (אשר מקנה גם את הזכות לקבלת תמיכה טכנית).

הגרסה האחרונה, R2009b, יצאה בתחילת חודש ספטמבר 2009, והיא מכילה
עדכונים ל-85 מכלי The MathWorks, וביניהם – MATLAB 7.9 ו – Simulink 7.4. המשתמשים מצאו 420 באגים בגרסאות הקודמות והם תוקנו בגרסה החדשה (תודו שהיה לכם כיף למצוא אותם...),  ו-580 פיצ'רים חדשים התווספו. בפוסטים הקרובים נדון בכמה מהחידושים בגרסה האחרונה של כלי The MathWorks, אבל עוד קודם לכן – נעסוק במספר "חידושים ותיקים" שאני בטוח שרבים מכם בכלל אינם מודעים אליהם. אלה מכם שכבר עובדים עם הכלים שנסקור את החידושים בהם מאוד יהנו מהקריאה, אבל גם מי שעדיין לא עובד עם כלים מסוימים יוכל ללמוד על היכולות שלהם.

אחד ממרכיבי המפתח של MATLAB, שמניסיוני לא רבים מודעים אליו, הוא ה- M-Lint Code Analyzer.  הכלי הזה, אשר מגיע כחלק מ-MATLAB, בודק את הקוד שהמשתמשים כותבים ב-editor ומחפש בעיות או מציע שינויים שאמורים לשפר את ביצועי האלגוריתם. אם הקוד שלכם "מושלם", תראו בפינה הימנית העליונה של ה-editor ריבוע ירוק. במקרה שיש לכלי הצעות לייעול האלגוריתם או להפיכתו לקוד שירוץ ללא הודעות שגיאה, תראו באותו מקום ריבוע כתום או אדום, בהתאמה.

הנה דוגמה לקוד בעייתי (ראו את הריבוע האדום בפינה הימנית העליונה של ה-editor):

בדוגמה הנ"ל, ה- M-Lint Code Analyzer מתריע על אי סיומה של שורה מספר 2 עם התו ";" (גורם לאי יעילות), על אי סגירת סוגריים בשורה 3 (דבר שימנע מהקוד לרוץ ללא הודעת שגיאה) ועל משתנה שמימדיו משתנים בתוך לולאה (גורם לאי יעילות).

מגרסה לגרסה מורחב מאגר הבעיות שהכלי הזה מסוגל לאתר, וההודעות שהכלי מציג הופכות ליותר ויותר ברורות, דבר שאמור להקל על המשתמשים כשהם מנסים להחליט אם לקבל את העצה שלו או לא. שימו לב שלעצלנים שבינינו יש אפשרות ללחוץ על כפתור ה-Fix המופיע בהודעה המלווה את שורה 2, ובך לחסוך חיפוש אחר התו ";" במקלדת. נקודה נחמדה נוספת היא העובדה שה-M-Lint Code Analyzer הוא כלי מאוד מנומס, ולראיה – קראו שוב את ההערה המלווה את שורה 3. הכלי לא מאשים אתכם ששכחתם סוגריים, הוא פשוט רומז בעדינות שקיים חוסר איזון בין תווי פתיחת הסוגריים ותווי הסגירה.

האם הכרתם את ה-M-Lint Code Analyzer לפני הפוסט הנוכחי? האם ידעתם של-The MathWorks יש מעל 80 מוצרים? יש חידוש מסויים שהייתם רוצים שארחיב עליו יותר בפוסט הבא? אם הייתם המפתחים של הגרסה העברית של MATLAB, 
איך הייתם מעירים למשתמש שהוא שכח סוגריים?