Učebnice programovania

Kit

  • *****
  • 704
    • Zobrazit profil
    • E-mail
Re:Učebnice programovania
« Odpověď #15 kdy: 26. 08. 2019, 15:55:46 »
Na Thinking in Java od Eckela som myslel, len je už žiaľ nedostupná v kníhkupectvách...

Při troše snahy se dá najít a stáhnout v PDF, což je podle mne ještě praktičtější.


Kit

  • *****
  • 704
    • Zobrazit profil
    • E-mail
Re:Učebnice programovania
« Odpověď #16 kdy: 26. 08. 2019, 16:00:55 »
Thinking in Java, eckel?

Četl jsem Myslíme v C++ od stejného autora, jestli se chceš jen naučit programovat, rozhodně nedoporučuju. Obsah obou dílů (asi 1000 stránek)  bez omáčky a filozofování by se snadno vešel do 50-ti stránek textu.
Akorát že ta omáčka a filosofování je ta náročnější část OOP. Samotné sekání tříd je už brnkačka. Ale programátor, co ignoruje tu filosofii okolo, se pro samostatnou práci moc nehodí.

Právě tu filosofickou omáčku považuji za největší přínos této knihy. V podstatě je možné se podle ní naučit OOP i v C#, Pythonu nebo třeba v PHP.

mukel

Re:Učebnice programovania
« Odpověď #17 kdy: 26. 08. 2019, 16:43:16 »
Thinking in Java, eckel?

Četl jsem Myslíme v C++ od stejného autora, jestli se chceš jen naučit programovat, rozhodně nedoporučuju. Obsah obou dílů (asi 1000 stránek)  bez omáčky a filozofování by se snadno vešel do 50-ti stránek textu.
Akorát že ta omáčka a filosofování je ta náročnější část OOP. Samotné sekání tříd je už brnkačka. Ale programátor, co ignoruje tu filosofii okolo, se pro samostatnou práci moc nehodí.

Právě tu filosofickou omáčku považuji za největší přínos této knihy. V podstatě je možné se podle ní naučit OOP i v C#, Pythonu nebo třeba v PHP.


Práveže ja sa chcem naučiť naozaj programovať. Čiže by som zniesol aj tú filozofickú debatu. Chcem si nájsť takú učebnicu, ktorá ma naozaj naučí programovať.

Re:Učebnice programovania
« Odpověď #18 kdy: 26. 08. 2019, 18:17:41 »
Thinking in Java, eckel?

Četl jsem Myslíme v C++ od stejného autora, jestli se chceš jen naučit programovat, rozhodně nedoporučuju. Obsah obou dílů (asi 1000 stránek)  bez omáčky a filozofování by se snadno vešel do 50-ti stránek textu.
Akorát že ta omáčka a filosofování je ta náročnější část OOP. Samotné sekání tříd je už brnkačka. Ale programátor, co ignoruje tu filosofii okolo, se pro samostatnou práci moc nehodí.

Právě tu filosofickou omáčku považuji za největší přínos této knihy. V podstatě je možné se podle ní naučit OOP i v C#, Pythonu nebo třeba v PHP.


Práveže ja sa chcem naučiť naozaj programovať. Čiže by som zniesol aj tú filozofickú debatu. Chcem si nájsť takú učebnicu, ktorá ma naozaj naučí programovať.
To není jen o knihách. Když jsem se učil základy, tak jsem měl jen jednu knihu a o internetu se mi tehdy mohlo jen zdát.

Druhá část je psát programy. Máte něco, co chcete zautomatizovat?
Používáte nějaký program a našel jste v něm chybu? Nahlašte ji autorovi a pokud má volně k dispozici zdrojáky, tak se podívejte, jak ji opravil, nebo mu pošlete návrh na opravu. Už jen tímto se naučíte používat různé nástroje.
git-github, nástroje k překladu zdrojáků a sestavení výsledného programu do balíčku ....

Pokud si chcete zkusit nějaké grafické kreace, tak například
https://processing.org/ je zajímavý způsob jak si hrát
https://natureofcode.com/ je kniha, kde můžete celkem rychle v jazyce  Processing vytvářet třeba gravitační modely ...

třeba https://processing.org/examples/smokeparticlesystem.html

gill

  • ****
  • 270
    • Zobrazit profil
    • E-mail
Re:Učebnice programovania
« Odpověď #19 kdy: 26. 08. 2019, 22:47:46 »
Thinking in Java, eckel?

Četl jsem Myslíme v C++ od stejného autora, jestli se chceš jen naučit programovat, rozhodně nedoporučuju. Obsah obou dílů (asi 1000 stránek)  bez omáčky a filozofování by se snadno vešel do 50-ti stránek textu.
Akorát že ta omáčka a filosofování je ta náročnější část OOP. Samotné sekání tříd je už brnkačka. Ale programátor, co ignoruje tu filosofii okolo, se pro samostatnou práci moc nehodí.
Tak lepit prasokód může :)
Nebo třeba může na nějaké juniorní pozici implementovat detailní návrhy od někoho jiného. To už si musí tazatel rozhodnout sám, jaké má ambice a na co se cítí. Nechtěl jsem házet nálepky, protože takový programátor nemusí být automaticky postrachem okolí.

proč autor detailního návrhu rovnou nenapíše ten kód? Nebylo by to rychlejší?


Re:Učebnice programovania
« Odpověď #20 kdy: 27. 08. 2019, 10:06:17 »
proč autor detailního návrhu rovnou nenapíše ten kód? Nebylo by to rychlejší?
No nebylo. Na papír není třeba házet všechen boilerplate kód, na kterém není nic k vymýšlení. Zrovna Java v tomhle nějak extra úsporná není.

gill

  • ****
  • 270
    • Zobrazit profil
    • E-mail
Re:Učebnice programovania
« Odpověď #21 kdy: 27. 08. 2019, 11:38:27 »
proč autor detailního návrhu rovnou nenapíše ten kód? Nebylo by to rychlejší?
No nebylo. Na papír není třeba házet všechen boilerplate kód, na kterém není nic k vymýšlení. Zrovna Java v tomhle nějak extra úsporná není.

kdyby ten co to vymýšlí, psal rovnou kód, nadbytečný boilerplate by se zredukoval.

Re:Učebnice programovania
« Odpověď #22 kdy: 27. 08. 2019, 17:22:03 »
proč autor detailního návrhu rovnou nenapíše ten kód? Nebylo by to rychlejší?
No nebylo. Na papír není třeba házet všechen boilerplate kód, na kterém není nic k vymýšlení. Zrovna Java v tomhle nějak extra úsporná není.

kdyby ten co to vymýšlí, psal rovnou kód, nadbytečný boilerplate by se zredukoval.
Jo, akorát že +- ve stejném poměru jako ten ostatní kód.
Při návrhu jsou daleko důležitější věci, než minimalizace množství textu. Spousta toho "balastu" tam není nezbytně nutná teď, ale je to investice do budoucna. Vždyť i každé rozhraní, které od sebe odděluje dva moduly, znamená hromadu psaní.

gill

  • ****
  • 270
    • Zobrazit profil
    • E-mail
Re:Učebnice programovania
« Odpověď #23 kdy: 27. 08. 2019, 21:12:48 »
Spousta toho "balastu" tam není nezbytně nutná teď, ale je to investice do budoucna.

https://en.wikipedia.org/wiki/You_aren%27t_gonna_need_it
« Poslední změna: 27. 08. 2019, 21:14:51 od gill »

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Učebnice programovania
« Odpověď #24 kdy: 27. 08. 2019, 22:38:39 »
proč autor detailního návrhu rovnou nenapíše ten kód? Nebylo by to rychlejší?
No nebylo. Na papír není třeba házet všechen boilerplate kód, na kterém není nic k vymýšlení. Zrovna Java v tomhle nějak extra úsporná není.

kdyby ten co to vymýšlí, psal rovnou kód, nadbytečný boilerplate by se zredukoval.
Jo, akorát že +- ve stejném poměru jako ten ostatní kód.
Při návrhu jsou daleko důležitější věci, než minimalizace množství textu. Spousta toho "balastu" tam není nezbytně nutná teď, ale je to investice do budoucna. Vždyť i každé rozhraní, které od sebe odděluje dva moduly, znamená hromadu psaní.
Právě proto jsou nejlepší jazyky s minimem balastu.

Re:Učebnice programovania
« Odpověď #25 kdy: 28. 08. 2019, 12:32:48 »
Spousta toho "balastu" tam není nezbytně nutná teď, ale je to investice do budoucna.

https://en.wikipedia.org/wiki/You_aren%27t_gonna_need_it
YAGNI je přece o nadbytečné funkcionalitě. Ne o tom, že ta požadovaná funkcionalita musí být implementovaná tak minimalisticky, jak to jen jde.
Požadavky se mění nepříjemně často. Takže je rozumné od začátku psát tak, aby pozdější změny tolik nebolely. A všechny ty návrhové vzory a další osvědčené praktiky prostě znamenají kód navíc.

Kit

  • *****
  • 704
    • Zobrazit profil
    • E-mail
Re:Učebnice programovania
« Odpověď #26 kdy: 28. 08. 2019, 13:37:37 »
YAGNI je přece o nadbytečné funkcionalitě. Ne o tom, že ta požadovaná funkcionalita musí být implementovaná tak minimalisticky, jak to jen jde.
Požadavky se mění nepříjemně často. Takže je rozumné od začátku psát tak, aby pozdější změny tolik nebolely. A všechny ty návrhové vzory a další osvědčené praktiky prostě znamenají kód navíc.

Návrhové vzory naopak zkracují kód. Stačí vybrat ten správný.

gill

  • ****
  • 270
    • Zobrazit profil
    • E-mail
Re:Učebnice programovania
« Odpověď #27 kdy: 28. 08. 2019, 13:50:18 »
YAGNI je přece o nadbytečné funkcionalitě. Ne o tom, že ta požadovaná funkcionalita musí být implementovaná tak minimalisticky, jak to jen jde.
podle wikipedie je autorem té zkratky Ron Jeffries.

mimo jiné citují tento zdroj https://ronjeffries.com/xprog/articles/practices/pracnotneed/ , kde se píše

Citace
You find that you need a getter for some instance variable. Fine, write it. Don’t write the setter because “we’re going to need it”. Don’t write getters for other instance variables because “we’re going to need them”.

Ne o tom, že ta požadovaná funkcionalita musí být implementovaná tak minimalisticky, jak to jen jde.
v tom článku na wikipedii se přímo píše
Citace
YAGNI is a principle behind the XP practice of "do the simplest thing that could possibly work" (DTSTTCPW).

A všechny ty návrhové vzory a další osvědčené praktiky prostě znamenají kód navíc.

je sporné, jestli jsou osvědčené
« Poslední změna: 28. 08. 2019, 13:55:57 od gill »

Kit

  • *****
  • 704
    • Zobrazit profil
    • E-mail
Re:Učebnice programovania
« Odpověď #28 kdy: 28. 08. 2019, 15:12:30 »
A všechny ty návrhové vzory a další osvědčené praktiky prostě znamenají kód navíc.
je sporné, jestli jsou osvědčené

Osvědčené jsou. Jen se často stává, že někdo vybere vzor, který se pro požadovaný účel nehodí a dělá tak návrhovým vzorům ostudu.

Re:Učebnice programovania
« Odpověď #29 kdy: 28. 08. 2019, 16:24:58 »
mimo jiné citují tento zdroj https://ronjeffries.com/xprog/articles/practices/pracnotneed/ , kde se píše

Citace
You find that you need a getter for some instance variable. Fine, write it. Don’t write the setter because “we’re going to need it”. Don’t write getters for other instance variables because “we’re going to need them”.
Tak k téhle citaci mám dost zásadní výhrady. Asi tuším, co chtěl autor říct, ale řekl to IMO dost extrémním způsobem.

Účelem getterů a setterů není samotný přístup k členským proměnným. Jejich účelem je aby zvenku nebylo poznat, jestli nějaká taková proměnná vůbec existuje.

Třída není jenom náhodný shluk proměnných a funkcí. Je to balík, který je úzce provázaný dohromady. Pokud má ten balík nějakou vlastnost, kterou dává smysl číst zvenku, pak dostane getter. Pokud má tuhle vlastnost smysl z venku i měnit, pak dostane i setter. Jestli té vlastnosti odpovídá nějaká proměnná je úplně jedno. U takhle psaných tříd je samotná existence setteru užitečná dokumentace. Rozhodně užitečnější, než existence nějaké podobně pojmenovaného membra. Odhadovat, jestli nějaká metoda chybí protože není rozumné danou proměnnou měnit jen tak, nebo to jenom zatím nebylo potřeba, nemusí být až taková sranda.

Souhlasím s tím, že není dobré psát zbytečný kód. S čím nesouhlasím je granularita. Ono co vlastně je nebo není potřeba není samotný getter nebo jedna třída. Potřeba je nějaká funkce celého systému.