C# בעד או נגד? - עמוד 2 - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

C# בעד או נגד?


MasterDK

Recommended Posts

אני לצערי עדיין לא התחלתי להתעסק עם C#, אני מחכה ל VS2005 שאמור להגיע מתישהו בקרוב... בכל מקרה, כמו שאמרו פה מקודם, יש את פרויקט ה GOMONO ש MICROSOFT לא תומכת בו, אך הוא מאפשר כבר עכשיו להריץ הרבה תוכנות C# תחת LINUX (עם אותו BINARY כמו ב WINDOWS), רק חבל שהוא לא "רשמי" ועדיין חסרים בו דברים משמעותיים....

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

וכרגיל:

http://en.wikipedia.org/wiki/C_Sharp_programming_language

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

  • תגובות 33
  • נוצר
  • תגובה אחרונה

משתתפים בולטים בדיון

משתתפים בולטים בדיון

כל מי שהגיב פה שכח להתייחס או לא נתן את דעתו על כמה דברים:

1. C# זה שפה שבאה להקל על המתכנת היא לא מביאה לך שום דבר טוב ברמת הביצועים.

קל לתכנת ב C# אפילו מאווווד קל קרי אין מצביעים כמו שמישהו אמר אולם השפה הרבה יותר כבדה ודורשת הרבה יותר מהמחשב להריץ את זה.

אתה לא יכול ולעולם לא תכתוב ישומי REAL TIME או EMBEDDED מכל סוג שהוא ב C# כי זה פשוט לא יעבוד מספיק טוב... לרוב גם ב C++ לא תכתוב אלא ישר ב C אבל עם C++ אפשר להסתדר עוד ב EMBEDDED עם מגבלות מסויימות...

קיצור ללמוד C -> C++ -> C# הרבה יותר קל ולדעתי הגיוני מאשר להתחיל מהסוף... אבל זה רק אני :)

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

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

כן, טוב, ברור שהשאלה מה אתה רוצה לעשות... לא נראה לי מי שחושב לכיוון של C#, חושב לעשות דברים EMBEDDED / RT, מי שחשוב על זה, כנראה מראש בוחר בדברים אחרים...

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

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

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

בקשר לביצועים - במייקרוסופט אוהבים לעשות הדגמה של ביצועי Quake 3 שקומפל ל- win32 native ול- .NET, ולהראות שהביצועים ב- .NET הם סה"ך 10% בערך פחות מה - native.

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

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

לפי מה שידוע לי כרגע אני מדגיש כרגע (הייתי בבית ספר רק יומיים) C שארפ ישמש אותנו ללימוד web services את התשובה המדוייקת אני ידע עד סוף שבוע הבא כי אז כבר יהיו שעורים ראשונים בנושא וההסבר יהיה יותר מפורט. גם ידוע לי שזה תוכנית חדשה שנכנסה השנה לתוכנית הלימודים

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

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

בשביל תיכנות אמיתי אבל ;)

לגבי ההדמה של MS ל QUAKE3 מה שזה מוכיח זה שהקומפיילר של .NET הוא פשוט גרוע ב 10% מהקודם... כי אם אתה לוקח את אותו הקוד ומקמפל אותו פשוט בקומפיילר אחר ויש לך ביצועים יותר גרועים אז הקומפיילר גרוע... זה לא שהם לקחו ושיכתבו את QUAKE 3 בעזרת מטודות חדשות שקיימות ב .NET הרי הם פשוט הדגימו שהקומפיילר רק ב 10% יותר רע מהקודם...

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

JAVA מהבחינה הזאת גם דבר רע לדברים שצריכים לתת איזושהי רמת ביצועים.... יהיה הוא נוח למתכנת העצלן כמה שיהיה (GARBAGE COLLECTOR... AND NEVER FREE MEMORY AGAIN)

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

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

הקומפיילר הקודם (VS 6) מקמפל ל Native EXE ולא ל PE (ראשי תיבות עבור Portable Executable המכיל MSIL) של .net

ההפרש בביצועים נגרם מהסיבה שהקוד מורץ ע"י Virtual Machine ולא ישירות... עם ה .net נוספה בהרצת התוכנית שכבת ה VM שלא קיימת ב VS 6 שאינו מיועד ל .net)

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

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

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

תיקון קל - PE - Portable Executable זה פורמט ה- executable הסטנדרטי של win32. (ה- header שלהם נמצא קצת אחרי תחילת הקובץ ומתחיל בתוים PE)

בטח ש- .NET מיועדת למשחקים. על 10% בביצועים אף אחד לא מסתכל כשמשקללים את זמן הפיתוח המקוצר.

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

נראה לי אנחנו רואים את זה מנקודות מבט שונות קצת ושוב כי אתה מגיע מצד האפליקציות ואני מגיע מצד ה RT יותר.... שב RT 10% זה משהו שיהיו מוכנים להשקיע שנת בשביל לחסוך אותו בים אם זה בגלל צריכת חשמל נמוכה יותר או אפשרות לדחוף עוד דברים ל CPU המסכן שיש שם בד"כ וכו וכו וכ...

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

מה שכן לגבי הקומפיילר אני לא מסכים שהוא קומפיילר לא גרוע - תקמפל בעזרת אותו הקומפיילר קוד לא עבור .NET ואתה עדיין תראה הפרשים בביצועים.

אגב לגבי הפורטביליות... אם צריכים להתקין את סביבת .NET איפה הפורטביליות פה? :) בזה שהמתכנת מראש כותב הכל ל VM ולא אכפת לו באם זה ירוץ על לינוקס או חלונות או אפילו? נראה לי שהמאמץ המועט הנוסף שדרוש ברמת הפיתוח בשביל שמשהו ירוץ על א ב או ג בחלק גדול מהמקרים יכול להיות שיקול מאוד כבד כנגד ה 10% בביצועים שזה אגב המספר הרישמי ככה שבפועל זה יותר

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

כמובן שזה תלוי במטרת התוכנה.. אני לא חושב ש C# או כל שפה המורצת ע לגבי VM מתאימה לישומי RT

ובקשר לפורטביליות... פרוייקט מונו מאפשר כבר עכשיו להריץ יישומי .net על לינוקס ומק, ככל שהזמן עובר הם מציעים יותר (בקרוב נוכל לראות את ה .Forms יציב למשל). אני מאמין שאתה יודע שזה לא כל כך פשוט לכתוב תוכנות שהן Cross Platform בעזרת שפות כמו c++, בייחוד בנושאים כמו ממשקי משתמש. אז אתה נגרר לשימוש ב Toolkit שהוא cross platform אך גם כאן יש איבוד מסויים של הפורטביליות מכיוון שנדרשות ספריות נוספות (עמו GTK למשל).

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

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

אז כמה הערות:

C# והאחות המרשעת שלה Vb.Net הן שפות מאוד נחמדות כול עוד רוצים לבנות משהו פשוט.

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

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

או לכתוב חלק מהתוכנה Managed C++(מה שכתבתי קודם + עוד שפה ללמוד)

בסך הכול, כדי להתחיל עם OO וכדי לכתוב מבוססות טפסים C# היא ממש אחלה.

מעבר לזה, השפה(ובעיקר הפריימוורק) עוד לא בשלה מספיק.

אולי בC#2(2005) יתוקנו כול הבעיות(או שהיא תראה יותר כמו C++ ע"ע "גנריקס, ובמה הם כול-כך שונים מטמפלייטס")

שלוש הערות נוספות,

1) בנוסף לMONO קיים עוד פרויקט בשם DotGnu שעושה את אותו הדבר.

2) ה-GC עובד בס"כ מאוד נחמד רק חבל שהם לא חשפו את הפונקציונאליות שלו החוצה(למשל את הרפרנס קאונטינג)

3) יש פוינטרים ב-C#, ניתן להגדיר קטע קוד כ-unsafe ואז להשתמש בפוינטרים.

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

התאריך הרשמי הוא תחילת נובמבר.

לא נראה לי שהם ישנו את השם שלו לVS2006 אז כנראה שהתאריך ריאלי :lol:

ההבדל העיקרוני הוא הקונספטואלי, בעוד MONO שייך לנובל, DotGnu הוא פרויקט עצמאי לחלוטין.

כמה שידוע לי MONO יותר בשל והרבה יותר יציב.

מצד שני, בMONO האוריינטציה של ה-GUI היא לכיוון GTK.NET בעוד בDotGnu הניסיון הוא לממש את ה-.Forms לכול הפלטפורמות.

לא השתמשתי ממש באף אחד מהם, ככה שאין לי דעה אישית בענין.

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

ארכיון

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


×
  • צור חדש...