סי שארפ – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
שורה 50:
 
===הדמיון ל-Java===
קיימים קווי דמיון רבים מאוד בין שפת C#{{D}} ל-Java, כגון; מכונהאובייקטים וירטואליתכהפניות (References), קוד ביניים ומכונה וירטואלית, [[הידור דינמי]] (JIT), ירושה יחידה עם ממשקים, [[זיכרון מנוהל]] ופינוי אשפה, [[Reflection (תכנות)|שיקוף]], Boxing, תהליכונים מובנים, יוניקוד מובנה, צורת השימוש בספריות ועוד.
ובכל זאת, קיימים הבדלים גדולים בין השתיים. בעיקר בהגדרת אופן מימוש מנגנוני השפה, השוני במימוש תכנות גנרי. מלבד זאת בסי שארפ נוספו תכונות שבחלקן אומצו מ-VB כגון תכנות ויז'ואלי, תכנות מונחה אירועים, אתחול אוטומטי של משתנים, משתנה רב תכליתי, מאפיינים, לולאת טווח ועוד. במיוחד גדל הפער בין השפות בגרסאות החדשות של סי שארפ בהן נוספו הרחבות כמו תכנות פונקציונלי, [[מתודות-הרחבה]] (Extension methods) והרחבת [[Language Integrated Query|LINQ]].
 
פיתוח השפה היה ראשוני, ונטול עכבות היסטוריים כמו [[תאימות לאחור]], שהיקשה על האבולוציה של Java. ברור גם כי העובדה ש-C#{{D}} פותחה אחרי Java איפשרה למיקרוסופט ללמוד מהחסרונות והיתרונות שלה וליישם את הלקחים בשפה החדשה{{הערה|[http://msdn.microsoft.com/en-us/library/ms836794.aspx C# and Java: Comparing Programming Languages], Msdn}}.
שורה 56 ⟵ 57:
אנשי סאן טענו כי מיקרוסופט גנבה לא מעט רעיונות משפת Java. לטענתם, C#{{D}} היא בעצם חיקוי לא מוצלח של Java ממנו הוסרו אמינות, יצרנות ואבטחה{{הערה|1=http://news.cnet.com/2008-1082-817522.html}}. במיקרוסופט מתעקשים לעומת זאת כי השפה דומה יותר ל-C++{{D}} מאשר ל-Java.
 
ההבדל המהותי ביותר בין #C ל- Java הוא מתודולוגי, #C היא שפה מונחית עצמים טהורה (Pure Object Oriented), ב- #C כל דבר הוא אובייקט, אפילו הטיפוסים הפשוטים (int, double, float, char ועוד) הם אובייקטים. Java לעומת זאת, היא אמנם מונחית עצמים אולם היא לא שפה מונחית עצמים טהורה, הטיפוסים הפשוטים הם פרימיטיביים (כמו ב-C), היאוהיא לא מבחינה בין מתודות וירטואליות למתודות לא וירטואליות ועוד.
 
===יעדי השפה===