אתגר

scalla

New member
לא הבנתי

ואל תחשוב שאני חושב שJAVA יותר חזקה, במקרה שלא הייתי ברור.
 

ChipsMan

New member
לפני שאתה קורא לג'אווה סקטיפט..

איטי אני מציע לך לקרוא קצת על טכנולוגיות כמו Hotspot של Sun והמקבילה שלה של IBM.
 

scalla

New member
JAVA זה לא שפת מכונה אז איך אתה...

רוצה להגיד שהיא מהירה.(הכוונה למקומפלת לשפת מכונה). אני אקרא ואחזור אליך.
 

Zack DA

New member
אולי תביא נתונים ?

בכמה תוכנית JAVA יותר איטית משפה מקומפלת ? 5% ? 20% ? 30% ? אוי פעם זה היה ככה, היום זה עומד על סדר גודל של 15% (צריכים להיות הוגנים ולומר שבמקרים מסויימים מאוד זה הרבה יותר, וגם אז אפשר לפתור את העניין באופן נקודתי עם JNI). מחשבים נעשים חזקים יותר ב- 50% כל שנה וחצי שנתיים, ולבד מזאת, יש ל- JAVA המון יתרונות על כל השפות שהזכרת.
 

barakbl

New member
"חוזק של שפה"

לדעתי זה ביטוי מאוד בעייתי, שכן במונח הזה כלולים המון הנחות והגדרות שונות, שלעתים סותרות אחת את השניה. השפה הכי חזקה בשבילי היא השפה שאני אוכל להשתמש בה כדי לענות על בעיה מסוימת (כתיבת אפליקציה שאני זקוק לה למשל), בצורה היעילה, מהירה והנוחה ביותר, ושהביצועים של האפליקציה יהיו הטובים ביותר יחסית לזמן הפיתוח הנדרש הקטע המודגש הנ"ל מבהיר פחות או יותר את הדרישות שלי משפת התכנות/סקריפט/ווטאבר בה אני משתמש. השבוע בעבודה הייתי צריך לכתוב סקריפט כלשהו שיעשה מטלה כלשהי (משהו שקשור לאדמינסטרצית שרתים). בתחילה חשבתי לכתוב את הסקריפט ב PHP (שפת סקריפט מוצלת ורבת עצמה ללא צל של ספק). אחרי שכתבתי כמה עשרות שורות קוד, עליתי על נקודה מסוימת שבה יכלתי לתקוף את הבעיה שלשמה נדרש הסקריפט. באותו רגע (כשהבנתי שאני בכלל לא צריך DB, ושכל התקיות ממופות בעזרת nfs מה שמאוד מפשט את הבעיה במקרה הנוכחי), החלטתי לשנות כיוון ולכתוב את הסקריפט כסקריפט sh פשוט. הסקריפט החדש היה בן פחות מ 20 שורות, ולקח לכתוב אותו כמה דקות. אותו סקריפט מאוד בסיסי עשה בדיוק את מה שהייתי זקוק לו (ובעית ביצועים לא מטרידה אותי). הוא גם חסך ממני התקנה של PHP על לא מעט מכונות שעליהן אמור לרוץ הסקריפט. למה אני מספר את זה? כי זו דוגמא טובה לכך שהעצמה של השפה שהשתמשתי בה (שפת ה SHELL הבסיסית ביוניקס) הוא בכך שהיא פשוטה מאוד לשימוש, ועשתה את העבודה במקרה הנוכחי טוב יותר מסקריפט בשפה מתקדמת בהרבה... באותו אופן, כשכותבים מערכת הפעלה, מגלים שאין תחליף ל C++/C (ואסמבלי), ואילו אם אני צריך לכתוב אפליקצית גואי לניהול של נניח ראוטר אני אשתמש כנראה במשהו שרץ על כל מכונה, יתכן מאוד ו Java. כשאתה רוצה למשל לנתח עמוד אינטרנט (נניח כדי ליצור קובץ XML של החדשות שיש בו, או כדי ליצור ממנו עמוד חדש כלשהו וכו'), אתה יכול מצד אחד לכתוב את האפליקציה בשפה הכי "חזקה" שיש כלומר c או ++C ומצד שני אתה יכול לעשות את זה בדקה וחצי עם פרל. במקרים כאלה, פרל (או שפת סקריפט חזקה אחרת) תהיה החזקה יותר (או המתאימה יותר למטרה). זה לא אומר שמחר מישהו הולך לכתוב עם פרל מערכת הפעלה, שרת אינטרנט וכו'... שפות שונות למטרות שונות. בקיצור, עצמה של שפה זה משהו שקשה למדוד. כל מקרה לגופו של ענין, והכי חשוב, להתאים אם השפה הנבחרת לפתרון הנדרש. אם אנחנו נרצה קוד קריא על חשבון ביצועים אנחנו עשוים לבחור בפתרון מסוים. אם נעדיף ביצועים על חשבון כל דבר אחר (כולל זמן פיתוח) נעדיף בטח משהו אחר. אם אנחנו רוצים פשרה הגיונית של המרכיבים נבחר בטח בדבר שלישי. לא להיות פאנטים לכאן ולשם.
 

vinney

Well-known member
איך SCRIPT איך?

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

nirtheking

New member
רק ש-Dot.Net

תלוי בשפות של מייקרוסופט (ולכן ג'אווה לא משתלבת שם אלא ה-J# של מייקרוסופט - שזה ממש לא אותו דבר)
 

scalla

New member
אני לא דיברתי על NET.

ואיך אתה מסביר את זה שזה עדיין יותר מהיר ואני מדבר על NET. בחלונות כנגד JAVA בLINUX (כדי שלא יהיה תירוץ של מגרש ביתי).
 

vinney

Well-known member
איך אתה מודד מהירות?

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

scalla

New member
...

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

scalla

New member
אפשר בעזרת תוכנה אבל הרעיון ...

שהפעולה תעשה נניח 100,000 פעם כדי שיהיה ברור הבדל המהירות.
 

vinney

Well-known member
אם יורשה לי, ואני חושב שיורשה לי...

בדיקת יעילות קוד זו אומנות, לא עושים את זה עם סטופר, ולא עם לולאות של 100000 פעמים. יש כלים ל profiling שנותנים לך מידע מדויק על כל שורת קוד באפליקציה - כמה זמן מתחילת הקריאה לסיום הקריאה עבר, כמה מתוך זה הפרוסס היה פעיל, כמה מתוך זה בוזבז על קריאות פנימיות, וכמה על system calls, איפה היה page faults שהשפיעו, ועוד כהנה וכהנה נתונים, ומניתוח של כל זה אתה יכול להסיק מסקנה על יעילות הקוד והקומפיילר. כשאתה משווה שתי אפליקציות בשתי מערכות הפעלה שונות, עם נתוני מחשב לא בהכרח זהים, מקומפלים באופן שונה ובאופטימיזציות שונות, וריצות אחרות ברקע שמשפיעות על האפליקציה שלך, ובנוסף מודד כל זה עם סטופר, אז זה אפילו לא חובבני, זה פשוט מגוחך. וכן, ל NET. יש את יתרון הביתיות, חד וחלק, במיוחד ב XP שם ה framework בא יחד עם המערכת built-in, ואילו JAVA על כל מערכת היא תוספת מעל, השאלה היא מה מטרת האפליקציה, ועד כמה ניידת היא צריכה להיות.
 

scalla

New member
בקיצור נחזור למשפט שנאמר

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

vinney

Well-known member
אוקי, יצאת מזה איכשהו ../images/Emo13.gif

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