מה דעתכם ? רק #C ?

DadleFish

New member
עד עכשיו נמנעתי מלהגיב,

אבל בקטנה, ורק בגלל שזה אתה ואני אוהב את הדיונים איתך
- 1. גם אחרי קומפילציה מלאה ל-NATIVE, ג'אווה תיוותר מאחור, וזאת כיוון שבג'אווה ישנם מנגנונים שפועלים ברקע בשבילך. אפשר להתווכח אם צריך או לא צריך אותם, אבל הם פועלים בכל מקרה, ומאטים את התוכנה. 2. גם אם המהירות היא החיסרון הבודד שיש ל-JAVA מול ++C (וזה לא החיסרון הבודד), בעיניי - ובעיני רבים אחרים - זה אחד הדברים הכי חשובים ובסיסיים. אין הרבה דברים שיותר חשובים מביצועים.
 

Zack DA

New member
אז קודם כל -

נסכים ש- JAVA הרבה יותר יפה ונוחה מ- CPP, כי זה היה הנושא המקורי. לגבי מהירות - זה נכון שב- JAVA יש מנגנונים נוספים (למשל, ה- garbage collector הופך ל- thread. זה כמובן לא הכי נוח...), אבל המחיר הגדול הוא המעבר מ- bytecode לקוד native (לפי מומחה ל- JAVA, אני לא חקרתי את זה בעצמי. לכן אני חייב להיות הוגן ולציין את זה), והמנגנונים הנוספים זניחים בעלות שלהם. אגב, זה גם פתח לדיון - אני באופן אישי חושב שצריך אותם, זה לדעתי מודל יותר נכון של פיתוח תוכנה. לגבי ביצועים, כאמור, זה תלוי. בגרפיקה - כן. ברוב המערכות שאני מפתח, הרבה יותר חשוב האמינות, זמן הפיתוח והנדסת התוכנה (שכאמור יותר בעייתית עם CPP, שם הרבה דברים "טבעיים" ב- JAVA נעשים במתיחות ידיים מאחורי הגב, אם הדימוי מובן). אגב, שים לב שב- CSHARP הביצועים עוד ב- bytecode כבר מעולים, וקרובים לביצועי native הרבה יותר מ- JAVA. שלא לדבר על הנושא של runtime optimizations, שאני מאמין שיתפתח בשנים הבאות.
 

DadleFish

New member
אז ככה...

1. כן, אני מסכים ש-JAVA הרבה יותר יפה ונוחה לכתיבה מ-CPP. אין ספק. 2. נכון, רוב ה-PENALTY הוא ב-INTERPRETATION, אבל זה לא אומר שהוא ייעלם לחלוטין. אגב, אני עוד לא ראיתי במציאות את העניין הזה של התרגום ל-NATIVE, ואני לא ממש משוכנע שהוא עובד כמו שצריך. 3. לגבי המנגנונים - יפה. פה אני מסכים איתך. העניין הוא ש-JAVA כופה עליך אותם (ולא נותנת לך לבחור), וגם כופה עליך צורת שימוש מסוימת מאוד בהם. אם אני אכתוב GC ב-++C, אולי בהתחלה הוא יהיה עם באגים ואיטי, אבל אם זה יהיה חשוב מספיק, אני אייעל אותו ואשפר אותו כך שיהיה יותר מהיר מכל פתרון גנרי שהוא. 4. אתה שוב מסיט את הדיון לעניין הגרפיקה. לא, צחי. גם ב-WORD חשובים לי (מאוד!!!) הביצועים. בכל אפליקציה שהיא, אלא אם היא עובדת בלילה ומסיימת את כל מה שהיא צריכה לעשות לפני שכולם מגיעים לעבודה - הביצועים חשובים. מאוד. אולי לא לך, אבל לרוב העולם כן. אתה מסתכל מנקודת המבט של התוכניתן. זו נקודה חשובה אבל זו לא הנקודה הכי חשובה. הנקודה הכי חשובה היא הקונה. אם תשאל מישהו "אתה רוצה תוכנה יציבה, או שאתה רוצה תוכנה מהירה?" הוא יענה שהוא רוצה תוכנה יציבה ומהירה. אם תגיד לו "אבל זה ייקח לי 3 שנים לפתח" אז הוא יגיד לך שיהיה לך לבריאות, והוא יילך למישהו אחר שייתן לו את זה תוך שנה אחת. אני מכיר מספיק אנשים שמשפריצים קוד איכותי ב-++C במהירות רבה. זה לא פרדוקס - זה קיים. אני יכול לומר לך שאנשים כאלו לא יעבדו משמעותית יותר מהר ב-JAVA (מנסיון). רוב התוכניתנים יעבדו יותר מהר ב-JAVA, זה נכון. אבל לא כולם; והתוכניתנים המהירים ב-++C ייצרו מוצר עדיף. פשוט מאוד.
 

Zack DA

New member
אני מסכים כמעט על הכל ../images/Emo13.gif

1. + 2. אני שמח שאנחנו מסכימים. לגבי תרגום לקוד native, הוא עובד יפה בסופו של דבר, אלא אם כן משתמשים ברכיבים שלא נכתבו ב"ראש" הזה בצורה טובה, וקשה להעביר אותם. בראשם SWING, שיוצר דברים מגעילים (אבל עובדים). קרא על GCJ, בסך הכל זו דרך יפה להביא לביצועים טובים. 3. מסכים עם מה שכתבת, אך כאמור צריך להסתכל נקודתית כמה עולים לנו המנגנונים האלה והאם אנו רוצים אותם. אם לשניה נוציא את המקרים שבהם אנחנו חייבים את היעילות הזו (ואני מסכים כי הם לא זניחים. אני מנסה לכוון למקרים שבהם לא חייבים את זה), הם חלק ממודל שאני מאמין בו. אך אין ספק שיש כאן כפייה שפרושה הגבלה כלשהי. בהחלט. 4. דברתי על הגרפיקה כ"מייצג" של מקרים קלאסיים שבהם אין ברירה אלא לכתוב ב- CPP, ולאו דווקא ספציפית על גרפיקה. כל הנקודות שלך הן לא נכונות בכל המקרים, ולדעתי גם לא ברובם. איך שלא תציג את זה, אפשר ליצור מוצרים ב- JAVA שהם מהירים מאוד, ובחלק גדול מהמקרים, ובעיקר בעתיד שם אני מאמין שהעבודה מול משאבי "צוואר בקבוק" כמו רשת ו- DB-ים תתגבר, זה יהפוך להיות זהה. בכל אופן, שכחת גם להזכיר שתמיכה במוצר ה- CPP שלך תצטרך להשקיע חמש משרות, לעומת משרה וחצי אם הוא היה כתוב ב- JAVA. אבל זו כבר הקנטה
. הכל שאלה של מה המקרה ומה צריך לעשות. בטח ובטח כשלא מדובר באפליקציה אינטרקטיבית.
 

nirtheking

New member
בקשר ל-GC אני גם לא חושב שהוא המצאה

גדולה (אני בא מה-ASP כך שאני מבין את משמעות מחיקת האובייקטים) אני דיברתי האמת ש-JAVA עדיפה על C# ולא על C++ (אני בעד המקור
) אני רק מתחיל בנושא התכנות והתחלתי עם JAVA בגלל שאני בונה אתרים ו-JAVA יכולה לספק לי את הממצאים לצד לקוח טוב יותר (שרת זה ASP) וד"א המוח המהוות שהמציא את זה חשב על המונח פורטבליות גם ב-דוטנט זה יהיה כך כאשר יתחילו לפתח תוכנות "רציניות" למחשבים רגילים ולא לתחום האיטנרנט הם יצטרכו להתקין את ה-frameWork כדי שהם יוכלו להשתמש בתוכנה (הם=לקוחות)
 

nirtheking

New member
ועוד משהו

אם זה מעניין אותכם
אני הלכתי על ג'אווה כי אני נכיר את הסינטקס הבסיסי מ-JavaScript (כמו שאמרתי כבר אני בא מתחום האינטרנט
)
 

the another one

New member
בסדר גמור !

אין לי בעיה עם זה... אבל זה לא משנה את העובדה ש JAVA
היא שפה מבחילה !
 

zagzagzag

New member
איזה יופי, מלחמת שפות

מזמן לא הייתה אחת בפורום
אבל רק הערה קטנה - strstr ב-Java היא חלק מהמחלקה String ונקראת indexOf. היית יכול למצוא את זה בתיעוד של sun
 

desertboy

New member
עם טענות כאלה

אי אפשר להתווכח ??? רק כמה דברים *לג'אווה סינטקס יותר פשוט *קוד מנוהל (לא בטוח בקשר לתרגום managed code( מביא לפיתוח מהיר יותר, ופחות זליגות זיכרון וזה עובדה אצל 99% מהאנשים (כנראה שלא אצלך). ועוד ועוד ... אבל זה לא משנה את העובדה שלכל שפה יש יתרונות וחסרונות ובסופו של דבר לפני שמתחילים בפתוח חלק חשוב ממנו זה בחירת הכלי הנכון.
 

the another one

New member
סינטקס פשוט יותר ???

איפה אתה חי ? איך אתה יכול להשוות CLASS של JAVA ל CLASS של ++C ? ב ++C הכל מסודר יפה ונחמד וב JAVA כל הפונקציות נמצאות בתוך ה CLASS ! למה ? בשביל מה זה טוב ? בגלל שאומרים שאנשים מבולגנים הם יצירתיים יותר ??
 

Zack DA

New member
זו החלטה עיצובית מצויינת של SUN,

שיוצרות קוד שכתוב בצורה הרבה יותר נכונה מבחינת הנדסת תוכנה ו- OO.
 

the another one

New member
מי צריך לקרוא ולתחזק את התוכנה ?

אתה ! לכן, לדעתי הרבה יותר חשובה שהתוכנה תהיה קריאה מאשר שתהיה OOP-ית. חוץ מזה, סתם לידע כללי, למה הקוד הרבה נכון מבחינת הנדסת תוכנה ו OOP בצורה הזאת ?
 

Zack DA

New member
קוד ב- JAVA הוא פי 100 יותר קריא

מקוד ב- CPP, וכל מתכנת שמכיר את שתי השפות יודה בזה מיד. לגבי מה ששאלת, זה נושא מורכב, נמצה אותו בכמה מילים. פעם כתבו קוד באסמבלר, כלומר הקוד עשה מה שמחשב יודע לעשות. שפות במו C, או CPP (שזו עטיפה מעל C) עדיין עובדות במודל הזה. כל קונספט ה- OO בא לומר דבר הפוך, שקוד צריך לשקף את הצורה בה אנשים חושבים - אובייקטים שיודעים לעשות דברים. ההחלטה העיצובית הזו של SUN היא מצויינת ומי שיש לו הרבה ניסיון בתכנות, ובייחוד כאלה שעברו מ- CPP ל- JAVA, מגיע למסקנה הזאת.
 

Zack DA

New member
לא יודע מאיפה נחתת... ../images/Emo6.gif

כמעט כל מתכנת מבין עניין מסכים איתי שמה שלא חייבים לעשות ב- CPP, עושים ב- JAVA. להגיד ש- JAVA זו שפה מבחילה (והיא בוודאי שפה הרבה יותר יפה מ- CPP) מראה דבר אחד: שאתה לא מבין הרבה... אין לך ניסיון ב- JAVA, זה בטוח.
 

the another one

New member
???

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

Zack DA

New member
אתה כזה מצחיק ../images/Emo13.gif

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

DadleFish

New member
CPP יותר מיושנת?!

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

Zack DA

New member
אלדד ../images/Emo26.gif

עזוב את הסטנדרט, CPP הייתה ותשאר שפת C שהולבש עליה OO. מה שכן, דברתי בצורה מתלהמת ולא מדוייקת. מתנצל.
 

DadleFish

New member
אתה צריך לחזור לכתבי סטראוסטרופ

זה שהסינטקס של CPP מתבסס על C, זה לא אומר ש-CPP היא שפת C שהולבש עליה OO. יש ב-CPP הרבה מעבר ל-C, ויש בה הרבה חוקים שמבטלים דברים (מגעילים) שהיו ב-C. סתם לדוגמה, CPP היא יותר TYPE SAFE מאשר C - למשל בעניין ה-enum-ים.
 

Zack DA

New member
ברור. עדיין,

זו לא שפה OO כמו JAVA, העיצוב העקרוני הוא old style. אפילו סטרוסטרופ בעצמו מודה שיש הרבה legacy שהיה שמח לשנות בשפה שלו.
 
למעלה