FTeR#21
a két mondatom között csak szóhasználatban van ütközés. az előbbit helyesebb lett volan úgy, h m$ teljes mellbedobással elkezdi használni. egyébként IEben már évek óta benne van a támogatása, sőt minden egyéb aminek kicsi köze is van hozzá (legtöbbjük előbb kerűlt bele, mint ahogy megszületett az ajánlás - ezért is lehetnek némi kompatibilitási gondok).
C#/Java
hasonlóság, h mind a 2 szigorúan OO.
a köztes kód használata C# esetében már nem a nyelv sajátja, hanem a .Net-é.
A ti felfogásotokkal, a Delphi, C++, VB is ugyan azok a nyelvek. Igen, mind1ik 4G, ennyi.
C# másképp kezeli az egyszerű változókat, az összetett
- változók nem is hasonlítanak (tömb, verem, sor, struktúra - utóbbi nincs is javában.)
- a metódusokat is másképp kezeli. Javaban minden metódus (fügvény/eljárás) virtuálís (egyik legnagyobb hátránya is ebből származik), mig C#ban külön jelölni kell ha olyat szeretnénk (így C#-ban lehetőség van pl metódus elrejtésre).
- C# nem tesz különbséget eljárás és fügvény között
- C#ban a metódusok túltölthetős, mert egy metódust annak neve, paramétereinek száma és típusa hatérozza meg. Javaban csak a neve.
- C# tök más az objektum öröklődés is (!), többek között az előbb leírtak miatt is, részletesebben nem mennék bele. (ez talán a leglényegesebb egy OO nyelvnél)
- C#ban más a típuskényszerítés és az automatikus típusváltás is másképp értelmeződik.
- C#ban ún. property, ami objektumon belüli változók elérhetőségét teszi szabályozhatóvá
- a destruktorok értelmezése is eltér.
- C#ban lehetőség van névterek létrehozáására, ez hihetetlenűl megkönnyíti a programozást.
- a futó programban (a futtató környezet által) C#ban autómatikus "szemét gyűjtés" van. Még Javaban nem (másik legnagyobb hibája - ezért is zabálja a memóriát).
- a köztes kódban is van eltérés mert pl C# menedzselt kódról beszélünk.
- maga futtató környezet is más. pl JVM csak egy feladatos (1-2 gyenge próbálkozástól eltekintve) ezért indúl minden egyes java programnak külön JVM (ez hozzájárúl a lassúságához és memóriazabálásához.). A .Net vírtuális gépe több feladatos.
Aztán a JVM sorról sorra megy minden egyes alkalommal a köztes kódon (valahogy úgy ahogy 1 weblap értelmeződik), amikor elinditjuk a programot (ettől lesz a leglassabb). A .Net-nél a futtató környezet elöszőr megnézi, h volt-e már futtatva ezen a gépen ez az alkalmazás, ha igen, akkor megnézi h volt-e változtatás azóta, ha nem akkor futtatja azt a gépfüggőre lefordított alkalmazást, amit első indítás alkalmával készített. Ezt a gépfüggő kódot is dinamikusabban készíti el, mint ahogy a JVM végigmegy soronként, de ebbe most nem megyek bele.
-ezeken kívűl még rengeteg dolog más, de talán 1 program szempontjából ezek a legfontosabbak. Sok mindenben pl a Delphi felfogást követi (nem véletlen, a projekt vezetője a delphi megalkotója volt).
-Arról nem is beszélve, h C# mögött ott az egész .Net framework, míg javának ehhez képest semmije sincs.
tehát azon kívűl, h szigorúan OO és az interoperábilitás miatt egy köztes kódot futtat egy VM, miben is hasonlítanok olyan rettentően, h szinte semmi különbség és M$ csak lemásolta a Javat-t?