יום רביעי, 18 בפברואר 2009

פודקאסט מספר 7 - שכתובי קוד


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


10 תגובות:

  1. תודה רבה!
    היה ממש מעניין.

    נראה מה שצריך זה תהליך מתמשך של "צחצוח והברקה" (כמו מאמר אחר של יואל), ולדאוג לעדכן את המודולים הרלוונטים (אם כבר זורקים - לא לזרוק את הכל אלא רק את מה שצריך. מה שמחזק את הצורך בפיתוח במודולים).
    אם אי-אפשר לשנות באופן מודולרי (כי רוצים לעשות שינוי ארכיטקטוני מהותי, או כאי-אפשר להשיג תוכניתנים שמוכנים לעבוד בADA, או משהו דומה), אסור להתיימר לפתח מהר את הבלוק העשירי שפיתחנו במשך שנים בADA, חייבים לאפיין משהו יותר קטן - ולוותר על הסיכוי להחליף את כל מה שקיים היום.
    (אפרופו "דברים שאסור לעשות", דוגמא מהעולם של הדפדפנים: כשגוגל שיחררו את כרום, שזו יכולה פחות או יותר להיות דוגמא ל-"לפתח דפדפן מהתחלה", הם ויתרו על יכולות ממש חשובות כמו תמיכה בplugins. זה מונע מהרבה משתמשים שלא מוכנים לנטוש את FireFox ולוותר על AdBlock+ להחליף דפדפן, אבל יש הרבה משתמשים שכן עברו, וכבר מתחילים לתת תגובות אמיתיות לשימוש. אם הם היו מחכים עד שיממשו את כל מה שיש היום בFireFox - הם כנראה היו מגיעים למשהו כמו נטסקייפ 6).
    המשתמשים צריכים לבחור האם להשתמש במוצר הישן בלי היכולות החדשות - או להגר למערכת החדשה - גם אם היא עדיין לא שלמה.

    השבמחק
  2. תודה דוד.
    נשמח אם תמשיך להשתתף כך גם בעתיד.

    השבמחק
  3. תוכנות צריכות תחזוקה כמו מכונית, אם לא הן מחלידות ולא מתאימות למשתמשים המודרניים?
    הלו הלו, צאו מהסרט של Web 2.0. הסטארטאפים האלה זה דבר מאד נחמד, אבל זה לא אומר שזה כל עולם פיתוח התוכנה.
    תוכנה שהרבה משתמשים בה צריכה תחזוקה? קחו למשל את שרת הDNS של DJ Bernstein (מתמטיקאי, לא עובד במועדונים). djbdns השתנה בפעם האחרונה ב2001, ועדיין מריץ חלקים נרחבים מהאינטרנט.
    קחו את הכלים הבסיסיים של GNU יענו grep/ls/find וכו'. הם רצים על כמעט כל סוג מערכת ואין בהם כמעט שינויים. (אל תרוצו לgit repo שלהם ותגידו לי "הנה שינויים מלפני פחות משנה, תסתכלו על תוכן השינוי, שינוי מינימאלי שחברה מסחרית לא היתה טורחת לעשות.

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

    אני לא מדבר על עולם ה-embedded איתו יש לי הכרות קטנה, בו אתה משתמש באותו קוד שנים על גבי שנים בשביל להפעיל את הrouter-ים שמפעילים את כל האינטרנט, בלי בכלל לעדכן את הקוד ואף אחד לא מתלונן.

    אגב ADA. תוכנה שכתובה בADA זו בעיה? תוכנה שכתובה בC זו בעיה, תקראו קצת בתיעוד של CIL על הבעיות שהיו לו בכתיבת PARSER סביר (*p =*++p זה רק ההתחלה). Ada היא שפה נתמכת ומאד חיה, יש לה כמה תקנים שנכתבו לא מזמן בשביל לחדש אותה.
    אז נכון שהיא לא מגניבה, ולא ידועה כמו C, אבל אם רוצים לכתוב משהו יציב, היא לא בהכרח בחירה רעה. אז אם היה לי קוד בעדה 83, הייתי אולי מעביר אותו לאט לאט לעדה 2005 אבל לאו דווקא משנה הכל.

    השבמחק
  4. הי אנונימי, מה שלומך? אנחנו באחלה סרטים, אז למה לנו לצאת מהם?
    נחמד לשמוע דעות מנוגדות ולא חייבים להסכים, אבל אני עדיין מחזיק בדעה שבעולם התכנה דברים משתנים מהר מאוד ובהרבה מקרים מה שהיה טוב אתמול כבר לא טוב היום. נכון, לא ב 100% מהמקרים (אני למשל משתמש ב vi שכבר זמן מה לא עודכן...) אבל ברוב המכריע שלהם. זה לא מדעי, נכון, אבל זו התחושה שלי. אני חושב שהסיבה העיקרית לכך שדברים משתנים מהר היא שקל יותר (או - נדמה שקל יותר) לכתוב תכנה מלכתוב חומרה או לתכנן מכונית לכן ה release cycles יותר קצרים ויותר תכופים.

    השבמחק
  5. שוב, כמו שאמרתי, זה שצריך לתחזק תוכנה זה נכון לפעמים, אבל ממש לא נכון באופן כללי. אני אפילו לא בטוח שרוב התוכנות שנכתבות היום צריכות תחזוקה קבועה. אז לומר מה שאמרתם באופן כללי "כל תוכנה חייבת תחזוקה" זה לא ממש נכון. אולי זה נכון לאפליקציות WEB2 שתלויות בהרבה API-ים שמתעדכנים (בעיקר דפדפן, אבל לא רק) אבל לא תמיד.

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

    השבמחק
  6. הי אנונימי מה המצב? הומור - בכיף, סרטים אפילו יותר כיף.
    טוב, אז אני מניח שאנחנו עדיין לא מסכימים על כך שתכנה דורשת תחזוקה...
    So be it
    קורה, סבבה, אני מקווה שתמשיך להאזין ולתת פידבק.

    השבמחק
  7. זה *לא* מה שאמרתי.

    אמרתי שלא *תמיד* תכנה צריכה תחזוקה. וכן, יש *הרבה* תוכנה שנכתבת "שם בחוץ" וכותבים אותה פעם אחת בלבד.

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

    אבל, יש הרבה תוכנות שנכתבות, ואינן צריכות עדכון. כמו מערכות embedded, ספריות תוכנה (במיוחד ב-C, כשאין צורך להתאים את עצמך לשפה). אגב, אני בטוח שבהרבה חלקים (במיוחד האלגוריתמיים) מmathematica ושות', אף אחד לא נגע כבר שנים. אז אומנם את העטיפה היפה הם שינו מאד, אבל הגלגלי שיניים שפותרים לך את האינטגרלים מהתרגלים בחדו"א, הם אותם גלגלי שיניים משנות התשעים לדעתי. גם הstack של tpc/ip בחלונות NT לא עודכן לדעתי הרבה זמן (ונלקח בכלל מסוג של יוניקס).

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

    זאת הנקודה שלי ונראה לי שאיתה גם אתה מסכים.

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

    השבמחק
  9. אנקדוטה נוספת היא חווית הסף מוות (Near-Death Experience) של eBay. הם במעט קרסו תוך כדי כתיבת האתר מחדש. ניתן לקרא על כך כאן: http://www.svpg.com/blog/files/mar-2007.html

    השבמחק
  10. בעניין אתגרי הטוויטר, לא מזמן היה אתגר של כיווץ תמונה ל-140 תוים בStack Overflow והתוצאות היו מרשימות מאוד.

    השבמחק