יום רביעי, ספטמבר 30, 2015

רעידת אדמה בשבילי תחת cppcon

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

מי שיצא לו לדבר איתי בתקופה האחרונה על VS2013 ו meta precompiler תלויי דמויין יודע את דעתי על SAL ודומיו.

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

 עכשיו למה GSL והצעה של סטראסטורף בכלל חשובה ? כי ההנחיות מפורסמות כפרוייקט קוד פתוח (ומבקשים הצעות והערות) אני לא יודע אם יתקבל משהוא בסדר גודל של CPP coding standars (דרך אגב ממליץ בחום) אבל החשיבות היא שיכול להיות שזה ידחף כמו שjavadoc נדחף בזמו לתיעוד.

והרב מודה לכם על מה שתוסיפו שם.

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


אני כנראה אצטרך לאכול את הכובע עוד מעט, כי אם הבנתי נכון מייקרוספט הולכת לשחרר את כלי (רעיון) האנליזה שלהם ויכול להיות שאנשים ידחפו את זה לתוך gcc ודומיו (ואז אני צריך לבחור כובע בצהריים). אני חייב להזכיר את הבעייה של הכלי ב VS שהוצג - בדיקת אנליזה של תוכנית הדוגמה לקחה כ 25 שניות קמפול ללא אנליזה לקח מספר בודד של שניות (בממוצע כשלוש שניות. זה אמנם לא נשמע הרבה אבל תחשבו לרגע על קוד בייס קצת יותר גדול מקובץ אחד ואני ראיתי במציאות אנליזה שלוקחת כ20-30 דקות לפרוייקט, וזה מתבצע בכל בנייה כל פעם.



שמחתי לראות שכשאני עובר על חלק מההרצאות שאני משתמש בהם היום בלי להיות מודע שזה טוב כשאני יכול ואני חייב להגיד תודה לספר המדהים C++ Concurrency in Action ביחד עם מעבר על gotw וכמובן שימוש ב VS. מצד שאני התאכזבתי מעצמי שלמרות אני עוקב אחרי C++11/14 אני רואה שאני עושה דברים רעים ופשוט לא מודע לדברים שפורסמו לפני כמה שנים טובות. במהלך ההרצאות הבנתי כי לפחות בחלק מהספריות אהיה מנוע להשתמש בכלים כמו array_view ו not_null למה ? כי אם אני אציג קוד בסגנון של
foo({ptr,size});
אנשים ישנאו אותי, כמובן שיש הרבה דברים שאני לא אוהב זה הרעיון של כתיבה שונה (שימוש במאפיינים בשביל להכריז כי מקטע קוד לא ייבדק) :

[[command(operator)]] memcpy(dst,src,size);

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

אין תגובות:

הוסף רשומת תגובה