מחשבות על Boost.

ב־21.1.2010, מאת ארתיום; פורסם תחת: תכנה חופשית, פיתוח, תכנה ומחשבים, C++‎‏, Boost‏; תגובה אחת

ספריית Boost היא אחת הספריות הגדולות של C++‎ הן מבחינת הגודל הפיזי והיקף הספריות והן מבחינת המרכיבים החשובים שהיא מספקת.

Boost ל־C++‎ היא היום אחת הספריות הנחוצות ביותר הכללת בין היתר: טיפול בחוטים, ביטויים רגולריים, סינגנלים, סוקטים ועוד עשרות מודולים חשובים ושימושיים; ומה שעוד יותר חשוב הם בנויים בצורה טובה, הגיונית ודי איכותית.

למעשה, המתכנת C++‎ המודרני שהתרגל לנוחות ש־Boost מספקת יתקשה לכתוב בלעדיה את הקוד.

כמובן שהיא לא הספרייה היחידה, גם כלים כמו Qt, GTKmm ואחרים מספקים כלים בהיקף דומה... אבל ל־Boost יש יתרון גדול: חלק מהכלים שקיימים היום ב־Boost כבר עברו כפי-שהם ל־STL החדש. למעשה, יש ערך מוסף לעבודה עם Boost: אם אתה רגיל לעבוד עם boost:function,‏ boost::bind, ‏boost::regex, ‏boost::thread אתה תמצא את עצמך יום אחד משתמש ב־std::function, ‏std::bind בצורה שקופה לחלוטין בלי תלות בספריית צד ג'.

אבל מה? בניגוד לספריית STL שבאה עם קומפיילר ומבטיחה לך תאימות לאחור ואפשרת לא לדאוג ומגרסאות... Boost היא לא כזו:

  • כל מספר חודשים יוצאת גרסה חדשה שלא תואמת לקודמת!
  • אתה יכול לצפות שאיזושהי גרסת Boost תסופק עם הפצת לינוקס, אבל אתה לא יודע איזו?

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

התכנה הייתה בשתי גרסאות (עם ifdefים): כזו שהשתמשה ב־Qt4 בלבד (וסיפקה GUI), וכזו שהשתמשה ב־Boost ולא סיפקה GUI.

היה לי קל מאוד לקמפל את התכנה שעבדה עם GUI ולשלוח למישהו אחר לבדיקה, כי לא היה לי אכפת איזו גרסת Qt4 מותקנת אצלו, כל עוד היא מספיק חדשה!

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

Boost היא ספרייה נהדרת. אבל, היא גורמת לי להתרחק ממנה יותר ויותר - כי יש פרויקטים שהיא פשוט לא רלוונטית עבורם בגלל שהיא שוברת API/ABI לעתים קרובות.

תגובות

ManicQin, ב־21.1.2010, 14:23

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

ב) טוב אולי לא כתבתי כזה קוד חזק איתה אבל מה שכתבתי ל35 עובד לי סבבה ב41. ושוב... יש גם מצב שאני פשוט לא לקחתי אותה לקצה.

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

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

הוסף תגובה:

 
 כתובת דוא"ל לא תוצג
 

ניתן לכתוב תגובות עם שימוש בתחביר Markdown.

חובה לאפשר JavaScript כדי להגיב.

דפים

נושאים