הבלוג של ארתיום
בלוג על לינוקס, תוכנה חופשית, מוזיקה, סלסה, ומה לא!
UTF-8, UTF-16, Unicode וכל מה שביניהם.
היו היה בית, בתקופה של תחילת עידן המחשבים הוא היה מסוגל לשמור תו בודד. אבל אנושות הלכה והתפתח ויום אחד התברר שהוא לא מספיק. יש צרפתים, יש רוסים, יש סינים ולא ניתן לדחוף את הכל התווים הידועים לבית אחד מסכן. אז התאספו אנשים חכמים ובסוף שנות ה־80 --- תחילת 90 החליטו לבנות תקן אחיד שיכסה את כל השפות האפשריות --- Unicode.
האנשים האלה חשבו וחישבו ששני בתים יספיקו לכסות את כל השפות אפשריות. כך נולד קידוד של Unicode בשני בתים. בתחילת ה־90, יצרתי UNIX הגדולים גם חשבו ובנו UTF-8 שכדי להבטיח תאימות לאחור עם כל התכנה הקיימת --- כך נולד קידוד בעל אורך משתנה.
עבר הזמן, יצרני תכנה שונים הולכו בשני כיוונים: אחד להציג כל תו בשני בתים והשני להמשיך להשתמש ב־ANSI C String ולעבוד עם תווים בעלי ייצוג באורך שונה. אבל, באמצע שנות ה־90 כבר היה ברור ששני בתים לא יספיקו כדי לכסות את כל השפות האפשריות. ולכן התקן הורחב כך שהוא כלל ערכים מ־0 ועד ל־0x10FFFF.
המשך...מה השתנה בדפדפן הזה, או הניצוץ של כרום.
לא, אני לא הולך לכתוב עוד אחת מאלף ואחת סקירות מתלהבות (או לא כל־כך) על Google Chrome. בסה"כ הגיע עוד דפדפן מעשרות הקיימים: IE, Maxton, Firefox, Galeon, Epiphany, Konqueror, Safari, Flock, Camino, Opera ועוד. אז יש לנו עוד דפדפן, מה הסיפור שלו? היום, לבנות דפדפן זה משהו יחסית פשוט. קח מחלקה של KHTML, Gecko, או של WebKit, דחוף אותה למעטפת GUI ויש לך דפדפן. עכשיו נשאר להמציא עוד כמה עשרות כפתורים מוזרים, להוסיף כמה פיצ'רים נחמדים ולשווק.
לכן, כפי שאתם יכולים להבין אני לא הולך לדבר על דפדפן עצמו. הוא לא מעניין אותי בתור דפדפן יותר מאשר רוב הדפדפנים שפירטתי לעיל. מה שמעניין אותי באמת, זה הצירוף של WebKit עם המותג Google.
המשך...Debian Lenny ב־06/2009 - הייתכן?
באחד החיפושים ב־Google נתקלתי בפוסט הבא שמנחש בצורה די "מדעית" ש־Lenny ישוחרר בסביבות יוני 2009...
אני מתחיל לקרוע לעצמי שיער ולבכות... לא ייתכן, לא ייתכן, אבל ככל הנראה כן.
אם זה המצב, נראה לי שאתחיל לפזול לכיוון Ubuntu... או אולי הגיע זמן לבדוק Suse?
על C++0x ועל TR1.
מה זה C++0x ו־TR1? הם השינויים בסטנדרט החדש של C++, כאשר C++0x מדבר בעיקר על שינויים בשפה, ביניהם: הוספת פונקציות למדא , טיפוס auto ורבים אחרים. הסטנדרט החדש מגדיר גם שינויים בספריית C++, הנקראים TR1.
היום, gcc מתקדם לאט־לאט ביישום של שינויים בליבה של השפה, אבל מה שיותר מעניין אותנו כרגע, זה שרוב השינויים המוצעים ב־TR1 כבר נכנסו לספריה סטנדרטית (כרגע תחת namespace: tr1). ביניהם: מצביעים חכמים, "אובייקט הפונקציה" או Deligators במונחי C#, טבלאות hash, ביטויים רגולריים ועוד.
חלק מהשינויים זמינים כבר בגרסה 4.1 של gcc, אחרים (כמו ביטויים רגולריים) זמינים כבר ב־gcc 4.3. חלק גדול מהשינויים האלה נלקח כפישהו מספריות Boost.
נעבור בקצרה על האופציות החדשות:
המשך...ניהול זכרון ב־C++ - האגדות והמציאות
אחת הסיבות שמפתחים רבים כל־כך אוהבים את C#/Java, היא העובדה שהזיכרון מנוהל ע"י Garbage Collector ומסיר (כמעט) כל דאגה לניהול הזיכרון מהמפתח.
כדי לנהל זיכרון דינמי ב־C המפתח נדרש לעבוד בצורה מאוד מסודרת: להחליט מתי ואיפה אתה מקצה זיכרון, איפה משחרר. כיצד מנהל שגיאות ועוד. רבים, נוהגים לחשוב ש־C++ ירש את כל הבעיות האלה מ־C. זאת בדיוק הטעות.
באמת, אם כותבים ב־C++ כמו שכתבו ב־C, זה יהיה קשה באותה מידה. אבל אם כותבים כפי שצריך לכתוב, אפשר (כמעט) לשכוח מכל הנושא של ניהול זיכרון --- הוא הופך להיות שקוף לא פחות מאשר ניהול שלו ב־Java, רק עדיין משאיר לך אופציות בחירה כשאתה באמת צריך את זה.
נתחיל עם הדוגמאות. אני אציג שלושה קטעי הקוד: אחד ב־Java, אחד ב־C ואחד ב־C++. בכל אחת מהדוגמאות, אני אצור מבנה זהה, המורכב מאובייקט שמחזיק הפניות/מצביעים לשני אובייקטים אחרים.
המשך...