Zarábaj až 6 000 € mesačne! Akreditované rekvalifikačné kurzy od 0 €. Viac informácií.
Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.

Diskusia – 4. diel - Referenčné a hodnotové dátové typy

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
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 :)

 
Odpovedať
17.10.2012 21:21
Avatar
Kit
Tvůrce
Avatar
Odpovedá 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.

Odpovedať
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
Odpovedá 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á.

 
Odpovedať
17.10.2012 22:05
Avatar
Kit
Tvůrce
Avatar
Odpovedá na Lukáš Hruda
Kit:17.10.2012 22:13

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

Odpovedať
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
Odpovedá 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ý...

 
Odpovedať
17.10.2012 22:29
Avatar
Kit
Tvůrce
Avatar
Odpovedá 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.

Odpovedať
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ě.

Editované 17.10.2012 23:00
 
Odpovedať
17.10.2012 22:59
Avatar
Kit
Tvůrce
Avatar
Odpovedá 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.

Odpovedať
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
Odpovedá 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.

 
Odpovedať
17.10.2012 23:31
Avatar
David Hartinger
Vlastník
Avatar
Odpovedá 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ář.

Odpovedať
18.10.2012 6:30
New kid back on the block with a R.I.P
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zatiaľ nikto nevložil komentár - buď prvý!