לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #16  
ישן 22-09-2006, 16:42
צלמית המשתמש של scripter
  scripter scripter אינו מחובר  
 
חבר מתאריך: 04.08.02
הודעות: 4,468
...
בתגובה להודעה מספר 15 שנכתבה על ידי DReam_Theater שמתחילה ב "יש הבדל בין לרשת מ interface מירושה ממחלקה."

//ירושה מרובה רק מגדילה את הניצול של תופעת הפולימורפיזם.
כן... וגם פותחת דלת ל-Diamonds Inheritance...
כנראה שלא קראת הרבה מאמרים על MI ( ראה, Java Diamonds Are Forever), ולמה הורידו אותה מג'אווה ומ-C#.
(תאמין לי, הם יכלו לממש את המנגנון של MI, זה לא אתגר...)

ציין לי בבקשה בעיה אחת ש-MI תעזור לי לפתור אותה ולא אוכל לעשות דבר דומה בעזרת interfaces - אין, תוותר אתה יכול להגיד לי שיש בעיה ש-MI לפי דעתך תעזור לפתרון הבעיה, אך אוכל לפתור את אותה בעיה באמצעות interfaces.
במהלך הזמן, נפגשתי רק בכמה בעיות ש-MI משתלבת בצורה נכונה עם הפתרון, האמנם, יכלתי לעשות את אותו דבר בעזרת interfaces, אולי אתה תקרא לזה "פתרון שלא תומך לגמרי ב-OO".

ונעזוב את המושגים של "חזק" ו-"חלש".
אני לא יודע איך הגעת למצב שאתה משווה בין C# ששואף ל-RAD לבין CPP.

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

אם בכל מקרה אתה מתעקש לנקות את האובייקט שלך (מה שאתה מכנה, "שליטה מלאה") ולא לחכות ש-GC יעשה זאת:

קוד:
public void Dispose( ) { GC.SupressFinalize( this ); } public override void Finalize( ) { Dispose( ); base.finalize(); }

וקרא ל-Dispose.

בנוסף, אתה מסתכל על GC וה-references בתור חסרון, ואני מסתכל עליהם בתור ייתרון/פיצ'ר.
אם אני כבר עובד כמו חמור - אז לא הייתי משתמש ב-OO.
אם אני כבר עובד כמו חמור - אז לא הייתי מלכלך את היד שלי ב-CPP, אלא עובד עם C (תוכנית ב-CPP לעולם לא תרוץ מהר יותר מתוכנית שנכתבה ב-C במילא) או עם ASM.
_____________________________________
C pogrammers never die. They are just cast into void.


תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #18  
ישן 22-09-2006, 20:40
צלמית המשתמש של scripter
  scripter scripter אינו מחובר  
 
חבר מתאריך: 04.08.02
הודעות: 4,468
...
בתגובה להודעה מספר 17 שנכתבה על ידי DReam_Theater שמתחילה ב "GC לעולם לא ינהל זיכרון בצורה..."

/* GC לעולם לא ינהל זיכרון בצורה מושלמת, עובדה היא שמערכת קריטית (עומסים\מהירות\ זמינות)
תכתב בשפה שיותר "קרובה לברזלים". */
זה ברור, לא טענתי אחרת, לכן אמרתי לך איך אתה משווה את C# ששואף ל-RAD ל-CPP.
אבל במקרה שאתה מתכנת עם C#, למה שאני אתחיל לשחק עם dispose/finalize, כשה-GC עושה את זה בצורה מצויינת?

/* הגיד שאם היעילות חשובה לי כ"כ אכתוב ב C זה הערה לא במקום, כי ל OOP יש
הרבה יתרונות (שימוש חוזר, הכמסה, דימוי למציאות) וההבדל בביצועים הוא לא קריטי לעומת
ההבדל בין CPP ל C#. */
בתור מישהו שעוסק ב-Embedded Systems, רוב הייתרונות של OO נעלמות לדעתי.
פלוס, כמות המהדרים ל-C לפלטפורומות שונות, גדולה יותר.

//אתה רואה בקידוד קודם כל משהו שצריך להיות פשוט
אמרתי שפשטות זה אחד הדגשים של C#.
כמו שאמרתי אני עוסק ב-Embedded, אני לא נהנה מאף ייתרון/פיצ'ר שציינתי על C#.
זה נשמע כאילו אני איש מיקרוסופט שבא לשווק ולהגיד דברים טובים על C# בכל תגובה, אז זהו שלא
לאחר הלילות שבזבזתי כדי למצוא leak עלוב בתוכניות שלי, התחלתי להעריך יותר את העבודה של ה-GC. זה פשוט לא ריאלי לכתוב תוכנית מושלמת, אין דבר כזה. לא משנה כמה אתה מנוסה.
There are two ways to write error-free programs; only the third one works.


/* רק דבר אחד אחרון, "עבודה כמו חמור" היא לא בהיכרח דבר רע, מה לעשות בשביל מערכות Realtime
צריך ללכלך את היידים, אבל רק כך מבטיחים התנהגות מושלמת ומדוייקת. */
עכשיו אתה מדבר בתחומים שפשוט קשה להכניס את C# לשם.
ברור כשאתה עובד ב-low level, אתה צריך ללכלך את הידיים, אין ספק בכך.
וכמו שאמרתי, אם כבר מתכנתים low-level, אני נשאר עם C, ואני לא לבד
(אם OO היה כ"כ נחוץ ב-RT/Embedded, היינו רואים יותר מערכות שנכתבו ב-CPP ולא ASM/C)

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

** בלי קשר לדיון **
שנה טובה
_____________________________________
C pogrammers never die. They are just cast into void.



נערך לאחרונה ע"י scripter בתאריך 22-09-2006 בשעה 20:44.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #19  
ישן 22-09-2006, 22:50
צלמית המשתמש של zeliran
  zeliran zeliran אינו מחובר  
 
חבר מתאריך: 22.09.06
הודעות: 83
שלח הודעה דרך MSN אל zeliran
בתגובה להודעה מספר 18 שנכתבה על ידי scripter שמתחילה ב "..."

רק רציתי להוסיף שאפשר ועוד איך לשלב דוט נט עם מערכות RT :-)
אתה לא היחיד עם רקע ב RT, ואני יכול לומר שאפשר לשלב בהצלחה רבה תשתית שנכתבה ב c++, שעושה את ליבת עבודת התקשורת, ופשוט לעטוף אותה עם managed cpp כדי שיהיה אפשר לפתח עם התשתית בשפות דוט נטיות אחרות.
מן הסתם לא יהיה שימוש במעטפת לתהליכים שמוגדרים בתור hard RT, אבל אם מדובר במקרים בהם זמן הוא לא קריטי, אז השילוב הזה יכול לעבוד נפלא (ואם תשאל אותי, גם בביצועים טובים)

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

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

Puirfy כבוד! =]

נערך לאחרונה ע"י zeliran בתאריך 22-09-2006 בשעה 22:56.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #21  
ישן 22-09-2006, 23:26
צלמית המשתמש של zeliran
  zeliran zeliran אינו מחובר  
 
חבר מתאריך: 22.09.06
הודעות: 83
שלח הודעה דרך MSN אל zeliran
בתגובה להודעה מספר 20 שנכתבה על ידי maxim k שמתחילה ב "אין מצב שזה עם ביצועים טובים"

אז רק לידע כללי, תדע לך שמעבר ב GC בין דור 0 לדור 1, לוקח משהו בסיבות האלפית שניה..
גם אל תשכח שזה לא רק ה GC שגורם לירידה בביצועים, רצים לך גם עוד כל מיני תהליכים ברקע בנוסף לו, ותזכור שקוד דוט נט מתקמפל ל MSIL, ולא לקוד מכונה.. מה שאומר שיש לו עוד שלב קימפול זבמן שאתה מריץ את התוכנית.

הדבר הכי חשוב זה לדעת מה התוכנית שלך צריכה לעשות. מה לעשות, אבל לא כל תוכנית בעולם צריכה להיות בנויה שתתאים ל hard real time, חלק לא פחות חשוב מהתוצר הסופי שלך הוא תהליך הפיתוח, שלוקח זמן. וכמו שאתה יודע, זמן = כסף.
בית התוכנה יכול להחליט שהוא מעדיף שזמן הפיתוח של המוצר שלו יתקצר בחצי וע"י כך יחסוך הרבה מאוד כסף, בעבור העלות שהמשתמש יצטרך חלק כמה אלפטיות שניה בין לחיצה על כפתור כלשהו..
חשוב למצוא יעדים, וברוב המקרים ההיתרנות שמציאה פלטפורמת הדוט נט (ניהול זכרון, class library עצום, מהירות פיתוח, שילוב unamanged code עם managed, ועוד) מתעלה על החסרונות שלה.

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


תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #22  
ישן 22-09-2006, 23:29
צלמית המשתמש של scripter
  scripter scripter אינו מחובר  
 
חבר מתאריך: 04.08.02
הודעות: 4,468
...
בתגובה להודעה מספר 19 שנכתבה על ידי zeliran שמתחילה ב "רק רציתי להוסיף שאפשר ועוד..."

////רק רציתי להוסיף שאפשר ועוד איך לשלב דוט נט עם מערכות RT :-)
לא אמרתי שבלתי אפשרי.
הכל אפשרי.. אפשר לשלב ג'אווה, לעבוד עם פרל (תתפלא, יש משוגעים בעולם ) ברמה של RT.. מה לא
מעניין למה C/ASM עדיין על עדיפות ראשונה...

//בל אם מדובר במקרים בהם זמן הוא לא קריטי, אז השילוב הזה יכול לעבוד נפלא (ואם תשאל אותי, גם בביצועים טובים)
דגש על "בהם הזמן הוא לא קריטי".
הביצועים טובים? יכול להיות שכן, לא ניסיתי את השילוב הזה אף פעם.
בכל מקרה, לא ייתקרבו לביצועים של ASM/C...

/* תה לא יכול להכריח את ה GC לשחרר זכרון. */
אכן, הכל בגדר "המלצה" - קריאה ל-GC.Collect למשל.

/* מה גם שצריך להמנע בכל תוקף מלהכריח את ה GC לרוץ, הוא יודע לעשות את מה שהוא עושה ופעולות כאלו יכולות רק לגרום לקונפליקטים בעתיד..*/
אין ספק.
אתה מחזק את הנקודה שלי - כתבתי כבר פעמיים שאני סומך על ה-GC ויודע שהוא עושה את העבודה בצורה הטובה ביותר.
_____________________________________
C pogrammers never die. They are just cast into void.


תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #24  
ישן 23-09-2006, 00:06
צלמית המשתמש של scripter
  scripter scripter אינו מחובר  
 
חבר מתאריך: 04.08.02
הודעות: 4,468
...
בתגובה להודעה מספר 23 שנכתבה על ידי zeliran שמתחילה ב "למה את יוצא מנקודת הנחה שבאתי..."

//למה את יוצא מנקודת הנחה שבאתי לסתור אותך? =]
מצטער אם זה נראה כך :]

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

// אפליקציות שהם פחות time critical, יעדיפו לפתח בדוט נט (בהנחה והן יכולות להרשות את זה לעצמן)
// זאת מגמה שאני רואה אותה קורה בהרבה מקומות בזמן האחרון
אכן.

בכל מקרה, לא יכלתי לסכם את הדיון טוב יותר מאשר התגובה הקודמת שלך...
חג שמח
_____________________________________
C pogrammers never die. They are just cast into void.


תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 03:23

הדף נוצר ב 0.08 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר