ארכיון חודשי: יוני 2008

תכנות RAD

רוב המפתחים בעולם לא מכירים סביבות RAD, ולא יודעים כיצד לתכנת "נכון" בעזרת אותם כלים.

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

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

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

דביאן, libhdate וgpc

אתמול קפלן הפנה אותי לדיווח wish list בדביאן של אדם המעוניין לראות תמיכה בקישוריות שעשיתי ל libhdate ב GPC.

הסיבה שהוא רצה תמיכה ל GPC, היא בגלל שGPC הוא מהדר פסקל הבנוי מעל GCC, ולכן יש לו תמיכה רחבה יותר של פלטפורמות. זה הייתרון היחיד שיש ל GPC על פני כל מהדר פסקל אחר. אבל החיסרון העיקרי של GPC, הוא בכך שכבר אין בפיתוח פעיל – הגרסה האחרונה יצאה ב2005, וכמו כן, הוא מבוסס על GCC 3x, ולא על גרסאות חדשות יותר.

בנוסף לכך הרבה מהתכונות שקיימות במהדרי פסקל מודרניים, לא נכנסו ל GPC, חלק מזה נובע מכך שהוא מבוסס על GCC, אשר עובד בשיטה שונה, המחייבת אותך לעבוד קשה יותר ביצירת התוכנה/ספרייה שלך (קבצי Makefile וכלים נלווים אחרים), בעוד שמהדרי פסקל אחרים מקבלים הוראות מתוך הקוד כיצד להדר את הקוד, בוכך מקצרים את הצורך בכתיבת תסריטים להידור ופריסה שמחוייבים ב C ו ++C.

לדעתי, כיום עדיף להשקיע אנרגייה בפיתוח FPC ותמיכתו בפלטפורמות חדשות, מאשר להשקיע ב GPC, אשר מעולם לא הצליח לדעתי לנצל את השפה במלואה.

בכל מקרה, את הוספת התמיכה ל GPC הוספתי בקובצי הקוד הרגילים, והעברתי אותם לקובי. הוספת התמיכה לGPC, בניגוד לבקשת המדווח, היא לא במקום FPC, אלא בנוסף, בלי צורך למציא מחדש את הגלגל.

ההבדל בין מחלקה לאובייקט

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

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

השימוש באובייקט בשפת פסקל ד"א, נוצר על ידי חברת אפל (אותה יצרנית iphone, mac וכו') ב1982, ובסוף שנות ה80, גם חברת בורלנד אימצה לעצמה את התחביר, ובעצם הגרסה 5.5 של טורבו פסקל (ואילך) תומכת בתחביר של אובייקט.

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

וידוא מספר ביקורת של תעודת זהות

הייתי צריך להמיר קוד ישן שכתבתי פעם ב VB (הקוד נכתב בשנת 98. לאן נעלמו להן 10 שנים ?!) לפרל שמודא שכל 9 הספרות של תעודת הזהות (כולל הספרת ביקורת) נכונים. הקוד בביסיק היה כל כך מגעיל, שהחלטתי לקרוא מחדש את החוקים להמרה, ויצרתי קוד חדש.

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

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

אז עניין אותי כמה שורות קוד יקח לי לכתוב את זה בפסקל. אז העתקתי את האלגוריתם שיצרתי בפרל לשפת פסקל, והגעתי ל 13 שורות קוד. אם אני אפגע בקריאות של הקוד, אני יכול גם להגיע לאיזה 9-10 שורות קוד.

בכל השורות קוד אני כמובן לא סופר שורות ריקות בקוד, או דברים שאני חייב להגדיר כמו {} (או begin end) וגם לא הגדרות של var ו const שעשיתי אם כי אני יכול רק איתם לקצר עוד 2 שורות קוד, ואפילו לרדת ל 8 שורות קוד !

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

בכל מקרה, אם אתם מחפשים מודא של תעודת זהות שלוקח את כל 9 הספרות (ולא מחשב את הספרת ביקורת מתוך 8 הספרות), אז אתם יודעים ממי לבקש 🙂

רצח בחסות משרד התחבורה

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

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

אז הלכתי למוסך שמתקן תקרים (ומחליף צמיגים וכו'), וקיבלתי הצעה לסוג מסויים של צמיגים. אחר כך, הלכתי לעוד מקום שהציע לי במחיר זול ב300-400 ש"ח גם כן החלפה כולל הכל.

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

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

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

עד עכשיו לא חידשתי כלום אני יודע. להמשיך לקרוא

בחירת כלי עבודה פרק 1999

בהרבה מקומות שאני נמצא בהם, בטוחים ש Visual Studio הוא כלי עבודה מצויין. ואני מדבר עוד על התקופה של שנות ה90, בהם זה היה פחות או יותר עורך טקסט צבעוני וזהו.זה כאמור עד שאותם אנשים רואים כלי עבודה שהם RAD כדוגמת לזרוס ודלפי. אך למרות זאת רוב השוק עובד עם כלים הרבה יותר "נחותים" מבחינת נוחות של תכנות מאשר אותם כלים. גם כיום, כאשר מיקרוסופט עשו copy paste לסביבות האלו, עדיין בגרסה האחרונה שראיתי, יש מחסור בכלים שבאמת עוזרים ליצור תוכנה באמצעות RAD יחסית לכלים אחרים.

אתמול היה לי דיון הפוך בנושא. אחד מבאי ערוץ ה IRC שלי הוא מפתח משחקים. הוא משתמש בלזרוס בתור פלטפורמה ליצירת משחקים. עד עכשיו אין בעיות נכון ?

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

תרגום תוכנה באמצעות gnu Gettext

GNU Gettext הוא כלי המאפשר ליצור קבצי תרגום עבור התוכנה שאנחנו כותבים ללא קשר לשפת התכנות או לשפת בני האדם המקורית בה כתבנו את התוכנה.

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

GNU Gettext מכיל שני סוגי פורמטים של קבצי תרגום, הראשון הוא קובץ טקסט (קובץ po) אשר מכיל את המילה/משפט המקורי, ומקום לכתוב את התרגום שלנו לאותה מילה/משפט. קובץ ה po הוא בעצם ה"קוד מקור" שלנו.

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

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

להמשיך לקרוא

פוליטיקה בעולם התוכנה

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

ב21/05/2008 התפרסמה כתבה בynet על ביקור סטיב באלמר בישראל. על פניו אין לי שום בעיה עם האירוע הזה. אבל אם תקראו את הפסקה הראשונה תראו שהוא הסתובב עם נשיא המדינה (שמעון פרס).

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

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

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

להסביר את הקוד הפתוח לסמנכ"ל

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

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

אז מה זה בעצם קוד פתוח ? להמשיך לקרוא

FPC 2.2.2 RC1 שוחררה היום

בזמן כתיבת הפוסט הזה, משתחרר לו הטאג של FPC 2.2.2 RC1.

מה בעצם מכיל FPC 2.2.2 ? ובכן בראש ובראשונה הקוד של ה"חדר הנקי" כמו שכתבתי על כך בעבר.

כמו כן, גם תיקונים אלו ואחרים לבאגים שהגיעו עם 2.2.0.

כנראה שבסוף יולי תצא הגרסה היציבה.

להורדת גרסת ה RC1 ניתן לגשת לsvn:

svn co http://svn.freepascal.org/svn/fpc/branches/rc_2_2_2/ rc_2_2_2