Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: ještě student 21. 04. 2017, 14:49:56
-
Ahoj, roky slýchávám, jak je Java stará a už nemá co nabídnout. I proto ji nedělám, ale mrzí mě, že je pořád nejpopulárnější. Proč to tak je? Co má proti třeba Pythonu a novějším jazykům? Nebo je to jen setrvačnost, že lidé se nechtějí učit novější věci? Na škole jsme ji měli, ale moc mě nezaujala. Startupy ji často vůbec nemají, protože potřebují mít rychle výsledky. Tak jen jestli se tu najdou odborníci z praxe, kteří to chápou.
-
Protoze je proste skvela na velke projekty, je k ni neuveritelne mnozstvi knihoven a je prenositelna. Napr nase aplikace bezi na Win, Linux, AIX, Solaris, Mainframe.
Dela se v ni rychle, no. Spise nechapu tvuj dotaz, proc by nemela byt stale popularnejsi. Obzvlaste v porovnani s Pythonem. Mam ho rad, ale na velky projekt? To preci nejde.
-
Muze za to javaman ((, protoze ji porad vsude propaguje.
-
Částečně sis odpověděl sám, je v ní spousta hotových věcí a nikdo to nebude přepisovat do ničeho nového.
Na serveru je Java rychlá věc, problém jsou gui aplikace a dnes už i to celkem jde (je ale stále co zlepšovat).
No a ta přenositelnost je také obří výhoda.
-
Ahoj, roky slýchávám, jak je Java stará a už nemá co nabídnout. I proto ji nedělám, ale mrzí mě, že je pořád nejpopulárnější. Proč to tak je? Co má proti třeba Pythonu a novějším jazykům? Nebo je to jen setrvačnost, že lidé se nechtějí učit novější věci? Na škole jsme ji měli, ale moc mě nezaujala. Startupy ji často vůbec nemají, protože potřebují mít rychle výsledky. Tak jen jestli se tu najdou odborníci z praxe, kteří to chápou.
Obstojny mainstreamovy jazyk s obrousenymi hranami a statickym typovanim, slusny vykon, obrovsky a dobre zmapovany a vcelku stabilni ekosystem -- knihovny, nastroje, prvotridni IDE. Hodne casto je to "hlavni" volba pro celou oblast -- trebas u Hadoopu je zdaleka nejprirozenejsi pouzit Javu nebo alespon jazyk nad JVM.
-
Částečně sis odpověděl sám
javaman si odpověděl sám pod přezdíkou TomK2.
-
Porovnávat staticky typovanou Javu s dynamicky typovaným Pythonem přece nejde (už na ŽŠ ti paníčelka říkala, že nemůžeš míchat jabka a hrušky...). Udržovat velký projekt v Pythonu (obecně v dynamicky typovaném jazyku) je pain in the ass - stejně jako psát malé skripty ve staticky typovaném jazyku.
Java je populární proto, že je multiplatformní, použitelná a neexistuje smysluplná alternativa (C# není tak úplně multiplatformní).
-
Ahoj, roky slýchávám, jak je Java stará a už nemá co nabídnout. I proto ji nedělám, ale mrzí mě, že je pořád nejpopulárnější. Proč to tak je? Co má proti třeba Pythonu a novějším jazykům? Nebo je to jen setrvačnost, že lidé se nechtějí učit novější věci? Na škole jsme ji měli, ale moc mě nezaujala. Startupy ji často vůbec nemají, protože potřebují mít rychle výsledky. Tak jen jestli se tu najdou odborníci z praxe, kteří to chápou.
Je to setrvačnost. Java bude brzo něco jako Cobol, s mnoha systémy v provozu, ale bez hypu a vývoje. A není to špatné, stabilita je dobrá. Ještě byl ale aspoň mohli zavést něco jako "var" v C#, Java je z nejpoužívanějších jazyků jediná, co to ještě nemá, a pro někoho je to show stopper.
-
Ahoj, roky slýchávám, jak je Java stará a už nemá co nabídnout. I proto ji nedělám, ale mrzí mě, že je pořád nejpopulárnější. Proč to tak je? Co má proti třeba Pythonu a novějším jazykům? Nebo je to jen setrvačnost, že lidé se nechtějí učit novější věci? Na škole jsme ji měli, ale moc mě nezaujala. Startupy ji často vůbec nemají, protože potřebují mít rychle výsledky. Tak jen jestli se tu najdou odborníci z praxe, kteří to chápou.
Je to setrvačnost. Java bude brzo něco jako Cobol, s mnoha systémy v provozu, ale bez hypu a vývoje. A není to špatné, stabilita je dobrá. Ještě byl ale aspoň mohli zavést něco jako "var" v C#, Java je z nejpoužívanějších jazyků jediná, co to ještě nemá, a pro někoho je to show stopper.
V předchozích diskuzích jsem se dočetl, že podobné featury jsou zbytečné. Je lepší nechat IDE vygenerovat redundantní kód. Ze stejného důvodu Java neumí víceřádkové řetězce. IDE vloží plusy mezi řádky.
-
Ahoj, roky slýchávám, jak je Java stará a už nemá co nabídnout. I proto ji nedělám, ale mrzí mě, že je pořád nejpopulárnější. Proč to tak je? Co má proti třeba Pythonu a novějším jazykům? Nebo je to jen setrvačnost, že lidé se nechtějí učit novější věci? Na škole jsme ji měli, ale moc mě nezaujala. Startupy ji často vůbec nemají, protože potřebují mít rychle výsledky. Tak jen jestli se tu najdou odborníci z praxe, kteří to chápou.
Je to setrvačnost. Java bude brzo něco jako Cobol, s mnoha systémy v provozu, ale bez hypu a vývoje. A není to špatné, stabilita je dobrá. Ještě byl ale aspoň mohli zavést něco jako "var" v C#, Java je z nejpoužívanějších jazyků jediná, co to ještě nemá, a pro někoho je to show stopper.
V předchozích diskuzích jsem se dočetl, že podobné featury jsou zbytečné. Je lepší nechat IDE vygenerovat redundantní kód. Ze stejného důvodu Java neumí víceřádkové řetězce. IDE vloží plusy mezi řádky.
Jasne a IDE to za programatora bude i cist a vynechavat syntakticke smeti.
-
Porovnávat staticky typovanou Javu s dynamicky typovaným Pythonem přece nejde (už na ŽŠ ti paníčelka říkala, že nemůžeš míchat jabka a hrušky...). Udržovat velký projekt v Pythonu (obecně v dynamicky typovaném jazyku) je pain in the ass - stejně jako psát malé skripty ve staticky typovaném jazyku.
Tak stim ze udrzovat velky projekt v dynamicky typovanem jazyce je opruz souhlasim (ono to jde pokud ma clovek dobre nastroje ale i tak je to opruz). Stou druhou casti moc nesouhlasim. Psat male skripty v staticky typovanem jazyce mi neprijde problem, ale zalezi samozrejme na jazyce. Pokud ma jazyk promakanej type inference a rychlej kompilator tak to nebyva problem.
-
ale mrzí mě, že je pořád nejpopulárnější
A proč by tě to mělo mrzet, jestli se ti nelíbí, tak ji ignoruj, v čem je problém?
-
Java je populární proto, že je multiplatformní...
Fakt je ta multiplaformita tak důležitá pro její popularitu?
Java se velmi dlouho hledala - snažila se uspět v oborech, kde by multiplatformita byla důležitá velmi, ale... ale skončila jako jazyk pro velké projekty pro velké firmy. Naprostá většina projektů v javě, které jsou nasazeny na korporátních serverech není přenositelná ani na jiný aplikační server. Tedy ne bez značného úsilí jak vývojářského tak administrátorského týmu.
Některé velké firmy dělají java programy, které běží pouze na tom "jejich" aplikačním serveru. A zákazníci (často obří korporace) potom vyhodnotí, že pro ně bude snazší provozovat ve firmě různé aplikační servery vedle sebe, než by se snažily ohýbat ty dodavatele a jejich programy.
Za mně není multiplatformita javy pro její současnou popularitu vůbec podstatná. To, že .NET je za javou v nasazení ve velkých projektech pořád pozadu není tím, že není dost multiplatformní, ale prostě proto, že přišel později a neměl zpočátku takovou důvěru zákazníků (kteří jsou konzervativní a mají něco s čím jsou spokojeni, atd. atd.).
-
Jasne a IDE to za programatora bude i cist a vynechavat syntakticke smeti.
Většina programového kódu je z pohledu kompilátoru jen syntaktické smetí.
-
Jasne a IDE to za programatora bude i cist a vynechavat syntakticke smeti.
No poslední Android studio to dělá....fakt...
-
Ahoj, roky slýchávám, jak je Java stará a už nemá co nabídnout. I proto ji nedělám, ale mrzí mě, že je pořád nejpopulárnější. Proč to tak je? Co má proti třeba Pythonu a novějším jazykům? Nebo je to jen setrvačnost, že lidé se nechtějí učit novější věci? Na škole jsme ji měli, ale moc mě nezaujala. Startupy ji často vůbec nemají, protože potřebují mít rychle výsledky. Tak jen jestli se tu najdou odborníci z praxe, kteří to chápou.
Je to setrvačnost. Java bude brzo něco jako Cobol, s mnoha systémy v provozu, ale bez hypu a vývoje. A není to špatné, stabilita je dobrá. Ještě byl ale aspoň mohli zavést něco jako "var" v C#, Java je z nejpoužívanějších jazyků jediná, co to ještě nemá, a pro někoho je to show stopper.
V předchozích diskuzích jsem se dočetl, že podobné featury jsou zbytečné. Je lepší nechat IDE vygenerovat redundantní kód. Ze stejného důvodu Java neumí víceřádkové řetězce. IDE vloží plusy mezi řádky.
Jasne a IDE to za programatora bude i cist a vynechavat syntakticke smeti.
IntelliJ to robi uz dlho. Programator tak vidi Java lambdy aj ked cita Javu 6.
-
protoze existuje mnoho hotovych reseni ktere lze pouzit, protoze intellij idea, protoze staci mit nainstalovy runtime a spustim jar na kazde platforme ...
-
Nechci zakladat flame, ale tedy o dost vic se mi libi C# :)
-
Nechci zakladat flame, ale tedy o dost vic se mi libi C# :)
Nechci zakladat flame, ale tedy o dost vic nez Java a C# se mi libi Haskell :)
-
Nechci zakladat flame, ale tedy o dost vic se mi libi C# :)
Nechci zakladat flame, ale tedy o dost vic nez Java a C# se mi libi Haskell :)
Nechcem zakladat flame, ale fakt sa mi nepaci node.js :)
-
java byla navrzena jako COBOL pro 21. stoleti. A tim taky je.
-
Nechci zakladat flame, ale tedy o dost vic se mi libi C# :)
Nechci zakladat flame, ale tedy o dost vic nez Java a C# se mi libi Haskell :)
Nechcem zakladat flame, ale fakt sa mi nepaci node.js :)
až komunita dospěje, node.js bude super technologie.
-
Nechci zakladat flame, ale tedy o dost vic se mi libi C# :)
Nechci zakladat flame, ale tedy o dost vic nez Java a C# se mi libi Haskell :)
Nechcem zakladat flame, ale fakt sa mi nepaci node.js :)
až komunita dospěje, node.js bude super technologie.
No...podle toho, jak se to vyvojari snazi nasadit a jednou z veci, co se musi resit, je upgrade&restart cesta, to zni jako dost oser oproti klasickymu webserveru...
-
Nechci zakladat flame, ale tedy o dost vic se mi libi C# :)
Nechci zakladat flame, ale tedy o dost vic nez Java a C# se mi libi Haskell :)
Nechcem zakladat flame, ale fakt sa mi nepaci node.js :)
To nikomu soudnému.
-
Nechci zakladat flame, ale tedy o dost vic se mi libi C# :)
Nechci zakladat flame, ale tedy o dost vic nez Java a C# se mi libi Haskell :)
Nechcem zakladat flame, ale fakt sa mi nepaci node.js :)
To nikomu soudnému.
A nějaký argument krom bezduchého kopnutí s gustem mistře ? :)
-
A nějaký argument krom bezduchého kopnutí s gustem mistře ? :)
Argument je prostý: Když něco neznám, tak si do toho alespoň kopnu.
-
Nechci zakladat flame, ale tedy o dost vic se mi libi C# :)
Nechci zakladat flame, ale tedy o dost vic nez Java a C# se mi libi Haskell :)
Nechcem zakladat flame, ale fakt sa mi nepaci node.js :)
hoši nechci zakládat flame ale total nevim co to je haskell a node.js o c s křížkem mám dojem že toje nějaká nota protože noty mají takový křížek. java je tuším programovací jazyk a když po někom chci něco naprogramovat tak to musí být samozřejmně naprogramované v programovacím jazyku 8) navečer řeknu hochu chci to a to noa ráno nakluše nerd s rudejma očima a celej rozklepanej od kofeinu a podá mi to na takový ty usb disketě ke klíčům co se strká do stejný dirky jako klávesnice nebo myš 8)
-
Nechci zakladat flame, ale tedy o dost vic se mi libi C# :)
Nechci zakladat flame, ale tedy o dost vic nez Java a C# se mi libi Haskell :)
Nechcem zakladat flame, ale fakt sa mi nepaci node.js :)
hoši nechci zakládat flame ale total nevim co to je haskell a node.js o c s křížkem mám dojem že toje nějaká nota protože noty mají takový křížek. java je tuším programovací jazyk a když po někom chci něco naprogramovat tak to musí být samozřejmně naprogramované v programovacím jazyku 8) navečer řeknu hochu chci to a to noa ráno nakluše nerd s rudejma očima a celej rozklepanej od kofeinu a podá mi to na takový ty usb disketě ke klíčům co se strká do stejný dirky jako klávesnice nebo myš 8)
Pozdní vycházky?
-
Nechci zakladat flame, ale tedy o dost vic se mi libi C# :)
Nechci zakladat flame, ale tedy o dost vic nez Java a C# se mi libi Haskell :)
Nechcem zakladat flame, ale fakt sa mi nepaci node.js :)
hoši nechci zakládat flame ale total nevim co to je haskell a node.js o c s křížkem mám dojem že toje nějaká nota protože noty mají takový křížek. java je tuším programovací jazyk a když po někom chci něco naprogramovat tak to musí být samozřejmně naprogramované v programovacím jazyku 8) navečer řeknu hochu chci to a to noa ráno nakluše nerd s rudejma očima a celej rozklepanej od kofeinu a podá mi to na takový ty usb disketě ke klíčům co se strká do stejný dirky jako klávesnice nebo myš 8)
Takovým lidem se raději vyhýbejte. Znal jsem jednoho, který dělal v IT. Spal v rakvi, randil s babičkama a pořád jenom nadával. Řekl: "Tady, tunc, máš tu disketu tunc, kkte!". A podal mi takovou divnou věc, co se cpe do autorádia. A já nevědel, co s tím a z ekonomky mě vyhodili, tak jsem vystudoval za tělocvikáře.
-
No...podle toho, jak se to vyvojari snazi nasadit a jednou z veci, co se musi resit, je upgrade&restart cesta, to zni jako dost oser oproti klasickymu webserveru...
Moc nerozumim co myslite tou upgrade a restart cestou. Nemohl byste to rozvest? Klasický webserver je podle vás co?
-
To nikomu soudnému.
Zkusil jsi v tom něco napsat?
-
Jednoduchá odpověď: protože Java nemá konkurenci; nic lepšího pro dolních 90% vývoje SW neexistuje. Rychlá odpověď proč: JVM, Maven, kompatibilita napříč všemi verzemi Javy, univerzalnost, jednoduchost, komunita...
-
Vytlačit ji můžou až webové prohlížeče, ale to je zatím jen takové hraní pro malé nerdy.
-
Java je populární proto, že je multiplatformní...
Fakt je ta multiplaformita tak důležitá pro její popularitu?
Java se velmi dlouho hledala - snažila se uspět v oborech, kde by multiplatformita byla důležitá velmi, ale... ale skončila jako jazyk pro velké projekty pro velké firmy. Naprostá většina projektů v javě, které jsou nasazeny na korporátních serverech není přenositelná ani na jiný aplikační server. Tedy ne bez značného úsilí jak vývojářského tak administrátorského týmu.
Některé velké firmy dělají java programy, které běží pouze na tom "jejich" aplikačním serveru. A zákazníci (často obří korporace) potom vyhodnotí, že pro ně bude snazší provozovat ve firmě různé aplikační servery vedle sebe, než by se snažily ohýbat ty dodavatele a jejich programy.
Za mně není multiplatformita javy pro její současnou popularitu vůbec podstatná. To, že .NET je za javou v nasazení ve velkých projektech pořád pozadu není tím, že není dost multiplatformní, ale prostě proto, že přišel později a neměl zpočátku takovou důvěru zákazníků (kteří jsou konzervativní a mají něco s čím jsou spokojeni, atd. atd.).
Vyvoj "websphere only" jsem teda opravdu jeste nevidel a pokud to nekdo z nezname priciny dela, je to dobytek.
V realu dnes stene kazdy pouziva Spring, na devel notasu spousti svuj git branch v lehkem tomcatu, jettyne, payare - bamboo to v noci prechroupe a nasadi na plnotucny testovaci cluster.
A k oblibenosti Javy - ma zdaleka nejvyspelejsi ekosystem. Kombinaci Java + Spring + Maven + Maven Central + Nexus Sonatype + OSGi + Apache Foundation se nevyrovna nic.
Jazyk je to jeenoduchy, temer nezaludny (s par speky) a konzervativni.
Kazda prave modni pitomost se opravdu hned nemusi strkat do jazyka, pripadne se vystrci do JSR specifikovaneho externiho frameworku, ktery pouzije jenom clovek, co jej potrebuje.
-
V tomto prispevku vysvetlim OP, preco Java este zije. Bude to dlhy prispevok, ale o to zaujimavejsi.
Na uvod male odlahcenie v podobe lacneho vtipu.
Co má [Java] proti třeba Pythonu a novějším jazykům?
Len pre tvoju informaciu, Java je novsia ako Python. Asi si nedaval pozor na hodine (haha-h (https://www.youtube.com/watch?v=8X_Ot0k4XJc)). Ked najblizsie budete mat Python, mozes ohurit skolitela.
A teraz uvediem perlu (takzvany red pill (http://www.urbandictionary.com/define.php?term=red%20pill)), ktora nenecha Haskellistu, Lispistu a ineho funkcionalistu v klude:
Od jari 2014 v produkcnych systemoch (banky, vlady atd.) po celom svete a v masovej skale pribudli monady. Bez toho, aby o tom hlasali v televizii alebo pisali na root.cz bombasticke clanky, svet sa stal zo dna na den o trochu viac funkcionalnejsi...
A nestalo sa tak preto, ze od jari 2014 je Haskell najpopularnejsim jazykom. Stalo sa tak preto, ze vysla Java 8, do ktorej pribudli monadicke API, ktore su sucastou zakladneho JDK a teda su pritomne vsade tam, kde je Java 8 a vyssie. Tato myslienka nie je samozrejme moja, inak by som ju tak sebaisto neprezentoval. Povedal ju Ron Pressler na konferencii Curry on (https://youtu.be/449j7oKQVkc?t=72). Publikum sa sice zasmialo, ale bohuzial to nebol vtip. Okrem ineho do Javy pribudli aj lambdy...
Ako a kedy sme sa sem dostali? Su lambdy a monady listok pre Javu ako sa vratit medzi "nove" jazyky? Ale kdeze, v Jave su predsa aj lahke vlakna s kanalmi a kooperativnym multitaskingom podobne ako maju gorutiny v Go alebo procesy v Erlangu. Su tu aj namenej tri aktor frameworky (Akka, Orbit a Quasar) a samozrejme tzv. big data technologie, ci uz starucky YARN a MapReduce alebo mladsi Spark, near-realtime a adhoc analyticke nastroje ako Druid alebo Drill, zbierace a analyzatory prietokovych senzorickych dat Storm a NiFi, za tatru in-memory gridov (Genode, Hazelcast, Ignite) schopne spravovat PB v datalakeoch v RAMke, vyhladavace a indexery, ktore v inych jazykoch nemaju alternativne popularnu implementaciu. Alternativa k Spark ML? V neposlednom rade ma Java aj svoj polyglotny event driven "node.js" s nazvom Vertx.io a dokonca aj port Rx kniznice, ak by mal niekto potrebu ukojit svoje FRP tuzby.
A teraz k povodnej otazke
Ahoj, roky slýchávám, jak je Java stará a už nemá co nabídnout. I proto ji nedělám, ale mrzí mě, že je pořád nejpopulárnější. Proč to tak je?
Bezpochyby ma Java stale momentum. No je jasne, ze o toto momentum pomaly prichadza v prospech jazykov ako Go. Avsak treba si uvedomit, ze Java robi aj velmi riskantne kroky vo velmi (relativne) kratkom case, ktore inym jazykom trvaju roky (tymto pozdravujem Perl 6). Osobne si myslim, ze je to prave kombinacia riskovania, momentu a tiez schopnost Javy rozsirit "nove" technologie a koncepty na masovej skale medzi beznych programatorov, ktore drzia Javu nad vodou. Preto su ludia, ktory sa na Jave vezu, jeden den na koni a druhy den rukojemnici.
V Jave sa deju velke-male revolucie, ktore ale bezneho cloveka z ulice obchadzaju alebo o nich nikdy nepocul, lebo to nepotreboval. Napr. v roku 2010 to bolo zavedenie novej bytecodovej instrukcie invokedynamic a v roku 2017 to bude v znameni IoT. V Java 9 sa bude balit do bundlov ako cez Webpack a pribudne AOT kompilcia do nativneho kodu - zatial iba na Linuxe. Pribude aj interaktivny shell. Stane sa Java potom dostatocne "mlada" ako Python?
Apropo, prave vdaka invokedynamic sa stal JVM plnohodnotny domov novych jazykov (Scala, Closure, Kotlin, Python, Ruby, Haskell). Vtip je v tom, ze ked Java 7 vysla, samotny Java jazyk tuto instrukciu nijako nepouzival a kompiler ju ani nedokazal emittovat pre ziaden zo syntaktickych konstruktov. Ludia ako Charles Oliver Nutter (http://blog.eisele.net/2011/09/heroes-of-java-charles-oliver-nutter.html) (tvorca JRuby) s ludmi zo Sun-u vtedy JVM riadne prefackali k zivotu aspon na dalsiu dekadu. Predsa ziaden zo staticky typovanych Javistov nepotreboval dynamicke prepajanie call site a target asistovane vlastnou bootstrap metodou pocas runtimu. Samotnemu jazyku Java trvalo dalsie 4 roky nez zacal invokedynamic vyuzivat.
Dnes tuto dynamickost v Jave pouzijes tak, ze v IntelliJ kliknes prehodit slucku for() na forEach(). Alebo si do klastra 200 Ignite nodov posles () -> { System.out.println("Hello World")} (Technicku diskusiu o tom, ze kompiler desugaruje lambdu na privatnu metodu na triede, kde je zadefinovana, vyemittuje invokedynamic call site v mieste volania a potom runtime musi za behu vytvorit ad hoc lambda factory triedu cez ASM kniznicu, nechame bokom).
Zaver z mojho prispevku je: Java sa vyvyja aj ked sa na nu nepozeras alebo inak dnesna Java nie je ta ista, v ktorej zacinal pisat tvoj otec (http://blog.paralleluniverse.co/2014/05/01/modern-java/) <-- velmi good read
[flame bait] Apropo, asi sa zhodneme, ze dochadza k istemu "revivalu typovosti" aj v dynamickych jazykoch, inak by TypeScript nenaberal tolko na popularite a nebol by primarnym vyvojovym jazykom Angular 4. Jasne, ze je to iny typ typovosti ako ma Java, ale stale lepsie ako JavaScript... Ze by to soudruzili architekti Javy odhadli v '96 spravnejsie ako Guido 5 rokov pred nimi?
-
V tomto prispevku vysvetlim OP, preco Java este zije. Bude to dlhy prispevok, ale o to zaujimavejsi.
...
zacalo to vazne dobre! upoutals, napnuls (i kdyz slovensky) a ... nic - v kazdem pripade - tomuhle rikam uvod!
-
Gratulujem, spalil si najmenej 3 minuty svojho zivota, aby si v dvoch vetach mohol napisat, ze boli zbytocne. Potesenie je na mojej strane!
-
Nechci zakladat flame, ale tedy o dost vic se mi libi C# :)
Nechci zakladat flame, ale tedy o dost vic nez Java a C# se mi libi Haskell :)
Nechcem zakladat flame, ale fakt sa mi nepaci node.js :)
až komunita dospěje, node.js bude super technologie.
Psát serverový aplikace v asynchronnim jazyku nebude nikdy super.
-
Gratulujem, spalil si najmenej 3 minuty svojho zivota, aby si v dvoch vetach mohol napisat, ze boli zbytocne. Potesenie je na mojej strane!
Myslim ze rozhodne nejsme na stejne strance ale nemas zac :)
-
A k oblibenosti Javy - ma zdaleka nejvyspelejsi ekosystem. Kombinaci Java + Spring + Maven + Maven Central + Nexus Sonatype + OSGi + Apache Foundation se nevyrovna nic.
Jazyk je to jeenoduchy, temer nezaludny (s par speky) a konzervativni.
Kazda prave modni pitomost se opravdu hned nemusi strkat do jazyka, pripadne se vystrci do JSR specifikovaneho externiho frameworku, ktery pouzije jenom clovek, co jej potrebuje.
Zřejmě jsi to vystihl: Java je poměrně jednoduchým jazykem a má vyspělý ekosystém.
Z podobných důvodů používám PHP, neboť je také jednoduchým jazykem a v tom ekosystému má i vlastnosti, které v Javě postrádám.
-
A k oblibenosti Javy - ma zdaleka nejvyspelejsi ekosystem. Kombinaci Java + Spring + Maven + Maven Central + Nexus Sonatype + OSGi + Apache Foundation se nevyrovna nic.
Jazyk je to jeenoduchy, temer nezaludny (s par speky) a konzervativni.
Kazda prave modni pitomost se opravdu hned nemusi strkat do jazyka, pripadne se vystrci do JSR specifikovaneho externiho frameworku, ktery pouzije jenom clovek, co jej potrebuje.
Zřejmě jsi to vystihl: Java je poměrně jednoduchým jazykem a má vyspělý ekosystém.
Z podobných důvodů používám PHP, neboť je také jednoduchým jazykem a v tom ekosystému má i vlastnosti, které v Javě postrádám.
no ... a to je krasna tecka - diky kitty - bylo to supr - diky vsem
-
Gratulujem, spalil si najmenej 3 minuty svojho zivota, aby si v dvoch vetach mohol napisat, ze boli zbytocne. Potesenie je na mojej strane!
Myslim ze rozhodne nejsme na stejne strance ale nemas zac :)
Ja som na root-e a ty evidentne tiez... Mas rad metafory?
-
Gratulujem, spalil si najmenej 3 minuty svojho zivota, aby si v dvoch vetach mohol napisat, ze boli zbytocne. Potesenie je na mojej strane!
Myslim ze rozhodne nejsme na stejne strance ale nemas zac :)
Ja som na root-e a ty evidentne tiez... Mas rad metafory?
vsimni si toho meta ve slove metafora
-
Gratulujem, spalil si najmenej 3 minuty svojho zivota, aby si v dvoch vetach mohol napisat, ze boli zbytocne. Potesenie je na mojej strane!
Myslim ze rozhodne nejsme na stejne strance ale nemas zac :)
Ja som na root-e a ty evidentne tiez... Mas rad metafory?
vsimni si toho meta ve slove metafora
Skoda, myslel som, ze z teba vypadne nieco hlbsie. Kludne som mohol napisat prirovnanie. Ale fajn, ze si sa chytil. Takze predsa len sme na tej istej stranke?
-
V tomto prispevku vysvetlim OP, preco Java este zije. Bude to dlhy prispevok, ale o to zaujimavejsi.
Na uvod male odlahcenie v p................
..........................................
............................
.................
......
TL;DR 8)
-
Gratulujem, spalil si najmenej 3 minuty svojho zivota, aby si v dvoch vetach mohol napisat, ze boli zbytocne. Potesenie je na mojej strane!
Myslim ze rozhodne nejsme na stejne strance ale nemas zac :)
Ja som na root-e a ty evidentne tiez... Mas rad metafory?
vsimni si toho meta ve slove metafora
Skoda, myslel som, ze z teba vypadne nieco hlbsie. Kludne som mohol napisat prirovnanie. Ale fajn, ze si sa chytil. Takze predsa len sme na tej istej stranke?
No nejsme - divej - tezko muzem byt na stejne strance kdyz necteme stejnou knihu ...
-
V tomto prispevku vysvetlim OP, preco Java este zije. Bude to dlhy prispevok, ale o to zaujimavejsi.
Na uvod male odlahcenie v podobe lacneho vtipu.
Co má [Java] proti třeba Pythonu a novějším jazykům?
Len pre tvoju informaciu, Java je novsia ako Python. Asi si nedaval pozor na hodine (haha-h (https://www.youtube.com/watch?v=8X_Ot0k4XJc)). Ked najblizsie budete mat Python, mozes ohurit skolitela.
A teraz uvediem perlu (takzvany red pill (http://www.urbandictionary.com/define.php?term=red%20pill)), ktora nenecha Haskellistu, Lispistu a ineho funkcionalistu v klude:
Od jari 2014 v produkcnych systemoch (banky, vlady atd.) po celom svete a v masovej skale pribudli monady. Bez toho, aby o tom hlasali v televizii alebo pisali na root.cz bombasticke clanky, svet sa stal zo dna na den o trochu viac funkcionalnejsi...
A nestalo sa tak preto, ze od jari 2014 je Haskell najpopularnejsim jazykom. Stalo sa tak preto, ze vysla Java 8, do ktorej pribudli monadicke API, ktore su sucastou zakladneho JDK a teda su pritomne vsade tam, kde je Java 8 a vyssie. Tato myslienka nie je samozrejme moja, inak by som ju tak sebaisto neprezentoval. Povedal ju Ron Pressler na konferencii Curry on (https://youtu.be/449j7oKQVkc?t=72). Publikum sa sice zasmialo, ale bohuzial to nebol vtip. Okrem ineho do Javy pribudli aj lambdy...
Ako a kedy sme sa sem dostali? Su lambdy a monady listok pre Javu ako sa vratit medzi "nove" jazyky? Ale kdeze, v Jave su predsa aj lahke vlakna s kanalmi a kooperativnym multitaskingom podobne ako maju gorutiny v Go alebo procesy v Erlangu. Su tu aj namenej tri aktor frameworky (Akka, Orbit a Quasar) a samozrejme tzv. big data technologie, ci uz starucky YARN a MapReduce alebo mladsi Spark, near-realtime a adhoc analyticke nastroje ako Druid alebo Drill, zbierace a analyzatory prietokovych senzorickych dat Storm a NiFi, za tatru in-memory gridov (Genode, Hazelcast, Ignite) schopne spravovat PB v datalakeoch v RAMke, vyhladavace a indexery, ktore v inych jazykoch nemaju alternativne popularnu implementaciu. Alternativa k Spark ML? V neposlednom rade ma Java aj svoj polyglotny event driven "node.js" s nazvom Vertx.io a dokonca aj port Rx kniznice, ak by mal niekto potrebu ukojit svoje FRP tuzby.
A teraz k povodnej otazke
Ahoj, roky slýchávám, jak je Java stará a už nemá co nabídnout. I proto ji nedělám, ale mrzí mě, že je pořád nejpopulárnější. Proč to tak je?
Bezpochyby ma Java stale momentum. No je jasne, ze o toto momentum pomaly prichadza v prospech jazykov ako Go. Avsak treba si uvedomit, ze Java robi aj velmi riskantne kroky vo velmi (relativne) kratkom case, ktore inym jazykom trvaju roky (tymto pozdravujem Perl 6). Osobne si myslim, ze je to prave kombinacia riskovania, momentu a tiez schopnost Javy rozsirit "nove" technologie a koncepty na masovej skale medzi beznych programatorov, ktore drzia Javu nad vodou. Preto su ludia, ktory sa na Jave vezu, jeden den na koni a druhy den rukojemnici.
V Jave sa deju velke-male revolucie, ktore ale bezneho cloveka z ulice obchadzaju alebo o nich nikdy nepocul, lebo to nepotreboval. Napr. v roku 2010 to bolo zavedenie novej bytecodovej instrukcie invokedynamic a v roku 2017 to bude v znameni IoT. V Java 9 sa bude balit do bundlov ako cez Webpack a pribudne AOT kompilcia do nativneho kodu - zatial iba na Linuxe. Pribude aj interaktivny shell. Stane sa Java potom dostatocne "mlada" ako Python?
Apropo, prave vdaka invokedynamic sa stal JVM plnohodnotny domov novych jazykov (Scala, Closure, Kotlin, Python, Ruby, Haskell). Vtip je v tom, ze ked Java 7 vysla, samotny Java jazyk tuto instrukciu nijako nepouzival a kompiler ju ani nedokazal emittovat pre ziaden zo syntaktickych konstruktov. Ludia ako Charles Oliver Nutter (http://blog.eisele.net/2011/09/heroes-of-java-charles-oliver-nutter.html) (tvorca JRuby) s ludmi zo Sun-u vtedy JVM riadne prefackali k zivotu aspon na dalsiu dekadu. Predsa ziaden zo staticky typovanych Javistov nepotreboval dynamicke prepajanie call site a target asistovane vlastnou bootstrap metodou pocas runtimu. Samotnemu jazyku Java trvalo dalsie 4 roky nez zacal invokedynamic vyuzivat.
Dnes tuto dynamickost v Jave pouzijes tak, ze v IntelliJ kliknes prehodit slucku for() na forEach(). Alebo si do klastra 200 Ignite nodov posles () -> { System.out.println("Hello World")} (Technicku diskusiu o tom, ze kompiler desugaruje lambdu na privatnu metodu na triede, kde je zadefinovana, vyemittuje invokedynamic call site v mieste volania a potom runtime musi za behu vytvorit ad hoc lambda factory triedu cez ASM kniznicu, nechame bokom).
Zaver z mojho prispevku je: Java sa vyvyja aj ked sa na nu nepozeras alebo inak dnesna Java nie je ta ista, v ktorej zacinal pisat tvoj otec (http://blog.paralleluniverse.co/2014/05/01/modern-java/) <-- velmi good read
[flame bait] Apropo, asi sa zhodneme, ze dochadza k istemu "revivalu typovosti" aj v dynamickych jazykoch, inak by TypeScript nenaberal tolko na popularite a nebol by primarnym vyvojovym jazykom Angular 4. Jasne, ze je to iny typ typovosti ako ma Java, ale stale lepsie ako JavaScript... Ze by to soudruzili architekti Javy odhadli v '96 spravnejsie ako Guido 5 rokov pred nimi?
Jenže slovy klasika "[...] monads require writing code at a level of sophistication not available to the average programmer". A Java byla cíleně navržena pro průměrného programátora. Takže tudy cesta nevede.
-
nejjednodussi odpoved je .. Protoze Android
-
nejjednodussi odpoved je .. Protoze Android
Android muze prispivat k popularite Javy, ale tezko je to hlavni vysvetleni.
-
Používání lambd není v javě 8 žádná věda. Vyřeší se jimi spoustu workaroundů/kódu navíc, když je potřeba předávat postup a ne jen data. Navíc vedou k lepší dekompozici, protože člověka neštve ty funkcionality rozpadat na samostatné části, když nepotřebuje tolik omáčky kolem a spoustu dalších pomocných tříd.
Stejně tak streamy ušetří spoustu času, především při velice časté konverzi kolekcí na jiný vnitřní objekt. Naučí se to každý, opět žádná věda to není. Optional a spol. je už něco trochu jiného, na to se musí myslet víc. Ale taky užitečné a žádná rocket science.
-
Používání lambd není v javě 8 žádná věda. Vyřeší se jimi spoustu workaroundů/kódu navíc, když je potřeba předávat postup a ne jen data. Navíc vedou k lepší dekompozici, protože člověka neštve ty funkcionality rozpadat na samostatné části, když nepotřebuje tolik omáčky kolem a spoustu dalších pomocných tříd.
Lambdy jsou výhodné i v dalších jazycích, včetně PHP. Dají se sice nahradit anonymním objektem, ale mohlo by to znamenat znepřehlednění kódu.
-
Jenže slovy klasika "[...] monads require writing code at a level of sophistication not available to the average programmer". A Java byla cíleně navržena pro průměrného programátora. Takže tudy cesta nevede.
Kecy.. http://haskellbook.com/ (http://haskellbook.com/)
-
Jenže slovy klasika "[...] monads require writing code at a level of sophistication not available to the average programmer". A Java byla cíleně navržena pro průměrného programátora. Takže tudy cesta nevede.
Kecy.. http://haskellbook.com/ (http://haskellbook.com/)
No priznejme si, ze tohle uplne neni pro prumerneho programatora pri dnesni urovni jejich vzdelavani. (Ne ze by monady byly zas takova magie, ta povest je horsi nez realna obtiznost. A musim ti tohle doporuceni podepsat minimalne v tom, ze doporucujes skvely zdroj, prestoze mam pocit, ze zdaleka ne pro tolik lidi, jak by sis predstavoval :-/)
-
http://haskellbook.com/ (http://haskellbook.com/)
by mě zajímalo jak vypadá cílová skupina
-
Ahoj, roky slýchávám, jak je Java stará a už nemá co nabídnout. I proto ji nedělám, ale mrzí mě, že je pořád nejpopulárnější. Proč to tak je? Co má proti třeba Pythonu a novějším jazykům? Nebo je to jen setrvačnost, že lidé se nechtějí učit novější věci? Na škole jsme ji měli, ale moc mě nezaujala. Startupy ji často vůbec nemají, protože potřebují mít rychle výsledky. Tak jen jestli se tu najdou odborníci z praxe, kteří to chápou.
Ano, nejlepsi je dat na nazory lidi, idealne tech kteri kazdych 5 let evangelizuji IT komunitu nejakym novym jazykem :)
Java ma co nabidnout a pokud fakticky delate byznys v horizontu delsim nez dva roky, tak vas zajima jestli budete mit za tri pet let jeste lidske zdroje schopne na tom projektu pracovat.
Ze startupy nepouzivaji Javu neni ani tak jejimi nevyhodami ale spis lidmi. Pokud je plan spalit co v nejkratsim horizntu co nejvice investorskych penez a pak to strelit, tak vas udrzivatelnost projektu asi moc nezajima.
Na druhou stranu nepujdete a neprepisete celou infrastrukturu banky ci telca jen proto, ze posledni dva roky je ve freekulinske komunite zrovna popularni neco jineho. Jen za mou necelou dekadu to byl Python, Ruby a ted frci funkcionalni jazyky. Ono z toho asi casem vyplyne novy industry standard, ale to jeste minimalne dekadu potrva. 70., 80. a 90. letech vladlo C a Jave zase patri prvni tri dekady 21.stoleti. Tecka.
Aneb slovy klasika - "Java is not lanaguage, Java is industry"
-
Ahoj, roky slýchávám, jak je Java stará a už nemá co nabídnout. I proto ji nedělám, ale mrzí mě, že je pořád nejpopulárnější. Proč to tak je? Co má proti třeba Pythonu a novějším jazykům? Nebo je to jen setrvačnost, že lidé se nechtějí učit novější věci? Na škole jsme ji měli, ale moc mě nezaujala. Startupy ji často vůbec nemají, protože potřebují mít rychle výsledky. Tak jen jestli se tu najdou odborníci z praxe, kteří to chápou.
Ano, nejlepsi je dat na nazory lidi, idealne tech kteri kazdych 5 let evangelizuji IT komunitu nejakym novym jazykem :)
Java ma co nabidnout a pokud fakticky delate byznys v horizontu delsim nez dva roky, tak vas zajima jestli budete mit za tri pet let jeste lidske zdroje schopne na tom projektu pracovat.
Ze startupy nepouzivaji Javu neni ani tak jejimi nevyhodami ale spis lidmi. Pokud je plan spalit co v nejkratsim horizntu co nejvice investorskych penez a pak to strelit, tak vas udrzivatelnost projektu asi moc nezajima.
Na druhou stranu nepujdete a neprepisete celou infrastrukturu banky ci telca jen proto, ze posledni dva roky je ve freekulinske komunite zrovna popularni neco jineho. Jen za mou necelou dekadu to byl Python, Ruby a ted frci funkcionalni jazyky. Ono z toho asi casem vyplyne novy industry standard, ale to jeste minimalne dekadu potrva. 70., 80. a 90. letech vladlo C a Jave zase patri prvni tri dekady 21.stoleti. Tecka.
Aneb slovy klasika - "Java is not lanaguage, Java is industry"
Ten klasik je Tatar, že píše lámanou angličtinou?
-
Ten klasik je Tatar, že píše lámanou angličtinou?
Tatar jsem ja. Ale resit tu moje preklepy, neni to pod vasi uroven ?
-
http://haskellbook.com/ (http://haskellbook.com/)
by mě zajímalo jak vypadá cílová skupina
Cilova skupina je treba spoluautorka te knizky. ;)
No priznejme si, ze tohle uplne neni pro prumerneho programatora pri dnesni urovni jejich vzdelavani.
To skutecne neni, prumerny programator to tak polopaticky vysvetlit nepotrebuje. :) Potiz je, ze si mysli, ze o programovani vsechno vedi, a nechteji k tomu pristoupit s otevrenou hlavou, narozdil od zacatecnika.
-
Cilova skupina je treba spoluautorka te knizky. ;)
tj. pro lidi co nemají zájem o programování? nebo pro lidi co se chystají napsat učebnici haskellu? milovníky koček?
-
Na druhou stranu nepujdete a neprepisete celou infrastrukturu banky ci telca jen proto, ze posledni dva roky je ve freekulinske komunite zrovna popularni neco jineho. Jen za mou necelou dekadu to byl Python, Ruby a ted frci funkcionalni jazyky.
Co je na Pythonu freekulinského? Ten jazyk je starší než Java a nikdy neujížděl na žádném módním paradigmatu. Největší změna v Pythonu 3 se týkala unicode. Módním funkcionálním featurám se Python brání. OOP nikdy nevnucoval. Java byla v době svého vzniku super freekulinský jazyk. Tehdy bylo módní třídní OOP. Dnes je módní FP, proto Java komunita řeší "monády". Python komunita má tyhle trendy v zadeki. Styl psaní v Pythonu se za posledních 15 let změnil podstatně méně než v Javě.
-
Java komunita řeší "monády".
o'rly?
-
Na druhou stranu nepujdete a neprepisete celou infrastrukturu banky ci telca jen proto, ze posledni dva roky je ve freekulinske komunite zrovna popularni neco jineho. Jen za mou necelou dekadu to byl Python, Ruby a ted frci funkcionalni jazyky.
Co je na Pythonu freekulinského? Ten jazyk je starší než Java a nikdy neujížděl na žádném módním paradigmatu. Největší změna v Pythonu 3 se týkala unicode. Módním funkcionálním featurám se Python brání. OOP nikdy nevnucoval. Java byla v době svého vzniku super freekulinský jazyk. Tehdy bylo módní třídní OOP. Dnes je módní FP, proto Java komunita řeší "monády". Python komunita má tyhle trendy v zadeki. Styl psaní v Pythonu se za posledních 15 let změnil podstatně méně než v Javě.
Nic, nejde o jazyk (trebas o Ruby mam fakt moc rad) ale o pristup lidi. Nevim co ma nebo nema Python komunita kde, ale mlicnaku s nazorem ze bez jazyku XYZ neni den dost cool a kdo dela v necem jinem je marnej dinosaur jsem uz par potkal.
-
Java komunita řeší "monády".
o'rly?
Ja napriklad som javista a monady neriesim, ani neviem, co to je. A tom mam ako hobby lisp. Je to nejaky zivocich, alebo co to zerie? Bude vdaka tomu chlieb lacnejsi? Vylieci to vsetky choroby na svete?
-
Java komunita řeší "monády".
o'rly?
Ja napriklad som javista a monady neriesim, ani neviem, co to je. A tom mam ako hobby lisp. Je to nejaky zivocich, alebo co to zerie? Bude vdaka tomu chlieb lacnejsi? Vylieci to vsetky choroby na svete?
Stojí to za pohled, ale jen pro poučení. V kontextu Javy je to prakticky k ničemu.
-
Java komunita řeší "monády".
o'rly?
Ja napriklad som javista a monady neriesim, ani neviem, co to je. A tom mam ako hobby lisp. Je to nejaky zivocich, alebo co to zerie? Bude vdaka tomu chlieb lacnejsi? Vylieci to vsetky choroby na svete?
Stream API v Java 8 je monada, taktiez Optional a CompletableFuture. Odpourcam video z prednasky Rona Presllera (ktore som linkoval vyssie v mojom nudnom prispevku), kde sa k tymto API vyjadruje z pohladu imperativneho programatora.
Problem, ktory vypichuje je, ze akonahle zacnes pouzivat monadicke API v imperativnom jazyku, musis ho pouzivat "az do konca" (Stream logicky nemozes v polovici chainovania prehodit na klasicku imperativnu for each slucku, t.j. push vs pull).
Prichadzas o vsetky "features" ako exception handling (defaultny sposob osefovania sideeffectov v Jave), ktory je fundamentalnou sucastou jazyka od jeho vzniku a vynimky musis preklapat na hodnoty (dalej miesto deklaracie monady a jej vykonanie je uplne ine, StackTraces prestanu byt tak jednoznacne atd.)
Samozrejme, ze monady v Jave nie su nove. Davno pred JDK 8 poskytovala monadicke API na pracu s kolekciami pre Javu Guava od Google. Avsak tieto API neboli sucastou core JDK. Ale po novom je monadicke Streamove API sucastou JDK a implementacia novej funkcionality v JDK8 na niektorych triedach je na nom priamo zavisla (t.j. infekcia prerasta). Kolekcie boli retrofittovane metodami stream a parallelStream takze jedny z najstarsich rozhrani prestali byt spatne kompatibilne so starymi JDK (co je v Java svete taky maly jadrovy vybuch).
Navyse forEach cez Streamove API nie je tak rychle ako klasicka imperativna slucka for each ako dokazali JMH benchmarky - takze aj ked to IntelliJ odporuca, netreba preklapat.
-
Nic, nejde o jazyk (trebas o Ruby mam fakt moc rad) ale o pristup lidi. Nevim co ma nebo nema Python komunita kde, ale mlicnaku s nazorem ze bez jazyku XYZ neni den dost cool a kdo dela v necem jinem je marnej dinosaur jsem uz par potkal.
Nové technologie se stávají seriozně použitelnými, až když přestanou být cool a mlíčňáci odejdou "vylepšovat" něco jiného. Dnes je cool Go a Node.js. Python a Ruby jsou stabilizované, ale v žádném případě ne mrtvé.
-
Java komunita řeší "monády".
o'rly?
Stream API v Java 8 je monada
-
Java komunita řeší "monády".
o'rly?
Stream API v Java 8 je monada
Kopec veci jsou monady (pricemz streamy v J8 to byt mohou a nemuseji), ale to neznamena, ze nekdo (pro v konverzaci beznou hodnotu "nekdo") resi monady. Proc by to v Jave mel nekdo delat?
-
Ctenim tohoto threadu jsem pochopil, ze hlavnim smyslem monad a FP obecne je v tom, aby meli ichtylove o cem krypticky mektat ve stylu mistra Yody.
Zrejme urcity druh sklenikove universitni onanie.
Clovek pohybujici se v realnem svete pak na FP oceni tech par vyhod ve specificke nice proudoveho zpracovani dat, UNIX pipes like processing ma svoje pouziti.
A protoze se nechce hrat s nevyhodami, stejne se na vsechny ty haskelly (momentalni use share 0,3%) vysere, stream narve do ActiveMQ, na nej povesi Apache Camel s par custom processory (tedy prida par zaznamu do pom.xml + par POJOs) a hotovo.
Mozna to bude zrat 10x vice CPU a RAM, to je dobre. Za nejaky stokilovy exac ti zakaznik 3 mega nezaplati.
A pak pude s deckama do ZOO.
-
@Youda
To taky, ale význam monád a FP stoupne s tvorbou programů pomocí AI, dají se na ně pohodlněji aplikovat evoluční algoritmy, snadněji na FP natrénujete neuronovou síť, protože snadněji vytvoříte trénovací data.
-
Proc je nastroj oblibeny?
-
Ctenim tohoto threadu jsem pochopil, ze hlavnim smyslem monad a FP obecne je v tom, aby meli ichtylove o cem krypticky mektat ve stylu mistra Yody.
Zrejme urcity druh sklenikove universitni onanie.
Clovek pohybujici se v realnem svete pak na FP oceni tech par vyhod ve specificke nice proudoveho zpracovani dat, UNIX pipes like processing ma svoje pouziti.
A protoze se nechce hrat s nevyhodami, stejne se na vsechny ty haskelly (momentalni use share 0,3%) vysere, stream narve do ActiveMQ, na nej povesi Apache Camel s par custom processory (tedy prida par zaznamu do pom.xml + par POJOs) a hotovo.
Mozna to bude zrat 10x vice CPU a RAM, to je dobre. Za nejaky stokilovy exac ti zakaznik 3 mega nezaplati.
A pak pude s deckama do ZOO.
Osobne si myslim, ze jeden z motivov zavedenia Streamoveho API bolo aj to, ako rozumnym sposobom ludom spristupnit work stealing ForkJoinPool, ktory je sucastou JDK uz od verzie 7. Takymto sposobom dali ludom do ruk paralelny map-reduce (ktory sa dal robit samozrejme aj v JDK7), ale schovali ho za peknu fasadu noveho API tak, ze programator nemusi sam implementovat RecursiveTask rozhranie a rozmyslat nad velkostou splitov (v JDK 8 sa tato uloha deleguje spliteratorom).
Mne sa vsak viac paci ako ForkJoinPool vyuziva Quasar ako svoj user space scheduler lahkych vlakien. Pisete zdanlivo blokujuci kod a nemusite do toho miesat ziadne FP a vsetko hra a spieva ako imperativny kod (samozrejme je nutno trochu bytecode magie, ale cez agenta je to transparentne).
A ked uz Stream API bolo na svete, tak nan nasadol rovno aj Hibernate 5.2 a uplne novy ORM Speedment :).
-
Ctenim tohoto threadu jsem pochopil, ze hlavnim smyslem monad a FP obecne je v tom, aby meli ichtylove o cem krypticky mektat ve stylu mistra Yody.
Zrejme urcity druh sklenikove universitni onanie.
Tak to jsi pochopil blbě.
-
Ja napriklad som javista a monady neriesim, ani neviem, co to je. A tom mam ako hobby lisp. Je to nejaky zivocich, alebo co to zerie? Bude vdaka tomu chlieb lacnejsi? Vylieci to vsetky choroby na svete?
Stream API v Java 8 je monada, taktiez Optional a CompletableFuture. Odpourcam video z prednasky Rona Presllera (ktore som linkoval vyssie v mojom nudnom prispevku), kde sa k tymto API vyjadruje z pohladu imperativneho programatora.
Problem, ktory vypichuje je, ze akonahle zacnes pouzivat monadicke API v imperativnom jazyku, musis ho pouzivat "az do konca" (Stream logicky nemozes v polovici chainovania prehodit na klasicku imperativnu for each slucku, t.j. push vs pull).
Prichadzas o vsetky "features" ako exception handling (defaultny sposob osefovania sideeffectov v Jave), ktory je fundamentalnou sucastou jazyka od jeho vzniku a vynimky musis preklapat na hodnoty (dalej miesto deklaracie monady a jej vykonanie je uplne ine, StackTraces prestanu byt tak jednoznacne atd.)
Samozrejme, ze monady v Jave nie su nove. Davno pred JDK 8 poskytovala monadicke API na pracu s kolekciami pre Javu Guava od Google. Avsak tieto API neboli sucastou core JDK. Ale po novom je monadicke Streamove API sucastou JDK a implementacia novej funkcionality v JDK8 na niektorych triedach je na nom priamo zavisla (t.j. infekcia prerasta). Kolekcie boli retrofittovane metodami stream a parallelStream takze jedny z najstarsich rozhrani prestali byt spatne kompatibilne so starymi JDK (co je v Java svete taky maly jadrovy vybuch).
Navyse forEach cez Streamove API nie je tak rychle ako klasicka imperativna slucka for each ako dokazali JMH benchmarky - takze aj ked to IntelliJ odporuca, netreba preklapat.
Ok, uz som pochopil, su to tie mrdky, co som musel vyhadzovat po jednom externistovi, lebo sa to spravalo nepredvidatelne a zle sa to debugovalo. (Klasika, prijde naprasi, odide a internisti to potom fixuju) Osobne som streamom v jave este stale neprisiel na chut. Dufam ze to inzinieri z oracle dotiahnu do pouzitelnej podoby, teraz je do do javy nacpane strasne nasilu.
-
Ja napriklad som javista a monady neriesim, ani neviem, co to je. A tom mam ako hobby lisp. Je to nejaky zivocich, alebo co to zerie? Bude vdaka tomu chlieb lacnejsi? Vylieci to vsetky choroby na svete?
Stream API v Java 8 je monada, taktiez Optional a CompletableFuture. Odpourcam video z prednasky Rona Presllera (ktore som linkoval vyssie v mojom nudnom prispevku), kde sa k tymto API vyjadruje z pohladu imperativneho programatora.
Problem, ktory vypichuje je, ze akonahle zacnes pouzivat monadicke API v imperativnom jazyku, musis ho pouzivat "az do konca" (Stream logicky nemozes v polovici chainovania prehodit na klasicku imperativnu for each slucku, t.j. push vs pull).
Prichadzas o vsetky "features" ako exception handling (defaultny sposob osefovania sideeffectov v Jave), ktory je fundamentalnou sucastou jazyka od jeho vzniku a vynimky musis preklapat na hodnoty (dalej miesto deklaracie monady a jej vykonanie je uplne ine, StackTraces prestanu byt tak jednoznacne atd.)
Samozrejme, ze monady v Jave nie su nove. Davno pred JDK 8 poskytovala monadicke API na pracu s kolekciami pre Javu Guava od Google. Avsak tieto API neboli sucastou core JDK. Ale po novom je monadicke Streamove API sucastou JDK a implementacia novej funkcionality v JDK8 na niektorych triedach je na nom priamo zavisla (t.j. infekcia prerasta). Kolekcie boli retrofittovane metodami stream a parallelStream takze jedny z najstarsich rozhrani prestali byt spatne kompatibilne so starymi JDK (co je v Java svete taky maly jadrovy vybuch).
Navyse forEach cez Streamove API nie je tak rychle ako klasicka imperativna slucka for each ako dokazali JMH benchmarky - takze aj ked to IntelliJ odporuca, netreba preklapat.
Ok, uz som pochopil, su to tie mrdky, co som musel vyhadzovat po jednom externistovi, lebo sa to spravalo nepredvidatelne a zle sa to debugovalo. (Klasika, prijde naprasi, odide a internisti to potom fixuju) Osobne som streamom v jave este stale neprisiel na chut. Dufam ze to inzinieri z oracle dotiahnu do pouzitelnej podoby, teraz je do do javy nacpane strasne nasilu.
Prostě to jen nechápeš a dodrbals práci toho externisty.
-
Ja napriklad som javista a monady neriesim, ani neviem, co to je. A tom mam ako hobby lisp. Je to nejaky zivocich, alebo co to zerie? Bude vdaka tomu chlieb lacnejsi? Vylieci to vsetky choroby na svete?
Stream API v Java 8 je monada, taktiez Optional a CompletableFuture. Odpourcam video z prednasky Rona Presllera (ktore som linkoval vyssie v mojom nudnom prispevku), kde sa k tymto API vyjadruje z pohladu imperativneho programatora.
Problem, ktory vypichuje je, ze akonahle zacnes pouzivat monadicke API v imperativnom jazyku, musis ho pouzivat "az do konca" (Stream logicky nemozes v polovici chainovania prehodit na klasicku imperativnu for each slucku, t.j. push vs pull).
Prichadzas o vsetky "features" ako exception handling (defaultny sposob osefovania sideeffectov v Jave), ktory je fundamentalnou sucastou jazyka od jeho vzniku a vynimky musis preklapat na hodnoty (dalej miesto deklaracie monady a jej vykonanie je uplne ine, StackTraces prestanu byt tak jednoznacne atd.)
Samozrejme, ze monady v Jave nie su nove. Davno pred JDK 8 poskytovala monadicke API na pracu s kolekciami pre Javu Guava od Google. Avsak tieto API neboli sucastou core JDK. Ale po novom je monadicke Streamove API sucastou JDK a implementacia novej funkcionality v JDK8 na niektorych triedach je na nom priamo zavisla (t.j. infekcia prerasta). Kolekcie boli retrofittovane metodami stream a parallelStream takze jedny z najstarsich rozhrani prestali byt spatne kompatibilne so starymi JDK (co je v Java svete taky maly jadrovy vybuch).
Navyse forEach cez Streamove API nie je tak rychle ako klasicka imperativna slucka for each ako dokazali JMH benchmarky - takze aj ked to IntelliJ odporuca, netreba preklapat.
Ok, uz som pochopil, su to tie mrdky, co som musel vyhadzovat po jednom externistovi, lebo sa to spravalo nepredvidatelne a zle sa to debugovalo. (Klasika, prijde naprasi, odide a internisti to potom fixuju) Osobne som streamom v jave este stale neprisiel na chut. Dufam ze to inzinieri z oracle dotiahnu do pouzitelnej podoby, teraz je do do javy nacpane strasne nasilu.
Prostě to jen nechápeš a dodrbals práci toho externisty.
Nj, bolo to lepsie cez streamy, aj ked chybove, horsie citatelne, horsie debugovatelne a nerobilo to celkom to, co malo. Rozumiem. Radsej napisat nieco "cool", nez to napisat dobre.
-
Ok, uz som pochopil, su to tie mrdky, co som musel vyhadzovat po jednom externistovi, lebo sa to spravalo nepredvidatelne a zle sa to debugovalo. (Klasika, prijde naprasi, odide a internisti to potom fixuju) Osobne som streamom v jave este stale neprisiel na chut. Dufam ze to inzinieri z oracle dotiahnu do pouzitelnej podoby, teraz je do do javy nacpane strasne nasilu.
jak by měla ta použitelná podoba vypadat? Co konkrétně je na tom dnes špatně?
-
Ok, uz som pochopil, su to tie mrdky, co som musel vyhadzovat po jednom externistovi
jak by měla ta použitelná podoba vypadat? Co konkrétně je na tom dnes špatně?
Externista, si to ty?
-
Možná protože je tak mocná? Možná protože má knihovny, které jinde nejsou? Možná protože má IDE, které nemá konkurenci? Možná má celkově nástroje, které libovolný jazyk může jen závidět? 8)
-
Možná protože je tak mocná? Možná protože má knihovny, které jinde nejsou? Možná protože má IDE, které nemá konkurenci? Možná má celkově nástroje, které libovolný jazyk může jen závidět? 8)
+1
-
java není tak populární ;D to jenom swift se zatím ještě nerozšířil tak moc ;D
-
java není tak populární ;D to jenom swift se zatím ještě nerozšířil tak moc ;D
Dokud bude zabugovaný, tak se ani nerozšíří. Ale syntax má super, teď jen dotáhnout tu implementaci.
-
java není tak populární ;D to jenom swift se zatím ještě nerozšířil tak moc ;D
Dokud bude zabugovaný, tak se ani nerozšíří. Ale syntax má super, teď jen dotáhnout tu implementaci.
Nesáhl bych na nic za čím stojí Apple nebo Google. Je to hype vytvořený masivní PR kampaní s pomocí důvěřivých ovcí. Stejně jako Go.
-
Nesáhl bych na nic za čím stojí Apple nebo Google. Je to hype vytvořený masivní PR kampaní s pomocí důvěřivých ovcí. Stejně jako Go.
Dokážu pochopit, že někdo nemá rád chrome, protože ho Google masivně propaguje. Dokážu i pochopit, že někdo nemá rád Swift, protože Apple nedává moc možností vybrat si, v čem budete pro macOS programovat. Ale napsat takovou hovadinu, že Go je hype vytvořená masivní PR kampaní, to už chce opravdu oslí hlavu.
Go vzniklo pro interní potřebu Google, nikdy jsem na něj neviděl jakoukoliv propagaci a jedinej projekt od Google (kromě knihoven), který je hojně používaný a napsaný v Go je K8s. Přičemž 99% programátorů netuší, co to je.
Ostatní rozšířené projekty (Docker, Grafana, Prometheus, Indexdb, Etcd, Consul, Syncthing, Gogs/Gitea, ...) jsou všechny mimo Google.
-
Nesáhl bych na nic za čím stojí Apple nebo Google. Je to hype vytvořený masivní PR kampaní s pomocí důvěřivých ovcí. Stejně jako Go.
Dokážu pochopit, že někdo nemá rád chrome, protože ho Google masivně propaguje. Dokážu i pochopit, že někdo nemá rád Swift, protože Apple nedává moc možností vybrat si, v čem budete pro macOS programovat. Ale napsat takovou hovadinu, že Go je hype vytvořená masivní PR kampaní, to už chce opravdu oslí hlavu.
Go vzniklo pro interní potřebu Google, nikdy jsem na něj neviděl jakoukoliv propagaci a jedinej projekt od Google (kromě knihoven), který je hojně používaný a napsaný v Go je K8s. Přičemž 99% programátorů netuší, co to je.
Ostatní rozšířené projekty (Docker, Grafana, Prometheus, Indexdb, Etcd, Consul, Syncthing, Gogs/Gitea, ...) jsou všechny mimo Google.
No jo, gll je místní duševní polotovar. On i ten Swift by mohl být fajn (na Linuxu), ale ještě nedozrál a je otázka, jestli komunita něco takového přijme, když už je tolik jiných relativně rozšířených jazyků.
-
Nesáhl bych na nic za čím stojí Apple nebo Google. Je to hype vytvořený masivní PR kampaní s pomocí důvěřivých ovcí. Stejně jako Go.
Pokud chci postavit miniaturní rychlý server, tak moc jiných možností, než je Go, nemám.
Zatím se mi jako nejjednodušší webserver osvědčilo samotné PHP.
-
Ok, uz som pochopil, su to tie mrdky, co som musel vyhadzovat po jednom externistovi, lebo sa to spravalo nepredvidatelne a zle sa to debugovalo. (Klasika, prijde naprasi, odide a internisti to potom fixuju) Osobne som streamom v jave este stale neprisiel na chut. Dufam ze to inzinieri z oracle dotiahnu do pouzitelnej podoby, teraz je do do javy nacpane strasne nasilu.
jak by měla ta použitelná podoba vypadat? Co konkrétně je na tom dnes špatně?
Není na tom špatně nic, jen někteří prostě zakrněli a modernější přístupy už nejsou schopni pobrat. Člověk pak musí kód po nich v podstatě přepisovat z gruntu.
-
Java komunita řeší "monády".
o'rly?
Stream API v Java 8 je monada
Mno, takže koukám, že je opět čas na mé oblíbené intermezzo, čili neustále opakovaný kolovrátek:
To, že se na něco můžu dívat jako na monádu NEZNAMENÁ automaticky, že pracuji s monádami.
Pošťouchnutí 1: "Javascriptaři pracují s grupami", protože Javascript umí sčítat celá čísla?! Ne, nepracují s grupami, dost z nich asi ani neví, co to grupa je, a JS nemá žádné pořádné nástroje na práci s (obecnou) grupou. Javascriptaří pracují se sčítáním.
Pošťouchnutí 2: Jestliže je něco jistým způsobem řetězitelné, pak když si cosi správně nadefinuju, můžu o té řetězitelné věci říct, že je to monáda. Ale - propánakrále - řetězení funkcí/callbacků/libobovolnýho shitu je starý jak lidstvo samo. Dělá to každej a vždycky dělal.
Pošťouchnutí 3: jak jsme si zde již mnohokráte uvedli, i seznam "je monáda". Takže všechny jazyky, které obsahují seznam a základní operace nad ním, jsou asi hipsterská krávovina a nebýt současné (údajné) módnosti FP, seznam by neobsahovaly.
Stojí to za pohled, ale jen pro poučení. V kontextu Javy je to prakticky k ničemu.
Monády jsou zajímavé v striktně pure jazycích. Kdekoli jinde nedávají moc smysl. A tím myslím opravdu monády - tj. ten obecný koncept, ne to, že jazyk obsahuje seznam. To samozřejmě smysl má :)
-
Java komunita řeší "monády".
o'rly?
Stream API v Java 8 je monada
Mno, takže koukám, že je opět čas na mé oblíbené intermezzo, čili neustále opakovaný kolovrátek:
To, že se na něco můžu dívat jako na monádu NEZNAMENÁ automaticky, že pracuji s monádami.
Pošťouchnutí 1: "Javascriptaři pracují s grupami", protože Javascript umí sčítat celá čísla?! Ne, nepracují s grupami, dost z nich asi ani neví, co to grupa je, a JS nemá žádné pořádné nástroje na práci s (obecnou) grupou. Javascriptaří pracují se sčítáním.
Pošťouchnutí 2: Jestliže je něco jistým způsobem řetězitelné, pak když si cosi správně nadefinuju, můžu o té řetězitelné věci říct, že je to monáda. Ale - propánakrále - řetězení funkcí/callbacků/libobovolnýho shitu je starý jak lidstvo samo. Dělá to každej a vždycky dělal.
Pošťouchnutí 3: jak jsme si zde již mnohokráte uvedli, i seznam "je monáda". Takže všechny jazyky, které obsahují seznam a základní operace nad ním, jsou asi hipsterská krávovina a nebýt současné (údajné) módnosti FP, seznam by neobsahovaly.
Stojí to za pohled, ale jen pro poučení. V kontextu Javy je to prakticky k ničemu.
Monády jsou zajímavé v striktně pure jazycích. Kdekoli jinde nedávají moc smysl. A tím myslím opravdu monády - tj. ten obecný koncept, ne to, že jazyk obsahuje seznam. To samozřejmě smysl má :)
To je furt to samé dokola :P
-
To je furt to samé dokola :P
Můžu já za to, že tuhle blbost pořád někdo opakuje? :)
-
To je furt to samé dokola :P
Můžu já za to, že tuhle blbost pořád někdo opakuje? :)
Není pak lepší dávat odkaz na "Category theory for the working computer scientist in 20 minutes"?
-
Není pak lepší dávat odkaz na "Category theory for the working computer scientist in 20 minutes"?
Myslím, že ne :)
-
Není pak lepší dávat odkaz na "Category theory for the working computer scientist in 20 minutes"?
Myslím, že ne :)
Tak ale výsledek je stejný.
-
Tak ale výsledek je stejný.
Časem se to poddá, já tomu věřím! ;)