Saturday, May 17, 2014

Lures Of Scala

Lures Of Scala
  • A blend of all the features you ever saw in different languages! 
  • Scala is a "scalable" language. How does Scala scale? By keeping the core language small and letting features to be added as libraries. You can build your own library and scale the language. How does Scala do that? Scala tries to answer: “So, if we want to let programmers implement this feature as language library rather than language syntax, what features do we need to introduce in the language?” 
    • Features and examples of this concept: 
      • Actors Library 
      • Operators as Functions 
      • Flexible syntax (Prefix, Infix, Postfix mixing)
      • Uniformity of Objects, Functions and Operators.  
    • Makes Scala DSL friendly ("almost" English) and "scalable" (You can build libraries for Scala that look like language syntax additions.
    • Makes the core language small (rest of the features are implemented in the library). "Lisp Philosophy". But during the time Lisp was invented, it was early days in computer programming and few language constructs were known. Now that we have a lot of language constructs, Scala tries to define a language that lets programmers implement those features with a small core language.
  • Uniformity of Objects, Functions and Operators => Symbolic Programming. (<- A Function literal in Scala!) 
  • What happens when you try to fuse OOP and Functional Programming on JVM? 
  • You can apply battle-tested OO Design Patterns.
  • Functional Programming Patterns and Lisp Patterns are getting fashionable and of course useful (Multicores, Concurrency)! Scala lets you use those patterns in our code and design. 
  • Well suited for data processing applications.  
    • Functional Programming, Map, Reduce, Filter. 
  • Static Typing. 
  • Terse syntax.
    • Type inference
    • Semicolon inference
    • Control abstractions with Higher order functions
    • Improved syntax for Object Oriented Programming
    • Pattern Matching
  • Concurrent, Parallel and Distributed Programming.
    • Actors Model.
    • Akka Framework. 
    • Scala creator Martin Odersky himself takes Parallel Programming Challenge seriously [1]. 
  • Pattern Matching.
  • Traits.
  • Components and Composition.
    • How do you fuse Object Oriented and Functional Programming to facilitate the elusive goal of Component oriented Software Development? 
  • REPL (read evaluate print loop)



References

No comments:

Post a Comment