Avatar
Jakub Dvorský:

Vyplatí se učit Javu ? Hodně lidí říká že v dnešní době upadá a už se tolik nevyužívá.
Pokud se Java nevyplatí tak který jazyk ?

 
Odpovědět 5. ledna 12:33
Avatar
Atrament
Člen
Avatar
Odpovídá na Jakub Dvorský
Atrament:

Lidi nakecaj hrozný kraviny, vůbec je neposlouchej. Java je skvělá, je progresivní, jednoduchá a docela čistě navržená a má takové neskutečné množství knihoven a frameworků o jakém se jiným jazykům jenom zdá. :)

Nicméně poněkud objektivněji - výběr jazyka a technologií záleží na tom co chceš dělat. Na něco se holt víc hodí ta Java, na něco C/C++ na něco jiného PHP atd. Srovnej si co chceš dělat a co tě zajímá, podívej se na pracovní inzeráty a podle toho se rozhodni. Btw umět více jazyků je stejně dneska víceméně nutnost, takže znalostí Javy vůbec nic nepokazíš.

 
Nahoru Odpovědět  +2 5. ledna 13:05
Avatar
Jaro
Člen
Avatar
Odpovídá na Jakub Dvorský
Jaro:

Java sa používa stále, dokonca by som povedal, že jej popularita rastie. Rozhodne sa oplatí učiť. Rozhodne neupadá ani sa neprestáva používať. Podľa mňa je to jeden z "najčistejších" jazykov (môj subjektívny názor), má jednoduchú syntax, dobre sa číta, je vhodná aj na veľmi veľké projekty, má skvelé IDE (IDEA, Netbeans, Eclipse). Jej vývoj je pomerne stabilný, nepúšťa sa do experimentov a beží všade, kde rozbeháš JVM. Samozrejme má aj svoje muchy, ale mne sa v Jave programuje asi najlepšie zo všetkých jazykov čo poznám.

Nahoru Odpovědět  +4 5. ledna 13:57
A ship is safe in harbor. But then again, that´s not what ships are for.
Avatar
pocitac770
Redaktor
Avatar
Odpovídá na Jakub Dvorský
pocitac770:

Abych taky přispěl trochu do mlýna, tak bych třeba zmínil (podle mého názoru) "chloubu" javy, neboli Minecraft. Hra, která v současné době ovládá široký konzumní průmysl se stala velice slavnou, a ano, celá je naprogramovaná právě v javě. Její vlastnost umožnila rozšířit MC na mnoho platforem. Když Microsoft MC odkoupil, tak se spekulovalo, že se přeprogramuje do C#, ale jak je vidět, dokonce i u nich si výhodu tohoto jazyka uvědomují. Je to pouhý příklad, mnoho již bylo odpovězeno v předchozích příspěvcích. Pro mě je například java taktéž oblíbeným jazykem. Tak se nikdy nevzdávej, že by mělo být zastaralé, nebo snad neužitečné se jí učit :)

 
Nahoru Odpovědět  +2 5. ledna 15:47
Avatar
Jakub Dvorský:

Moc vám děkuji :-) Určitě u toho zůstanu je to super jazyk, jen jsem se bál že mi to v budoucnu bude k ničemu :-)

 
Nahoru Odpovědět 5. ledna 17:03
Avatar
David Klouček:

Taky se o tohle téma poslední dobou zajímam. Podle mě by bylo hlavně důležitý v diskuzi zmínit, jakou Javu myslíte. A celkově z příspěvků na internetu mi přijde, že Java má už největší boom za sebou. Absolutně se mi nelíbí pro desktop - Swing je zastaralej a JavaFX se asi moc neujala a oproti vývoji aplikací v .NET je podle mě těžkopádná. Navíc v ní nejde udělat nativní vzhled a Oracle přestal vyvíjet Scene Builder? Na serveru bych jí klidně bral, ale jen se Springem a Hibernate, protože další miliarda alternativních knihoven mě dost odrazuje. A teď se prej vyvíjí .NET Core, který by mělo umožnit spouštět C# třeba na Linuxovym serveru bez Mono - má teda vůbec smysl uvažovat o Javě, kdybych chtěl na webovou aplikaci použít kompilovanej jazyk? Já se spíš pro webovej projekt přiklánim pro .NET, když už v něm občas rád píšu desktopový aplikace.

Mobily neřešim, protože na každej OS se používá něco jinýho, existuje Xamarin, hybridní aplikace..

Editováno 5. ledna 17:08
 
Nahoru Odpovědět  +7 5. ledna 17:07
Avatar
Atrament
Člen
Avatar
Odpovídá na David Klouček
Atrament:

Čím je konkrétně Swing zastaralej? Jasně není to žádný nováček, ale je velmi solidně navržen podle MVC, snadno se používá, je už docela dost vychytaný co se týče chyb a co se týče vzhledu tak je plně přizpůsobitelný a na nejrozšířenějších platformách nabízí motivy s takřka nativním vzhledem. Netbeans IDE má pro něj skvělý designer - Matisse a navíc je zde framework Netbeans Platform díky nimž vytvářet i velmi složité desktopové aplikace je "hračka". Já naopak vidím Javu pro desktopovou aplikaci jako jasnou volbu :)

Co se týče webových aplikací i tam má Java hodně co nabídnout -Spring a všechny ty frameworky okolo nabízejí opravdu luxusní možnosti jak pohodlně vyvíjet a když se koukneš na pracovní nabídky tak zjistíš, že je i dost vysoká poptávka po lidech co to umí.

 
Nahoru Odpovědět 5. ledna 17:35
Avatar
Jaro
Člen
Avatar
Nahoru Odpovědět 5. ledna 17:36
A ship is safe in harbor. But then again, that´s not what ships are for.
Avatar
Odpovídá na pocitac770
Jiří Janeček (Johnny):

ale jak je vidět, dokonce i u nich si výhodu tohoto jazyka uvědomují

Neviděl bych za tím kvalitu jazyka. Spíš by bylo strašně pracné a nákladné to přepsat.
Podobně jak se shodli mnozí uživatelé na různých fórech, i já si myslím, že v C# bude napsána nějaká nová MC hra (ať už pokračování či něco jiného)

 
Nahoru Odpovědět  +5 5. ledna 18:15
Avatar
Richard H.
Redaktor
Avatar
Odpovídá na Jakub Dvorský
Richard H.:

Mohu se jenom zeptat kdo kde psal takovou pitomost.

Nahoru Odpovědět  ±0 5. ledna 18:19
Malý užitečný manuál je vždy lepší než bichle k ničemu.
Avatar
Odpovídá na Jiří Janeček (Johnny)
Jakub Šárník:

Přesně tohle jsem chtěl taky říct. Prostě Microsoft koupil tým vývojářů se znalostí Javy a hotovým produktem v Javě. Bylo by značně nestrategické přepisovat to do C# (vyžádalo by si to například přeučení Mojangu na C#). Pokud ale bude Microsoft pokračovat dalšími hrami (jako že by byla blbost to neudělat), budou napsané zřejmě v C#, ale možná třeba i v C++ (podle mě teoretická, i když krajně nepravděpodobná varianta)

Editováno 5. ledna 18:30
 
Nahoru Odpovědět  +1 5. ledna 18:29
Avatar
Odpovídá na Richard H.
Michal Žůrek (misaz):

kde kdo a úplná blbost to není.

Nahoru Odpovědět  +2 5. ledna 18:44
Nesnáším {}, proto se jim vyhýbám.
Avatar
Odpovídá na David Klouček
Michal Žůrek (misaz):

Však Java už má nejlepší za sebou, ale špatná pořád není.

Nahoru Odpovědět  +1 5. ledna 18:45
Nesnáším {}, proto se jim vyhýbám.
Avatar
Odpovídá na David Klouček
Jakub Dvorský:

A jaký jazyk bys doporučil ?

 
Nahoru Odpovědět 5. ledna 19:02
Avatar
David Novák
Tým ITnetwork
Avatar
David Novák:

Taky bych Javu tak nevychvaloval.. Je to velký, pomalý a ty implementace JVM jsou dosti děravé.. :D

Na výuku se hodí nějaký menší, jednodušší jazyk, kde nebudeš zavalen tisícovkami různých funkcí (pardon, metod) a který toho také moc neumí, což tě donutí naučit se přemýšlet jako programátor - například C. A nebo i Pascal, pokud máš rád užvaněné jazyky ;) Moderním trendem je také učit se na Pythonu..

Samozřejmě, že takové jazyky pak asi moc nevyužiješ v práci (pokud nepůjdeš dělat něco nízkoúrovňového v C), ale to nevadí - zkušenosti z nich ti zůstanou a dobře je využiješ ve vyšších jazycích jako je Java nebo C#..

Nahoru Odpovědět 5. ledna 19:10
Chyba je mezi klávesnicí a židlí.
Avatar
sunspinx
Člen
Avatar
Odpovídá na Jakub Dvorský
sunspinx:

Jednoducho ti napisem....

Web: HTML, CSS, JS, PHP (C#, Java)
Desktop: C#, Java ...
Samozrejme vediet pracovat s databazou tj. SQL
Este tu su jazyky ako Python, C++ a tak dalej... O kazdom si precitaj a podla toho sa rozhodni. Nic nestratis ak sa naucis hociktory jazyk tj. python, c(#, ++), java... Ak sa naucis jeden, prechod na dalsi uz nebude vobec velky problem. Len budes musiet stravit trochu casu nad tym.

 
Nahoru Odpovědět 5. ledna 19:14
Avatar
Petr Čech (czubehead):

Pokud ještě v Javě neděláš, tak C# je skoro to samé, ale hodně věcí je tam mnohem pohodlnějších a jednodušších než v Javě. Navíc už není pravda, že by C#.NET bylo jen pro Windows.

Nahoru Odpovědět 5. ledna 19:24
Why so serious? -Joker
Avatar
Richard H.
Redaktor
Avatar
Odpovídá na Jakub Šárník
Richard H.:

No vona Minecraft Windows 10 Edition je napsaná v C++

Nahoru Odpovědět 5. ledna 19:24
Malý užitečný manuál je vždy lepší než bichle k ničemu.
Avatar
Richard H.
Redaktor
Avatar
Odpovídá na Petr Čech (czubehead)
Richard H.:

A co OSX proto pokud je mi známo C# jeste není.

Nahoru Odpovědět 5. ledna 19:26
Malý užitečný manuál je vždy lepší než bichle k ničemu.
Avatar
Odpovídá na David Novák
Michal Žůrek (misaz):

učit se jazyk, který neumí OOP je fakt výhra. To už je i ta Java lepší.

Nahoru Odpovědět  ±0 5. ledna 19:38
Nesnáším {}, proto se jim vyhýbám.
Avatar
Odpovídá na Richard H.
Michal Žůrek (misaz):

Tak selský rozum dá, že na OSX je Java asi lepší než c#, že?

Nahoru Odpovědět 5. ledna 19:39
Nesnáším {}, proto se jim vyhýbám.
Avatar
Michal Žůrek (misaz):

proč tu diskuzi děláte tak subjektivní? Proč zde vychvalujete c#, c, python, ... ?

Nahoru Odpovědět 5. ledna 19:40
Nesnáším {}, proto se jim vyhýbám.
Avatar
Richard H.
Redaktor
Avatar
Odpovídá na Michal Žůrek (misaz)
Richard H.:

Pouze jsme psal že na OSX není implementace C# nic vic

Nahoru Odpovědět  -1 5. ledna 19:44
Malý užitečný manuál je vždy lepší než bichle k ničemu.
Avatar
Odpovídá na Michal Žůrek (misaz)
Petr Čech (czubehead):

Protože C# mi připadá oproti Javě mnohem pohodlnější a celkově lepší a protože nechápu, proč se učit něco zbytečně složitého, když to jde jednoduše.

Nahoru Odpovědět  +3 5. ledna 19:44
Why so serious? -Joker
Avatar
Richard H.
Redaktor
Avatar
Odpovídá na Michal Žůrek (misaz)
Richard H.:

To víš umět bejt objektivní je dobrej dar. Ale pochopitelně ho má málokdo. Je prostě faktem že kdo píše v Javě bude vychvalovat Javu kdo píše V C# nebo má rád MS tak vychvaluje C# atd mě to bylo jasné už od začátku diskuze že to tak bude.

Editováno 5. ledna 19:47
Nahoru Odpovědět 5. ledna 19:47
Malý užitečný manuál je vždy lepší než bichle k ničemu.
Avatar
David Novák
Tým ITnetwork
Avatar
Odpovídá na Michal Žůrek (misaz)
David Novák:

Proč? Procedurální programování je prostě základ. A kdo se ho řádně nenaučí, tak nebude dobrý programátor. Můžeme si to abstrahovat jak chceme, ale počítače prostě jsou procedurální a takový kód jim, co se výkonu týče, vyhovuje nejvíce..

Zastávám názor, že je nejlepší začít od klasického "hloupého" jazyku,¨který tě naučí myslet. Přejít na OOP pak není nic těžkého.

Nahoru Odpovědět  +2 5. ledna 19:49
Chyba je mezi klávesnicí a židlí.
Avatar
Odpovídá na Richard H.
Michal Žůrek (misaz):

tak pak je to jenom hloupá poznámka, protože každý (stejně tu všichni diskutují subjkeitvně) si to domyslí sám. Java na OSX je, tak ta poznámka tu ani nemá co dělat.

Nahoru Odpovědět 5. ledna 19:51
Nesnáším {}, proto se jim vyhýbám.
Avatar
Odpovídá na Richard H.
Michal Žůrek (misaz):

Autor vlákna se neptal na vychvalování Javy ani ničeho jiného, ale jestli se Javu vyplatí učit.

Nahoru Odpovědět 5. ledna 19:52
Nesnáším {}, proto se jim vyhýbám.
Avatar
Odpovídá na David Novák
Michal Žůrek (misaz):

v Javě se dá taky programovat procedurálně a výhoda je že pak k OOP (což je btw považováno za základní znalosti (a schopnosti) programátora) nebude muset se přeučovat nový jazyk.

Nahoru Odpovědět 5. ledna 19:53
Nesnáším {}, proto se jim vyhýbám.
Avatar
Dominik Gavrecký:

Mohol by mi niekto povedať na čo sa Java najmä využíva a čo všetko sa v nej dá naprogramovať ? Mám na mysli skôr k tým základom čo väčšinu času ľudia programuju.

Nahoru Odpovědět 5. ledna 19:58
Hlupák nie je ten kto niečo nevie, hlupákom sa stávaš v momente keď sa na to bojíš opýtať.
Avatar
Nahoru Odpovědět 5. ledna 20:03
Nesnáším {}, proto se jim vyhýbám.
Avatar
Odpovídá na David Novák
Petr Čech (czubehead):

Ale i ve vysokých jazycích se dají psát procedurální programy, prostě ignoruješ ten "balast" okolo.

Nahoru Odpovědět  +1 5. ledna 20:08
Why so serious? -Joker
Avatar
Odpovídá na Michal Žůrek (misaz)
Dominik Gavrecký:

A okrem toho ? Videl som tu nejaké jednoduché hry a konzolové srandicky ale to mi príde dosť nuda

Nahoru Odpovědět 5. ledna 20:09
Hlupák nie je ten kto niečo nevie, hlupákom sa stávaš v momente keď sa na to bojíš opýtať.
Avatar
Odpovídá na Dominik Gavrecký
Michal Žůrek (misaz):

v Javě se dá dělat spousta věcí, mimo jiné i dost nudné věci.

Nahoru Odpovědět 5. ledna 20:12
Nesnáším {}, proto se jim vyhýbám.
Avatar
Filip Šohajek
Redaktor
Avatar
Odpovídá na Petr Čech (czubehead)
Filip Šohajek:

Promiň, na mobilu jsem kliknul na mínus při scrollování.

 
Nahoru Odpovědět  ±0 5. ledna 20:13
Avatar
Jakub Dvorský:

Děkuji všem za odpovědi asi si začnu procvičovat programování v C a pak přejdu na Javu nebo C# :-)

 
Nahoru Odpovědět  +1 5. ledna 20:26
Avatar
Odpovídá na David Novák
Jakub Šárník:

Četl jsem někde názor, se kterým souhlasím - že každý člověk když se jde učit programovat přemýšlí prvně objektově, protože je to prostě mnohem blíž reálnému světu. Musí se přeučit na procedurální programování a pak po mnoha měsících/letech zpět na OOP a je to tak ve výsledku těžší...

 
Nahoru Odpovědět  +1 5. ledna 20:26
Avatar
Odpovídá na Jakub Dvorský
Jakub Šárník:

Nedoporučuji na začátek C. Ne že by to byl jazyk špatný, je pravda že je to jakýsi základ, ale problém je, že dokáže naprosto demotivovat a odradit od programování, poněvadž je docela složitý a v mnoha věcech neintuitivní

 
Nahoru Odpovědět  +4 5. ledna 20:28
Avatar
Odpovídá na Jakub Šárník
Jakub Dvorský:

Ok :-) ale pořád nevím jestli Javu nebo C#.

 
Nahoru Odpovědět 5. ledna 20:30
Avatar
Jakub Šárník:

A k tématu: Já si myslím, že všechny tradiční vysokoúrovňové jazyky jako je C#/Java (bohužel) postupně klesají v používanosti a jsou nahrazovány v různých odvětvích různými jazyky. Samozřejmě však nikdy zcela nevymizí a vždy budou dobrou volbou pro učení/uplatnění.

Z těch moderních jazyků je jich plno, ale žádný podle mě není vhodný pro začátek. Jsou to jazyky jako Ruby (hlavně díky Rails, jinde ale nemá moc zastoupení), Python (na rozdíl od mnoha jiných lidí ho nedoporučuji, jelikož má nedokonalé OOP a syntaxi odlišnou od všech ostatních), JavaScript (kvůli Node.js, které vytlačuje všechny ostatní jazyky/frameworky, i přesto, jaký je ten jazyk hnus), Haskell (funkcionální fakt na začátek ne...) a další.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 5. ledna 20:33
Avatar
Tomáš Brůna
Redaktor
Avatar
Odpovídá na Jakub Dvorský
Tomáš Brůna:

co chceš ;) C# mi příjde o o něco lehčí a pokud chci dělat něco těžšího, tak to dělám v něm. Jedna z jeho výhod je (tedy alespoň pro mě) Visual Studio, umí generovat metody a je v něm celkém lehké stylovat. Začínal jsem na javě a příjde mi zajímavá, ale místy mi příjde opravdu lepší C#.
Volba je jen na tobě, stejně se časem budeš muset naučit alespoň základy obou ;)

Nahoru Odpovědět 5. ledna 20:36
Lepší být šprt než blbec :)
Avatar
Jakub Dvorský:

A co C++ ?

 
Nahoru Odpovědět 5. ledna 20:38
Avatar
Tomáš Brůna
Redaktor
Avatar
Odpovídá na Jakub Dvorský
Tomáš Brůna:

jak říkám je to na tobě, ale osobně se mi zdá do začátků poměrně těžší než Java nebo C#,
je možné že to je jen můj osobní pocit :)

Nahoru Odpovědět  +2 5. ledna 20:41
Lepší být šprt než blbec :)
Avatar
Odpovídá na Jakub Dvorský
Jakub Šárník:

To už je na tobě, já dělám hlavně v C# a tak doporučuji ten, ale ti co dělají v Javě doporučí zase tu. Pokud se naučíš jeden, jde přejít na druhej poměrně snadno, ale můžu tady vypsat nějaký "postřehy".

C#

  • Od Microsoftu -> jednoduchý a přirozený na tvorbu Windows (i mobilních) aplikací, ať už normálních desktopových, nebo do Windows store
  • Také obsahuje přímo zabudovaný robustní a známý framework pro tvorbu webových aplikací - ASP.NET; Framework pro práci s databází - Entity Framework; a C# sám má v syntaxi dotazovací jazyk LINQ
  • Je v něm možné tvořit hry pomocí Unity
  • Není tak jednoduché rozběhnout ho pod Linuxem, i když to už dnes rozhodně jde (a v blízké budoucnosti to bude ještě jednodušší kvůli .NET CORE open source)
  • Plnohodnotná tvorba aplikací na Android je možná jen po zakoupení frameworku třetí strany Xamarin
  • Snad nejlepší IDE vůbec Visual Studio zcela zdarma

Java

  • Je jednodušší na rozběhnutí na všech možných platformách
  • Základní jazyk na vývoj aplikací na Android
  • Také obsahuje framework na tvorbu webových aplikací
  • Není v ní možné tvořit hodnotové typy, ale jazyk je má obsažené
  • Není možné přetěžovat operátory

Záleží to tedy taky hodně na tom, co chceš dělat:

  • Windows desktop/mobil­ní/store aplikace - C#
  • Webové aplikace - C# i Java, záleží na tobě
  • Android aplikace - Java (teoreticky i C#)
  • Hry - C# (teoreticky i Java, ale nemá nic co by se vyrovnalo Unity)
 
Nahoru Odpovědět  +3 5. ledna 20:45
Avatar
Odpovídá na Jakub Dvorský
Petr Čech (czubehead):

C# je prostě lepší, musím to tak napsat :-) .Dříve Javisté argumentovali proti C# hlavně multiplatformností, ale C# už je také (více-méně) multiplatformní. Java oproti C# postrádá spoustu věcí, které značně ulehčují věci. Ze začátku to sice nebude tolik poznat, ale čím hlouběji se budeš do toho jazyka dostávat, tím znatelnější ten rozdíl bude. Uvedu velice klasický příklad:
C#:

public int Age{get;set;}

Java:

private int _age;
public void setAge(int age)
{
    _age=age;
}
public int getAge()
{
    return age;
}

tyto 2 věci dělají naprosto tu samou věc, velmi používanou, navíc u C# je to mnohem intuitivnější, různé fíčury IDE a pod. s tím mohou lépe pracovat etc. A takových rozdílů je spousty, a tady je to ještě docela dobré, třeba takové události jsou v Javě klidně i 10x delší co se týče kódu. V C# je spousty "zkratek" které výrazně zvyšují čitelnost kódu.
To je samotný jazyk. Teď k prostředí.
Java má spousty dobrých, ale nedokonalých IDE, každé si dělá věci trochu jinak, knihovny jsou poházené všude možně po netu.
C# má vlastně 1 IDE, co používá ~90+% lidí (odhad), knihovny jsou na jednom místě, standardy jsou velmi jasně dané přímo od MS. Navíc protože .NET byl původně jen pro Windows, je v IDE velmi pohodlné ladění a další pakárny.

Možná trochu přeháním a není to s Javou tak zlé, ale C# je na tom lépe.

Nahoru Odpovědět  +4 5. ledna 20:47
Why so serious? -Joker
Avatar
Odpovídá na Jakub Dvorský
Jakub Šárník:

O C++ a podobných jazycích ani nepřemýšlej, dokud nebudeš mít dobré a stabilní základy programování. Platí pro něj to stejné jako pro C, ale ještě mnohem víc - svými zvláštnostmi a složitostmi (např. při správě paměti) dokáže začínající programátory odradit.

 
Nahoru Odpovědět  +1 5. ledna 20:47
Avatar
David Novák
Tým ITnetwork
Avatar
Odpovídá na Jakub Dvorský
David Novák:

C++ je v podstatě C s objekty a velkou knihovnou - dost složité pro začátečníky.. To bych určitě nedoporučil..

Jde asi hodně o to, jak se to chceš učit - klasická univerzitní výuka typicky učí C a k tomu rovnou jak funguje procesor (spojeno s výukou asembleru) a operační systémy. Dohromady to dá krásný, ucelený obrázek a hodně to posouvá.. Je to ale také na "plný úvazek" - tj. více než 40hod/týden studia.. (přednášky, projekty, samostudium)..

Pro úplného laika, co se to učí "svátečně", bych se asi taky přiklonil k nějakému vysokému jazyku.. Ale jde mi to tak trochu proti srsti, protože nemám moc "sváteční programátory" a "klikače" v oblibě :D Ale někde je třeba začít.. Můžeš buď "zvrchu" a nebo "zespodu" - tj. buď se učíš OOP a aplikace v grafickém prostředí ve spojení s nějakými algoritmy. A nebo začneš tím, jak vevnitř funguje CPU (že má instrukce a vykonává je postupně a větvení je pomocí skoků, apod.)... Začít zvrchu bude asi podstatně jednodušší.. Ale dlouhodobě můžeš mít problém s tím, že nechápeš vnitřní funkci PC a jsi pak omezen na vyšší aplikace (což ale není nutně negativní - není důvod, aby všichni dělali nízkoúrovňové věci a rozuměli, jak to funguje).. Zespodu je zase o dost náročnější začátek a může to hodně lidí odradit.. Obzvláště, pokud je v tom nevede žádný učitel.

Nahoru Odpovědět 5. ledna 20:48
Chyba je mezi klávesnicí a židlí.
Avatar
Atrament
Člen
Avatar
Odpovídá na Dominik Gavrecký
Atrament:

Lepší by bylo spíš ptát se naopak - co v Javě nejde napsat, nebo na co se vůbec nehodí. Pak by byla odpověď celkem jednoduchá - nehodí se na low level věci jako jsou ovladače hardware a podobně. Tady jasně vede C/C++.

Java je populární v enterprise aplikacích, podnikových systémech, bankovních systémech, internetových bankovnictvích, vědeckých aplikacích atd. Docela hojně se používá při vývoji webových aplikací jako backend. No a samozřejmě aplikace pro Android jsou ve velké míře dělané v Javě, ježto je Android SDK primárně javovské.

Jinak se vám všem divím, že vás baví se dohadovat jaký jazyk je lepší a proč :) Něco jako univerzálně nejlepší jazyk neexistuje. Nějaký jazyk se hodí na to, některý zas na ono, někomu vyhovuje tenhle jazyk, jinému zas jiný, to co se někomu na nějakém jazyku líbí, to zas jiný právě nesnáší a podobně. Podobné diskuse jsou jenom ztrátou času. Každý ať si vybere sám podle své chuti a potřeby co jemu vyhovuje. Pokud se někdo dá na dráhu programátora, musí počítat s tím, že se bude po zbytek života stejně pořád jenom učit. Nové jazyky, nové knihovny, nové postupy, nikdy to nekončí... :)

 
Nahoru Odpovědět  +2 5. ledna 20:55
Avatar
Odpovídá na Atrament
Petr Čech (czubehead):

To, že je něco rozšířenější nemá žádnou vypovídající hodnotu o tom, jestli je "lepší".

Nahoru Odpovědět  +1 5. ledna 21:05
Why so serious? -Joker
Avatar
Atrament
Člen
Avatar
Odpovídá na Petr Čech (czubehead)
Atrament:

No nedá mi to abych nereagoval :) Příklad s gettery a settery je přesně to o čem jsem výše psal - ty to vidíš jako výhodu C#, mně to tak teda rozhodně nepřipadá. Jednak mi přijde Javovské řešení přehlednější, čistější a čitelnější a jednak je to daleko pružnější. Můžu si třeba do těch getterů a setterů jednoduše dát nějaké to logování či debugování. Můžu si v setteru provést nějakou kontrolu, předtím než hodnotu fieldu změním. Atd. Argument typu, že je to kratší neberu - každé normální IDE umí standardní gettery a settery vygenerovat aniž bych napsal jediný řádek kódu. Mimochodem podtržítka v názvech proměnných v Javě, to je pěkná zvrhlost :)

 
Nahoru Odpovědět  -5 5. ledna 21:06
Avatar
Atrament
Člen
Avatar
 
Nahoru Odpovědět 5. ledna 21:07
Avatar
Odpovídá na Atrament
Petr Čech (czubehead):

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.

Nahoru Odpovědět 5. ledna 21:23
Why so serious? -Joker
Avatar
Jaro
Člen
Avatar
Odpovídá na Petr Čech (czubehead)
Jaro:

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.

Nahoru Odpovědět  ±0 5. ledna 21:24
A ship is safe in harbor. But then again, that´s not what ships are for.
Avatar
Odpovídá na Atrament
David Klouček:

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.

 
Nahoru Odpovědět 5. ledna 21:31
Avatar
Atrament
Člen
Avatar
Odpovídá na Petr Čech (czubehead)
Atrament:

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.

 
Nahoru Odpovědět 5. ledna 21:37
Avatar
jackx
Člen
Avatar
Odpovídá na Jakub Dvorský
jackx:

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

Nahoru Odpovědět  +4 5. ledna 21:38
Nic není nemožné.
Avatar
Atrament
Člen
Avatar
Odpovídá na David Klouček
Atrament:

Swing je 'deprecated' už jak dlouho? Sedm osm let počítám?:) Swing tu bude ještě dááávno po nás :)

 
Nahoru Odpovědět 5. ledna 21:43
Avatar
Petr Čech (czubehead):

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.

Nahoru Odpovědět  +1 5. ledna 21:46
Why so serious? -Joker
Avatar
Atrament
Člen
Avatar
Odpovídá na Petr Čech (czubehead)
Atrament:

Hmm jsem Javista, a Windows 10 jsem instaloval v okamžiku kdy byl dostupný :) Co přesně to vypovídá?

 
Nahoru Odpovědět 5. ledna 21:48
Avatar
Filip Šohajek
Redaktor
Avatar
 
Nahoru Odpovědět  +3 5. ledna 21:50
Avatar
jackx
Člen
Avatar
Odpovídá na Atrament
jackx:

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# :-)

Nahoru Odpovědět 5. ledna 21:56
Nic není nemožné.
Avatar
Luboš Běhounek (Satik):

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.

Editováno 5. ledna 21:58
Nahoru Odpovědět  +2 5. ledna 21:58
:)
Avatar
Atrament
Člen
Avatar
Odpovídá na jackx
Atrament:

Ze jsi nemohl nechat jen tak neco, co se dalo nainstalovat zadarmo :-)

Kruci jsem odhalen :)

 
Nahoru Odpovědět  +1 5. ledna 21:58
Avatar
Odpovídá na Jakub Dvorský
Matěj Vítovec:

Za mě C#, objektově programuj co nejdřív to půjde.

 
Nahoru Odpovědět 5. ledna 22:05
Avatar
Odpovídá na Atrament
Michal Žůrek (misaz):

že nevidíš rozdíl v přirovnání a souvislosti.

Nahoru Odpovědět 5. ledna 22:25
Nesnáším {}, proto se jim vyhýbám.
Avatar
Filip Šohajek
Redaktor
Avatar
Filip Šohajek:

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 :D

 
Nahoru Odpovědět  +3 5. ledna 22:28
Avatar
Jaro
Člen
Avatar
Odpovídá na Petr Čech (czubehead)
Jaro:

:D 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 :)

Nahoru Odpovědět  +1 5. ledna 22:59
A ship is safe in harbor. But then again, that´s not what ships are for.
Avatar
Tomáš Brůna
Redaktor
Avatar
Odpovídá na Petr Čech (czubehead)
Tomáš Brůna:

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 ;)

Nahoru Odpovědět 5. ledna 23:10
Lepší být šprt než blbec :)
Avatar
Odpovídá na Jakub Šárník
Jiří Janeček (Johnny):

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áš

 
Nahoru Odpovědět 5. ledna 23:54
Avatar
Odpovídá na Jaro
Petr Čech (czubehead):

Promiň, ale nejsem si jistý, jestli jsem si to přeložil správně do Čj :D 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

Nahoru Odpovědět 6. ledna 14:41
Why so serious? -Joker
Avatar
Richard H.
Redaktor
Avatar
Odpovídá na jackx
Richard H.:

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.

Nahoru Odpovědět 6. ledna 18:22
Malý užitečný manuál je vždy lepší než bichle k ničemu.
Avatar
jackx
Člen
Avatar
Odpovídá na Richard H.
jackx:

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…

Nahoru Odpovědět 6. ledna 18:29
Nic není nemožné.
Avatar
Richard H.
Redaktor
Avatar
Odpovídá na jackx
Richard H.:

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.

Nahoru Odpovědět  +2 6. ledna 19:56
Malý užitečný manuál je vždy lepší než bichle k ničemu.
Avatar
Odpovídá na Jiří Janeček (Johnny)
Jakub Šárník:

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ů

 
Nahoru Odpovědět 6. ledna 20:06
Avatar
David Novák
Tým ITnetwork
Avatar
David Novák:

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á :D ;)

Nahoru Odpovědět 6. ledna 20:20
Chyba je mezi klávesnicí a židlí.
Avatar
jackx
Člen
Avatar
Odpovídá na Richard H.
jackx:

Asi jo. Za to palec nahoru.

Nahoru Odpovědět 6. ledna 20:29
Nic není nemožné.
Avatar
Richard H.
Redaktor
Avatar
Odpovídá na David Novák
Richard H.:

Pěkná statistika nevěděl jsme že C neumírá , přesněji zdaleka neumírá.

Nahoru Odpovědět 6. ledna 20:57
Malý užitečný manuál je vždy lepší než bichle k ničemu.
Avatar
David Novák
Tým ITnetwork
Avatar
Odpovídá na Richard H.
David Novák:

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 :D) 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.

Nahoru Odpovědět  +1 6. ledna 21:05
Chyba je mezi klávesnicí a židlí.
Avatar
Ondřej Krsička
Redaktor
Avatar
Odpovídá na David Novák
Ondřej Krsička:

Divim se, ze Python je cca stejne jako PHP, bych cekal, ze bude niz.

 
Nahoru Odpovědět 6. ledna 21:09
Avatar
David Novák
Tým ITnetwork
Avatar
Odpovídá na Ondřej Krsička
David Novák:

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í :)

Nahoru Odpovědět  +1 6. ledna 21:18
Chyba je mezi klávesnicí a židlí.
Avatar
Odpovídá na David Novák
Michal Žůrek (misaz):

no ale rozhodně se Python používá míň než PHP. To je dáno tím jak je PHP .....

Nahoru Odpovědět 6. ledna 21:36
Nesnáším {}, proto se jim vyhýbám.
Avatar
vita
Redaktor
Avatar
 
Nahoru Odpovědět  +1 6. ledna 21:37
Avatar
David Novák
Tým ITnetwork
Avatar
Odpovídá na Michal Žůrek (misaz)
David Novák:

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ší.

Nahoru Odpovědět 6. ledna 21:41
Chyba je mezi klávesnicí a židlí.
Avatar
Odpovídá na David Novák
Michal Žůrek (misaz):

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í.

Nahoru Odpovědět 6. ledna 21:49
Nesnáším {}, proto se jim vyhýbám.
Avatar
David Novák
Tým ITnetwork
Avatar
Odpovídá na Michal Žůrek (misaz)
David Novák:

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.. :D

Nahoru Odpovědět 6. ledna 21:53
Chyba je mezi klávesnicí a židlí.
Avatar
Odpovídá na David Novák
Michal Žůrek (misaz):

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.

Nahoru Odpovědět  +1 6. ledna 21:56
Nesnáším {}, proto se jim vyhýbám.
Avatar
dobrakmato
Člen
Avatar
Odpovídá na Petr Čech (czubehead)
dobrakmato:

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, ...)

Nahoru Odpovědět 6. ledna 22:59
Čekni stránku so zabavnými obrázkami z internetov: https://www.coolovo.eu?ref=1007
Avatar
Odpovídá na dobrakmato
Jakub Šárník:

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é.

 
Nahoru Odpovědět 6. ledna 23:21
Avatar
dobrakmato
Člen
Avatar
Odpovídá na Jakub Šárník
dobrakmato:

Príde mi to skôr ako vec zvyku, nie ako nejaká veľká nevýhoda Javy.

profile.FirstName = "Jozef";

vs

profile.setFir­stName("Jozef");

Nahoru Odpovědět  +2 6. ledna 23:31
Čekni stránku so zabavnými obrázkami z internetov: https://www.coolovo.eu?ref=1007
Avatar
Jaro
Člen
Avatar
Odpovídá na dobrakmato
Jaro:

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

Nahoru Odpovědět  -2 7. ledna 11:17
A ship is safe in harbor. But then again, that´s not what ships are for.
Avatar
Odpovídá na Jaro
Michal Žůrek (misaz):

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é -.

Nahoru Odpovědět  +4 7. ledna 14:37
Nesnáším {}, proto se jim vyhýbám.
Avatar
Jaro
Člen
Avatar
Odpovídá na Michal Žůrek (misaz)
Jaro:

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.

Nahoru Odpovědět 7. ledna 15:12
A ship is safe in harbor. But then again, that´s not what ships are for.
Avatar
Odpovídá na Jaro
Michal Žůrek (misaz):

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í.

Nahoru Odpovědět 7. ledna 15:29
Nesnáším {}, proto se jim vyhýbám.
Avatar
Odpovídá na Jaro
Michal Žůrek (misaz):

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í.

Nahoru Odpovědět 7. ledna 15:30
Nesnáším {}, proto se jim vyhýbám.
Avatar
Atrament
Člen
Avatar
Atrament:

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 :)

 
Nahoru Odpovědět 7. ledna 18:56
Avatar
Odpovídá na Atrament
Jakub Šárník:

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...

 
Nahoru Odpovědět  +1 7. ledna 19:01
Avatar
Odpovídá na Atrament
Jakub Šárník:

Navíc Foo.Bar += 1 (nebo ++) fakt je mnohem hezčí než Foo.SetBar(Fo­o.GetBar() + 1))

 
Nahoru Odpovědět  +4 7. ledna 19:12
Avatar
Odpovídá na Atrament
Luboš Běhounek (Satik):

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

Nahoru Odpovědět  +1 7. ledna 19:29
:)
Avatar
Atrament
Člen
Avatar
Odpovídá na Jakub Šárník
Atrament:

Jako kdybych mluvil do zdi... :/

 
Nahoru Odpovědět  -1 7. ledna 19:30
Avatar
Hartrik
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
Hartrik:

Alespoň nás to tlačí k lepšímu návrhu ;-)

 
Nahoru Odpovědět  +2 7. ledna 19:41
Avatar
Richard H.
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
Richard H.:

S deseti vlastnostmi k čemu by si něco takového psal a navíc minimálně eclipse umí číst strukturu tedy....

Nahoru Odpovědět  +1 7. ledna 19:46
Malý užitečný manuál je vždy lepší než bichle k ničemu.
Avatar
Jaro
Člen
Avatar
Odpovídá na Jakub Šárník
Jaro:

a čo tak toto?

foo.addToBar(int value);
Nahoru Odpovědět  -2 7. ledna 19:56
A ship is safe in harbor. But then again, that´s not what ships are for.
Avatar
Atrament
Člen
Avatar
Odpovídá na Luboš Běhounek (Satik)
Atrament:

Ne, nemá to ani ten nejmenší vliv, jak už jsem tu několikrát psal - je to čistě subjektivní pocit, neexistuje žádný objektivně lepší způsob, protože každému vyhovuje něco jiného. Tobě se líbí jak to má C#, mně se to tak nelíbí, ale plně chápu že tobě v tom případě přijde C# verze lepší, mně ne. Mně se líbí jak to má Java a já si myslím, že Javovský přístup je lepší, přehlednější a čitelnější. Ale je to opět jen a jen můj subjektivní pocit. Srovnávání jazyků na základě těchto vlastností je mimo.

 
Nahoru Odpovědět  -1 7. ledna 19:57
Avatar
Jaro
Člen
Avatar
Odpovídá na Luboš Běhounek (Satik)
Jaro:

Hovorí ti niečo SRP? Trieda, ktorá má 10 vlastností a ku každej getter/setter je buď dátová štruktúra alebo veľmi zle navrhnutá trieda.

Nahoru Odpovědět  -3 7. ledna 19:59
A ship is safe in harbor. But then again, that´s not what ships are for.
Avatar
Jaro
Člen
Avatar
Odpovídá na Jakub Šárník
Jaro:

by the way, keď máš k premennej getter aj setter môžeš ju nechať rovno public, čiže sa to zjednoduší na niečo takéto

foo.bar++;

:) a to je už veľmi podobné tomu C#-like zápisu

Nahoru Odpovědět 7. ledna 20:03
A ship is safe in harbor. But then again, that´s not what ships are for.
Avatar
Odpovídá na Richard H.
Luboš Běhounek (Satik):

K čemu bych něco takového psal? To tak u programování bývá, že se píše kód :)
Deset vlastností byl jen příklad...
Ano strukturu číst umí, ale pořád ti ten kód zabere 4-5x víc řádků, takže pokud třeba přidáváš někam další getter/setter, musíš se skrz to proscrollovat, když to čteš jako něco, co psal někdo jiný, tak taky - musíš se přes to proscrollovat...

Nahoru Odpovědět 7. ledna 20:45
:)
Avatar
Odpovídá na Jaro
Luboš Běhounek (Satik):

a čo tak toto?

foo.addToBar(int value);

Takže když budu chtít hodnotu místo přičtení násobit, přidáš další metodu? To čitelnosti moc nepomůže... :)

Nahoru Odpovědět  +1 7. ledna 20:46
:)
Avatar
Odpovídá na Atrament
Luboš Běhounek (Satik):

Ne, to není subjektivní pocit, prohrabávat se kódem třídy, která má 10 nebo 60 řádků je o něčem jiném, to není o pocitu.

Nahoru Odpovědět  +2 7. ledna 20:47
:)
Avatar
Odpovídá na Jaro
Luboš Běhounek (Satik):

Hovorí ti niečo SRP? Trieda, ktorá má 10 vlastností a ku každej getter/setter je buď dátová štruktúra alebo veľmi zle navrhnutá trieda.

Ty jsi akademik nebo student, co nezažil praxi, viď?
Ano, spousty těhlech myšlenek jsou hezký, ale v praxi to není tak jednoduchý :)

Nahoru Odpovědět  +1 7. ledna 20:49
:)
Avatar
Odpovídá na Atrament
Luboš Běhounek (Satik):

Ne, nemá to ani ten nejmenší vliv, jak už jsem tu několikrát psal - je to čistě subjektivní pocit, neexistuje žádný objektivně lepší způsob, protože každému vyhovuje něco jiného. Tobě se líbí jak to má C#, mně se to tak nelíbí, ale plně chápu že tobě v tom případě přijde C# verze lepší, mně ne. Mně se líbí jak to má Java a já si myslím, že Javovský přístup je lepší, přehlednější a čitelnější

Jak může být Javovský přístup čitelnější a přehlednější, když C# umožňuje obojí? :)

Srovnávání jazyků na základě těchto vlastností je mimo.

To je pravda jen z části, čitelnost a jednoduchost zápisu sice nepatří mezi ty nejdůležitější vlastnosti jazyka, ale také patří :)

OT: Omlouvám se za spam, ale citace neumožňuje zobrazit autora (nebo aspoň nevím jak), tak je to takhle přehlednější.

Nahoru Odpovědět 7. ledna 20:52
:)
Avatar
Jaro
Člen
Avatar
Odpovídá na Luboš Běhounek (Satik)
Jaro:

Viem že v praxi to je iné, ale to neznamená, že sa prestanem snažiť robiť všetko najlepšie ako viem, áno zaujímam sa o agile development a vždy sa budem snažiť robiť veci správne, aj keď mi je jasné, že to nebude ľahké, ale to je už každého osobná vec. Každému sa páči niečo iné, každý preferuje iné zápisy, iný štýl a tým by som to uzavrel, nemá význam to ďalej riešiť, či sú lepšie gettery alebo vlastnosti.

Nahoru Odpovědět 7. ledna 21:14
A ship is safe in harbor. But then again, that´s not what ships are for.
Avatar
Jaro
Člen
Avatar
Odpovídá na Luboš Běhounek (Satik)
Jaro:

Ako som písal, ak k tomu máš getter aj setter, môžeš to dať public a máš identické zápisy so C#.

Nahoru Odpovědět 7. ledna 21:17
A ship is safe in harbor. But then again, that´s not what ships are for.
Avatar
Richard H.
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
Richard H.:

No nejenom číst jde se v tom taky pohybovat jednoduše klikneš na nějakou metodu a eclipse se tam automaticky presune.

Nahoru Odpovědět 7. ledna 21:30
Malý užitečný manuál je vždy lepší než bichle k ničemu.
Avatar
dobrakmato
Člen
Avatar
Odpovídá na Jakub Šárník
dobrakmato:

Ja by som sa este vyjadril k tomu prikladu Foo.Bar++. Ak casto zvysujem hodnotu tej vlastnosti o jedna, tak si myslim, ze sa to podoba na nejaky counter. Ak je to counter, tak mi pride najcistejsie a prehladnejsie riesenie vytvorit objekt counteru (alebo pouzit existujuci napr. https://docs.oracle.com/…Integer.html) a volat na nom metodu increment();.

Ale az tak casto sa mi nestava, ze by som potreboval incrementovat nejaky integer medzi viacerimi triedami. Skor mi to zavana nejakym zlym navrhom. Casto incrementujem iba nejake sukromne coutnery, ktore patria tej triede a okolie sa o ne nema zaujimat. A ak je to nejaka klucova vlastnost, mozno je dobre sa zamysliet nad tym, ako vytvorit mutatori s ohladom na to, ako ma byt ta vlastnost mutovana.


Ale cudujem sa, ze sa tu riesia take somariny ako gettery, settery, foreach a podobne hovadiny, ked podla mna su celkom podstate vyhody C# v tom, ze ma napriklad pretazovanie operatorov. Zas je ale dobre sa zamysliet, ci je to pretazovanie operatorov naozaj take podstatne pre jazyk ako je Java...

Nahoru Odpovědět 7. ledna 21:44
Čekni stránku so zabavnými obrázkami z internetov: https://www.coolovo.eu?ref=1007
Avatar
Atrament
Člen
Avatar
Odpovídá na Luboš Běhounek (Satik)
Atrament:

No ale Java ten C# přístup taky přece umožňuje. Prostě si nadefinuj všechny atributy jako public a nemusíš se vůbec s nějakýmy gettery a settery vůbec otravovat :) Heh a když už v tom budeš tak si rovnou udělej všechny metody statické, abys nemusel řešit předávání instancí mezi objekty, to ti taky ušetří hromady práce :)

 
Nahoru Odpovědět 7. ledna 21:46
Avatar
Odpovídá na dobrakmato
Jakub Šárník:

Samozřejmě že nejsou potřeba přetěžovatelné operátory, vlastně nejsou potřeba ani třídy a další vymoženosti. Můžeš rovnou psát v assembly jestli chceš. Všechny tyhle věci co zavádí vyšší jazyky tam jsou prostě pro usnadnění práce.

 
Nahoru Odpovědět  +2 7. ledna 22:09
Avatar
Jaro
Člen
Avatar
Odpovídá na Jakub Šárník
Jaro:

a čo iné ako "syntaktický cukor", ktorý môže viesť k veľkým chýbám a zlým interpretáciam, je preťažovanie operátorov...? "Operators don't always do what you expect them to do."

Nahoru Odpovědět  -2 7. ledna 22:23
A ship is safe in harbor. But then again, that´s not what ships are for.
Avatar
Odpovídá na Jaro
Jakub Šárník:

Já osobně zastávám názor, že moderní jazyky by měli ne jen dovolovat co největší svobodu v overloadingu operátorů ale i možnost definovat vlastní operátory. Programátor by měl mít svobodu, ale měl by také mít rozum ji využít moudře. Overloading prostě povoluje tvořit třídy, které se chovají jak to od nich očekáváš i bez použití zbytečných metod. Například takový vektor nebo komplexní číslo.

 
Nahoru Odpovědět  +1 7. ledna 22:47
Avatar
jackx
Člen
Avatar
jackx:

To je parada, jak se to tu rozjelo. Pridam trochu oleje do ohne: Byl by Schwarzenberg lepsi prezidet nez Zeman?
Nebo: Je lepsi Linux nez Windows? A nez odpovite, ptam se jako hrac her ;-)
Atd...

Nahoru Odpovědět  -6 7. ledna 22:47
Nic není nemožné.
Avatar
Jaro
Člen
Avatar
Odpovídá na Jakub Šárník
Jaro:

Súhlasím, že sú situácie, kedy sa preťaženie hodí. V C++ sa to hojne využíva, Java preťaževanie nemá a je to jeden z najpoužívanejšich jazykov, nech si každý spraví vlastný názor, či je to dobre alebo nie. Podľa mňa ak by to ozaj chýbalo a nedalo sa bez toho fungovať, tak by to tam už dávno pridali.

Nahoru Odpovědět 7. ledna 23:10
A ship is safe in harbor. But then again, that´s not what ships are for.
Avatar
Atrament
Člen
Avatar
Odpovídá na dobrakmato
Atrament:

Jo tak přetěžování operátorů by se občas fakt hodilo :)

 
Nahoru Odpovědět 7. ledna 23:21
Avatar
patrik.valkovic
Šéfredaktor
Avatar
patrik.valkovic:

No, jako když jsme u toho bez čeho by se nedalo fungovat? K čemu vlastně potřebujeme funkce, a třídy? Bez těch se přece obejdeme. A když jsme u toho, nějaké cykly...bez těch bychom se koneckonců taky obešli.
Na druhou stranu, přetěžování operátorů - no jak často to potřebujeme?

Nahoru Odpovědět  +3 7. ledna 23:25
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Jaro
Člen
Avatar
Odpovídá na patrik.valkovic
Jaro:

Tak do istej miery sa dajú uplatniť princípy OOP aj v C, alebo vo funkcionálnom jazyku. Skôr si je lepšie položiť otázku, bez čoho nemôžem rozumne programovať?

Nahoru Odpovědět 8. ledna 8:18
A ship is safe in harbor. But then again, that´s not what ships are for.
Avatar
Richard H.
Redaktor
Avatar
Odpovídá na Jaro
Richard H.:

Bez počítače nemůžeme programovat protože se dá programovat i ve strojáku. Ale bez compu prostě programovat nejde.

Editováno 8. ledna 9:56
Nahoru Odpovědět 8. ledna 9:56
Malý užitečný manuál je vždy lepší než bichle k ničemu.
Avatar
Atrament
Člen
Avatar
Odpovídá na Richard H.
Atrament:

Mno čistě teoreticky můžeš. Když na kus papíru napíšeš přesný postup výroby něčeho a ten papír předáš dělníkovi, a ten podle tohoto postupu vyrobí daný výrobek - právě jsi úspěšně naprogramoval dělníka :) Imho nelze programovat akorát bez mozku :)

 
Nahoru Odpovědět  +1 8. ledna 10:05
Avatar
Jaro
Člen
Avatar
Odpovídá na Atrament
Jaro:

Tu sa ponúka otázka, čo je to podľa vás programovanie? :)

Nahoru Odpovědět 8. ledna 10:23
A ship is safe in harbor. But then again, that´s not what ships are for.
Avatar
David Novák
Tým ITnetwork
Avatar
Odpovídá na Richard H.
David Novák:

Ada Lovelace nesouhlasí ;)

Nahoru Odpovědět  +2 8. ledna 10:24
Chyba je mezi klávesnicí a židlí.
Avatar
Richard H.
Redaktor
Avatar
Odpovídá na David Novák
Richard H.:

Ale ten program nebyl nikdy uveden do provozu protože Babbge to comp nidky nepostavil.

Nahoru Odpovědět 8. ledna 14:43
Malý užitečný manuál je vždy lepší než bichle k ničemu.
Avatar
David Novák
Tým ITnetwork
Avatar
Odpovídá na Richard H.
David Novák:

No a? To přeci vůbec nevadí. Byla první programátor vůbec a dodnes z jejího díla čerpáme dodnes.

Pointa je v tom, že můžeš naprosto v pohodě programovat bez počítače.. Jestli ne, tak sorry, ale programátor vůbec nejsi.. A je bohužel smutná pravda, že existuje spousta "programátorů", co jsou bez IDE nebo možnosti si to přeložit a spustit, naprosto ztracení a nepoužitelní..

Nahoru Odpovědět  +2 8. ledna 15:28
Chyba je mezi klávesnicí a židlí.
Avatar
Taskkill
Redaktor
Avatar
Odpovídá na David Novák
Taskkill:

ja mam pocit, ze jsem nekde cetl, ze ve skutecnosti nebyla prvni programator...ten jeji mentor ve skutecnosti napsal algoritmus daleko driv a ona z nej prave cerpala...navic treba takovej Eukleides :D co ten chudak by na to rekl? ze pro nas "pouhy" algoritmus neni dost eno nuno

 
Nahoru Odpovědět 8. ledna 15:38
Avatar
David Novák
Tým ITnetwork
Avatar
Odpovídá na Taskkill
David Novák:

napsat algoritmus != programovat..

Proč? Takový recept na bábovku je třeba dobrý příklad algoritmu ;) Jsou všichni autoři kuchařek programátoři?

Skoro vše můžeš popsat nějakým algoritmem (postupem).. To z tebe ovšem nedělá ještě programátora - programátor je někdo, kdo vytváří programy. Program je algoritmus zapsaný jako posloupnost instrukcí a je určen k vykonání počítačem.

Nahoru Odpovědět  +1 8. ledna 15:48
Chyba je mezi klávesnicí a židlí.
Avatar
Odpovídá na David Novák
Petr Čech (czubehead):

To je sice pravda, ale kdy v situaci bez IDE nebo nedejbože počítače budeš psát kód?

Nahoru Odpovědět  +1 8. ledna 19:49
Why so serious? -Joker
Avatar
David Novák
Tým ITnetwork
Avatar
Odpovídá na Petr Čech (czubehead)
David Novák:

Typicky na přijímacím pohovoru.. ;)

Nebo tě napadne něco někde mimo civilizaci nebo při cestování, tak si to napíšeš na papír..

Jinak mluvím z vlastní zkušenosti - dříve (střední škola) jsem byl na IDE naprosto závislý.. Nepamatoval jsem si názvy funkcí a často ani jak napsat některé konstrukce (snippety v IDE to vkládaly za mě). Jsem rád, že jsem od toho upustil a dal si na rok zákaz jakýchkoliv našeptávačů.. Teď je již vůbec nepotřebuji (ale ani mi nevadí, když je mám) a moje efektivita se zlepšila - i při použití IDE. Osobně si myslím, že IDE je dobré pro naprosté začátečníky a pak až pro zkušené programátory. Začátečníkům to usnadní začátek - klikneš na zelenou šipečku a spustí se to.. Zkušeným zase práci. Těm mezi bych naopak vřele doporučil IDE zavrhnout, naučit se psát všemi deseti, pokud neumí a vyzkoušet si překlad pomocí Makefilu a psát bez berliček - vryje se to mnohem lépe do paměti ;)

Nahoru Odpovědět 8. ledna 20:01
Chyba je mezi klávesnicí a židlí.
Avatar
Odpovídá na David Novák
Jakub Šárník:

Na druhou stranu programování ve vyšších jazycích není moc dobře možné bez IDE nebo alespoň editoru s našeptávačem, protože těch tříd a funkcí je tam tolik, že zapamatovat si to fakt moc nejde :-D

 
Nahoru Odpovědět  +1 8. ledna 20:07
Avatar
David Novák
Tým ITnetwork
Avatar
Odpovídá na Jakub Šárník
David Novák:

Nikdy jsem moc nechápal, k čemu to tam vše je, když ti teoreticky na vše stačí AND, OR a NOT.. :D

A pak chudák lokalita zdrojového kódu..

Nahoru Odpovědět  ±0 8. ledna 20:23
Chyba je mezi klávesnicí a židlí.
Avatar
Nahoru Odpovědět  ±0 8. ledna 20:54
Nesnáším {}, proto se jim vyhýbám.
Avatar
Jaro
Člen
Avatar
Odpovídá na David Novák
Jaro:

IDE je skvelá vec, napríklad potrebuješ urobiť úplne jednoduchú refaktorizáciu (premenovanie triedy) v projekte ktorý má stovky súborov a tá trieda je použitá na x miestach.. som zvedavý ako to v tom tovojom editore spravíš :) ako čo sa týka refaktorizácie sa žiadny editor nechytá.

Nahoru Odpovědět 8. ledna 21:13
A ship is safe in harbor. But then again, that´s not what ships are for.
Avatar
Jaro
Člen
Avatar
Odpovídá na David Novák
Jaro:

je to tam na to aby si sa mohol sústrediť na svoju aplikáciu a nemusel vynaliezať koleso

Nahoru Odpovědět 8. ledna 21:14
A ship is safe in harbor. But then again, that´s not what ships are for.
Avatar
tomisoka
Redaktor
Avatar
Odpovídá na Jaro
tomisoka:

regex? Mimochodem nedělá to IDE taky pomocí regexů?

 
Nahoru Odpovědět  +1 8. ledna 21:37
Avatar
Odpovídá na tomisoka
Michal Žůrek (misaz):

ne nedělá, musí samozřejmě analyzovat kód.

Nahoru Odpovědět 8. ledna 21:40
Nesnáším {}, proto se jim vyhýbám.
Avatar
Jaro
Člen
Avatar
Odpovídá na tomisoka
Jaro:

No to nie je také jednoduché, tomu kódu to musí aj trošku rozumieť, čo keď premenuje, to čo nemal premenovať? a toto je len najednoduchší refaktoring, nejaké zložitejšie by sa ešte horšie robili. Proste na toto sú IDE skvelé.

Nahoru Odpovědět 8. ledna 21:58
A ship is safe in harbor. But then again, that´s not what ships are for.
Avatar
David Novák
Tým ITnetwork
Avatar
Odpovídá na Jaro
David Novák:

Proč bych potřeboval dělat refaktorizaci? Mám ve zvyku se prvně zamyslet a udělat si nějaký návrh, než začnu psát.. ;)

Ale neříkám, že IDE není dobré.. Proč si neusnadnit práci, když je ta možnost - jen říkám, že jeho používání často vytváří opravdu špatné návyky a pak spousta softwaru vypadá tak, jak vypadá..

Nahoru Odpovědět 8. ledna 22:13
Chyba je mezi klávesnicí a židlí.
Avatar
Jaro
Člen
Avatar
Odpovídá na David Novák
Jaro:

No ja mám skôr pocit že veľa softweéru vyzerá tak ako vyzerá (krásny príklad Android) kvôli tomuto

Proč bych potřeboval dělat refaktorizaci?

:) Nie vážne na prvý pokus sa ti málokedy podarí napísať poriadne kód, veľmi rýchlo zistíš, že niečo by sa dalo presunúť do inej triedy, premenovať, hodiť to do inej funkcie. Refaktorizácia je potrebná a to najmä vo veľkých projektoch, pri domácich úlohách to je asi jedno :)

Nahoru Odpovědět  +1 9. ledna 8:43
A ship is safe in harbor. But then again, that´s not what ships are for.
Avatar
Jaro
Člen
Avatar
Odpovídá na David Novák
Jaro:

Tým nechcem povedať, že textové editory nie sú super, sám používam gedit/notepad++ a aj vim trochu a teraz si predstav, akú produktivitu budeš mať, keď máš v ruke vi skratky a začneš programovať v takej IntelliJIDEA s IdeaVim pluginom.. :) To je proste radosť pracovať s takou kombináciou.

Nahoru Odpovědět 9. ledna 8:46
A ship is safe in harbor. But then again, that´s not what ships are for.
Avatar
David Novák
Tým ITnetwork
Avatar
Odpovídá na Jaro
David Novák:

Pokud to pak potřebuješ přepisovat, pak jsi zanedbal první a nejdůležitější krok - návrh.. Což je také jeden z hlavních důvodů selhání projektu (nedodržení termínu, funkcionality nebo vůbec nedokončení)..

Když dostaneš nápad/zadání a pár hodin potom už píšeš kód, tak je někde chyba a ten kód většinou nebude stát za nic (teď mluvíme o složitějších projektech).. V reálných projektech je implementace pouze malá část (10-20% času) a zdaleka nejvíc zabere testování a údržba.. Dobrý návrh minimalizuje problémy po implementaci.. Jenže spousta lidí nepřemýšlí dopředu a často dělají návrh během implementace (sedneš k PC, napíšeš si kostru třídy a pak si říkáš: "Tak jak bych to mohl udělat..?"). Takový přístup ovšem prakticky vždy vede ke špatnému návrhu a řešení, protože nepřemýšlíš nad celkem.

A to je rozdíl mezi programováním a softwarovým inženýrstvím. Před začátkem implementace by měl existovat kompletní návrh celého systému a všech jeho částí.. Pak nebudeš potřebovat dělat nějakou refaktorizaci a narazíš jen na málo problémů.. ;)

Nahoru Odpovědět  ±0 9. ledna 10:45
Chyba je mezi klávesnicí a židlí.
Avatar
Jaro
Člen
Avatar
Odpovídá na David Novák
Jaro:

V tom prípade si človek nevýdaných schopností, ak napíšeš dokonalý kód na prvý pokus. To nevedia ani špičkoví svetoví programátori ;) Nebudem sa ďalej hádať, sám na to prídeš časom.

Nahoru Odpovědět  +1 9. ledna 11:00
A ship is safe in harbor. But then again, that´s not what ships are for.
Avatar
David Novák
Tým ITnetwork
Avatar
Odpovídá na Jaro
David Novák:

Přečti si to znova ;)

A co říkám vychází nejen z mé zkušenosti, ale také ze zkušenosti tisíců profesionálů, kteří se na vzniku SW inženýrství podíleli. Mimochodem se o tom začalo mluvit právě proto, že vývoj trval dlouho a byl často neúspěšný.. Typicky zabere detailní návrh asi tak dvakrát více času než následná implementace - tam už ale moc problémů není, protože se na ně narazilo při tvorbě návrhu a byly vyřešeny.. A je to třeba právě kvůli nedokonalosti programátorů a také proto, že je typicky větší tým a je třeba prvně se domluvit..

Nahoru Odpovědět 9. ledna 11:39
Chyba je mezi klávesnicí a židlí.
Avatar
Jaro
Člen
Avatar
Odpovídá na David Novák
Jaro:

V tomto sa mi páči agile prístup a TDD, ktoré ťa prirodzene vedieť k správnemu návrhu, pretože testovateľný systém je aj dobre navrhnutý systém. Cyklus red-green-refactor, ťa tiež núti udržovať svoj kód čistý. Ono nerefektoruje sa preto lebo je to riziko, že niečo pokazíš, ale akonáhle máš ku kódu testy, na ktoré sa môžeš spolahnúť, tak si môžeš refaktorovať a vylepšovať koľko chceš s čistým svedomím. Som zvedavý ako sa zaobídeš bez refaktorizácie a testovania, keď budeš musieť pracovať s nie moc pekným kódom a niečo do neho pridať/zmeniť (veľmi častá činnosť). Asi zvolíš prístup "Edit and pray" :) Málokedy budeš písať niečo od základu.

Nahoru Odpovědět 9. ledna 11:52
A ship is safe in harbor. But then again, that´s not what ships are for.
Avatar
Odpovídá na David Novák
Luboš Běhounek (Satik):

Pokud to pak potřebuješ přepisovat, pak jsi zanedbal první a nejdůležitější krok - návrh.. Což je také jeden z hlavních důvodů selhání projektu (nedodržení termínu, funkcionality nebo vůbec nedokončení)..

To platí jen v ideálním prostředí = skoro nikdy. Musel bys na projektu pracovat sám a nesmí se ti měni zadání v průběhu práce...

Většina vývoje je udržování existujících projektů - klient se rozhodne přidat někde něco malýho, co třeba ve výsledku znamená přepsat i nějaké základní věci a nebo je to už delší dobu běžící projekt, ještě se zbytky starých technologií, které už nejsou podporovány apod.

A ani při návrhu se nevyhneš chybám, pokud je to nějaký rozsáhlejší projekt.

Nahoru Odpovědět 9. ledna 15:16
:)
Avatar
Odpovídá na Luboš Běhounek (Satik)
Michal Žůrek (misaz):

on je z vysoké školy evidentně zvyklí jen na ideální prostředí, kde jim zadají zadání a pak po nich chtějí řešení.

Nahoru Odpovědět 9. ledna 15:35
Nesnáším {}, proto se jim vyhýbám.
Avatar
David Novák
Tým ITnetwork
Avatar
Odpovídá na Luboš Běhounek (Satik)
David Novák:

Vůbec získat přesné zadání je samozřejmě první krok.. Když zanedbáš ten, tak si jen přidáš práci..

A je pravda, že beru v potaz pouze tvorbu nových projektů.. Nějaké udržování něčeho cizího a dost možná špatně navrženého fakt dělat nehodlám. Ono je ale často jednodušší udělat něco od nuly, než dělat rozsáhlé změny v něčem existujícím..

Nahoru Odpovědět 9. ledna 16:42
Chyba je mezi klávesnicí a židlí.
Avatar
Odpovídá na David Novák
Michal Žůrek (misaz):

ale to se budeš muset zaměstnat pouze na vývoj nově vznikajících projektů a to ještě tak ve firmě s max 3mi zaměstnanci. Není to trochu omezující?

Nahoru Odpovědět 9. ledna 16:44
Nesnáším {}, proto se jim vyhýbám.
Avatar
David Novák
Tým ITnetwork
Avatar
Odpovídá na Michal Žůrek (misaz)
David Novák:

*zvyklý

V akademické sféře to tak skutečně je - a je jedno, jestli je to vysoká nebo střední. Ovšem nevidím na tom něco špatného - mělo by to být normální dostat zadání typu: Udělej program, co umí xyz.

Kromě toho mám nějaké zkušenosti i z praxe, kde je zadání často více vágní. Ovšem pak je na tobě, abys byl schopen ze zadavatele vytáhnout upřesnění. Pokud to neumíš/neuděláš, je to tvůj problém.

Když bych dostal nejasné zadání a svobodu to udělat po svém, tak zadavateli řeknu, že udělám návrh, když on vlastně neví, co chce (za příplatek samozřejmě) a potom mu to odprezentuju. Lidi, co své představy nedokáží definovat pak mnohem snadněji můžou posoudit, jestli by jim to vyhovovalo nebo ne. Když se s tím člověkem nedá pořádně vyjít/dohodnout, tak ho jednoduše odmítnu. Možností pracovat mám podstatně více, než bych kdy byl schopen časově zvládnout..

Nahoru Odpovědět 9. ledna 16:49
Chyba je mezi klávesnicí a židlí.
Avatar
David Novák
Tým ITnetwork
Avatar
Odpovídá na Michal Žůrek (misaz)
David Novák:

Proč? Právě naopak - větší firmy dodržují ty zásady, o kterých mluvím.. Když máš malinký tým, tak můžeš být hodně agilní (což se hodí například když děláš něco, co ještě ani neumíš) - v tom mám zkušenost právě teď při implementaci EMACu - děláme to dva a tedy poměrně agilně.. Ale prvně jsme na to se starším kolegou sedli a udělali solidní návrh.. Fakt je ta implementace o hodně jednodušší a bezproblémovější, když se předtím zamyslíš nad celkem..

Každý ať si samozřejmě dělá, co se mu líbí - ale je to podobné, jako když tu jsou občas diskuze o tom, jak korektně něco napsat, aby to byl čistý kód nebo kód podle MVC - když dodržíš určité zásady, ulehčíš si ve výsledku práci..

Nahoru Odpovědět 9. ledna 16:56
Chyba je mezi klávesnicí a židlí.
Avatar
Odpovídá na David Novák
Luboš Běhounek (Satik):

Já mám na mysli spíš tu "údržbu" projektu po tom, co už máš přesné zadání a třeba ho i dokončíš.

Často je to třeba tak, že zadavatel chce jednoduchý program a po dokončení přijde s tím, jestli by jsi mu tam nepřidělal ještě tohle apod.

Jenže s tím se původně nepočítalo (a když jsi psal první verzi, nemůžeš všechno psát dokonale univerzálně a rozšířitelně, protože by ti to zabralo minimálně dvakrát víc času a stálo dvakrát víc), takže začneš rozšiřovat, předělávat, refaktorovat apod. s tím ti sebelepší návrh nepomůže.

Dělat odznova projekt, který už zabral třeba rok práce několika lidí jen kvůli tomu, že zákazník chce nějakou zásadní změnu, ti nikdo nezaplatí.

Málokdy je to tak, že máš zadání na program, co dělá XYZ a po odevzdání to končí.

Nahoru Odpovědět  +1 9. ledna 19:41
:)
Avatar
David Novák
Tým ITnetwork
Avatar
Odpovídá na Luboš Běhounek (Satik)
David Novák:

Tak samozřejmě, že udělat si dobrý, rozšiřitelný návrh je náročnější na čas.. Ale myslím, že to je stále efektivnější než pak refaktorovat a překovávat to (a přitom si to rozbít a pak se v tom dlouho vrtat a řešit to) - a tam jde zase o domluvu se zákazníkem - často se dá celkem jasně určit, jestli se to bude rozšiřovat nebo ne.

Například teď dodělávám 1GbE a od začátku vím, že bude požadavek na 2.5GbE a potom i 10GbE, takže jsme to tomu uzpůsobili a rozšíření by neměl být takový problém..

Když bych se ale vrátil k původnímu tématu, tak já neříkal, že by IDE bylo nanic - sám sice žádné momentálně nepoužívám, protože to nepotřebuji.. Jen jsem vyjádřil svůj názor, že by si měl každý programovat nějakou dobu bez jakýchkoliv pomůcek, že to pomůže a aspoň pak ten člověk bude chápat, jak to IDE vlastně funguje..

Nahoru Odpovědět 9. ledna 20:05
Chyba je mezi klávesnicí a židlí.
Avatar
Odpovídá na David Novák
Michal Žůrek (misaz):

když používáš ide, tak refactoring zabere 3 sekundy + 5 sekund, když to IDE všude nahrazuje. připadá mi, jako bys nikdy nedělal na projektu, kde je třeba 100 tříd.

Nahoru Odpovědět 9. ledna 20:15
Nesnáším {}, proto se jim vyhýbám.
Avatar
David Novák
Tým ITnetwork
Avatar
Odpovídá na Michal Žůrek (misaz)
David Novák:

Tak já hlavně vůbec nepoužívám OOP ;) I když teď vlastně musím.. Ale nijak mě to neláká a většinou se s OOP u věcí na nižší úrovni vůbec nesetkáš. Ale jinak jsem na takto rozsáhlých projektech dělal (akorát místo tříd byly moduly)..

Můžeš mi dát nějaký pěkný příklad refaktoringu?

Nahoru Odpovědět 9. ledna 20:37
Chyba je mezi klávesnicí a židlí.
Avatar
Jaro
Člen
Avatar
Odpovídá na David Novák
Jaro:

Rename, Extract(class, method, interface, field, variable....), Move(method, class, ...) - najpoužívanejšie refaktoringy

Nahoru Odpovědět 9. ledna 21:07
A ship is safe in harbor. But then again, that´s not what ships are for.
Avatar
Jaro
Člen
Avatar
Odpovídá na David Novák
Jaro:

No to je blbé že nepoužívaš OOP, pretože princípy OOP sa využívajú hojne aj v čistom C-čku, myslíš, že taký linux je nakódený "len tak" špagetovým kódom? To ťažko.

Nahoru Odpovědět 9. ledna 21:09
A ship is safe in harbor. But then again, that´s not what ships are for.
Avatar
David Novák
Tým ITnetwork
Avatar
Odpovídá na Jaro
David Novák:

Říkáš "principy OOP" - ovšem ve skutečnosti jsou ty principy starší než OOP samo - například oddělování funkčních celků do modulů/knihoven.. A věci jako toto samozřejmě používám.. Jen nepoužívám jazyky jako Java nebo C# a tedy tu nemám žádné třídy.

OOP mě jednoduše nijak nenadchlo, což možná souvisí s tím, že nemám nejmenší zájem psát věci, na které se OOP primárně hodí - tedy například nějaké informační systémy nebo běžné GUI aplikace. Mnohem více mě přitahuje například datově orientované programování a poslední dobou i funkcionální programování..

Jo a stále nevidím nejmenší důvod, proč dělat takový refaktoring.. Přejmenování nebo přesun funkcí nebo proměnných..? K čemu? Nejspíš to souvisí s tím, jak jste zvyklí programovat.. Ale když bych se vrátil ještě k hádce o syntax C# vs. Java, tak je fakt nechutné mít na hloupé přiřazení fci :D Docela by mě zajímalo, jaké instrukce to pak generuje.. Ale obávám se, že moc efektivní to nebude..

Nahoru Odpovědět 9. ledna 21:24
Chyba je mezi klávesnicí a židlí.
Avatar
Jaro
Člen
Avatar
Odpovídá na David Novák
Jaro:
void copy() {
char c;
while((c = getchar()) != EOF)
        putchar(c);
}

Krásny príklad polymorfizmu v C (unix copy program, veľmi zjednodušený) :)

Nahoru Odpovědět 9. ledna 22:01
A ship is safe in harbor. But then again, that´s not what ships are for.
Avatar
David Klouček:

Zajímavý, kam až se taková diskuze dostane :-) Máte někdo zkušenosti s ASP.NET MVC a zároveň Springem, nebo EF a (N)Hibernate? Zajímalo by mě porovnání.

 
Nahoru Odpovědět 9. ledna 23:07
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.

Zobrazeno 163 zpráv z 163.