Knihy na začátek s jazykem Java

mukel

Knihy na začátek s jazykem Java
« kdy: 06. 05. 2022, 14:16:57 »
Ahojte.

Chcel by som sa naucit programovat v Jave. Poradte nejaku knihu, ktora to uci programovat od piky. (Uprednostnujem knihy, kedze som knihomol.) Mam na vyber knihy od pana Pecinovskeho (Zaciname programovat v jazyku Java, OOP, Java 7, Java 8...) a potom knihy od Herberta Schildta. (Java 8, Mistrovstvy v Java)

Pozeral som, ze na martinuse sa da zohnat mierne opotrebovana kniha Myslime v jazyku Java od Eckela. Ma cenu sa Javu ucit z nej ak je na trhu uz dlho a info v nej bude neaktualne?

Ktora kniha ma skutocne nauci programovat? Poradte, ktoru si vybrat z mnou zmienenych, pripadne nejaku inu.

(Pravdepodobne pojdem studovat ekonomicku a financnu matematiku a tam sa zacina Javou. Ja som clovek, ktory to pred vstupom do kurzu chce mat zvladnute. :) )

Dik za rady.
« Poslední změna: 07. 05. 2022, 07:50:13 od Petr Krčmář »


robin martinez

  • *****
  • 1 138
  • Have you hugged your toilet today?
    • Zobrazit profil
    • Null Storage
    • E-mail
Re:Java
« Odpověď #1 kdy: 06. 05. 2022, 14:22:26 »
do zacatku je to asi uplne jedno. Nove knihy budou treba resit novejsi funkce jazyka, ale zaklad je stejny.
One machine can do the work of fifty ordinary men. No machine can do the work of one extraordinary man.

I do Linux, Hardware and spaghetti code in PHP, Python and JavaScript

Re:Java
« Odpověď #2 kdy: 06. 05. 2022, 15:19:57 »
Já doporučuji Učebnice jazyka Java od Pavla Herouta. Bude to pak chtít ještě dostudovat novější věci (streamy, lambdy, try-with-resources a další drobnosti), ale ten základ platí pořád.

Pecinovský používá divnou českou terminologii, kterou nepoužívá nikdo jiný, a jeho knížky jsou klasické školní učebnice – „naučíme se Javu, ale pěkně školsky, po našem, způsobem a s nástroji, které nikdo jiný nepoužívá“. V Mistrovství v Java je půlka věcí, které nemá smysl se dnes učit (což je vlastně pozoruhodný výkon, vzhledem k tomu, jak je Java konzervativní) – applety, AWT, servlety, Swing. (Swing a servlety se ještě používají, ale není to nic, čím by se měl zabývat začátečník.)

mikrom

  • ****
  • 321
    • Zobrazit profil
    • E-mail
Re:Java
« Odpověď #3 kdy: 07. 05. 2022, 00:45:36 »
Jedna z menej znamych starsich knih, ktora je podla mna velmi dobra bola tato kniha od Viriusa: https://knihobot.cz/g/430472 Skoda ze odvtedy nevysla v novsom vydani. Je pisana putavo a dobre sa cita. Ma len cca 260 stran.
Dobry vyzera byt aj ten Schild ak tam nie je moc chyb v zdrojakoch, pretoze problem prekladanych knih je, ze prekladaju aj zdrojaky a pritom vznikne v knihe vela chyb, co knihu dost znehodnocuje. Keby ponechali povodne zdrojaky bez prekladu bolo by to asi lepsie.

Ale vsetky 3 knihy, t.j.
  - Virius: Java pro zelenace
  - Herout: Ucebnice jazyka Java
  - Schild: Java 7 vyukovy kurz
som nasiel aj na webe takze si ich mozes poprezerat a vybrat si z ktorej sa budes ucit.

Btw. jedno z mojich deti absolvovalo minuly rok 1.rocnik toho odboru co spominas: EFM - ekonomická a finančná matematika a programovanie tam mali oba semestre v jazyku C#. Teraz podla aktualneho studijneho planu je programovanie v 1.rocniku v Pythone. Java tam v 1.rocniku neni.

Re:Java
« Odpověď #4 kdy: 07. 05. 2022, 07:20:33 »
Pokud máš dost času, tak bych doporučoval se základy programování naučit v jiným jazyku a Javu k tomu přibrat až potom.
Spousta věcí se v ní dělá zbytečně složitě a začátečníkovi se blbě vysvětlujou, takže se to většinou přejde stylem "tohle tam musíš napsat a nezkoumej, co to znamená".
Na začátek je podle mě ideální Python nebo Ruby.
Přitom až budeš rozumět základům programování v jednom z těchhle jazyků, tak přejít na Javu je triviální, protože je v podstatě stejná, jenom s víc "byrokracií".
(P.S. Programováním v Javě se živím a mám ji i docela rád, takže to neber jako nadávky nějakýho hatera  :) )


Re:Java
« Odpověď #5 kdy: 07. 05. 2022, 13:31:30 »
Já doporučuji Učebnice jazyka Java od Pavla Herouta. Bude to pak chtít ještě dostudovat novější věci (streamy, lambdy, try-with-resources a další drobnosti), ale ten základ platí pořád.

Heroutova učebnice je velmi dvousečný nástroj, pozor na ni. Herout napsal skvělou (až geniální) učebnici C. A pak napsal učebnici Javy stylem: a teď si naše rutiny z C přepíšeme do Javy. Ok, funguje to a pro céčkaře je to možná dobrý mezikrok, ale Herout vás nenaučí programovat objektově a už vůbec vás nenaučí myslet objektově.
Herout, pokud si pamatuji dobře ukazuje dědění na tom, že třída úsečka dědí z třídy bod, protože úsečka přece obsahuje dva body... Dědění úsečky z bodu by mělo být v každé učebnici objektového programování, ale jako příklad špatného uchopení objektů.

Pecinovský používá divnou českou terminologii, kterou nepoužívá nikdo jiný, a jeho knížky jsou klasické školní učebnice – „naučíme se Javu, ale pěkně školsky, po našem, způsobem a s nástroji, které nikdo jiný nepoužívá“. V Mistrovství v Java je půlka věcí, které nemá smysl se dnes učit (což je vlastně pozoruhodný výkon, vzhledem k tomu, jak je Java konzervativní) – applety, AWT, servlety, Swing. (Swing a servlety se ještě používají, ale není to nic, čím by se měl zabývat začátečník.)

Nevím, jestli Pecinovský nevydal něco aktualizovaného, pokud ne, tak tam, kde opouští obecné základy, tak už velmi zastaralý, s tím souhlasím jednoznačně. Nicméně než se Pecinovský dostal k těm věcem, které dneska nemají smysl, tak ty obecné věci dělal s důrazem na myšlení v objektech. Pecinovský byl první, kdo v češtině napodobil ten styl, který začal být populární a moderní (např. Thikink in Java). Jestli je v češtině modernější učebnice psaná tímto stylem, netuším, ale ten styl bych rozhodně doporučoval.

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Java
« Odpověď #6 kdy: 07. 05. 2022, 13:44:48 »
ukazuje dědění na tom, že třída úsečka dědí z třídy bod
Tak úsečka je přece speciální případ bodu, ne? :)

Re:Java
« Odpověď #7 kdy: 07. 05. 2022, 13:49:16 »
ukazuje dědění na tom, že třída úsečka dědí z třídy bod
Tak úsečka je přece speciální případ bodu, ne? :)

Ty se směješ, ale když někdo o objektovém programování nic neví, začíná, tak mu nedojde, že přesně tohle je špatně. A přeučovat se něco, co se člověk naučil špatně, to je vždy těžké.

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Java
« Odpověď #8 kdy: 07. 05. 2022, 13:54:48 »
ukazuje dědění na tom, že třída úsečka dědí z třídy bod
Tak úsečka je přece speciální případ bodu, ne? :)
Ty se směješ, ale když někdo o objektovém programování nic neví, začíná, tak mu nedojde, že přesně tohle je špatně. A přeučovat se něco, co se člověk naučil špatně, to je vždy těžké.
Tyhle nesmysly o OOP jsou v (asi nejen) české literatuře bohužel běžné, Čada má ve své knize o OOP stejný blábol, akorát o čtvercích a obdélnících. Jeho knihu naštěstí nikdo nečte, ale v těch rozšířenějších to skutečně může napáchat škody.

robin martinez

  • *****
  • 1 138
  • Have you hugged your toilet today?
    • Zobrazit profil
    • Null Storage
    • E-mail
Re:Knihy na začátek s jazykem Java
« Odpověď #9 kdy: 09. 05. 2022, 12:26:27 »
naprosto souhlasim s tim, ze kdyz jsem o programovani (OOP) nevedel nic, tak ceske ucebnice byly zcela nepochopitelne. Taky mi prijde zhovadilost typu trida Zvire a od ni dedi trida Pes. Ono to samozrejme smysl dava, ale nikdo vam nevysvetli, proc se to tak ma delat. Nicmene to neni chyba 'ceskych' ucebnic, ale vsech. Tohle se musi cloveku vysvetlit ukazkove.
One machine can do the work of fifty ordinary men. No machine can do the work of one extraordinary man.

I do Linux, Hardware and spaghetti code in PHP, Python and JavaScript

mark42

  • ***
  • 101
    • Zobrazit profil
    • E-mail
Re:Knihy na začátek s jazykem Java
« Odpověď #10 kdy: 09. 05. 2022, 13:19:22 »
Eckel to podla mna napisal dobre, toho som cital. Aj Herouta bohuzial, suhlasim s komentarom vyssie, ze nauci syntax ale nenauci mysliet objektovo. Schild podla ukazok nevyzera zle tiez. V kazdom pripade nevadi, ak sa ucis aj zo starsej knihy, vacsina toho funguje stale, v novych verziach sa skor niektore veci zjednodusili a tie si vies dostudovat aj samostatne. Len treba preskocit temy, ktore boli v minulosti popularne a vyzerali nadejne, ale uz sa nepouzivaju: applety, Swing, ...

Re:Knihy na začátek s jazykem Java
« Odpověď #11 kdy: 09. 05. 2022, 13:49:40 »
Na objektové myšlení bych nepořizoval učebnici Javy, ale učebnici OOP. Ty principy jsou obecné a pak jen stačí si to aktualizovat pro konkrétní jazyk.

Navíc pro současné programování v Javě není potřeba nijak zvlášť znát OOP, protože nejčastěji programujete nějaké služby, kde se používá strukturované programování (datové struktury + výkonný kód) a objekty se používají spíš jako prvek jazyka, ne pro architekturu aplikace. Říkám tomu, že to není objektové programování, ale programování s objekty. (Když se do takového kódu pokusí někdo zavléct OOP tak, jak má pocit, že by to mělo vypadat, napáchá víc škod než užitku.)

Re:Knihy na začátek s jazykem Java
« Odpověď #12 kdy: 09. 05. 2022, 16:25:50 »
Na objektové myšlení bych nepořizoval učebnici Javy, ale učebnici OOP. Ty principy jsou obecné a pak jen stačí si to aktualizovat pro konkrétní jazyk.

Navíc pro současné programování v Javě není potřeba nijak zvlášť znát OOP, protože nejčastěji programujete nějaké služby, kde se používá strukturované programování (datové struktury + výkonný kód) a objekty se používají spíš jako prvek jazyka, ne pro architekturu aplikace. Říkám tomu, že to není objektové programování, ale programování s objekty. (Když se do takového kódu pokusí někdo zavléct OOP tak, jak má pocit, že by to mělo vypadat, napáchá víc škod než užitku.)

Nesuhlasim, to co popisujete je skor data driven development. Objekty tam stale su (tie datove struktury).

Re:Knihy na začátek s jazykem Java
« Odpověď #13 kdy: 09. 05. 2022, 17:12:20 »
Na objektové myšlení bych nepořizoval učebnici Javy, ale učebnici OOP. Ty principy jsou obecné a pak jen stačí si to aktualizovat pro konkrétní jazyk.

Navíc pro současné programování v Javě není potřeba nijak zvlášť znát OOP, protože nejčastěji programujete nějaké služby, kde se používá strukturované programování (datové struktury + výkonný kód) a objekty se používají spíš jako prvek jazyka, ne pro architekturu aplikace. Říkám tomu, že to není objektové programování, ale programování s objekty. (Když se do takového kódu pokusí někdo zavléct OOP tak, jak má pocit, že by to mělo vypadat, napáchá víc škod než užitku.)

Nesuhlasim, to co popisujete je skor data driven development. Objekty tam stale su (tie datove struktury).

Nikoli. Ty datové struktury pouze nesou data (načtená z relační databáze, z NoSQL databáze, přes REST v JSONu), nemají u nich žádný kód, který by s daty uměl pracovat. Kód je zvlášť (ve službách), které zase typicky nemají žádný stav.

Re:Knihy na začátek s jazykem Java
« Odpověď #14 kdy: 09. 05. 2022, 20:06:12 »
Na objektové myšlení bych nepořizoval učebnici Javy, ale učebnici OOP. Ty principy jsou obecné a pak jen stačí si to aktualizovat pro konkrétní jazyk.
Dobré pochopení OOP není snadné a je logické, že existují učebnice, které jsou jazykově neutrální a specializují se jenom na OOP. Fajn. Nicméně java je objektový jazyk a její učebnice by se měla alespoň snažit o objektové myšlení. V žádném případě by neměla mít špatné příklady a vést ke špatným návykům.

Navíc pro současné programování v Javě není potřeba nijak zvlášť znát OOP, protože nejčastěji programujete nějaké služby, kde se používá strukturované programování (datové struktury + výkonný kód) a objekty se používají spíš jako prvek jazyka, ne pro architekturu aplikace. Říkám tomu, že to není objektové programování, ale programování s objekty. (Když se do takového kódu pokusí někdo zavléct OOP tak, jak má pocit, že by to mělo vypadat, napáchá víc škod než užitku.)
Pro současnou jízdu autem není nijak zvlášť potřeba umět jezdit po dálnici, protože nejčastěji jezdíte po městě, kde se jezdí pomalu a v jednosměrkách a víceproudé silnice jsou tam spíš málokdy.