בתאריך 10/08/08, מאת orip <[EMAIL PROTECTED]>:
> I've written a non-trivial production app in TurboGears and it was
>  awesome.
>  I can't testify about Django, maybe it's better, but had to even the
>  score regarding TurboGears. :)
>
מאחר שאני מאוד מעריך את אורי, ואני חושש שמה שהוא כתב עלול לגרום לאנשים
אחרים שמעריכים אותו להשתמש ב-TurboGears, החלטתי לפרט קצת למה לא להשתמש
ב-TurboGears. הכל על סמך ניסיוני מלפני איזה שנה וחצי, אז אם משהו השתפר
בינתיים, או סתם התבלבלתי, תסלחו לי.

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

* שפת תבניות לא מוצלחת - TG משתמש ב-XML שמשלב בין HTML להוראות עיצוב
של התבנית. היה לי די מסורבל לכתוב בשפה הזאת, לא הבנתי איך קורים בה כל
מיני דברים (שימוש בתבנית-על כללית לאתר, למשל), והיה די מעצבן להתמודד
עם שגיאות תחביר. חוץ מזה, אי אפשר להשתמש בשפה הזאת לכתיבת תבניות למשהו
שהוא לא HTML. השפה של Django הרבה יותר פשוטה, נוחה לכתיבה, ונוחה
לדיבוג.

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

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

* שרת לא סטנדרטי - TG משתמש בשרת HTTP כתוב בפיתון בשם CherryPy. זה
אומר שבשביל שרת רציני צריך להפעיל שרת CherryPy, ושרת Apache, ושהאחד
ידבר עם השני, וזה דורש עבודה. Django משתמש ב-WSGI, שזה מין תקן לכתיבת
תוכניות שמדברות עם שרת אינטרנט, והתוצאה היא ששרת ה-Apache דואג לכם
לתהליך של הפיתון וחוסך לכם עבודה. הוא יכול גם להריץ כמה תהליכים
במקביל, שזה יכול לעזור לדעתי. אגב, זה מאפשר להשתמש ב-Django על Google
App Engine, למי שזה מתאים לו.

* מספר משתמשים - לדעתי, אם אין לך סיבה טובה אחרת, עדיף ללכת עם העדר.
גם כי יכול להיות שהעם יודע מה הוא עושה, וגם כי יש יותר סיכוי שאנשים
כבר נתקלו בבעיה שלך ופתרו אותה. הרושם שלי הוא שהרבה יותר אנשים משתמשים
ב-Django. והרי מספרים ששלפתי: בקבוצת Django ב-google groups חברים
10305 משתמשים, ובקבוצת TG חברים 3487. חיפוש "python django" בגוגל (בלי
גרשיים) נותן 3,580,000 תוצאות, ואילו חיפוש "python turbogears" מניב
641,000.

אני מקווה שזה יעזור למישהו להגיע להחלטה הנכונה (TurboGears, כמובן...)

לילה טוב,
נעם
_______________________________________________
Python-il mailing list
[email protected]
http://hamakor.org.il/cgi-bin/mailman/listinfo/python-il

לענות