.[ ČeskéHry.cz ].
C# sux (hlavně v Plzni)
Jdi na stránku 1, 2, 3  Další
 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Popelnice
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
Augi



Založen: 28. 07. 2007
Příspěvky: 782
Bydliště: Čerčany

PříspěvekZaslal: 29. říjen 2010, 17:05:47    Předmět: Odpovědět s citátem

VladR napsal:
(btw, C# sucks !).
Můžu se zeptat proč?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
ondy1985



Založen: 28. 07. 2007
Příspěvky: 361

PříspěvekZaslal: 29. říjen 2010, 17:31:58    Předmět: Odpovědět s citátem

Augi, sa ti zdalo, ze flame uz vyhasinal? Very Happy
_________________
Whack it! - nová hra pre Android na štýl Whac-a-mole
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Augi



Založen: 28. 07. 2007
Příspěvky: 782
Bydliště: Čerčany

PříspěvekZaslal: 29. říjen 2010, 18:24:03    Předmět: Odpovědět s citátem

Very Happy Ne - mě fakt zajímají důvody, proč C# suxuje - ani si nevzpomínám, jestli jsem tenhle názor vůbec někdy slyšel Wink
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 29. říjen 2010, 18:47:08    Předmět: Odpovědět s citátem

Že C# sux se říkat nemusí, protože to všichni dávno ví. Twisted Evil
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
VladR



Založen: 30. 07. 2007
Příspěvky: 1322
Bydliště: Greater New York City Area

PříspěvekZaslal: 29. říjen 2010, 19:12:46    Předmět: Odpovědět s citátem

Na bezne aplikacie je urcite vyborny - nemusis riesit dealokaciu (takze je super pohodlny) a generika maju hodne do seba (uz len tym ze su v specifikacii jazyka a nie nejakych zabugovanych obskurnych opensource knizniciach).

Ale na 3d hry ? Garbage Collector cloveka nuti pisat prasacky kod, pod ktory by sa inak nepodpisal. Este aj MS evangelisti to doporucuju - bol som pred tyzdnom v Chicagu na MS dev release WP7 a jeden z evangelistov mi to potvrdil - zaalokuj secko pri loade a nieze budes nieco alokovat pocas runtimu - ked hra exitne, GC sa uz o to postara. Ak toto nie je WTF, tak uz neviem co...

To na toto bolo treba C# pod XNA ? Aby som kodil ako na PS2ke ? Ved to rovno mozem spravit vlastny mem alokator, ako na konzole (v ramci huge byte array).

Vlastne nemozem, lebo to je unsafe kod a ten neprejde validaciou, takze som v prdeli tak ci onak.

Ohladom elementarnych featur jazyka mam tiez zopar zasadnych vytok (napr. taka dvojna alokacia poli, alebo trebars taky struct), ale nemam zatial chut zistovat, ze preco sa dizajneri jazyka vydali danym smerom. Prd s tym aj tak spravim.
Raz, az sa budem nudit si mozno kupim knihu, kde bude vysvetlene, ze preco dana featura bola dizajnovana tak ako bola.


Dovtedy sa musim zmierim s tym, ze aj ked engine prepisujem de facto od nuly (zacinam od rendereru - vertex buffrov), ani omylom ho nemozem nadizajnovat tak cisto, ako by som si prial, aj ked je okolo C# nenormalny humbuk, jak uzasne masakralny je to jazyk.

Zhodou okolnosti som mal v praci par dni dozadu moznost rozchadzat jeden starsi projekt pod C# - nechapal som, ako moze byt vacsi problem rozchodit kod do kompilovatelnej podoby (na cistom kompe, kde predtym ten soft nebol developovany) ako pri projektoch podobnej velkosti pod C++. Toto bola casto hlavna vytka vsetkych C# koderov, co som zatial stretol, vratane ludi co pod nicim inym ani nerobili - ze ten projekt aj po 3 rokoch otvorim v novom visualku a pojde. Kdeze, clovek to musi kvoli dependencies retargetovat na stary .NET.

Toto je ta uzasna spatna plna kompatibilita ? Ved to je rovnake peklo, ako pri C++, tiez Visualko za mna nezisti poradie kompilacie subprojektov.
Z tohto hladiska .NET nevyriesil nic. Ak clovek nema presne popisane poradie kompilovania subprojektov bokom na papieri, ako v roku pana 1979, tak vela stastia.
Som azda cakal prilis vela, ze toto bude trocha lepsie vyriesene ?

V sucasnej podobe je to len nieco ako build script viazany na klavesu F6, cize opat ziadna vyhra.


Rozmyslam, ci tie C++ mem leaky boli az tak strasne peklo ? Ved aj pod C# dostanem exception, ak nespravne pristupujem do pamate (akurat je garantovana).

Nacitavanie dat zo suboru je kapitola sama o sebe - nacitavanie po polozkach dat. struktury je tazke zverstvo. Iste, viem to obist, ale ten kod v zivote nepublishnem, mozem si ho akurat tak pustat u seba doma.

Subjektivny dojem (ako nooba este len zacinajuceho s C#) - zviazali mi ruky, oci, zobrali monitor ale pis kod...

Cakal som od C# viac, takto je to len trocha upgradnuty BASIC...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
VladR



Založen: 30. 07. 2007
Příspěvky: 1322
Bydliště: Greater New York City Area

PříspěvekZaslal: 29. říjen 2010, 19:27:47    Předmět: Odpovědět s citátem

Augi napsal:
Very Happy Ne - mě fakt zajímají důvody, proč C# suxuje - ani si nevzpomínám, jestli jsem tenhle názor vůbec někdy slyšel Wink
Kolko ludi si stretol, ktori ak im ich teren renderer fici na 1500 fps, tak picuju jak chora vrana, ze je to pomale a daju si tu namahu to cele prepisat tak, aby to slo aj na vyse 3000 fps ?

Ja chcem kodit tak, aby to bezalo na doraz. To v C# nespravim, ani ked sa poskladam kvoli tomu ako run-time pristupuje do pamate.



Teraz by som rad pocul odpoved od niekoho, kto v C# kodi par rokov a vie mi povedat, ci si viem v run-time vypnut bounds checking pri pristupe do poli, resp. akekolvek ine zvratene kontroly run-time pri pristupe do pamate robi. Proste nech je to len bezny pristup do RAMky podliehajuci cachovaniu poplatnemu CPU na kerom to bezi.


Za dalsie - pod C# som s SSE nahraty. Co mam teraz robit s tym kodom, kde som sa vyhral s tym, aby cache sla na doraz a data som spracoval s min. poctom instrukcii a pristupov do mapate ?!? Ved to pod C# pojde tak 10 razy pomalsie !?! Prd mi pomoze, ze CLR sa pokusi vygenerovat nejaky amatersky SIMD kod.

CLR ani netusi, ze si niekto mozno uz tu namahu dal a cez Intelacky kompiler a toolset si dal tu pracu, aby to vysperkoval a ficalo to na doraz. Ale pod C# smola....
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Deluxe



Založen: 31. 07. 2007
Příspěvky: 235
Bydliště: Oslavany

PříspěvekZaslal: 29. říjen 2010, 19:33:35    Předmět: Odpovědět s citátem

citace:
zviazali mi ruky, oci, zobrali monitor ale pis kod...

Jo, tak nejak to na mne pusobilo taky (zacinal sem na C#, ale ted mam na vetsinu veci radeji C++)...
Clovek aby si napsal aplikaci v C++ nebo C++/CLI, jako knihovnu a pak jen dopsal rekneme UI v C#...
Proste C# je na low-level veci nevhodnej, ale zase takovej ASP.NET ma neco do sebe...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Augi



Založen: 28. 07. 2007
Příspěvky: 782
Bydliště: Čerčany

PříspěvekZaslal: 29. říjen 2010, 19:44:49    Předmět: Odpovědět s citátem

VladR napsal:
Ale na 3d hry ? Garbage Collector cloveka nuti pisat prasacky kod, pod ktory by sa inak nepodpisal.
Ah, já to myslel právě jako jazyk pro běžné aplikace, ne hry - u hi-performance hry bych taky sáhl po nativním kódu Wink

VladR napsal:
aj ked je okolo C# nenormalny humbuk, jak uzasne masakralny je to jazyk.
Pro běžné aplikace je Smile

VladR napsal:
Zhodou okolnosti som mal v praci par dni dozadu moznost rozchadzat jeden starsi projekt pod C# - nechapal som, ako moze byt vacsi problem rozchodit kod do kompilovatelnej podoby (na cistom kompe, kde predtym ten soft nebol developovany) ako pri projektoch podobnej velkosti pod C++. Toto bola casto hlavna vytka vsetkych C# koderov, co som zatial stretol, vratane ludi co pod nicim inym ani nerobili - ze ten projekt aj po 3 rokoch otvorim v novom visualku a pojde. Kdeze, clovek to musi kvoli dependencies retargetovat na stary .NET.

Toto je ta uzasna spatna plna kompatibilita ? Ved to je rovnake peklo, ako pri C++, tiez Visualko za mna nezisti poradie kompilacie subprojektov.
Z tohto hladiska .NET nevyriesil nic. Ak clovek nema presne popisane poradie kompilovania subprojektov bokom na papieri, ako v roku pana 1979, tak vela stastia.
Som azda cakal prilis vela, ze toto bude trocha lepsie vyriesene ?
Huh, není tohle spíš o kvalitě lidí, kteří na daném projektu pracují? Pokud je C++ projekt kvalitně připraven, tak s ním není žádný problém. Příkladem budiž moje hlavní pracovní solution, které obsahuje asi 10 nativních projektů a 70+ projektů v C#, které neměl problém zkompilovat nový kolega...

VladR napsal:
Subjektivny dojem (ako nooba este len zacinajuceho s C#) - zviazali mi ruky, oci, zobrali monitor ale pis kod...
No, on právě člověk sílu C#, potažmo .NETu, pozná, až do něj skutečně pořádně pronikne - to si pak uvědomí jeho přednosti a slabiny. Zrovna GC je u běžných aplikací výhoda, u her spíše slabina...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Augi



Založen: 28. 07. 2007
Příspěvky: 782
Bydliště: Čerčany

PříspěvekZaslal: 29. říjen 2010, 19:51:17    Předmět: Odpovědět s citátem

VladR napsal:
Ja chcem kodit tak, aby to bezalo na doraz. To v C# nespravim, ani ked sa poskladam kvoli tomu ako run-time pristupuje do pamate.
Ale na toto nebyl NIKDY C#, potažmo .NET, určen! Každý, kdo C#/.NET trošku zná, by Ti řekl, že pokud chceš jít s výkonem na doraz, je to špatná volba - pak je lepší jít do C/C++/asm.

VladR napsal:
Teraz by som rad pocul odpoved od niekoho, kto v C# kodi par rokov a vie mi povedat, ci si viem v run-time vypnut bounds checking pri pristupe do poli, resp. akekolvek ine zvratene kontroly run-time pri pristupe do pamate robi. Proste nech je to len bezny pristup do RAMky podliehajuci cachovaniu poplatnemu CPU na kerom to bezi.
Můžeš to udělat pomocí unsafe a fixed.

Ale jak jsem psal - pokud chceš psát hi-performance aplikace, pak na .NET zapomeň. Přesně jak psal Deluxe...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
VladR



Založen: 30. 07. 2007
Příspěvky: 1322
Bydliště: Greater New York City Area

PříspěvekZaslal: 29. říjen 2010, 19:59:43    Předmět: Odpovědět s citátem

Augi napsal:
Ale na toto nebyl NIKDY C#, potažmo .NET, určen! Každý, kdo C#/.NET trošku zná, by Ti řekl, že pokud chceš jít s výkonem na doraz, je to špatná volba - pak je lepší jít do C/C++/asm.
Lenze to je ten presne pruser ! Temer tretinu produktivneho zivota som stravil pisanim enginu a hier a teraz su mi na prd, lebo:
1. XBLIG - XNA / C#
2. WP7 - XNA / C#

Cize, MS cloveka nanuti, lebo mu inu moznost neda. Ak chcem ist na tie platformy, tak inu moznost ako XNA nemam. A XNA automaticky evokuje C#.
Iste, na PC viem XNA targetnut aj voci C++. Ale preco by som preboha na PC platforme robil taku hovadinu, ked uz aj tak vsetok kod pod C++ a DirectX mam ? XNA nie je v nicom zazracne, skor cloveka obmedzuje (aj ked zdaleka nie tak drasticky ako C# voci C++ na low-level urovni).

Augi napsal:
Můžeš to udělat pomocí unsafe a fixed.
Ale to je unsafe kod - to neprejde cez MS - taky kod ti nepublishnu.
To ide spravit len na PC, ale kvoli PC clovek XNA predsa neriesi - tam mam C++ a DirectX.


Cim dalej, tym viac mi zacina byt jasne, ze tie dristy o vykone XNA a C# su len dristy, lebo pokial nepouzijem SSE intrinsics a kazdym pristupom do RAMky sa runtime bude krutit kol kazdeho policka pola, tak to zbohom performance...

To uz nehovorim o tom, ze na WP7 nie su mozne lubovolne shadery - su len preddefinovane - 5 kusov efektov, ktore sa daju pouzit - mozem zabudnut na efekty...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 29. říjen 2010, 20:29:17    Předmět: Odpovědět s citátem

VladR napsal:
Rozmyslam, ci tie C++ mem leaky boli az tak strasne peklo ?


Mem leaky nejsou vůbec nevýhoda, vždyť se dají tak snadno detekovat! V malloc dáš count++ a ve free count-- a na konci programu víš, žes něco neuvolnil. Mnohem horší jsou resource leaky, na který žádný garbage collector nepomůže. Resource leak je třeba neuvolněný vertex buffer, neuzavřený soubor, neuvolněný mutex apod. Všechno se dá řešit destruktorem, kterej se v .NETu nepoužívá, protože se za určitých okolností nemusí zavolat. Tak co je teda lepší?
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
OndraSej



Založen: 28. 07. 2007
Příspěvky: 767
Bydliště: Brandýs nad Labem

PříspěvekZaslal: 29. říjen 2010, 21:04:36    Předmět: Odpovědět s citátem

eosie> na uvolnovani resources je v C#/.NET interface IDisposable s metodou Dispose, ktera supluje destruktor, ktery je potreba zavolat (napr. pro uvolneni resources).
Volat si ho muzes bud sam (podobne jako delete/free v C++), nebo pouzit konstrukci using(obj) { ... }. obj je objekt, ktery implementuje IDisposable a tahle konstrukce ohlida, ze se na obj zavola dispose ve chvili, kdy program opusti blok kodu ve slozenych zavorkach (at uz dojde do konce, skonci na return, vyjimkou...).
_________________
http://trionteam.net
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Augi



Založen: 28. 07. 2007
Příspěvky: 782
Bydliště: Čerčany

PříspěvekZaslal: 29. říjen 2010, 22:12:12    Předmět: Odpovědět s citátem

VladR napsal:
Augi napsal:
Ale na toto nebyl NIKDY C#, potažmo .NET, určen! Každý, kdo C#/.NET trošku zná, by Ti řekl, že pokud chceš jít s výkonem na doraz, je to špatná volba - pak je lepší jít do C/C++/asm.
Lenze to je ten presne pruser ! Temer tretinu produktivneho zivota som stravil pisanim enginu a hier a teraz su mi na prd, lebo:
1. XBLIG - XNA / C#
2. WP7 - XNA / C#

Cize, MS cloveka nanuti, lebo mu inu moznost neda. Ak chcem ist na tie platformy, tak inu moznost ako XNA nemam. A XNA automaticky evokuje C#.
Iste, na PC viem XNA targetnut aj voci C++. Ale preco by som preboha na PC platforme robil taku hovadinu, ked uz aj tak vsetok kod pod C++ a DirectX mam ? XNA nie je v nicom zazracne, skor cloveka obmedzuje (aj ked zdaleka nie tak drasticky ako C# voci C++ na low-level urovni).
No opět zde narážíme na to, že nevíš, na co je daná věc cílená. XNA určené jen na "jednoduché" casual hry, do jisté míry pro hobby vývojáře. Rozhodně to NIKDY nebylo myšleno jako platforma pro AAA hi-performance tituly.
Btw. ze začátku se mluvilo o tom, že by XNA poskytovalo i fyzikální API (aby nebylo nutné implementovat fyziku v managed kódu), ale z toho bohužel sešlo Sad

VladR napsal:
Cim dalej, tym viac mi zacina byt jasne, ze tie dristy o vykone XNA a C# su len dristy, lebo pokial nepouzijem SSE intrinsics a kazdym pristupom do RAMky sa runtime bude krutit kol kazdeho policka pola, tak to zbohom performance...
Je myslím logické, že čím více vrstev, tím větší pohodlí (v tom lepším případě) a tím nižší výkon (když to dobře dopadne, tak ne o tolik).
To je jako by jsi se vztekal, že když píšeš v ASM, tak je to mnohem pomalejší, než když si navrhneš vlastní HW pro daný účel.

Prostě za pohodlnost se platí a ne vždy (chápu, že pro Tebe jako herního vývojáře to může být těžko pochopitelné) je výkon tím hlavním kritériem. Ve většině business aplikací je měřítkem kvality spíše stabilita, odolnost vůči lidským (většina programátorů jsou lidé - zdravím Ladise Wink) chybám nebo náklady na vývoj. A tam imho C#/.NET válí.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 30. říjen 2010, 19:55:42    Předmět: Odpovědět s citátem

Podle mě by se měl MS víc soustředit na C++ SDK pro WM7 a jiné platformy, protože .NET využití těch platformech pro náročné aplikace de facto zabíjí.

Viděl jsem nějaký reporty o tom, jak lidi optimalizují svoje hry pro iPhone pro to CPU a GPU tam, že přímo používají asm, aby z toho vytěžili maximum výkonu a mohli mít úžasně vypadající produkt i na tom shit hardwaru. Dokážu si představit i ruční správu paměti na tom zařízení. To je absolutně opačný přístup než v případě .NETu, kterej se snaží o maximální pohodlí za cenu totálního zkriplení výkonu.

Strategie MS je mi teď mnohem jasnější:
- Dostat co nejvíc vývojářu na C#/.NET a nakecat jim, jak je to všechno lehčí, aby bylo méně C++ vývojářů.
- Méně C++ vývojářů ==> víc C# vývojářů ==> větší monopol MS ==> oslabení konkurence.
- Cíl: Dostat WM všude. Důsledek: Kvůli .NETu velké množství pomalých a méně kvalitních aplikací ==> méně kvalitní výsledný produkt (u MS klasika).
- Alternativa: Zodpovědný vendor (Apple?) s C++ SDK pro mobily soustředěno na výkon a efektivní využití paměti za cenu větší investice do vývoje aplikací (aspoň nebude všude tolik sraček).

Jestli je XNA pro hobby vývojáře, tak buď lžou, nebo já nejsem hobby vývojář.
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
pcmaster



Založen: 28. 07. 2007
Příspěvky: 1824

PříspěvekZaslal: 30. říjen 2010, 20:04:19    Předmět: Odpovědět s citátem

A ked sme pri tych konspiracnych teoriach, tak by som k tvojmu, Eosie, este dodal zjavne. Mame teda srackove a pomale aplikacie, potrebujeme k tomu co najnovsie pocitace. Donutme ludi kupovat nove kompy co najcastejsie! HW Vendori jasaju a tesia sa. A mozno sa s MS ani nemuseli dohodnut a delit si zisk Smile
Pride vam to nepravdepodobne?
_________________
Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Popelnice Časy uváděny v GMT + 1 hodina
Jdi na stránku 1, 2, 3  Další
Strana 1 z 3

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna