Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Scala - the good, the bad and the very ugly

53,539 views

Published on

A presentation about what's good and what's bad in Scala

Published in: Software, Engineering, Technology
  • Nice !! Download 100 % Free Ebooks, PPts, Study Notes, Novels, etc @ https://www.ThesisScientist.com
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Nice !! Download 100 % Free Ebooks, PPts, Study Notes, Novels, etc @ https://www.ThesisScientist.com
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Hello! Get Your Professional Job-Winning Resume Here - Check our website! https://vk.cc/818RFv
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Hello! Get Your Professional Job-Winning Resume Here - Check our website! https://vk.cc/818RFv
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • The language is powerful, missing is community maturity. I could indict any language by carving out concerns. Use Perl as an example. My gripe is not the language. Its the lack of self-discipline to learn how to think about problem solving in ways that require a powerful language like Scala or better blending languages according to the product requirements. I work with thousands of developers around the world. 99% of them solve problems using imperative thinking. This is the problem.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Scala - the good, the bad and the very ugly

  1. 1. Scala The good, the bad and the very ugly
  2. 2. 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)
  3. 3. The good ● functional and object-oriented ● JVM-based ● val, type inference ● expressive ● DSL-friendly
  4. 4. The good ● case classes - immutable, value classes ● embrace immutability - immutable collections by default ● automatic conversion from and to Java collections
  5. 5. 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
  6. 6. Partially applied functions
  7. 7. Traits Multiple inheritance done right
  8. 8. The bad ● tools o The compiler is too slow o IDE-s (Eclipse and IntelliJ) break o sbt (build tool) is buggy ● ecosystem o Many java libraries cannot/should not be used o Most frameworks and libraries and in early phase o binary incompatible => one artifact for each scala version ● lambdas are slower than in Java 8
  9. 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. 10. Syntactic diabetes
  11. 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. 12. The bad One thing can be written in many ways and there is no “right” way.
  13. 13. The bad “Concise” doesn’t necessarily mean fast to write or easy to read
  14. 14. The bad Productivity – do we gain or lose?
  15. 15. The very ugly cryptic
  16. 16. scala> List(1,2,3).toSet()
  17. 17. res0: Boolean = false List(1,2,3).toSet res0: s.c.immutable.Set[Int] = Set(1, 2, 3)
  18. 18. 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?
  19. 19. 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)
  20. 20. 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.
  21. 21. Questions? def ? = ???

×