מפתח בארץ ה־IDE

ב־29.12.2011, מאת ארתיום; פורסם תחת: תכנה חופשית, לינוקס, פיתוח, תכנה ומחשבים, C++‎‏; ‏8 תגובות

לאחרונה, הייתי צריך לבחון סביבת פיתוח משולבת (IDE) בלינוקס, ולעשות להן השוואה: איזו סביבה היא יותר מתקדמת ונוחה בהקשר של פיתוח ב־C++‎. למרות שאני כותב הרבה קוד, ויצא לי בעבר להשתמש בלא מעט IDE, ביניהם גם Visual Studio וגם KDevelop 3, אני מעדיף לעבוד עם vim, סביבת הפיתוח האולטימטיבית. אבל vim בתור "סביבת פיתוח משולבת" זה לא בדיוק מוכר. יש אנשים שאוהבים IDE... כך שפשטתי שרוולים והתחלתי לבדוק.

על הפרק עמדו מספר אופציות:

  • KDevelop שהיה לי ניסיון איתו בגסראות 3
  • Eclipse שרבים עובדים איתו
  • Netbeans שרבים ממליצים עליו

ומספר IDE נוספים: Anjuta, CodeBlocks ו־CodeLite.

התחלתי מ־KDevelop 4:

בעבר היה לי ניסיון לא רע עם KDevelop 3 והחלטתי לתת לסביבה הזו הזדמנות נוספת. לפני שאני מתחיל את הסיפור, אומר, אחרי כ־20 דקות עבודה התחלתי להרגיש שאני יותר פרודוקטיבי עם KDevelop מאשר עם vim!

הסביבה עשתה צעד עצום מאז גרסה 3. השלמה אוטומטית כמעט מושלמת ומהירה, highlighting מעולה וגם tooltips מאוד נוחים שמאפשרים לגשת לכל מקום. שילוב נוח עם CMake, הגדרות פשוטות, התנהגות ברורה, אינטגרציה עם קובצי man ועוד.

התחלתי לממש פיצ'ר מסוים עבור cppdb‏ ולראשונה הרגשתי שאני מצליח לכתוב קוד מהר יותר ומדויק יותר בהשוואה ל־vim.

הסביבה מאוד מהירה ומגיבה בצורה כמעט מידית.

מבחינת יכולת הדיבוג, הדבר היחיד שלא הצלחתי למצוא זה כיצד אני מגדיד למשל catch throw - לעצור על זריקת החריגה, בסוף, הפעלתי את זה ישירות דרך מסוף ה־gdb.

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

המשכתי ל־Eclipse

אחרי מעט הגדרות הצלחתי לגרום לו לעבוד עם קובץ Makefile הנוצר ע"י CMake, הגדרתי פרויקט והתחלתי לעבוד.

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

בנוסף, בניגוד ל־KDevelop הוא לא ידע להשלים ערכים תוך כדי הקלדה בצורה לגמרי אוטומטית, למשל אני מתחיל לכתוב my_variable הוא לא מציע לי השלמה אחרי שכתבתי my_va - צריך ללחוץ ctrl-space, אבל בסה"כ הסביבה בהחלט לא רעה ופרודוקטיבית.

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

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

ניסיתי סביבות "קלות" יותר

אז פתחתי CodeBlocks שרבים ממליצים עליו. ויתרתי עליו די מהר - מבחינתי חוסר אינטגרציה עם כלי בניה חיצוניים הוא "deal-breaker" ובכלל לא התרשמתי ממנה יותר מידי. ניסיתי קצת codelite - גם הוא היה יותר מידי lite לטעמי.

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

גם היא ירדה מהפרק די מהר.

נותרה לי סביבת Netbeans

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

בניגוד לסביבות אחרות שזמינות ישירות ומהמאגרים של Ubuntu, ‏Netbeans לא מופיעה שם, צריך להתקין אותה בנפרד. הורדתי את הגרסה היציבה האחרונה המותאמת לפיתוח C++‎ והתקנתי.

פה הייתה לי הפתעה ממש טובה:

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

ועוד

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

סיכום

אחרי הרבה שנים של עבודה עם vim אני חושב שאתחיל לבחון את הגישה שלי ל־IDE מחדש. כרגע Netbeans היא הבחירה המובילה. הייתי מאוד רוצה לעבוד עם KDevelop אבל אני לא חושב שאוכל לעבוד אתו כל עוד הוא קורס.

מבחינתי יציבות ואמינות יותר חשובה מכל פיצ'ר אחר, וכרגע KDevelop לא עונה על הדרישה הבסיסית הזו וחבל.

תגובות

ram matityahu, ב־29.12.2011, 18:13

אחד הדברים הכי ידועים באובונטו, זה שכל מה שמבוסס QT, ובייחוד מה שמבוסס KDE, הוא הכי פחות יציב בהפצה הזו. אני חושב שהנסיון שלך עם הנפילות של KDEVELOP הוא תוצאה של בנייה גרועה של החבילות באובונטו, ולא אשמת התוכנה עצמה. תנסה את KDEVELOP בהפצה שהיא הפצת KDE שבה יש הרבה בדיקות לחבילות, כמו MANDRIVA או OPENSUSE ותראה הבדל משמעותי ביציבות.

ישראל, ב־29.12.2011, 18:26

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

הנסיון שלי עם eclipse הוא בעיקר בכתיבת קוד PHP.

אחד הדברים שאהבתי במיוחד ב-eclipse, זאת ההרחבה שתומכת ב-git.

ik, ב־29.12.2011, 21:23

ברוך הבא לארץ ה"מובטחת". עולמות ה IDE כבר שנים שלא מרגשים אותי. אולי כי אני משתמש בשפות שזה כל כך נפוץ אליהן, עד שאני לא רואה משהו חדש במיוחד.

הרעיון של IDE הוא להיכנס למקום בו אתה עובד קשה ושהוא יעשה עברוך את את העבודה. מעולם לא אהבתי את אקליפס. עם NetBeans הייתי עובד הרבה עם רובי, עד שה־־־ העיפו את התמיכה, ועכשיו הוא אפילו לא מותקן אצלי.

הבעיה העיקרית בעולם הלינוקס, הוא שרוב הכלים בנויים בראש ובראשונה לשפות של C ו ++C כאילו זה הדבר היחיד שקיים בעולם.

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

ליבוביץ, ב־29.12.2011, 22:00

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

אגב, מה עם QtCreator של נוקיה?

אורגד, ב־29.12.2011, 22:04

אני ממליץ בחום על Qt Creator. לאחרונה שוחררה גירסה 2.4 - שוב, מומלץ בחום.

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

  • יש לו תמיכה מובנית ב־git, svn ושו"ת.
  • הוא תומך בכל מיני סוגי פרויקטים (QMake כמובן, CMake וגם פרויקט גנרי, בו אתה יכול להגדיר איך הפרויקט מתקמפל).
  • השלמה אוטומטית טובה מאד (יש עדיין קצת בעיות עם typedef ומאקרואים, עובדים עכשיו על שילוב של clang עבור code model, שאמור לפתור את כל הדברים האלה).
  • תמיכה מצויינת ב־gdb. היא מגיעה עם pretty-printers לטיפוסים נפוצים של STL, וכמובן של Qt.
  • ועוד ועוד.
אורגד, ב־29.12.2011, 22:07

שכחתי את הדובדבן שבקצפת - ה־Locator! (לא מופיע שם, אבל אפשר להשתמש בו גם בשביל פקודות של VCS, כגון: git diff וכד').

יורם, ב־29.12.2011, 22:08

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

אבי, ב־1.1.2012, 12:28

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

יש יתרון נוסף בeclipse שיש בו אופציה לעוד שפות חוץ מ c++ וזה למקרה שיום אחד תצטרך לדבג איזה פיצר בשפה אחרת, זה טוב שאתה רגיל למשהו ואז יותר קל....

הוסף תגובה:

 
 כתובת דוא"ל לא תוצג
 

ניתן לכתוב תגובות עם שימוש בתחביר Markdown.

חובה לאפשר JavaScript כדי להגיב.

דפים

נושאים