Komentáře k článku
V čem je Scala jiná než Java (a PHP)

Jakub Vrána napsal minulý týden „V čem je PHP navrženo lépe než Java“. Tento článek vznikl jako komplement a uvádí některé důvody, proč bych dal Scale přednost před Javou nebo PHP. Je to nefér porovnání, neboť Scala zřejmě vznikla i na základě toho, co autor považoval na Javě za nevhodně vyřešené.
Pěkné srovnání, díky
Super, díky za fajn článek. Pokud vás Scala zaujala, doporučuji přihlásit se na další běh kurzu https://www.coursera.org/course/progfun (ještě není vypsán termín).
Re: Pěkné srovnání, díky
Díky za připomínku, absolvoval jsem právě ten předchozí běh. Čistě pro ostatní, pokud se do něj pustíte, udělejte si i domácí úkoly, jen video prostě není dost.
Nechápu, proč je Scala tak populární
Nechápu, proč je Scala tak populární. Rozumím, proč není tak rozšířené Groovy, ale co se Scaly týče, tak souhlasím s tím, co bylo napsáno v knize Seven Languages in Seven Weeks
Pokud někdo touží programovat funkcionálně, ale je nucen zůstat u JVM, proč nezvolí Clojure?
Re: Nechápu, proč je Scala tak populární
Dobrý den,
prima shrnutí, zejména ten předposlední citovaný odstavec (o Scale). Můj názor je, že kvůli větší produktivitě má smysl použít Scalu i na nové projekty, Java ssebou vleče podstatně delší historii, svoji a část z C++ a to je na výsledku trochu vidět – jak z pozitivní, tak negativní stránky.
Populární? Zatím tolik není. Zkusil jsem ráno na jednom pracovním serveru zadat „scala“ a „java“. Na scalu hledala lidi jedna firma a na javu samozřejmě hromada.
Re: Nechápu, proč je Scala tak populární
Populární jsem myslel ve srovnání s jazyky, které běží v JVM (Groovy, Clojure, Jython…)
Re: Nechápu, proč je Scala tak populární
Protože funkcionální není to samé co funkcionální. Mezi těmi rozšířenějšími jazyky pro JVM snad nenajdete dva rozdílnější jazyky než Scala a Clojure.
Re: Nechápu, proč je Scala tak populární
Protože worse is better. Scala je takové C++ v JVM světě.
par poznamek
Dík za článek.
f(i: Int)(implicit j:Int){ i + j}
Re: par poznamek
Dobrý den, zkusím vysvětlit.
Problém je s překladam „Default“ v češtině. V anglických termínech já popisuji „Default parameter values“, Vy „Implicit parameters“.
Tady má angličtina výhody že ty pojmy tvoří, v češtine mě nic lepšího nenapadlo. Zkusím to nechat uzrát v hlavě, možná i na něco narazím. „Defaultní hodnoty parametrů“ ? Nezní česky, ale je to více odlišující. Většina jazyků „Implicit parameters“ nezná a tenhle problém nemá.
Ad 2. Ano, ta věta tam měla být, vysvětluje nejlépe.
Ad 3. Zkusíte napsat jak byste rozuměl? val je něco jako proměnná s modifikátorem
final
v Javě, var pak označuje prostě deklaraci proměnné, neboť ve Scale není třeba psát typ.Ad 4 a 5.
case classes
apattern matching
jsou důležitou součástí Scaly, leč kvůli délce jsem je ze základního článku vynechal. Narazí na to každý, pattern matching je takovýswitch
. Navíc bych pak musel popsat i extraktory a unapply().Ad 5. Monad je komplikovanější téma a nesouvisí čistě se Scalou. Psát na 3 řádky to spíš zamotá.
Díky za připomínky.
Re: par poznamek
Já bych použil default = výchozí. Výchozí hodnoty parametrů.
Re: par poznamek
Souhlas.
Výchozí hodnoty parametrů = Default parameter values.
Implicitní parametry = Implicit parameters.
přetížení x překrytí
Díky za článek, jen malá drobnost: equals a hashCode se pokud vím překrývají (override), pojem přetížení odpovídá anglickému overload a to asi není tento případ.
Re: přetížení x překrytí
Jasně. Nějak jsem měl v hlavě asi ty operátory.
Překrytí = předefinování v potomkovi.
Přetížení = definice funkce stejného jména, různých parametrů.
Díky
Díky, tohle je po dlouhé době (spamy a flejmy) zase celkem dorbý článek, který mělo smysl číst.
BTW: jakou máte zkušenost s kombinováním Javy a Scaly v jednom projektu? Nemyslím jen knihovny, ale přímo kód aplikace – píšete vše ve Scale nebo část v Javě a část ve Scale?
Re: Díky
Zatím jsem psal zdroják Scala a knihovny mix Scaly a Javy. Nejsložitější asi s využitím Spring.io. Ne že by spolupráce byla úplně bezešvá, ale funguje. Něco o spolupráci J&S je v http://www.artima.com/shop/programming_in_scala_2ed.
nepodobnost s PHP
Scalu neznám, v PHP pragramuju pár let, po přečtění článku jsem ale nenašel nic společného s PHP a připadá mi, že pro PHP prográmátory je to příliš Cčkovský jazyk, nepřehledný (z pohledu jendnoduchého PHP) a dělat v tohle PHP aplikaci mi přijde zbytečně složité, to už se teda raději sžít s Javou.
Scala
Vždycky když slyším Scala vybaví se mi We’re Doing It All Wrong :)
https://www.youtube.com/watch?v=TS1lpKBMkgg
Re: Scala
Asi mu rozumím, napsal jsem software v Javě o několika stovkách tisících řádků a po 10 letech vidím, co bylo všechno špatně. Ale: jak ten můj pokus tak kompilátor Scaly (a knihovny) jsou užitečný kus kódu – v případě Scaly zřejmě pro podstatně větší skupinu lidí.
Dodám alespoň jednu optimistickou přednášku:
Martin Odersky, „Working Hard to Keep It Simple“ – OSCON Java 2011 https://www.youtube.com/watch?v=3jg1AheF4n0
Dobrý den, mrzí mě že jsem Vám to nevysvětlil.
Lambda funkce, inicializátory pro List, Map a ostatní kontejnery, volitelné parametry (výchozí hodnoty parametrů), iterace přes kontejnery, možnost psát skripty, některé aspekty porovnávání objektů = tím vším je Scala podobná PHP.
Typová kontrola při všech operacích, tím se od PHP liší.
vyhoda?
Tvrzeni, ze vyhoda scaly oproti pythonu je typova kontrola je nesmyslne. Python ma take typovou kontrolu, dokonce silnou. Autor nejspise myslel to, ze scala ma staticke typy. Jenze to neni objektivni vyhoda, to je vlastnost, ktera je subjektivni. Ja davam prednost dynamickemu typovani, je flexibilnejsi. Staticke typ jsou pro me, tedy subjektivne, nevyhodou pog. jazyka. Navic dnes ma python moznost volitelneho typehintingu, takze lze zajistit typovou kontrolu pri prekladu bez ztraty vyhod, ktere maji dynamicke typy.
python má typovou kontrolu
Článek je mylný. Python nabízí od jakživa typovou kontrolu a na rozdíl od PHP nebo C dokonce silnou.
Autor má zřejmě na mysli statickou analýzu při kompilaci, což u nekompilovaného jazyka jaksi není. Ale existujou externí nástroje pro statickou lexikální analýzu. A dnes i s podporou volitelných datových typů.
Jeden ze současných analyzátorů se jmenuje MyPy, který nabízí velmi kvalitní statickou analýzu datových typů python kódu. Většina jazyků si o něčem takovém může nechat jen zdát. Přitom je to celé volitelná a při psaní krátkých skriptů se tím nemusí nikdo zdržovat a vymýšlet komplexní typový systém své aplikace. Ne náhodou se Python stal nejíblíbenějším jazykem na světě dle indexu TIOBE.