Zdravím, i přesto, že je tu portál plný návodů na C#, chtěl bych se
zeptat, jestli někdo (kdo čtete) nemáte tip na dobrou knihu pro
začátečníky ? Která by pomohla v studiu, rád bych si něco i přečestl,
co je v papírové podobě, jestli rozumíte, samozřejmně i s články zde
. Pokud někdo víte o
dobré, poraďte je jich mnoho, takže nevím co přesně si půjčit
A bude to mít velký vliv 2010 a 2012? Přeci jen studio má z 85% stejné
funkce a jsou tam jen přidělané vychytávky a něco navíc. Já právě
používám Visual 2012
Jasně, právě proto se ptám na celou vazbu (knihu), kde je to pohromadě,
abych OOP pořádně pochopil. Zde nevím proč, pořádně to nepobírám, bude
chyba někde ve mě Tak
hledám jinde i a kompletní niha by byla asi dobrý přínos
Zasekl jsem se u OOP, to se mi stalo taky, ale jelikož dělám Javu, sáhl
jsem po Pecinovském a jeho knize Myslíme objektově v jazyku Java, v úvodu
jsem však zjistil, že učí OOP a ne Javu - tu pouze využívá k naučení
toho OOP, tak ho zkus, mezi C# a Javou zas tolik rozdílů není a to OPP se
naučíš - já už ho docela chápu jenom díky němu
Nejsem si úplně jistý, že je dobrý nápad učit někoho nejdřív OOP a
pak až nějaký jazyk. Nemůže si to vyzkoušet a opravdu pochopit a ta
spousta teorie před tím, než něco opravdu naprogramuje člověka spíš
znechutí.
Vím, jak bylo pro mne obtížné naučit se OOP. A to jenom proto, že jsem
příliš dlouho používal imperativní styl. Pak to bylo jako přepnutí:
Najednou jsem věděl, jak na to a jak jsou ty různé návody na OOP chybné ve
své podstatě. A to jenom proto, že jsou ve svých myslích stále vězněni
imperativním stylem.
IMHO je to správné tak, jak jsi se to naučil. Problém je jen v tom, že
jsi imperativně psal moc dlouho a nevěděl jsi, že je to jen mezikrok. Po
přečtení pecinovského víš, že třída je jako tvar a instance jako
kosočtverec a že uděláš stromeček, ale nenaprogramuješ sám nic
Kdybys tušil, kolikrát jsem musel zbořit základy toho, co jsem už
znal... Zkusil jsi někdy Prolog nebo Lisp? A co XSLT? S imperativním stylem
jsi v těchto jazycích zcela mimo a neuděláš v nich vůbec nic.
Avšak vždy to bylo programování. Chápal jsi, jak to tam funguje, jen jsi
se přizpůsoboval jinému jazyku. Vždy jsi měl k dispozici ty stejné zdroje,
pouze jsi je jinak používal. Algoritmizace je vždy také stejná. V tom je
ten rozdíl. Programovat se učíš jen jednou od začátku. Pak už je to jen
určitý mezikrok při přechodu. Samozřejmě, že OOP je úplně jiný styl
vymýšlení programu, ale jednoduše interpretativní programování je základ
bez těch věcí okolo. Nevím, k čemu ti bude návrh tříd bez toho, aniž by
jsi uměl jednoduchou algoritmizaci. Pokud samozřejmě nebudeš využívat
pouze možností jazyka. Ale to už (alespoň pro mně) nejsi pravý
programátor.
Právě proto se mi Pecinovský nelíbí, abys mohl použít OOP, musíš
umět programovat. On to vysvětluje na nekonkrétních věcech, kde je
neúplná implementace. Samozřejmě to jinak nejde, ale když na to jde
člověk opačně a učí procedurální základ a pak přejde na OOP, je to
plynulé.
Jenže v OOP je algoritmizace podružná. Nepotřebuješ podmínky ani cykly
na to, abys popsal realitu. Při nepochopení podstaty OOP se často píší
konstruktory tam, kde jsou zbytečné a naopak chybí tam, kde jsou potřebné.
A to i tady na Devbooku.
Tak to ti nezávidím tvá omezení. Jako programátor máš algoritmy
vymýšlet... Ne jen používat daný jazyk. Jsi poté příliš vázaný na
daný jazyk a nedostaneš nikdy nic víc. To si mám stahovat knihovny třetích
stran, vázat se na ně...? OOP je sice pěkné, nerad píši bez něj, ale
nedržel bych se ho tak striktně. Původní myšlenka OOP byla pohlížet
nejdříve na data a až poté na algoritmy. Tím se mělo přiblížit k
realitě. Ne tím, že tě omezuje na "realitu vytvořenou programátory před
námi". Nikam bychom se pak neposunuli. Navíc tak můžeš porušit
architekturu... A zbytečné používání objektů navíc...
Nepochopil jsi mě. Nestahuji knihovny třetích stran. Jen výjimečně,
pokud musím dodržen nějaký formát dat, např. Markdown nebo XML a usoudím,
že je zbytečné vynalézat kolo. A můj odpor k uznávaným frameworkům je
snad známý.
Nevím jak u tebe, ale u mě nestačí napsat do třídy název funkce, aby
něco dělala.
Musím ji obvykle naplnit nějakým algoritmem, aby se něco
dělo.
Je hezké že si načmáráš model reality, ale když ho nebudeš moct bez
algoritmů uvést do praxe, tak ti bude k čemu? To už radši znát algoritmy a
neznát OOP než obráceně.
Pro mě je důležitá algoritmizace a podružné je OOP.
OOP používám ke zpřehlednění programu, kód rozčleněný do funkcí a
tříd je mnohem přehlednější a příjemnější než neobjektový, ale
funkční program napíšeš i bez OOP.
Co uděláš se znalostí OOP, bez znalosti algoritmizace?
Přesně tak. I bez znalostí OOP dokázali programátoři vymyslet úžasné
věci. Ale bez algoritmizace to asi moc nepůjde. Vždyť samotná algoritmizace
je dost přibližitelná realitě. Pouze je moc rozkouskovaná. Algoritmem je i
to, že jdu na záchod...
"Dřív jsem se na OOP díval s podobným despektem. Také jsem používal
statické třídy a statické metody. Zřejmě si tím musí projít každý
programátor."
Ego++?
Na OOP se nedívám s despektem, to jen ty ho považuješ za svatý grál
.
Statické třídy a metody používám tam, kde je to pohodlné, nejsem
masochista, abych si referenci na třeba logovací třídu předával po celé
aplikaci, ale jinak samozřejmě používám většinou nestatické třídy.
V C++ nic většího než maximálně pár funkcí neprogramuji, C# je pro
mě pohodlnější.
A OOP používám hlavně v C#, čímž se už 5 let úspěšně živím (4
roky vývoj hry sponzorované z dotací EU), teď v jiné firmě rok weby v
ASP.NET / desktop aplikace ve WinForms.
Ještě něco chceš k mému názoru na OOP vědět?
Čím se třeba živíš ty, když jsi tak sečtělý a víš všechno
nejlépe?
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.