Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

C++/CLI versus C#

[es] :: .NET :: .NET Desktop razvoj :: C++/CLI versus C#

[ Pregleda: 2897 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

NrmMyth
Ivan Maček
Split

Član broj: 63456
Poruke: 849
*.cmu.carnet.hr.

Sajt: www.dump.hr


Profil

icon C++/CLI versus C#13.10.2005. u 20:28 - pre 225 meseci
Eh, ova zagonetka me proganja vec dugo vremena, u njoj vidim dio svoje buducnosti.
Mislim da nije postojala rasprava na ovu temu na ES, mozda se varam.

C++/CLI je relativno nova tehnologija naspram C# koji je do sad bio broj jedan za rad sa .NET tehnologijom.
Koliko se kod C++/C# isplati mjesanje native sa managed kodom? I jeli ta tehnologija uopce ima buducnost s obzirom da se u C# jos uvijek vise ulaze? Koliko se tim mjesnjem kodova uopce usporava programiranje u odnosu na C#, a koliki je dobitak na performansama?

Dali ja sa poznavanjem C++/CLI imam veci opseg buducih zanimanja?

Nekako vise priljezem C++/CLI tehnologiji jer mi se cini snaznijom, ali je opet tu taj faktor brzine razvoja projekata.

Pomozit mi sa vasim iskustvima i saznanjima.
Hvala.
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+711 Profil

icon Re: C++/CLI versus C#14.10.2005. u 08:20 - pre 225 meseci
Evo iz mog ugla, naći će se neki C++ programer da me demantuje...

U .NETu primarni jezik za razvoj je C# - imam utisak da najviše ljudi radi u njemu, ima najviše primera u njemu itd. VB.NET i managed C++ su tu zbog "kompatibilnosti programera" - onih koji dolaze sa starijih VB i C++ platformi.
Što se tiče mešanja managed i unmanaged kooda, primene verovatno postoje, ali su, barem iz mog iskustva, retke (čitaj: nikad nisam radio na projektu koji ima unmanaged delove), ali to je možda do mene... Na kraju krajeva, i ako se ukaže potreba za neki manji unmanaged deo, ni C# programerima nije teško napraviti C++ klasu.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: C++/CLI versus C#14.10.2005. u 13:36 - pre 225 meseci
jablan je apsolutno u pravu, iz par razloga.

1. Managed code pisan u C++-u mora da bude CLS compliant, i samim tim je ogranicen po pitanju svih onih stvarcica koje C++ cine "brzim" a sto je uglavnom direktna native-code optimizacija i unsafe manipulacija memorijom. Bez tih prednosti managed C++ ima iste performanse kao i C#. Stavise koristeci neke alatke kao sto je NETReflector managed C++ moze da se dissasembluje u C# i obrnuto.

2. Unmanaged C++ je onaj "pravi" C++ . Medjutim da bi dobio sve prednosti C++-a moras celu aplikaciju napisati u C++-u (sto znaci nista od .NET tehnologija, samo plain old MFC/ATL), cime se vracas u stare (dobre) dane pre .NETa.

Ja licno sam unmanaged C++ u .NET aplikacijama koristio samo da implementiram Platfom Invoke pozive gde standrni marshaling parametara ne funkcionise (sto je relativno retko), i to cisto zato sto je lakse uraditi tako nego pisati custom marshaling atribute.

Danas definitivno C++ ima samo dve primene, obe za pisanje performance-critical koda kao sto drajveri i igrice. Sve ostalo moze bez problema da se radi u C#-u.


Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
*.dyn.optonline.net.



+6 Profil

icon Re: C++/CLI versus C#14.10.2005. u 14:57 - pre 225 meseci
@mmix: Pod 1) Nisi u pravu - za razliku od ostalih .NET kompajlera, C++/CLI optimizuje i IL, pa JIT pravi bolji kod što rezultuje bržim programima pisanim u C++/CLI. Samo, pitanje je koliko je to bitno u praksi, jer za tipične biznis aplikacije performanse na nivou koda nisu bitna stavka, a za one druge ćeš ionako verovatno da koristiš native C++ jer je .NET spor.

Inače, ako smem da iznesem svoje lično mišljenje, C++/CLI je bolji jezik od C# 2.0 čak i za čist .NET razvoj (automatski IDispose pattern me najviše impresionira) , ali za C# 3.0 najavljuju toliko interesantnih stvari, da nisam siguran da će tako ostati i u budućnosti.

Što se posla tiče, prilično sam siguran da će C# poslova biti više, ali mislim da će dodatno znanje C++/CLI da ti da prednost a verovatno i veću platu. Ja sam jedno godinu dana radio primarno na .NET platformi (C# i Managed C++) a sad sam se vratio na native C++ i nameravam da tu i ostanem do daljeg ;)
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: C++/CLI versus C#14.10.2005. u 21:04 - pre 225 meseci
Citat:
Dragi Tata: @mmix: Pod 1) Nisi u pravu - za razliku od ostalih .NET kompajlera, C++/CLI optimizuje i IL, pa JIT pravi bolji kod što rezultuje bržim programima pisanim u C++/CLI. Samo, pitanje je koliko je to bitno u praksi, jer za tipične biznis aplikacije performanse na nivou koda nisu bitna stavka, a za one druge ćeš ionako verovatno da koristiš native C++ jer je .NET spor.

Na stranu native C++ (koji je definitivno i brzi i elegantniji od C#a), ali bih voleo da vidim neke primere te famozne C++/CLI optimizacije o kojoj svi pricaju (ukljucujuci i MSov C++ tim), ali za koje niko ne daje primere ili bilo kakvu drugu dokumentaciju sem da je C++/CLI brzi od C# (citiram) "due to some optimizations we can perform in the compiler front-end".
Mi smo ovde radili dosta testiranja u jednom idle periodu i nismo primetili nikakve krajnje razlike na nivou IL-a, niti bilo kakav segment koda koji nije mogao da se disasemblira (dakle i isprogramira) u C#-u.

Primetili smo samo neke optimizacije u debug modu, dok je release build bio skoro identican.

Daleko od toga da su nasi testovi bili sveobuhvatni i savrseni (na kraju je idle period presusio pa su tekuci projekti prekinuli nase zevzecenje ), ali bih stvarno (i zbog licnog napretka) konacno voleo da vidim gde se i kako ispoljava ta optimizacija.

Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

NrmMyth
Ivan Maček
Split

Član broj: 63456
Poruke: 849
*.cmu.carnet.hr.

Sajt: www.dump.hr


Profil

icon Re: C++/CLI versus C#14.10.2005. u 21:19 - pre 225 meseci
Koliko sam shvatio C++/CLI ti omogucava prosirenje sa "obicnog" C++ na .NET platformu i jednostavni backward nativnom C++-u. A C# nema taj kompatibilitet sa C++, i ukoliko ti se nadje kriticni dio.
Jesam li dobro razumio.

Slobodno vi nastavite raspravu neometano, ja cu pratiti iz pozadine i "upijati" znanje.
Hvala.
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
*.dyn.optonline.net.



+6 Profil

icon Re: C++/CLI versus C#14.10.2005. u 22:14 - pre 225 meseci
Citat:
mmix: Na stranu native C++ (koji je definitivno i brzi i elegantniji od C#a)


Brži jeste, a elegantni nisu ni jedan ni drugi :) U stvari, ne zna se koji je ružniji.

Citat:
mmix: ali bih voleo da vidim neke primere te famozne C++/CLI optimizacije o kojoj svi pricaju (ukljucujuci i MSov C++ tim), ali za koje niko ne daje primere ili bilo kakvu drugu dokumentaciju sem da je C++/CLI brzi od C# (citiram) "due to some optimizations we can perform in the compiler front-end".


Mislim da sam nešto iscrpniju priču o tome video na nekoj video prezentaciji Herb Sutter-a (link je negde na njegovom blogu). Otprilike je poenta u tome da JIT nema vremena za neke velike optimizacije jer on sam mora da bude jako brz i da je zato fora da se izoptimizuje IL, a jedino C++/CLI kompajler uopšte pokušava da uradi tako nešto.

Što se tiče rezultata koje si ti dobio, ipak se radi o Beta verziji. Sačekaj do 7-og novembra pa proveri ponovo :)

Kao što napomenuh, najviše mi kod C++/CLI jezika prija automatsko generisanje Dispose patterna. Ljudi obično misle da je to trivijalna stvar, a i ja sam tako mislio dok nisam pročitao ovo:

http://www.bluebytesoftware.co...df-5919-4ac7-bc33-20c06ae539ae

E sad, kao što rekoh .NET platforma je usmerena za razvoj biznis i Web aplikacija a optimizacije tog tipa su u takvim uslovima malo bitne.

Tako da ipak verujem da će C++/CLI vladati samo u oblasti Interop-a, mada je i to značajno tržište. Za mainstream .NET programiranje mislim da C# ostaje glavni igrač.

Moje 2 pare dinarske ;)

[Ovu poruku je menjao Dragi Tata dana 14.10.2005. u 23:19 GMT+1]
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
*.dyn.optonline.net.



+6 Profil

icon Re: C++/CLI versus C#14.10.2005. u 22:17 - pre 225 meseci
Citat:
NrmMyth: Koliko sam shvatio C++/CLI ti omogucava prosirenje sa "obicnog" C++ na .NET platformu i jednostavni backward nativnom C++-u. A C# nema taj kompatibilitet sa C++, i ukoliko ti se nadje kriticni dio.
Jesam li dobro razumio.


Dobro si razumeo :)


 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: C++/CLI versus C#

[ Pregleda: 2897 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.