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

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



  #15  
ישן 26-05-2008, 09:23
  שימיadmin שימי אינו מחובר  
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
 
חבר מתאריך: 25.10.01
הודעות: 42,775
בתגובה להודעה מספר 14 שנכתבה על ידי מאבטח שמתחילה ב "למה?"

יש קוד שאינו מקומפל בסופו של דבר כדי לרוץ? enlighten me, please... (אא"כ אתה מאלה שטוענים שיש הבדל מהותי בין bytecode לאסמבלי...)

אני אמרתי שהן לא יעשו אתת אותו הדבר?

אני אמרתי שהן ידרשו יותר משאבים מהמחשב...

רציתי לבדוק קצת, אך לצערי הקוד השני שלך לא מתקמפל אצלי... זה מה שהוא אומר:
קוד:
f2.cpp:10: error: new types may not be defined in a return type f2.cpp:10: note: (perhaps a semicolon is missing after the definition of 'c') f2.cpp:10: error: two or more data types in declaration of 'main' f2.cpp:10: error: '::main' must return 'int'


על השורה של int main...

(ושוב מוכחת הטענה שלי לגבי קוד OO )

נ.ב. "שתי השיטות" הן אלו שבכותרת של האשכול הזה...
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה
נמאס לכם לזכור סיסמאות? לחצו כאן!

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #17  
ישן 26-05-2008, 09:33
  שימיadmin שימי אינו מחובר  
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
 
חבר מתאריך: 25.10.01
הודעות: 42,775
בתגובה להודעה מספר 16 שנכתבה על ידי Morishani שמתחילה ב "תנסה להוסיף פסיק נקודה אחרי..."

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

נו טוב, אז יש לנו שני קבצים מקומפלים. עשיתי אפילו strip על שניהם, כדי להעיף את ה debugging symbols, והנה התוצאה:

קוד:
$ ls -l f1 f2 -rwxr-xr-x 1 shimi shimi 4720 May 26 10:29 f1 -rwxr-xr-x 1 shimi shimi 4736 May 26 10:29 f2


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

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

לא סתם בקרנל של לינוקס אין שורה אחת ב OO...
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה
נמאס לכם לזכור סיסמאות? לחצו כאן!

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #20  
ישן 26-05-2008, 21:51
  מאבטח מאבטח אינו מחובר  
 
חבר מתאריך: 26.05.08
הודעות: 120
נכון, אבל הצגת הבדל של 16 בתים...
בתגובה להודעה מספר 19 שנכתבה על ידי שימי שמתחילה ב "אני לא השתמשתי באופטימיזציית..."

ואם היית מציג הבדל רציני בקוד רציני הייתי אומר לך "אבל השתמשת בקומפיילר דפוק".

לגבי ה-struct אני צודק בכל צורה, כי class היא הגדרה של טיפוס, ולא של קוד. זה שהלכו לקראת האנשים ואיפשרו להם להכניס הגדרה של קוד לפונקציות בתוך הגדרת הטיפוס שאליו הפונקציות שייכות זה עניין אחר.
בלוק ה-class מגדיר טיפוס, ולכן, כמו כל הגדרת טיפוס אחרת (typedef, struct, enum) הוא מחייב בסופו נקודה-פסיק. אם יש בתוכו הצהרה על פונקציה תהיה בסופה נקודה-פסיק, כמו בסוף הצהרה על פונקציה מחוץ למחלקה, ואם תהיה בתוכו הגדרה של פונקציה, לא תהיה נקודה-פסיק אחרי הסוגר המסולסל של ההגדרה, כמו להגדרה על פונקציה מחוץ למחלקה.

אבל אנחנו סוטים מהעניין...
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #25  
ישן 26-05-2008, 21:46
  מאבטח מאבטח אינו מחובר  
 
חבר מתאריך: 26.05.08
הודעות: 120
מה הקשר בין מחט?..
בתגובה להודעה מספר 24 שנכתבה על ידי שימי שמתחילה ב "ברור שהפונקציה תיקח אותו..."

על אילו תוספות אתה מדבר? כל התוספות הן ברמת הקוד. אין שום תוספות (שהן בגדר אילוץ) ברמת הבינארי. פונקציות וירטואליות - תוספת קטנה. חריגות - תוספת לא קטנה. RTTI - תוספת לא קטנה.
אבל אפשר בלי זה.

גם הקרנל של ווינדוס לא כתוב ב-CPP, וגם דרייברים לווינדוס לא כותבים ב-CPP. אתה יכול לקרוא על חלק מהבעיות במאמר הבא: www.osronline.com/article.cfm?article=490
נדמה לי שענייני paging, לדוגמה, רלוונטיים גם ללינוקס.
בדף הבא באתר מייקרוסופט: http://www.microsoft.com/whdc/driver/kernel/KMcode.mspx
תוכל לראות עוד כמה דוגמאות לבעיות.
חשוב להזכיר שנדרשת גם תמיכה בקומפיילר, ומאחר ולינוקס נכתבה במקור ב-C והיה לה code-base גדול ובדוק ב-C לא ראו סיבה להשקיע ולטרוח בכתיבת תמיכה בקומפיילר רק כדי שיצטרכו לשכתב קוד שכבר בדוק ופועל. נשמע לי הגיוני למדי.

מצד שני, גם בעולם הלינוקס והקוד הפתוח יש המון קוד שכתוב ב-CPP. מה? הם מטומטמים?!
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #26  
ישן 26-05-2008, 21:49
  שימיadmin שימי אינו מחובר  
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
 
חבר מתאריך: 25.10.01
הודעות: 42,775
בתגובה להודעה מספר 25 שנכתבה על ידי מאבטח שמתחילה ב "מה הקשר בין מחט?.."

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

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

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #27  
ישן 26-05-2008, 21:56
  מאבטח מאבטח אינו מחובר  
 
חבר מתאריך: 26.05.08
הודעות: 120
קראת בכלל את הקישורים?
בתגובה להודעה מספר 26 שנכתבה על ידי שימי שמתחילה ב "לא, הם לא מטומטמים. כשאתה..."

הבעיה היא לא של ביצועים, אלא שיש דברים שבלתי-אפשריים פרקטית.
לדוגמה: ב-CPP קוד רץ באופן משתמע (destructor-ים, adjustor thunk-ים, וכו'). ב-kernel-mode אתה לא תמיד יכול להריץ כל קוד. יכול להיות שהקוד שאתה רוצה להריץ paged-out, ואתה לא יכול לטפל בפסיקה של page-fault כדי להחזיר אותו (מה שאומר ש-page fault יגרור kernel panic). מה תעשה?
יש לך רעיון לקומפיילר קסום שידע לנתח את הקוד, לזהות מקרים כאלה, ובמקרים כאלה לשים את הקוד שנקרא באופן משתמע כך שהוא תמיד יהיה באותו page עם מי שקורא לו?
העולם ישמח לשמוע.

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

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

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

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

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



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

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

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

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