שרשור חדש

gilad_no

New member
שרשור חדש../images/Emo18.gif

מספר אנשים שאלו על שפות תכנות והדיון קצת חרג מהשאלה. נראה לי שבילבלנו אותם ולכן החלטתי לעשות סדר. נראה לי שיש מספר דברים שנוכל להסכים עליהם. אני אנסה לסקור בקצרה (בצורה אובייקטיבית) את השפות הנפוצות. אני מקווה שאף אחד לא יבוא בטענה של "אבל לא הזכרת את עדה" או משהו דומה. אני מדגיש: השפות הנפוצות אין חשיבות לסדר ואני רושם לפי מה שמופיע לי בראש. אם יש למישהו הערות, או אם שכחתי משהו, אני אשמח אם תשרשרו. אסמבלי: התרגום הישיר של שפת מכונה. מכוונת ישירות למעבד ולחומרה של המחשב. לכל מעבד יש אוסף פקודות שונה. יתרונות: נותנת גישה ישירה לחומרה של המחשב, מהירה מאוד חסרונות: קשה ללמידה, זמן פיתוח ארוך ++C\C: שפות הפיתוח הנפוצות. מכוונות לפלטפורמות שונות (חלונות,לינוקס,פאלם ...). יתרונות: מקנות חופש פעולה דיי נרחב חסרונות: בגלל החופש, מתחילים עושים הרבה טעויות (זליגות זיכרון, זליגות קוד - switch/case בלי break ...). ישנם כלים מהירים יותר לפיתוח של יישומים יעודיים (יישומי אינטרנט - ג´אווה) ג´אווה: השפה המובילה בפיתוח בלתי תלוי פלטפורמה. כמו כן ביישומי אינטרנט יתרונות: לא תלוי בפלטפורמה. מפתחים פעם אחת וזה יעבוד בכל מערכת תומכת ג´אווה. דיי הרבה מחלקות מוכנות מראש חסרונות: נוצר קוד ביניים אשר גורם ליישום להיות איטי יחסית ליישום המתקמפל ישירות לקוד מכונה. חוסר במצביעים - חלק מהאנשים רואים בזה חיסרון פסקל: שפה המשמשת בעיקר ללימוד תכנות. ישנה דלפי שהיא הגירסה לחלונות יתרון: כללים נוקשים המקנים תכנות נכון. חיסרון: ביישומים מתקדמים הנוקשות שלה מגבילה(מעדיפים לעבוד לC). פחות נפוצה מC C#: התשובה של מייקרוסופט לג´אווה. C# היא רק שפה אחת מתוך אוסף השפות של .NET יתרונות: מבנה של C עם נוחות של ג´אווה, מחלקות מוכנות חסרונות: דיי חדשה, לא ידוע אם תצליח נ.ב.: לא מעצבן אתכם כל התרגום של המושגים לעברית ???
גלעד
 

אלדד26

New member
רגע, מה עם PL/1? ../images/Emo8.gif

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

gilad_no

New member
אוקיי, הסבר:

זליגת זיכרון: נניח שהיישום צריך להקצות זיכרון באופן דינמי במהלך פעולתו. אם לא משחררים את הזיכרון הנ"ל בסיום התכנית, הוא מסומן "בשימוש" למרות שכבר אין בו צורך והמשאבים של המחשב פוחתים. יישום שיש בו הרבה זליגות כאלה יכול לגרום לקריסת המחשב עקב חוסר במשאבים. אחד הפתרונות מדבר על garbage collection. אם נדבר בצורה כללית, אז יוצרים רשימה של כל ההקצאות זיכרון שנעשו במהלך התכנית ובסיומה, עוברים על כל הרשימה ומשחררים את כל האובייקטים שרשומים שם. בג´אווה וב.NET הדבר מטופל אוטומטית ע"י הVM והמתכנת לא צריך לדאוג לכך. בC ניתן לבנות מנגנון פשוט שמטפל בדבר.
 

voguemaster

New member
hehe

הסבר פשוט וקולע. לעומת זאת לא רק מדובר על זיכרון, אלא על משאבים בכלל. לדוגמא, אפליקצית WIN שאמורה לצייר משהו בשטח הלקוח של חלון היישום, בעזרת PEN ו-BRUSH. אם אתה לא מעוניין לעבוד עם משתנים סטטיים (ורצוי להימנע מזה), תיאלץ ליצור כל פעם מחדש את האובייקטים הדרושים לציור, ותיאלץ למחוק אותם בסיום העבודה, וזה בכל פעם שיש ציור מחדש (עבור כל WM_PAINT). זה דבר שממש לא כתוב בשום מקום ב-SDK של מיקרוסופט, אבל משום מה יש לזה תוצאות הרות אסון (כן, REBOOT באיזשהו שלב, יש הרבה WM_PAINT שנשלחים לחלון). זליגת זיכרון, איזה מילה הם דפקו לזה.. LOL אלי
 
למעלה