עבור לתוכן

מחפש חוות דעת על C#

Featured Replies

פורסם

שלום לכולם..

התחלנו ללמוד בבית ספר את שפת התכנות C#..

תהיתי איך היא והאם יש איזה מגבלות שיש לה לעומת שפות תכנות חזקות אחרות כגון C++...?

בנוסף לכך מישהו יודע איך שומרים פרויקט בVISUAL C# של מיקרוסופט כקובץ EXE?

תודה רבה :)

פורסם

C# היא בעצם שדרוג של C++. אם אתה יודע C++, מאוד קל להמיר את הידע שלך לC#.

פורסם

אני לא חושב שהוא התכוון מבחינת קושי.

גם אני התחלתי ללמוד השנה C#

פורסם

אז מבחינת מה ?

אגב, כדי לשמור קובץ כEXE, אתה צריך קומפיילר.

פורסם
  • מחבר

אני לא יודע C++ וכן לא התכוונתי מבחינת קושי אלא מבחינת כוח השפה ועד כמה רחוק אפשר להגיע איתה.

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

יש לי microsoft visual c# express ואני מצליח להפעיל את מה שאני כותב אבל לא לשמור כEXE..

אני מאמין שיש שם את האופציה הזו אבל איך?

פורסם

כעיקרון יש תוכנות וספריות שמאפשרות הרצת .NET FRAMEWORK תחת לינוקס, אבל בוא נאמר ככה, אל תבנה על זה ממש..

לעומת C++, בגדול, מצד אחד היא יותר חדשה ואולי גם יותר פשוטה, אבל מצד שני - תוכנה שכתובה ב-C++ תוכל לרוץ ברוב מערכות ההפעלה.

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

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

פורסם
  • מחבר

אני לומד שנה ראשונה וכן אני יודע שמה שאני לומד בבית ספר לא יספיק..

אגב אני יודע שיהיה לי פרויקט בASP אבל לא בטוח אם הוא קשור לC#..

ובקשר לקומפילר יש לך מושג?

פורסם

כל פעם שאתה עושה BUILD לפרוייקט שלך(לוחץ על הירוק למעלה ומריץ), נוצר לך EXE בתיקייה של הפרוייקט\debug.

פורסם

אני לומד שנה ראשונה וכן אני יודע שמה שאני לומד בבית ספר לא יספיק..

אגב אני יודע שיהיה לי פרויקט בASP אבל לא בטוח אם הוא קשור לC#..

ובקשר לקומפילר יש לך מושג?

ASP או ASP.NET? יש הבדל משמעותי =]

פורסם

תהיתי איך היא והאם יש איזה מגבלות שיש לה לעומת שפות תכנות חזקות אחרות כגון C++...?

ל-C# יש כרגע 3 מגבלות עיקריות:

1. מהיותה Managed, היא תהיה פחות יעילה משפה שאינה Managed (כלומר C/C++). זה משפיע בעיקר כאשר היעילות בתכנית שלך היא גורם מכריע, לדוגמה אם התכנית שלך מריצה אלגוריתמים מורכבים במיוחד (נניח, מנוע תלת-מימד של משחקי מחשב ייכתב בשפה כמו C, ולא ב-C#).

2. שפת C היא הרבה יותר low-level, כלומר היא מאפשרת גישה לרכיבים במחשב ברמה הרבה יותר נמוכה. אפשר לכתוב בה תוכנות שניגשות ישר לחומרה של המחשב (דרייוורים) ומערכות הפעלה (קוד של C# דורש מערכת הפעלה כדי לרוץ, קוד של C לא).

3. C# הוא לא באמת cross-platform. כלומר, תכנית שנכתבה ב-C# לא יכולה לרוץ על מערכות הפעלה שאינן windows (קיים פרוייקט בשם mono שנועד לזה, אבל הוא עוד בחיתוליו). C/C++ הן שפות כלליות יותר. זה לא אומר שאותה תכנית שרצה על windows תרוץ על לינוקס, אבל לפחות אתה יכול לכתוב תוכניות ללינוקס ב-C.

לגבי 1 ו-2 יש פתרון, והוא שילוב של קוד managed (כלומר C#) וקוד native (כלומר C/C++). ה-native עושה את הדברים הספציפיים שה-managed לא יודע לעשות (כמו חישובים יעילים או גישה לחומרה).

פורסם

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

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

אולם כשפת תכנות, C# היא שפה מאוד נוחה ואני די אוהב אותה, למרות שמדי פעם יש משהו שהייתי רוצה לחנוק את המתכנתים בגללו :)

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

לדוגמא ב-Compact Framework (גרסה קטנה יותר של .NET עבור מכשירי PDA שמריצים windows mobile) יש באגים איומים ונוראים כבר שנים, כולל בדברים בסיסיים וחשובים, ומיקרוסופט לא מתקנת אותם במהירות הראויה (למעשה היא שחררה את זה במצב שהוא יותר beta מאשר משהו שראוי לשימוש). למה היא לא מתקנת אותה? מן הסתם יש להם עדיפויות אחרות, כמו לדחוף טכנולוגיות חדשות שקשורות ל-C# כמו WPF, WCF או SilverLight.

פורסם

ד.א. ניתן להשתמש בC# במצביעים ע"י המילה השמורה unsafe, וכדי לגשת להשיג מצביע של מערך, נעשה כך:


unsafe
{
int[,] arr = new int[5, 5];
fixed(int* scan0 = arr)
{
int* ptr = scan0;
for(int i = 0; i < 5; ++i)
{
for(int j = 0; j < 5; ++j)
{
*ptr = i * j;
++ptr;
}
}
}
}

ועם שימוש ב Marshal אנחנו יכולים לעשות עוד המון דברים, שאי אפשר לעשות עם JAVA.

ארכיון

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

דיונים חדשים