Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
Tringi

Založen: 28. 07. 2007 Příspěvky: 290
|
Zaslal: 16. duben 2012, 18:11:23 Předmět: |
|
|
Já si tak říkám, jestli nebudete v pasti až vám MS opět změní implementaci alokátoru. V každé soudobé verzi Windows zapouzdřuje HeapAlloc minimálně dva alokátory. Ve Windows XP máme Heap a LFA, v sedmičkách LFA a FTH, který vaší aplikaci po několika haváriích systém vnutí automaticky. Taky mohl autor zdokumentovat, které verzi MS C Runtime ta tabulka odpovídá. _________________ WWW | GitHub | TW |
|
Návrat nahoru |
|
 |
Al
Založen: 23. 10. 2007 Příspěvky: 196
|
Zaslal: 16. duben 2012, 21:29:15 Předmět: |
|
|
Tak o Valgrindu jsem nikdy neslyšel. "To za nás nebývalo." Možná by se to hodilo, jak to tak tady sleduju. Jak už jsem psal, jsem trochu "C++ důchodce" , protože jsem to pověsil na hřebíček už dávno předávno, ale někdy se k tomu prostě člověk musí nebo chce vracet. To víte, dělám normálně jen v C# a PHP, tam je správa paměti automatická a nepoužívají se tam pointery, když to není nevyhnutelné. Podle mě nejde o nějakou "akademickou" záležitost, v C# a PHP a podobných věcech podle mě dnes dělá většina lidí, v C++ dnes buší věci jen menší počet expertů.
Díval jsem se do MAME (arcade emulátor), kdysi jsem tam i přispíval a dělalo se to nějak v DJGPP (aneb GCC pro MS-DOS) a bylo to strašně komplikované na překlad i ladění. Překlad toho exe souboru trval přes 30 minut a překladač při tom vždycky párkrát spadl, takže to člověk musel furt hlídat a restartovat, jinak na tom strávil týden. A ladění prakticky nemožné. No a teď na stránce MAME normálně píšou, že by sice rádi dál používali jen GCC, ale že ladění ve Visual Studiu je o tolik lepší... Tak já nevím, jestli MAME team jsou taky "akademici" nebo co...  |
|
Návrat nahoru |
|
 |
Crypton

Založen: 14. 05. 2009 Příspěvky: 306 Bydliště: The Void
|
Zaslal: 16. duben 2012, 22:36:58 Předmět: |
|
|
Al napsal: |
Tak o Valgrindu jsem nikdy neslyšel. "To za nás nebývalo." Možná by se to hodilo, jak to tak tady sleduju. Jak už jsem psal, jsem trochu "C++ důchodce" , protože jsem to pověsil na hřebíček už dávno předávno, ale někdy se k tomu prostě člověk musí nebo chce vracet. To víte, dělám normálně jen v C# a PHP, tam je správa paměti automatická a nepoužívají se tam pointery, když to není nevyhnutelné. |
Valgrind se vyvíjí už od roku 2000, zatím co C# byl uveden až v roce 2002. Takže valgrind v té době existoval, jen si o něm nevěděl.
Al napsal: |
Podle mě nejde o nějakou "akademickou" záležitost, v C# a PHP a podobných věcech podle mě dnes dělá většina lidí, v C++ dnes buší věci jen menší počet expertů.  |
Taky blbost. Nejprve si ty své "tušení" raději někde ověř, než je začneš pokládat za fakta.
Just saying...  _________________
 |
|
Návrat nahoru |
|
 |
rezna
Založen: 27. 07. 2007 Příspěvky: 2156
|
|
Návrat nahoru |
|
 |
Marek

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 17. duben 2012, 00:24:08 Předmět: |
|
|
Al napsal: |
jsem trochu "C++ důchodce" , protože jsem to pověsil na hřebíček už dávno |
Být tebou bych zůstal u tohoto tvrzení a dále to nerozváděl.  _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
 |
Al
Založen: 23. 10. 2007 Příspěvky: 196
|
Zaslal: 17. duben 2012, 19:52:41 Předmět: |
|
|
Jo, díky, pěkná tabulka. Tyhle tabulky jsou ale dost sporné, neschvaluji jejich metodiku výzkumu, která upřednostňuje to, o čem se víc mluví na netu (třeba o Drupalu se daleko víc mluví než o Wordpressu, protože Drupal je složitý a Wordpress umí nakonfigurovat i malé děcko) nicméně nehádám se, protože nic "lepšího" v rukávu teď nemám. Když jsem tyhle věci sledoval před časem a porovnával víc zdrojů, vycházelo tam, že třeba v open source source komunitě je skutečně C a C++ dost zastoupeno, ale třeba když byly žebříčky podle investic do softwaru, tak Java válcovala konkurenci tak, že měla přes 50% absolutně. Ale bylo to asi jen za USA. Microsoft ve svých materiálech pro změnu tvrdil, že u velkých projektů v posledních letech má C# větší podíl než Java. Ovšem kdo důvěřuje vnitřním průzkumům a tabulkám Microsoftu? (řečnická otázka)
Když to teda shrnu, já asi skutečně současný rozmach, dá-li se to tak říct, C/C++ docela podceňuju. Nicméně já se mu snažím vyhýbat. Nevadí mi v tom programovat, ale přece jenom v C# to jde daleko rychleji. Padlo tu taky, že Valgrind (doufám, že jsem to slovo napsal dobře ) je od roku 2000, zatímco C# od 2002. A to není pravda, protože .NET a C# byl venku daleko dřív (moji spolužáci v tom dělali diplomky už od roku 2000) a hlavně je opravdu V E L K Ý rozdíl systémem, který odhaluje chyby v programech, a systémem, kde takové chyby vůbec nemohou nastat. To je prostě jiný level, to se nedá srovnávat. Ale to už se debatovalo mockrát, nechci to zas vytahovat. |
|
Návrat nahoru |
|
 |
Al
Založen: 23. 10. 2007 Příspěvky: 196
|
Zaslal: 17. duben 2012, 20:15:35 Předmět: |
|
|
TeaTime napsal: |
VS moc neznám, nějak jsem na něj zanevřel, tak bych se chtěl ujistit, že chápu o čem přesně mluvíš. VS v debug modu nastavuje při free do proměnné hodnotu 0xfeeefeee a to kvůli tomu, aby se tím dalo odhalit double-free a přistupování mimo alokovanou paměť?
Jak přesně funguje to "možnost to bez restartu měnit"? Jakože ti běží "realtime" aplikace, ty jí pauzneš, změníš nějaký kód, necháš to pokračovat a aplikace najednou běží nad novým kódem?
Jo a chtěl jsem se zeptat jak je to s tím realtimem na Windows. Je k tomu potřeba nějaké speciální vydání Windows nebo jak je náročné zkonfigurovat Windows pro realtime?
|
Ano chápeš to správně, akorát ta magická čísla dává i před a za proměnnou, aby se odhalil špatný přístup za konec/před začátek pole.
To "realtime" je složitější, záleží totiž, jak definuješ realtime. Ono se sice říká, že Windows není systém reálného času, aspoň tak jsme se to učili ve škole, ale v praxi spousta věcí realtimová je i na obyčejným počítači. Nejčastěji pomocí hardwaru. Třeba jsem se setkal s projektem tisku na velkoplošné tiskárně. Tam jde o to cpát data do té tiskárny správnou rychlostí, takže tam se prostě přidala rozšiřující karta do bedny, do které se data cpala rychleji a ta karta to pak správně časuje a je to realtime. Vlastně počítač v počítači - dnes jsou tahle udělátka celkem levná. Kdejaký kus hardwaru potřebuje jet realtime, typicky třeba zvuková karta. Software pro zvukovou kartu nemůže jet jinak než realtime a blbě se ladí protože tam každá ujetá mikrosekunda udělá strašnou paseku. Teď dělám emulátor ZX Spektra do Windows, pedanti jako Tringi by těmto programům asi říkali simulátory, nicméně většinou se tomu říká emulátor. Tam to funguje tak, že teoreticky potřebuju přesnost na nanosekundy, nicméně systém ovlivňuje člověk jedině mačkáním kláves, což má daleko menší časovou náročnost. Takže emulátor se předpočítává dopředu úplně přesně díky tomu, že PC je daleko rychlejší než ZX Spectrum. A dávkuju to předvypočítané po 20 milisekundách, tedy 50 snímků za sekundu, což už Windows stíhá realtime a člově nepozná, že to není realtime doopravdy.
Na průmyslové aplikace by toto samozřejmě nestačilo, neboť to sem tam ujede, protože Windows si prostě rozhodne aktualizovat to nebo ono, antivir něco začně kontrolovat atp. Však jsme na fóru her, takže známe, jak to je s akčními 3D hrami - já je počítám mezi realtime aplikace. A nejen kvůli realtime grafice, taky třeba akční hra po síti je oříšek, když to člověk potřebuje ladit. |
|
Návrat nahoru |
|
 |
Tringi

Založen: 28. 07. 2007 Příspěvky: 290
|
Zaslal: 17. duben 2012, 21:26:02 Předmět: |
|
|
Al napsal: |
Když to teda shrnu, já asi skutečně současný rozmach, dá-li se to tak říct, C/C++ docela podceňuju. Nicméně já se mu snažím vyhýbat. Nevadí mi v tom programovat, ale přece jenom v C# to jde daleko rychleji. |
C# či Javu volíš vyjde-li ti investice do hardware a energie levněji než do času inženýra; C a C++ pak přesně v opačném případě.
Al napsal: |
[...]a hlavně je opravdu V E L K Ý rozdíl systémem, který odhaluje chyby v programech, a systémem, kde takové chyby vůbec nemohou nastat. To je prostě jiný level, to se nedá srovnávat. Ale to už se debatovalo mockrát, nechci to zas vytahovat. |
"[...]So far, the Universe is winning." (Rich Cook)
Al napsal: |
To "realtime" je složitější, záleží totiž, jak definuješ realtime. |
Že je systém realtimový znamená, že musí bezpodmínečně vždy splnit limitní časové parametry. Jak toho dosáhneš je vedlejší.
Pokud musím dvacetkrát do sekundy přesně umístit a povolit rameno s výrobkem, je nepředstavitelné aby mi výrobek spadl o dva metry vedle na dělníka jen proto, že se GC rozhodl zametat. _________________ WWW | GitHub | TW |
|
Návrat nahoru |
|
 |
Marek

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 17. duben 2012, 22:01:46 Předmět: |
|
|
Al napsal: |
hlavně je opravdu V E L K Ý rozdíl systémem, který odhaluje chyby v programech, a systémem, kde takové chyby vůbec nemohou nastat. To je prostě jiný level, to se nedá srovnávat. |
Ale jistě, že chyby nastat můžou v jakémkoliv jazyce. Memory leak je jenom jedna z řady chyb programátora. Když zapomeneš uvolnit texturu, je to leak a GC ti nepomůže. Když neuzavřeš soubor, je to leak a GC ti opět nepomůže. Když zapomeneš odstranit nepotřebný prvek z linked listu, který ale nebudeš potřebovat po zbytek běhu programu a ani běh programu neovlivní, tak to JE memory leak, ale GC ti ho neuvolní, dokud celý ten linked list nebude uvolněný.
Myslet si, že takové chyby nemůžou nastat, bych čekal možná od člověka, co zrovna začal programovat, ale ne od někoho, kdo si myslí, že už má nějakou praxi. _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
 |
micky

Založen: 28. 02. 2008 Příspěvky: 348 Bydliště: Plzeň, Praha
|
Zaslal: 17. duben 2012, 22:07:09 Předmět: |
|
|
Ta tabulka na začátku byla ještě docela zajímavá, hodnot typu 0xcdcdcdcd si člověk při debugu nějak všimne, řekne si, hm, možná to něco znamená, ale já to tam fakt zrovna nechci. Dejme tomu, že někdo sám neodtušil, že to tam Visual C++ při debugu cpe jako default po malloc, tak mu to třeba nějak pomůže (možná).
Teď cítím ve vzduchu pachuť flamewaru a poněkud smutných potřeb obhajovat sebe a své názory... _________________ https://www.bluepulsar.cz/
https://twitter.com/11thDream_Game/ |
|
Návrat nahoru |
|
 |
TeaTime
Založen: 17. 06. 2011 Příspěvky: 264
|
Zaslal: 17. duben 2012, 22:23:58 Předmět: |
|
|
micky napsal: |
Teď cítím ve vzduchu pachuť flamewaru a poněkud smutných potřeb obhajovat sebe a své názory... |
Welcome to CH Nějak se holt domluvit musíme |
|
Návrat nahoru |
|
 |
micky

Založen: 28. 02. 2008 Příspěvky: 348 Bydliště: Plzeň, Praha
|
|
Návrat nahoru |
|
 |
rezna
Založen: 27. 07. 2007 Příspěvky: 2156
|
Zaslal: 22. leden 2013, 00:33:33 Předmět: |
|
|
pro ty kterym chybi valgrind na windows
http://www.drmemory.org/
skoda, ze implementace STL od M$ vykazuje neprijemnou chybovost  |
|
Návrat nahoru |
|
 |
mar
Založen: 16. 06. 2012 Příspěvky: 610
|
Zaslal: 22. leden 2013, 09:12:59 Předmět: |
|
|
rezna napsal: |
pro ty kterym chybi valgrind na windows
http://www.drmemory.org/
skoda, ze implementace STL od M$ vykazuje neprijemnou chybovost  |
Díky!!
Něco takového jsem moc dlouho hledal, Valgrind mi moc chyběl! Škoda, že tohle neumí 64-bit appky, ale to se dá přežít. Hned otestuji, co všechno umí  |
|
Návrat nahoru |
|
 |
|