יום שבת, מאי 29, 2010

קטילה לeclipse

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

למה אני לא אוהב שמלמדים להשתמש בסביבה ? כי סביבת פיתוח לא אמורה לפגוע ביכולת שלי לפתח קוד מהר:
זה נכון שיש לסביבה הרבה תוספות נחמדות (refactoring לדוגמה), הבעיה שבהרבה פרוייקטים שאתה כותב אתה מוצא את עצמך מטפל בהגדרות הסביבה ולא בקוד שלך. כשאתה לומד שפה אתה מצפה ללמוד שפה ולא עם איזה סביבה המוסד נהנה לעבוד ,יש הרבה מאוד סביבות אבל את אקליפס אני ממש לא מחבב מהסיבות הבאות :
  • יש עומס נתונים בהצגה , יש פשוט יותר מדי אפשרויות ותתי אפשרויות. הסביבה לפעמים מאיימת.
  • זה באמת נחמד שהיו הבדלי בנייה בין גירסאות אבל זה לא אמור להשפיע על קבצי הבנייה - כן פרוייקט שנוצר ב3.2 לא בהכרח יעבוד ב3.5 (מעצבן אבל קיים). הדבר מפריע מאוד כאשר עובדים בעץ svn ואז צריך מספר קבצי פרוייקט בשביל לעבוד על אותו עץ קוד.
  • עם כל הכבוד יש סיבה לשמור הגדרות לא בworkspace יש את /etc ויש את תיקיית הביית אבל תיקיית הפרוייקטים זה המקום האחרון לשמור בהם הגדרות:
    זה לא שאפשר פשוט להעתיק את ההגדרות האישיות שלי לכל פרוייקט זה תוקע את היכולת לשים פרוייקט בעץ פיתוח (כן אני יודע שאפשר לתת הגדרות בסיס ולשים דגל בינארי אבל זה עקיפה מכוערת).
  • הבאג המעצבן שמצביע שיש שגיאה בקוד אבל ברגע שמבצעים שמירה אין יותר שגיאה, אני לא יודע עם דווח אבל הדבר הזה פשוט מעייף.
  • חוסר התמיכה בהפצות (העובדה שeclipse ללא תמיכה נורמאלית בדביאן למשל) מפריע רק שהפעם לא הסביבה אשמה , זה אשמתה של ההפצה - בדביאן לא מזמן 3.5 ניכנסה למאגרים (כי לא היה maintainer).
  • העובדה שהתוספים בתוכנה באים בתוכה ולא כקבצי deb/rpm/tgz אם כבר קיים תוסף אני מצפה לתת למערכת ניהול החבילות לטפל בנושא ולא לאקליפס- למה ? כי אני לא סומך על התוכנה להתקין דברים נוספים שהmaintainer לא היה מודע עליהם - כי גם הסרה של האפליקציה לא תסיר את הפלאגינים.
  • העובדה שאני לא יכול לשמור שינויים בקוד תוך כדי debug. ובאמת הdebuger של אלקיפס מצליח לשגע אותי - אני מעדיף להשתמש בGDB כבר (והנה הסבר ישן).
  • עם כל הכבוד לP2 (ולי אין עליו כבוד) - אני מבין שקשה לתת שגיאה מפורשת אבל שגיאה בצורה של : Cannot satisfy זו גם אחת הסיבות שאני מצפה שapt או מנגנון דומה יטפל בבעיה: יש מערכות שיודעות לטפל בהתקנה רק בשביל זה הם קיימות.
  • Eclipse dance - בונים ומקבלים שגיאות מוזרות ? אין כמו איזה make clean && build שיפתור את הנושא. ומה קורה עם אני מחליף JRE ? כל הרעיון של Java לא היה שמקפלים פעם אחת וזה עובד בכל מערכת הפעלה ?!
  • ואין כמו תיכון הUI , למען האמת למה כפתורי הcopy & paste נמצאים כל כך רחוק בתפריט ? אני יודע שיש הרבה אפשרויות שצריך להציג אבל צריך להיות מנגנון שיקבע כי בתפריט קודם כל צריכים להיות דברים שהם בשימוש רב..
    זה אמנם לא דרישת פיתוח זה רק נושא של נוחות עבודה, אבל לי זה מפריע (ניסיתי לחפש בקוד איפה אני משנה את הסדר אבל ראיתי שזה לוקח המון זמן וויתרתי).
למעשה כשאני עובד עם אקליפס אני מרגיש שאני עובד עם emacs עם קביים המערכת עושה כמעט הכול אבל בשונה מemacs היא עושה קצת מכל דבר, מלאה שעות הגדרה עבור על plugin ופשוט משגעת בפיתוח.

כיום אני יודע שכשאני כותב בJava משהוא יחסית קטן אני אעבוד ב Vim ולא באקליפס:
  • אותי מעניינת כתיבת קוד וביצוע ולא איך לגרום שהפרוייקט יטען / שקבצי ה jar נמצעים במיקום ושפתאום eclipse מחליט שהוא לא רוצה לתמוך בJOGL כי יש עידכון שחוסם את הסיפרייה.
  • עוד לא הגדרתי את Vim שיתמוך כמו שצריך בJava.

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

2 comments:

  1. תראה, סה"כ אתה צודק, Eclipse עלולה להיות מסובכת, ואני מבין את העקרון שעליו רשמת, שבו אתה אומר שעדיף ללמוד את השפה, ולא ללמוד איך להתעסק בסביבה שלה - ואתה צודק לחלוטין, אבל אני לא מוצא את עצמי מתעסק ימים ולילות ב Eclipse. האמת שהדרך לתיכנות קלה ביותר. פותחים מחלקה חדשה לדוגמה, משם היא מציעה אופציות (דרך מעולה וכיפית מאוד, לגלות שהתוכנה עושה בשבילך המון) כמו הוספת String[] args וכה'. וזה הכל, תגלה שהיא מוסיפה דברים על חשבון הבית איך אומרים

    אם לדוגמה תשתמש במתודה (שיטה) שעוד לא קיימת, עוד במהלך הכתיבה, אקלייפס תודיע לך, שהשיטה לא קיימת ותציע פיתרון מהיר: "האם ליצור אותה עבורך?" - ותיצור את הבסיס לכתיבתה.

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

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

    השבמחק