• 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?