הבלוג של ארתיום
בלוג על לינוקס, תוכנה חופשית, מוזיקה, סלסה, ומה לא!
מה אני שונא ב־C++.
אחד הדברים החשובים במלחמת "שפות/דתות" זה לדעת טוב מאוד את המגרעות של השפה. כך, כדי "לאזן" את הכתבות על C++ החלטתי לפרסם רשימת הדברים שאני שונא ב־C++.
- זמן קומפילציה --- נוראי. לפעמים כשאני מקמפל קוד C או Java אני לא מבין מה קורה? מדוע לחצתי על "Enter" והקמפול נגמר.
- קשה מאוד ליצור ספריות עם ABI תואם לאחור. כל שינוי קטן בממשק הורס תאימות לאחור. או צריך להמציא טריקים כמו "הסתרת מימוש" או לעבוד עם מחלקות אבסטרקטיות בלבד.
- שגיאות קומפילציה נוראיות: אני כבר מחכה ש־ConceptsGCC יתמזג לענף gcc הראשי --- שוב, חלק מ־C++Ox.
- מתכנתי C++ שאין להם מושג ירוק מה הם עושים.
- קוד C++ כתוב כמו קוד C... מקור מעולה לבאגים.
- ספריות "C++" שתואמות קומפיילרים טרם־היסטוריים --- ללא namespaces, ללא STL, ללא RTTI ועוד. (למשל ממשק C++ של BDB).
- ספריות שממציאות גלגל מחדש: בא לנו string משופר, רשימה מקושרת משופרת ועוד -- אבל הורסות את התאימות עם שאר הספריות.
- עבודה עם ספריות C מתוך C++ --- כי ב־C אין destructors ואז הקוד הופך לספגטי של try/catch. או צריך לעטוף כל שטות במחלקה. מצד שני, אי אפשר לוותר על זה, כי יש המון ספריות מעולות, מדובגות ונפוצות הן ספריות C.
- אני שונא iostreams -- הם מסובכים, לא נוח לעבוד עם format, לא נותנים גישה ל־file descriptors כמו FILE של C. מצד שני, הם הפתרון הטוב ביותר לעבודה אחידה מול streamים שונים -- למשל, כתיבה לקטע בזיכרון, כתיבה ל־socket ועוד.
- כתיבת טיפוסים של iterators --- אני כבר מחכה ל־auto של C++0x.
- קומפיילרים גרועים --- ראה ערך VS6 שאני לא מבין מדוע אנשים עדיין משתמשים בו.
אני מעביר את השרביט ל:
הסבר: הכוונה היא --- לתת ביקורת על מה שאפשר היה לשפר בשפה, או מה שלא ניתן לשנות וזה לפעמים מפריע.
האם C++ היא שפה דלה?
ב־C++ אין הרבה דברים מאוד נפוצים ושימושיים, למשל:
- אין תמיכה ב־threads.
- אין תמיכה בעבודה עם זיכרון משותף.
- אין תמיכה ב־IPC ויצירת תהליכים.
- אין תמיכה ב־base64 ו־md5.
- אין תמיכה מובנית בעבודה עם בסיסי נתונים כמו sqlite3.
- אין תמיכה מובנית בדחיסת gzip.
- אין כלי עבודה מול XML.
אם תסתכלו בשפות כמו Java/C#/PHP/Python/FPC תגלו שלמעשה, כמעט כל הדברים האלה, נתמכים ברמת השפה עצמה (עם שינויים כאלה ואחרים), אבל C++ דורשת ספריות צד ג' כדי לטפל דברים כל־כך בסיסיים.
האם זה אומר שהשפה דלה או האם זה אמור משהו אחר?
המשך...הגיע זמן לחפש הפצה חדשה?
בהמשך לחיזוי של שחרור מאוחר של Lenny באוגוסט 2008, אני מתחיל להגיע למסקנה -- הוא מדויק למידי. הנה גרף הבאגים הקריטיים במצבו של היום:
זה עצוב, אבל זה נכון. אי אפשר לצפות ל־Lenny לפני מאי--יוני, למרות שרוב האנשים ואפילו קפלן חושבים אחרת.
האם הגיע זמן להחליף הפצה? מצד שני כשאני מסתכל, אין הפצה מתאימה בסביבה --- מספיק יציבה, עם שדרוגים פעם בשנה--שנה־וחצי, עם מאגר חבילות רחב ומה שעוד יותר חשוב עם backports מסודרים. כנראה שגם לא תהיה כזו בקרוב, כי רוב המשתמשים עדיין גיקים ורוצים משהו אחר.
מה חסר חי כרגע? gcc-4.3, גרסה אחרונה של firefox ועוד כמה דברים.
מזל טוב... או לא עוד "החברה של ארתיום"
בד"כ אני לא נוהג לספר על אירועים אישיים בבלוג הזה, אבל האירוע כל־כך חשוב ומשמח שהחלטתי לשתף את קוראי הבלוג שלי.
אתמול, אני ואדית עמדנו מתחת לחופה ובאנו בברית הנישואין.
מגיע לנו מזל טוב!
(תחילת) מבוא ל־LaTeX בעברית
לפני כחצי־שנה--שנה, התחלתי להכין "מבוא ל־LaTeX בעברית". לצערי, אני לא מוצא זמן להביא את העבודה מצב סביר, שלא לדבר על מצב "מוגמר". מצד שני, כבר הספקתי לכתוב לא מעט מידע מועיל, שלא לדבר על העובדה, שהמדריך עצמו, מהווה דוגמה מצויינת לעבודה עם LaTeX בעברית עבור אלה שכבר מכירים LaTeX רגיל.
כמו כן, שמתי לב להתעוררות בנושא LaTeX ועברית בזמן האחרון; ואיתה הבעיה התמידית --- הערד כל תיעוד סביר.
לכן, החלטתי לשחרר את הטיוטה לקהל רחב. אני לא יודע מתי אני אחזור אליה. ייתכן שהיא תהיה מספיק מועילה לקהל משתמשי LaTeX בעברית ומשתמשי BiDiTeX.
קישורים
אני מקווה שזה יכול להיות מועיל למישהו. אני בטוח שתמצאו כאן חוסרים, ואי־דיוקים, אבל, כרגע אין לי זמן לטפל בזה, לכן, החלטתי שעדיף משהו חצי בשל, מאשר כלום.