מאמרים בנושא ‏תכנה ומחשבים‏.

על C++0x ועל TR1.

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

מה זה C++0x‏ ו־TR1‏? הם השינויים בסטנדרט החדש של C++‎, כאשר C++0x מדבר בעיקר על שינויים בשפה, ביניהם: הוספת פונקציות למדא , טיפוס auto‏ ורבים אחרים. הסטנדרט החדש מגדיר גם שינויים בספריית C++‎, הנקראים TR1.

היום, gcc מתקדם לאט־לאט ביישום של שינויים בליבה של השפה, אבל מה שיותר מעניין אותנו כרגע, זה שרוב השינויים המוצעים ב־TR1 כבר נכנסו לספריה סטנדרטית (כרגע תחת namespace:‏ tr1). ביניהם: מצביעים חכמים, "אובייקט הפונקציה" או Deligators במונחי C#‎, טבלאות hash, ביטויים רגולריים ועוד.

חלק מהשינויים זמינים כבר בגרסה 4.1 של gcc, אחרים (כמו ביטויים רגולריים) זמינים כבר ב־gcc 4.3. חלק גדול מהשינויים האלה נלקח כפישהו מספריות Boost‏.

נעבור בקצרה על האופציות החדשות:

המשך...

ניהול זכרון ב־C++‎ - האגדות והמציאות

ב־יום ראשון, 17 באוגוסט 2008, מאת ארתיום; פורסם תחת: פיתוח, תכנה ומחשבים, C++‎‏; ‏14 תגובות

אחת הסיבות שמפתחים רבים כל־כך אוהבים את C#/Java, היא העובדה שהזיכרון מנוהל ע"י Garbage Collector ומסיר (כמעט) כל דאגה לניהול הזיכרון מהמפתח.

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

באמת, אם כותבים ב־C++‎ כמו שכתבו ב־C, זה יהיה קשה באותה מידה. אבל אם כותבים כפי שצריך לכתוב, אפשר (כמעט) לשכוח מכל הנושא של ניהול זיכרון --- הוא הופך להיות שקוף לא פחות מאשר ניהול שלו ב־Java, רק עדיין משאיר לך אופציות בחירה כשאתה באמת צריך את זה.

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

המשך...

לינמגזין מת...

ב־יום רביעי, 13 באוגוסט 2008, מאת ארתיום; פורסם תחת: תכנה חופשית, לינוקס, תכנה ומחשבים; ‏16 תגובות

התחלתי להתעניין בקהילת הלינוקס בארץ בסביבות 2005. ווטסאפ ולינמגנזין היו שני המוקדים המרכזיים של קהילה. נהניתי לקרוא את שניהם. ווטסאפ תמיד היה הרבה יותר טכני ולינמגזין הכיל בלוגים רבים של הפעילים בתחום, לינמזין פרסם מאמרי־דעה וסקירות מעניינות כגון: OLPC, עסקת נובל־מיקרוסופט, סקירות בנושא GPLv3 ועוד.

אבל לאט־לאט המצב הלך והשתנה. עם פתיחת בלוגלי מרבית אנשים מרכזיים שכתבו בלינמגזין עברו אליו. בגלל סיבות כאלה ואחרות, סקירות מרכזיות נחלו כישלון: OLPC מת,‏ OpenXML התקבל כתקן ‎ISO‎ מפוקפק ועוד.

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

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

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

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

    ששמה במירכאות כמעט את כל הפעילים האמתיים בתחום התכנה החופשית בארץ.

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

Asp.Mono על לינוקס? עוד לא...

ב־יום חמישי, 7 באוגוסט 2008, מאת ארתיום; פורסם תחת: תכנה חופשית, אינטרנט, לינוקס, פיתוח, תכנה ומחשבים, CppCMS; ‏2 תגובות

תוך פיתוח CppCMS תמיד רצית לעשות השוואת ביצועים מול אחת הטכנולוגיות הפופולריות בתחום Web:‏ Asp.Net. מצאתי מערכת בלוגים: BlogEngine.Net‏ שתומכת ב: mono רצה גם על Linux ועובדת מול MySQL --- קרי כל מה שצריך כדי לעשות השוואה מול CppCMS.

ההתחלה הייתה די מבטיחה, הוראות ההתקנה לא היו מסובכות, מצאתי בלוג אחד אמתי שרץ על Ubuntu ו־Apache mod_mono, ראיתי הוראות התקנה עבור Ubuntu והתחלתי לעבוד.

קודם כל התקנתי mono 1.9.1 מ־backports של Etch. הבעיה הראשונה שנתקלתי בה, הייתה בעיה של התקנה שלי --- גרסת הקומפיילר לא תאמה גרסת mono. אחרי שפתרתי אותה, הצלחתי להריץ את היישום כאשר XML משמש כבסיס נתונים עבור הבלוג.

אחרי זה החלטתי להפעיל את MySQL. שוב בעיות, הפעם יצירת טבלאות --- מי שבדק את זה על MySQL ב־Windows לא לקח בחשבון שבלינוקס שמות הטבלאות הן case sensitive --- זה נפתר די בקלות. הבעיה השניה הייתה לחבר את MySQL ל־Mono.

המשך...

עכשיו הגיע הזמן שבו אני רוצה לשדרג...

ב־יום חמישי, 7 באוגוסט 2008, מאת ארתיום; פורסם תחת: תכנה חופשית, לינוקס, פיתוח, תכנה ומחשבים; ‏6 תגובות

כש־Debian Etch שוחרר לפני כשנה וחצי, מחקתי את Ubuntu Dapper שהיה לי אז והתקנתי גרסה יציבה של Debian. מאז אני עובד אתה למעט מספר מצומצם של חבילות שלקחתי מ־Backports או עשיתי להם Backport בעצמי --- בעיקר מספר ספריות פיתוח ו־OpenOffice.

אחרי שעברו כמעט שנה־וחצי אני התחלתי להרגיש: חייבים לשדרג. לאחרונה אני התחלתי לקחת כבר לא מעט דברים מ־Backports בהם mono 1.9.1 לניסויים ועוד כל מיני דברים.

הסיבות העיקריות שאני מרגיש צורך לשדרג הם:

  • אני רוצה ספריית boost 1.35 --- יש יותר מידי פיצ'רים נחמדים.
  • אני רוצה ספריית asio (חלק מ־boost).
  • אני רוצה gcc 4.3 עם תמיכה משופרת ב־C++0x.
  • אני רוצה להתכנס לסביבת ספריות יציבה עבור CppCMS (שחלקן חסרות לי בגרסה יציבה של דביאן).
  • אני רוצה Firefox 3... אולי אפילו אחזור להשתמש בו אחרי תקופה ארוכה עם Epiphany.
  • אני רוצה mono חדש בצורה מסודרת כדי לעשות כל מיני ניסויים1
  • אני רוצה texlive 2007

אז אחרי שנה וחצי אני הרגשתי... שאני צריך לשדרג, אבל מה? הייי, עוד מעט Lenny ישוחרר!

עכשיו כמה זה עלה לי, לעבוד עם הפצת לינוקס מיושנת לאורך כל־כך הרבה זמן?

  1. עלה לי בהרבה שקט נפשי
  2. עלה לי בכמה backports.
  3. עלה לי בזה שהמחשב פשוט עובד(tm)

אבל נגיד, מה היה קורה אם הייתי עובד עם Lenny, נגיד חצי שנה אחרי שחרור הגרסה?

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

ובכן, טוב שבחרתי ב־Etch... נקווה ש־Lenny לא יתעכב והגרסה אחריו תצא משהו כמו שנה־וחצי אחרי.


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

העמוד הבא

העמוד הבא

דפים

נושאים