Diskuze: Java rok 2016
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 50 zpráv z 163.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
C# umí i složitější gettery a settery. Když jsou metody odlišené od
vlastností je snad přehlednější, ne? Osobně zastávám názor, že
čitelnost kódu je jedna z nejdůležitějších vlastností, a kratší kód
je skoro vždy lépe čitelný. Jinak kdybys neuznával příklad s gettery a
settery, tak co třeba události? V Javě je to strašlivá věc, hlavně pokud
děláš třeba touch eventy pro formuláře- naprosto zbytečné zjišťování
toho, kdo událost vlastně vyvolal a až potom kód+ implementace interface do
třídy, které tam logicky nepatří jen kvůli jedné metodě. Vlastně na mě
celý ten mechanismus působí tak, že si od určité verze uvědomili že by
mohlo být něco jako události a dovymysleli (naštěstí standardní) způsob
jak to udělat.
V C# je to velice intuitivní, třeba i na 1 řádku hezkého kódu.
C# má kopu syntaxového cukru, je technologicky ďalej ako Java, ale zase ešte stále je platformovo závislý (aj keď sú nejaké pokusy to dostať aj inde, ale Java to ešte nie je, dúfam že časom bude plne multiplatformový). No a nech hľadám ako hľadám tak na IntelliJ IDEA 15.0.2 tých chýb veľa nevidím, dokonca by som povedal, že je možno lepšia než VS-ko, ktoré bez R# tiež nie je žiadna sláva, čo sa týka práce s kódom, aj keď v najnovšej verzii sa to o dosť zlepšilo.
Protože je Swing označenej jako deprecated a nástupce má bejt JavaFX, která se mi nelíbí. Takže nevim, jestli je dobrej nápad nový aplikace stavět na Swingu a radši se podívam jinam.
Osobně zastávám názor, že čitelnost kódu je jedna z nejdůležitějších vlastností, a kratší kód je skoro vždy lépe čitelný.
V tom s tebou souhlasím, ale ty prosím pochop, že různí lidé považují za čitelnější různé věci. Mně C# vlastnosti prostě čitelnější nepřipadají.
To s těmi událostmi jsem nějak nepochopil.
Kubo, přidám taky trochu do mlýna - vlastní zkušenost. - pokud se ti
nechce číst úvod, přejdi k hvězdičce
"Šéfuju" IT v jedné automotiv firmě. Má práce je od instalace tiskáren a
pomocných SW na koncových stanicích, instalace a virtualizace serverů
VMWare, instalace a zpráva SQL a údržba všech IS. Taky dělám aplikačního
správce ERP, MES, Warehouse apod. Mám takový malý tým (1 kmenový, 3
externisti) a jak to tak bývá, dělám i podporu userům. Před X lety jsem se
prokecl, že mě baví Excel a hlavně makra v něm (VBA). Od té doby jsem
udělal stovky automatických analýz včetně výcucu dat přímo z SQL, stovky
formulářů a jiných blbostí, které jiným zlehčují práci. Chtěl jsem se
už posunout někam dál a tak jsem si na firmu * koupil knížky Mistrovství
Java a Microsoft Visual C# 2010. Začal jsem Javou.
Narovinu řeknu, že jsem se „pročetl až na stranu 200, ale VŮBEC JSEM
NECHÁPAL, o co tam jde. Znalost VBA mi byla úplně na prd.
Pak jsem začal číst Microsoft Visual C# 2010, donutil jsem se přečíst
celou knihu, ale o pochopení nemohla být řeč.
Pak jsem ale narazil na tento web a na tutoriály od Davida Čápky (sdraco) a
C# mě chytlo jak nic jiného. Dokonce jsem ho i začal chápat Za cca
měsíc, co jsem začal číst jeho tutoriály, jsem už vytvořil A PRODAL!
vlastní aplikaci, která hlídá souborový systém, informuje správce o
vzniku souborů, posílá je maily, píše do logu, ukládá si nastavení do
XML, NEPADÁ, ale zapisuje chyby atd.
** Doporučení: C#
Uff
Swing je 'deprecated' už jak dlouho? Sedm osm let počítám?:) Swing tu
bude ještě dááávno po nás
Přidám ještě trochu nekorektní názor, neberte to prosím příliš
vážně, ale:
Javisté mi připadají jako uživatelé W7, kteří odmítají přejít na W10.
Jejich platforma je oblíbená, funguje skvěle, ale už jsme technologicky
dále. Než to pochopí, bude pro ně pozdě, protože zamrzli někdy před 5
lety.
Hmm jsem Javista, a Windows 10 jsem instaloval v okamžiku kdy byl dostupný
Co přesně to vypovídá?
Ze jsi nemohl nechat jen tak neco, co se dalo nainstalovat zadarmo
Ja mam W7, W8.1, 10 a Ubuntu- zacal jsem zkousenim Javy, skoncil u C#
Osobně taky preferuju C# před Javou.
Java není špatná, ale trochu jí ujel vlak a C# jí docela dost předběhl.
Z Javy mám takový pocit, že je to jazyk pro akademiky, zatímco C# je jazyk pro normální lidi - spousta věcí jde jednodušeji, není díky MS tak rozdrobená na spousty různých podobných, ale odlišných frameworků apod.
Ze jsi nemohl nechat jen tak neco, co se dalo nainstalovat zadarmo
Kruci jsem odhalen
Za mě C#, objektově programuj co nejdřív to půjde.
že nevidíš rozdíl v přirovnání a souvislosti.
Na tyto flamewary normálně hlasovací systém. Moderátor bude mít
tlačítko, které převede aktuální téma na hlasování a komentáře se
zakážou
ten bol dobrý, len sa
pre istotu uisti či skutočne aj vieš čo používaš v tom C#... LINQ,
delegati, asynchronne funkcie, lambdy, vlastnosti, milión frameworkov..všetko
krásne veci, ale pokým nevieš ako fungujú, tak by som sa tým "aký som in,
keď používam mačku vo vreci" moc nechválil
OOP nie je o používaní
frameworkov a rôznych vychytávok... a čo sa týka tvojho prirovnania, tak
ľudia majú asi dôvod na to zostať na w7 a nemyslím si, že sú to ľudia
čo zaspali dobu
Javu mám rád stejně jako C# a u win 7 jsem zůstal hlavně kvůli pro mě
nepřívětivému prostředí win 8. Co se týče windows 10 zatím mě
nenapadá proč přecházet
Proč myslíš, že jsou nahrazovány? Nevím, ale třeba jen C# bude
určitě vhodný na programování pro W10 zařízení všeho druhu. Pak ho
máš i pro Unity, takže svou hru dostaneš téměř kamkoliv. Dále Xamarin -
jasně, pokud chceš mít appku jen na iOS, budeš to dělat ve Swiftu/Obj-C,
ale pokud to chceš mít i na Androidu a nebo jen ty jazyky neovládáš, tak se
C# hodí.
Javu máš zase pro ten stále nejrozšířenější mobilní systém
(Android).
Nechci se hádat, ale jen mi jde o to, jestli máš nějaké informace, na čem
tento názor zakládáš
Promiň, ale nejsem si jistý, jestli jsem si to přeložil správně do Čj
Každopádně nemyslel jsem
to úplně vážně, taky jsem to tam explicitně napsal. Také jsem nikde
nepsal, že OOP v C# je dále než v Javě, jen říkám, že v Javě se spoustu
věcí dělá složitěji.
Nevidím jiný důvod než zvědavost, proč se šťourat v tom, jak fungují
třeba Lambda a nebo LINQ, nepotřebuji to vědět, když to umím používat a
vím, jak se to chová. //já to třeba vím BTW
Je v celku jasné že u Javy ti VBA nebude k ničemu. Nejsem si moc jistý co si na tom nechápal. Když nebudeme řešit knihovny a to že C# syntaxe je sladká jak cukroví. Tak jsou java a C# natolik podobné že mi fakt není jasné co si nechápal.
To je jednoduché- nikdy jsem neprogramoval. VBA jsem se naučil tak, že
jsem prostě zaznamenával makra s pak je rozklíčoval + google. Každopádně
je to jazyk primitivní, takže jsem se ho celkem rychle naučil.
Když jsem pak zkusil Javu, tak jsem sice podle návodu dokázal něco napsat,
ale bez nápovědy jsem neudělal vůbec nic. Prostě jsem nepochopil princip
toho, kde co jak se předává, co je to instance apod. U C# mi to přišlo
snadnější.
A když jsem si přečetl pár tutoriálů od sdraca, tak jsem byl doma
Za sebe si prostě myslím, že C# je učení lehčí než Java, ale je to jen
můj názor. Možná kdybych začal prvně tutoriály na Javu od sdraca, tak by
to bylo naopak…
Autor asi začal špatně protože nejlépe se začíná u procedurálního programování. Jak jsme již psal až na ten cukr je syntaxe Javy a C# prakticky stejná takže to není jednoduší jenom to autor knihy vysvětlil lépe.
Já jsem nenapsal že jsou nahrazovány univerzálně. Typickým odvětvím, kdy jsou C# a Java nahrazovány je tvorba webových aplikací. V současné době je to nepřehledná změť od Rails přes Django a Node.js a další podobné věci (samozřejmě že tam C# a Java tam taky přetrvají, ale s menším zastoupením). Taky mluvím ze zkušeností - neznám osobně snad nikoho, kdo by dělal v C# nebo Javě, každej používá něco jinýho - Rust, Python, JavaScript... Možná je lepší ta formulace, že vznik mnoha nových jazyků způsobil roztříštění dnešního složení jazyků
Tu je poměrně zajímavá statistika popularity jazyků: https://en.wikipedia.org/…_language%29#…
Samozřejmě z toho nelze vyvozovat nějaké velké závěry.. Snad jen to,
že C ani po více než 40 letech existence neumírá
Pěkná statistika nevěděl jsme že C neumírá , přesněji zdaleka neumírá.
Tak on se primárně využívá pro výuku (takže existuje obrovské množství materiálů), dále je v něm napsán Linux (tedy obrovský projekt a velké množství programátorů v C) a používá se na programování mikrokontrolérů, protože je nízkoúrovňový a má relativně malý overhead oproti vyšším jazykům.
A protože je ho plný web, tak se drží vysoko... Stejně tak Java je de facto
"standardní vyšší jazyk" a je tu s námi již pěkně dlouho. Také se
často používá pro výuku a je v něm velké množství systémů - takže je
také na špici. C# je sice v jistých komunitách velmi oblíbené (např. zde
) a v mnoha věcech je
jistě lepší a modernější (což je logické, když je mladší).. Jestli se
někdy rozšíří na úroveň Javy to záleží hodně na krocích MS v oblasti
podpory multiplatformnosti.
Divim se, ze Python je cca stejne jako PHP, bych cekal, ze bude niz.
Tak PHP je jazyk čistě pro vývoj webových aplikací... A věř nebo ne..
To je pouze malá, nepříliš významná část IT
Python je skriptovací jazyk a používá se poměrně hodně.. Což je dáno
tím, jak je mocný a na co vše se hodí
no ale rozhodně se Python používá míň než PHP. To je dáno tím jak je PHP .....
Zde je ta statistika aktuální:
http://www.tiobe.com/…i/index.html
A máš to tvrzení něčím podložené?
PHP se používá jen na webové aplikace.. A to zdaleka ne na všechny.. V pythonu je napsáno velké množství aplikací (především utilit v backgroundu) a také velká část různých nastavovacích skriptů apod. Pokud bys to měřil na řádky kódu, tak teda nevím - netroufl bych si prohlásit, že jeden z nich je výrazně používanější.
nemám to podložené, ale to co python umí, umí i spousta jiných jazyků a konkurence je na poli všeho co umí python výrazně vyšší než konkurence na poli toho co umí PHP. Různé statistiky (myslím, že nějaké vycházeli na stackoverflow) tvrdí, že PHP je výrazně využívanější než python. Nicméně python rychleji roste, ale i přesto pozici PHP jistojistě v nejbližších letch neohrozí.
To, že se lidi víc ptají na PHP, než python nic neznamená.. Maximálně
z toho můžeš vyvodit, že více lidí má problémy s použitím PHP než s
použitím pythonu..
tak si najdi jiné statistiky. Každá statistika bude zavádějící, některá více, některá méně. Nicméně toto vlákno není ani o PHP, ani o pythonu, tak už to nebudeme rozebírat.
Tvoj priklad s gettermi a settermi ukazuje niečo, čo v skutočnosti vôbec nie je problém. Myslím, že vačšina ľudí getteri a setteri generuje (áno, IntelliJ aj Eclipse to dokáže).
Existuje Project Lombok, čo je nástroj na generáciu kódu. Dokáže to robiť strašne veľa vecí od generácie getterov a setterov, automatického toString, hodnotových typov cez delegáciu metod, až po generáciu builderov.
Teda napríklad ak chcem jednoduchú entitu, ktorá má mať gettery, settery, equals, toString, tak píšem:
@Data
public class Profile {
private String firstName;
private String lastName;
private Address address;
...
}
Udalosti integrované rovno na úrovni jazyka su určite plus pre C#, ale ani v Jave to nemusí byť také strašné. Existuje kopa knižníc, ktoré sa zameriavajú na programovanie s udalosťami. Navyše Java 8 priniesla okrem veľa dobrých vecí aj closures a method references.
Čiže setovanie nejakého event listeneru môže kľudne vyzerať aj nejako takto:
button.setOnClickListener(this::button1Click);
pričom button1Click je metoda, ktorá handluje stlačenie tlačidla. A toto je už veľmi podobné tomu, s čím sa pracuje v C#.
Java možno bola tragédia, keď sa platilo za počet riadkov a nie za skutočnú prácu. Treba sa držať ďaleko od starších verzií Javy a je to celkom fajn jazyk. JVM je plus a existuje na ňu kopa iných jazykov (scala, groovy, ...)
Je to problém, protože to, že to za tebe vygeneruje IDE není to stejné jako že to prostě není v tom kódu. Můžou se tak proměnné (vlastnosti) opravdu používat jako proměnné.
Príde mi to skôr ako vec zvyku, nie ako nejaká veľká nevýhoda Javy.
profile.FirstName = "Jozef";
vs
profile.setFirstName("Jozef");
Tak ono tieto argumenty, že gettery a settery v Jave sú "dlhšie", sú celkom úsmevné. Aspoň si tú metódu môžem pomenovať ako potrebujem a príde mi to čistejšie a zrozumiteľnejšie ako vlastnosti, aj tak je to len cukor... žiadna veda za tým nie je
delší není "deklarace" vlastnosti, ale je to o 3-5 (slova get, set a závorky namísto rovnítka. To se liší ještě podle toho jak píšete mezery okolo rovnítka) znaků delší na volání, které je v kódu třeba 100×. Ale když vám nevadí, že jak otroci všude píšete úplně zbytečně set, set, set, set, set, set, set, set, set, set, set, set, set, set, set, set, set, set, set, set, set, set, set, set, set, set, set, set, set, set, set, set, set, set, set, set, tak někdo si prostě zvykl na systém, že je zbytečné to psát. Navíc když to někdy potřebujete pojmenovat jinak, tak to samozřejmě můžete udělat i v C# Javovským způsobem. On to konec konců je velmi užitečný syntaktický cukr, jehož absence v Javě je pro Javu obrovské -.
Ok nebudem sa hádať, je to fakt obrovské -, také obrovské, že Javu asi
všetci prestanú používať a budú používať iba C#, možno kvôli tomu aj
Java zanikne A len tak btw,
koľko tých getterov a setterov napíšeš?.. v triedach ich zase až tak veľa
nie je (najmä tých setterov) a v dátových štruktúrach to hodíš
public.
ale já jsem neříkal, že to Javu položí, já jsem jen vysvětlil fakt, jak to je. Statistiky sice nemám, ale protože píši i větší aplikace než jsou převodníky jednotek, tak v projektech mívám i několik stovek getterů a setterů. Ve VB se to dá napsat i bez použití klíčového slova, tak je to o trochu něčem jiném, ale vůbec mě vůbec mě to netrápí.
stačí si vzít okenní aplikace, kde klidně jen pro ubohé vytvoření jednoduchého formuláře nastavíš tak okolo 10 vlastností, většinou i víc. V podstatě každá komponenta má několik desítek vlastností.
A co takové foreach?
Škaredá a sáhodlouhá c# verze:
forech (int element in collection)
vs elegantní a stručná Javovská:
for (int element : collection)
Jako porovnávat jazyky na základě takovýchto banalit fakt nemá význam.
Nikdy se na nich neshodneme, každému se vždycky bude líbit to na co je
prostě zvyklý a co je mu sympatičtější. Na výslednou efektivitu
takovéhle prkotinky nemají ten nejmenší vliv. Psaní kódu není na
programování časově nejnáročnější část, kasat se ušetřeným
písmenkem tuhle a tamhle je totálně mimo. Obvzlášť když většinu psaní
kódu dneska stejně obstará code completation
Jenže kolikrát máš v kódu foreach a kolikrát getter a setter? Mě osobně by opravdu vadilo psát pořád get a set a závorky...
Navíc Foo.Bar += 1 (nebo ++) fakt je mnohem hezčí než Foo.SetBar(Foo.GetBar() + 1))
Na výslednou efektivitu takovéhle prkotinky nemají ten nejmenší vliv. Psaní kódu není na programování časově nejnáročnější část, kasat se ušetřeným písmenkem tuhle a tamhle je totálně mimo.
Na psaní možná tolik ne, na čtení už třeba ano, u třídy s 10 vlastnostmi to je v Javě nějakých 30-40 řádků navíc, což je na většině monitorů celá stránka
Zobrazeno 50 zpráv z 163.