חידה

erandd

New member
חידה

אילו דברים חשוב לבדוק בסביבת פיתוח של ++C שלא צריך לבדוק ב-JAVA במערכת לקוח שרת. רמז: זכרון עוד רמז: מהירות
 

0rib

New member
תשובונת

תגובה לאינפוט לא חוקי. תמיד צריך לבדוק, וכל תוכנה צריכה להיות בנויה להתמודד עם קלט כזה. אבל הרבה פעמים מתכנתים שוכחים לשים לב, ואז ... בג'אווה התגובה תהיה Exception, ויציאה מסודרת (או טיפול מסודר מובנה לתוכנה). ב- ++C, כל דבר יכול לקרות; נפילה, דריכה, פגיעה בנתונים. רוב הפריצות והתולעים (Worms) מתבססים על בעיה מהסוג הזה. נ.ב.: בג'אווה לא צריך לבדוק זכרון? בג'אווה לא צריך לבדוק מהירות? בג'אווה לא צריך לבדוק מערכות הפעלה? הסבר, הגדר, פרט נמק! אני מקווה שאף אחד לא מאמין לפרופגנדה של Sun לגבי Garbage Collection, JIT ו- Write once, run everywhere. לאלו מכם שמאמינים, אשמח למכור את מגדל דוד וגשר ברוקלין במחיר מציאה.
 

erandd

New member
לא התכוונתי שלא צריך בכלל

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

erandd

New member
../images/Emo58.gif תשובות

טוב כתבתי תשובה ארוכה ומפורטת והדף קיבל EXPIRE אז נכתוב תשובה קצרה ההבדל המהותי בין JAVA ל++C הוא בניהול הקצאת ושחרור זכרון כאשר לJAVA יש תהליך שחרור זכרון אוטומטי (עדיין כדאי לבדוק). לC++ יכולות להיות זליגות זכרון בגלל שהתהליך לא אוטומטי עוד הבדל הוא שאפליקצית JAVA אמורה לעבוד על כל הפלטפורמות ע"י שימוש בJVM שהוא מעין מחשב וירטואלי על מערכת ההפעלה. ב++C יש לבדוק כל מערכת הפעלה מחדש כי גם הקוד נכתב מחדש. אפליקצית ++C לעומת זאת מבצעת פעולות עיבוד וחישוב מהר יותר מJAVA ודורשות הרבה פחות משאבים (זכרון ודיסק) לביצוע פעולה זהה בJAVA
 

erandd

New member
אה ויש גם דוט נט

שזה התשובה של מיקרוסופט לבעית מערכות הפעלה (אמור לעבוד בכולן) לא עבדתי עדיין בסביבה זאת אז אני לא יכול להעיד אם אכן זה 100% כך
 

xslf

New member
לא בדיוק

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

0rib

New member
אז ככה

ג'אווה רץ על רוב מערכות ההפעלה היום, אבל למרות מה ש- Sun מנסים למכור, לא באופן תואם ומושלם בכולן. היום המצב יחסית טוב, אבל - לדוגמא, Netscape 4 לא הריץ Java Applets כמו שצריך (לא משנה מי אשם - העובדה היא שאי אפשר לסמוך בעיניים עצומות על התאימות של ג'אווה). רוב תוכניות הג'אווה מכילות גם קוד מכונה ספציפי (דרך JNI = Java Native Interface) - פשוט כי יש דברים שאי אפשר לעשות מג'אווה ישירות. ואז, כמובן, יש את כל הצרות של כל מערכת הפעלה ספציפית. לדוגמא, Eclispe שהוא מופת לכל תוכנת ג'אווה אינטרקטיבית, מסתמך על עזרי גרפיקה שהם שונים וספציפיים לכל פלטפורמה. הן לגבי Java והן לגבי .NET, זליגות הזכרון לא נעלמות אלא מקבלות צורה אחרת - אם יש עדיין מצביע למידע, גם אם לא צריך אותו, הוא לא ישוחרר. יצא לי לראות לא פעם תוכנית Java שגומרת את הזכרון של המחשב בגלל באג שכזה. לגבי .NET, הגרסה של מיקרוסופט רצה אך ורק מעל Windows, אבל יש גרסה של Ximian שנקראת Mono, שרצה על Unix, Mac ועוד אי אלו פלטפורמות. היא לא שלמה לחלוטין, בחלק בשל העובדה שמיקרוסופט לא מתעדת כל מה שצריך (מישהו מופתע?) ובחלק בגלל שהם פשוט עוד לא הספיקו. בכל מקרה, תוכנה שתפותח עם Mono תרוץ בלי בעיה גם על חלונות, ותוכנה שתפותח עם הכלים של Microsoft, יש סיכוי טוב (אבל לא ודאות) שהיא תרוץ על Mono. לגבי C/C++, יש תוכניות שפועלות ללא שינוי על עשרות פלטפורמות - אבל נכון להגיד באופן כללי שיש הרבה יותר איפה להכשל בנושאי תאימות בין מערכות. גם ב- C אפשר לנהל זכרון ע"י Garbage Collections, אבל זה פחות מקובל. השפה הפורטבלית ביותר שיצא לי לפגוש היא בכלל Python, אגב.
 
למעלה