'

Scala

Понравилась презентация – покажи это...





Слайд 0

Scala The good, the bad and the very ugly


Слайд 1

Vanity slide Senior software engineer @ TomTom Using scala for more than a year Stackoverflow (couldn’t miss that) http://techblog.bozho.net @bozhobg (Yes, I’m making presentations about programming languages in PowerPoint with screenshots of code)


Слайд 2

The good functional and object-oriented JVM-based val, type inference expressive DSL-friendly


Слайд 3

The good case classes - immutable, value classes embrace immutability - immutable collections by default automatic conversion from and to Java collections


Слайд 4

The good no null - Option[Foo] Reusing java instruments (e.g. guava, slf4j, even spring and hibernate) goodies – e.g. instantiating collections without unnecessary brackets or type declarations


Слайд 5

Partially applied functions


Слайд 6

Traits Multiple inheritance done right


Слайд 7

The bad tools The compiler is too slow IDE-s (Eclipse and IntelliJ) break sbt (build tool) is buggy ecosystem Many java libraries cannot/should not be used Most frameworks and libraries and in early phase binary incompatible => one artifact for each scala version lambdas are slower than in Java 8


Слайд 8


Слайд 9

The bad Heavy in terms of concepts and keywords: implicits, for comprehensions, lazy, case class, case object, currying, partially applied functions vs partial functions => Steep learning curve Syntactic diabetes


Слайд 10

Syntactic diabetes


Слайд 11

Implicits implicit val, implicit def, implicitly, (implicit argument) If anywhere in the execution context there is an implicit definition, any function can read it with(implicit foo: String) => the horror! Saves initialization (e.g. of some tool)


Слайд 12

The bad One thing can be written in many ways and there is no “right” way.


Слайд 13


Слайд 14


Слайд 15

The bad “Concise” doesn’t necessarily mean fast to write or easy to read


Слайд 16


Слайд 17

The bad Productivity – do we gain or lose?


Слайд 18

The very ugly cryptic


Слайд 19


Слайд 20


Слайд 21


Слайд 22


Слайд 23


Слайд 24

scala> List(1,2,3).toSet()


Слайд 25

res0: Boolean = false List(1,2,3).toSet res0: s.c.immutable.Set[Int] = Set(1, 2, 3)


Слайд 26

Philosophy Should the language stop us from shooting ourselves in the foot? Should this be at the expense of its expressiveness? Where is the balance? Who is scala suitable for?


Слайд 27

Optimistic IDEs are getting better Frameworks are getting mature Twitter and the language author are releasing guidelines and best practices (scala – the good parts) invokeDynamic (SI-8359)


Слайд 28

Conclusion I wouldn’t recommend scala for a general-purpose new project In an actual project most of the defficiencies are relatively easy to overcome I would recommend scala for a small, side module It’s interesting to work with, due to the functional aspect Don’t give the users of your language, API or product all of the possible options – they will misuse them.


Слайд 29

Questions? def ? = ???


×

HTML:





Ссылка: