NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 5 - Referenční a hodnotové datové typy

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Lukáš Hruda
Tvůrce
Avatar
Lukáš Hruda:17.10.2012 21:21

Ne že bych se chtěl učit C# ale kdyby jo tak z tohohle by to určitě šlo, tutorial hodně dobře napsanej řekl bych... ;) Ale jednu věc bych chtěl podotknout. Píšes tu že reference v C# je jako pointer v C++ a s referncí v C++ nemá nic společnýho... to imho neni pravda, reference v C++ funguje do jistý míry stejně jako v C#, je to odkaz na určitou proměnnou nebo objekt, rozdíl je jenom v tom že v C++ určuješ na co se odkazuje jenom v inicializaci později to už nejde, pak můžeš měnit už jenom to na co se odkazuje. Pointer je na druhou stranu v podstatě obyčejná proměnná, jenom v sobě nemá obyčejnou hodnotu ale adresu v paměti. Na tej adrese může bejt cokoliv, nemusí to vůbec bejt platná proměnná nebo objekt, pointer typu int* může klidně držet adresu proměnný typu double nebo char, stejně tak může mít v sobě adresu na který nejsou žádný platný data. S C# referncí má pointer společný jenom to že můžeš kdykoliv změnit na co ukazuje.
Navíc nechápu co všichni máte proti pointerům :D ...pointer je fajn věc a správa paměti přes ně podle mě neni zase takovej problém, stačí si dávat pozor a nemít v kódu bordel :D Nebo je dobrý si třeba pro pole napsat třídu (nebo spíš šablonu třídy), u ní pořešit správu paměti a pak jenom používat...
Ale jinak tutorial dobrej, očividně máš C# rád, to je tvoje věc :)

 
Odpovědět
17.10.2012 21:21
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Lukáš Hruda
Kit:17.10.2012 21:53

Pokud programovací jazyk patří mezi vyšší programovací jazyky, nezná pojem "pointer". Vždy se jedná o odkaz na objekt. Na první pohled je to stejné, ale o správu se stará interní údržba.

Odpovědět
17.10.2012 21:53
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Kit
Lukáš Hruda:17.10.2012 22:05

Pokud vim tak v C/C++ se tomu pointer říká normálně a C# pointery nemá.

 
Odpovědět
17.10.2012 22:05
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Lukáš Hruda
Kit:17.10.2012 22:13

Proto se C# počítá mezi vyšší programovací jazyky.

Odpovědět
17.10.2012 22:13
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Kit
Lukáš Hruda:17.10.2012 22:29

A já sem v tom prvním komentáři neříkal nic o pointerech v C# :) Rozdělení na nižší a vyšší jazyky je dost relativní jelikož mi přijde že to každej rozděluje jinak. Podle někoho je C/C++ vyšší, podle někoho nižší a podle někoho něco mezi. Nevim jestli existuje nějaký oficiální rozdělení ale já za nižší programovací jazyky vždycky považoval jenom Assembler a Strojovej kód, takže bych řek že i C++ je vyšší ale těžko říct, nepřijde mi to podstatný...

 
Odpovědět
17.10.2012 22:29
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Lukáš Hruda
Kit:17.10.2012 22:50

Jazyk C je vlastně jen nadstavbou Assembleru a proto se počítá mezi jazyky nižší úrovně. C++ na tom není ohledně správy paměti o mnoho lépe a proto se považuje za "něco mezi".

Rozdělení mezi nižší a vyšší se často dělá podle toho, zda se programátor musí starat o správu operační paměti nebo ne. Podle této kategorizace bych C# zařadil mezi "vyšší střední" zejména kvůli nedořešeným destruktorům.

Odpovědět
17.10.2012 22:50
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Lukáš Hruda
Tvůrce
Avatar
Lukáš Hruda:17.10.2012 22:59

Nás ve škole učili a četl jsem to i na některých nezávyslích webech (nemám na mysli wikipedii), že nižší jazyky jsou ty ve kterých musí programátor psát každou instrukci vykonávanou procesorem a program napsanej v takovym jazyku neni spustitelnej na jinym procesoru. Kromě assembleru a storojovýho kódu žádnej jinej takovej jazyk neznam. Podle tohohle beru C i C++ a vlastně všechno krom ASM a strojovýho kódu jako vyšší jazyk... ale jak řikam, nevim podle čeho se to dělí oficiálně.

Editováno 17.10.2012 23:00
 
Odpovědět
17.10.2012 22:59
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Lukáš Hruda
Kit:17.10.2012 23:10

Hranice se posunují. Jazyk C byl kdysi považován za vysokoúrovňový (vyšší úroveň abstrakce), dnes je považován za nízkoúrovňový, protože se sám nedokáže postarat o správu paměti v požadované míře. C++ je na tom o něco lépe, ale právě existence pointerů sráží jeho hodnotu na nižší úroveň.

Dnešní jazyky nesmí programátora vůbec zatěžovat správou paměti, musí to dělat ve vlastní režii.

Odpovědět
17.10.2012 23:10
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Kit
Lukáš Hruda:17.10.2012 23:31

Já osobně se správou paměti nějak problémy nemívam a C++ mi vyhovuje. Každopádně tohle už nemá moc společnýho s tím co sem psal původně a víc sem ani psát nechtěl.

 
Odpovědět
17.10.2012 23:31
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Lukáš Hruda
David Hartinger:18.10.2012 6:30

Problémy s tím jsou a velké, to je důvod, proč vznikly řízené jazyky :) Ale nebudeme to rozmazávat, díky za komentář.

Odpovědět
18.10.2012 6:30
New kid back on the block with a R.I.P
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 54.