רסיסים

בעקבות דיון ב- whatsup צפיתי הרגע בהרצאה של Guido Van Rossum שגרמה לי להיות מוטרד. בהרצאה Giudo נשמע די מיוסר מהארכיטקטורה של שפת Python והחליט שבגרסה שנקראת Python 3000 הוא יבצע את רוב התיקונים עליהם חלם אך לא מימש בגלל הרצון לשמור על תאימות לאחור. כדי שמי שלא מתכנת יבין את הנפש של Giudo אציין שתכנות היא עבודת אומנות של ממש. יש הרבה תכנתים שכותבים קוד ברמה ירודה ומעט שכותבים קוד "אומנותי" (ואני לא מדבר על באגים אלא על היופי והאלגנטיות שבכתיבה). אם תשאלו כל תכנת מקצועי הוא בטח יגיד לכם שהוא לא שלם עם התוכנות שהוא כתב והיום הוא בטח היה כותב אותם אחרת. אז למה לא עושים זאת? עצלות (כי בדר"כ מדובר בהרבה עבודה), פחד להכניס באגים חדשים למשהו "שעובד", שיקולים כלכליים ועוד…

אתן לכם דוגמא ממני: אני לא תכנת במקצועי. תכנות היה ויהיה תמיד תחביב מועדף שאפשר לי, גם בעבודה, לכתוב מספר תוכנות יפות. בתקופה האחרונה התחלתי ללמוד שתי שפות חדשות: Java ו- FPC. מי שעזר לי להכנס לשפת FPC הוא עידו קנר ובהזדמנות זאת אני רוצה להודות לו על התמיכה הרציפה שנתן לי בפורום FPC-IL#. למי שלא יודע אז השיטה הטובה ביותר ללמוד שפה חדשה היא לכתוב באמצעותה פרוייקטים שונים. כתבתי תוכנית בלזרוס שמבצעת חישוב ובדיקה של ספרת ביקורת בתעודת זהות ישראלית. הקוד היה תקין ולא היו באגים, אך עידו העיר לי  על שני נושאים עיקריים: שכפול קוד וכתיבת קוד ארוך מידי… בסופו של דבר מימשתי בעזרתו את אותו הקוד בשליש שורות קוד. הקוד נראה עכשיו יפה ואלגנטי ואני מרוצה ממנו. אמשיך ואבחן את התוכנה "מזרים". גם ממנה אני לא ממש מרוצה: יש בה שכפול קוד ובאופן כללי ניתן היה לכתוב אותה בצורה אלגנתית וחכמה יותר. עכשיו אתם בטח יכולים להבין את Guido… בזמנו כמפתח יחיד (לפני יותר מ- 10 שנים), הוא קיבל החלטות שונות שחלקם היו עיגול פינות (בגלל מחסור בזמן). עכשיו, כעובד Google, הוא מעוניין לתקן את כל אותם טעויות ארכיטקטוניות שבשפה. הבעיה היא שהתמיכה לאחור "תישבר" ולא ניתן יהיה להמיר קוד בצורה בטוחה מפייתון 2 ל- Python 3000.

כאמור ההרצאה של Guido גרמה לי להיכנס לדיסונאנס קוגניטיבי:

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

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

ezid.png

My Signature

9 תגובות לפוסט “Python 3000 ואומנות התוכנה”

  1. בתאריך 15 יוני 2008 בשעה 12:28 am רואה שחורות

    יכול מאוד להיות שיהיו אנשים שימשיכו לפתח את פייתון הישנה, והשפה לא תתנוון. אחרי הכל יש הרבה שמחבבים את השפה הזו. (אני אישית שייך למחנה של פרל…)

  2. בתאריך 15 יוני 2008 בשעה 12:45 am ik_5

    דבר ראשון תודה על המילים החמות :)

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

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

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

  3. בתאריך 15 יוני 2008 בשעה 7:29 am שניר דוד

    תכנות עם Python 2 לא יהיה תכנות עם שפה מתה. הפיתוח של Python 2 יימשך לפחות ב3-5 שנים הקרובות… מה שנותן לך מספיק זמן לחכות שPython 3 תתיצב או שיפתחו כלים לPython 3.
    אני לא מסכים איתך שהמעבר לPython 3 מצריך לימוד כמעט מחדש של השפה. הקונספט הכללי נשאר אותו דבר ומי שהתרגל לרעיונות שמביאה השפה לא תהיה לו יותר מדי בעיה לעבור.

  4. בתאריך 15 יוני 2008 בשעה 3:23 pm תכנות RAD « לראות שונה

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

  5. בתאריך 15 יוני 2008 בשעה 5:26 pm ilanshavit

    שניר שלום
    לדעתי הפיתוח לא ימשיך ותהיה רק תחזוקה למספר שנים נוספות. מבחינה זאת אתה לא יודע מה לעשות: לפתח בשפה שקיצה נקבע או לפתח בשפה לא בשלה…
    לגבי לימוד השפה: Guido מסביר בסרט את הלבטים שלו בקביעת הארכיטקטורה החדשה. ניתן להתרשם שהוא בדק לעומק את הדקדוק, טיפוסי הנתונים והאובייקטים השונים בשפה. למשל: הפקודה print מבוטלת ובמקומה תהיה פונקציה חדשה ()print
    Range לא יחזיר integer אלא Iterator. טיפוסי Int השונים יאוחדו, כל המחרוזות יעבדו עם יוניקוד ועוד ועוד…

  6. בתאריך 15 יוני 2008 בשעה 6:14 pm שלומיל

    תזכורת לכולם:
    מישהו זוכר את פרל 6 ?

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

  7. בתאריך 16 יוני 2008 בשעה 10:47 am OSH

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

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

  8. בתאריך 16 יוני 2008 בשעה 6:46 pm ilanshavit

    OSH
    איך אומרים? "מכל מלמדי השכלתי…".
    אשמח אם תעבוד על הקוד ותשכתב אותו (היכן שצריך). אני מהתכנה הקטנה הזאת לא מפסיק ללמוד וזה מה שיפה בקוד הפתוח :)

  9. [...] (בשבילי): אופן-אופיס 3 (14 באוקטובר) ו- python 3000 . כן, למרות מה שכתבתי, פייתון היא עדיין שפת התסריטים האהובה עלי, ושכשתשתחרר [...]

טרקבק | רסס תגובות

לכתוב תגובה