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

Zpět na článek

20 komentářů k článku V čem je Scala jiná než Java (a PHP):

    1. David ŠauerAutor příspěvku

      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.

  1. Luboš Račanský

    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

    Scala represents pure heresy to pure functional programmers and pure
    bliss to Java developers.

    Clojure and Java desperately need each other. Lisp needs the market
    place that the Java virtual machine can offer, and the Java community
    needs a serious update and an injection of fun.

     

    Strictly speaking, Scala is not a pure functional programming
    language, just like C++ is not a pure object-oriented language.

     

    When the object-oriented paradigm was new, the masses could not accept
    Smalltalk because the paradigm was too new. We needed a language that
    would let them continue to do procedural programming and experiment
    with object-oriented ideas. With C++, the new object-oriented tricks
    could live safely beside the existing C procedural features. The
    result was that people could start using the new tricks in an old
    context.

     

    I do find Scala’s syntax to be a little academic and hard on the eyes.

     

    The problem is that moving back and forth between Scala and Java will
    take more effort than it should.

     

    I would use Scala to improve my productivity if I had a significant
    investment in Java programs or programmers. I’d also consider Scala
    for an application that has significant scalability requirements that
    would require concurrency. Commercially, this Frankenstein has a good
    shot because it represents a bridge and fully embraces a significant
    programming community.

     

    Pokud někdo touží programovat funkcionálně, ale je nucen zůstat u JVM, proč nezvolí Clojure?

    Clojure and Java desperately need each other. Lisp needs the market
    place that the Java virtual machine can offer, and the Java community
    needs a serious update and an injection of fun.

    1. David ŠauerAutor příspěvku

      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.

      1. Luboš Račanský

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

    2. Ladislav Thon

      Re: Nechápu, proč je Scala tak populární

      Pokud někdo touží programovat funkcionálně, ale je nucen zůstat u JVM, proč nezvolí Clojure?

      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.

    3. Ladislav Thon

      Re: Nechápu, proč je Scala tak populární

      Nechápu, proč je Scala tak populární.

      Protože worse is better. Scala je takové C++ v JVM světě.

  2. razor

    par poznamek
    Dík za článek.

    1. Řekl bych nešťasně pojmenovaná sekce „Implicitiní hodnoty parametrů“ v případě Scala kvůli existenci implicitního hodnot (keyword implicit), což je něco jiného. f(i: Int)(implicit j:Int){ i + j}
    2. Přátelská gramatika: Složené závorky pro víceřádkový zápis. Kulaté pro jednořádkový.
    3. Pro mě trochu nesrozumitelně napsaná sekce o var a val
    4. Porovnání objektů ve Scala: možná bych zmínil case class, pro které je equals a hash „zadarmo“ od kompilátoru.
    5. Chápu, že v článku nemůže být vše. Nicméně stručný popis patterm matching a koncept Monady (např. v kontextu uvedeného Option[T]) bych tam dal ;-)
    1. David ŠauerAutor příspěvku

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

        1. David ŠauerAutor příspěvku

          Re: par poznamek
          Souhlas.
          Výchozí hodnoty parametrů = Default parameter values.
          Implicitní parametry = Implicit parameters.

  3. tomaszalusky

    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.

    1. David ŠauerAutor příspěvku

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

  4. Kinkos

    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?

  5. Tom

    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.

    1. David ŠauerAutor příspěvku

      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

  6. David ŠauerAutor příspěvku

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

  7. petr

    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.

Napsat komentář

Tato diskuse je již příliš stará, pravděpodobně již vám nikdo neodpoví. Pokud se chcete na něco zeptat, použijte diskusní server Devel.cz

Zdroj: https://www.zdrojak.cz/?p=12746