באיזה שפות כתובות מערכות הפעלה ותוכנות יציבות בעלות שם?? - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

באיזה שפות כתובות מערכות הפעלה ותוכנות יציבות בעלות שם??


משיקומי

Recommended Posts

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

קישור לתוכן
שתף באתרים אחרים

אני מאמין שהVISTA כתובה בC#(חלק מהליבה אולי באסמבלי)

ואתה כנראה טועה... C# היא לא שפה מספיק low-level בשביל לכתוב בה מערכת הפעלה.

Windows כתובה רובה ב-C.

כל מתכנת יודע שתוכנה שכתובה לגמרי באסמבלי פועלת בשיא המהירות וגם לוקחת כמות מזערית לעומת תוכנה שכתובה ב-C

אל תגזים.

C היא שפה די קרובה לשפת מכונה, ודי יעילה בפני עצמה. בניגוד לשפות OOP, ובמיוחד בניגוד לשפות Managed (כגון C# ו-Java), תכנית ב-C מחזיקה מעט מאוד Overhead מעבר לכמה שנצרך באסמבלי, ככה שתכנית באסמבלי לא באמת תתפוס הרבה פחות .

קישור לתוכן
שתף באתרים אחרים

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

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

UNIX כתובה ב C באמת וwindows זה בטח שילוב של C ו ++C

שפות כמו #C ו JAVA בדרך כלל לא משמשות לכתיבת דברים כמו מערכות הפעלה ושאר תוכנות שצריכות לעבוד קרוב לחומרה כי הם פשוט יותר מדי high level

קישור לתוכן
שתף באתרים אחרים

^^ צודק

ביותר פשטות הדברים שחשוב שהם יהיו מהירים כתובים בשפות דור שני (אולי חלק אפילו בדור ראשון שזה שפת מכונה)

ושאר הדברים כתובים בשפות של הדור השלישי (אני לא יודע וזה גם לא משנה איזה שפה בדיוק)

ד"א

למי שלא יודע

דור ראשון שפת מכונה/בינארית (10010011101)

דור שני שפת סף (MOV AX BX....)

דור שלישי שפות פרוצדוראליות( (readlin(XYZ)

דור רביעי (מכולל ישומיים)

ככל שאתה כותב בשפה יותר פשוטה (כמה שיותר קרובה לשפה בינארית) ככה התוכנה עובדת יותר מהר

ןלכן כמעט ולא עם בכלל משתמשים בשפות כמו c# במערכות הפעלה (C# דור רביעי)

קישור לתוכן
שתף באתרים אחרים

למה לא יכולים פשוט לעשות מהדרים יעילים??

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

אבל, במקרים נדירים כשיש משהו מדוייק מאוד שאתה רוצה לעשות בצורה מאוד מסויימת אתה תרצה להכניס קוד באסמבלי.

כמו מה למשל?

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

קישור לתוכן
שתף באתרים אחרים

כל מתכנת יודע שתוכנה שכתובה לגמרי באסמבלי פועלת בשיא המהירות וגם לוקחת כמות מזערית לעומת תוכנה שכתובה ב-C

זהו ש... כל מתכנת יודע שמה שכתבת הוא לא נכון...

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

1) C מאוד קרובה לאסמבלי בגמישות של מה שניתן לעשות, מה גם שניתן לשלב קטעי אסמבלי באזורים "קריטיים".

2) כתיבה ב-C היא הרבה יותר נוחה וברורה למתכנת - וזה אומר, הרבה פחות סיכוי לטעויות בתכנון - יעילות גדולה יותר.

מאותה סיבה, אגב, לפעמים תוכנה שכתובה ב-C++ יעילה הרבה יותר ממקבילה ב-C, רק בגלל שכתיבה ב-C הרבה יותר קשה "לעקוב" ולהביא אותה למצב יעיל.

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

קישור לתוכן
שתף באתרים אחרים

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

כמה אתה מוכן לשלם על יעילות (נניח בביצועים וזכרון)? אם אפשר להגיע ל-50% יעילות ב-10% מהמחיר, זה מספיק טוב?

למה בכלל יעילות חשובה לך? ובאיזה חלק? אם אתה כותב משחק שחמט, האם זה חשוב אם מה שמצייר את הלוח יהיה מהיר?

באפליקציה שמנהלת קשרי לקוחות, האם זה משנה אם שאילתא תרוץ 10 מילישניות או 50 מילישניות? במיוחד כאשר הרשת איטית פי 5?

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

ישנן בהן הביצועים לא חשובים, אבל הנכונות של הקוד חשובה - לדוגמא בנקים.

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...