• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Introduction to Scala
 

Introduction to Scala

on

  • 1,589 views

An introductory talk on Scala Programming Language and its features. This talk was presented at Jamia Developers Day 2013

An introductory talk on Scala Programming Language and its features. This talk was presented at Jamia Developers Day 2013

Statistics

Views

Total Views
1,589
Views on SlideShare
1,574
Embed Views
15

Actions

Likes
1
Downloads
39
Comments
1

2 Embeds 15

http://localhost 10
https://twitter.com 5

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-ShareAlike LicenseCC Attribution-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

11 of 1 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Introduction to Scala Introduction to Scala Presentation Transcript

    • JDevDay - Introduction to Scala Saleem Ansari 10th March 2013Saleem Ansari () JDevDay - Introduction to Scala 10th March 2013 1 / 35
    • Outline1 Introduction to Scala2 Setting up Scala3 Absolute Scala basics4 Functional Paradigm in Scala5 Object Oriented Programming in Scala6 Where to learn more Scala Saleem Ansari () JDevDay - Introduction to Scala 10th March 2013 2 / 35
    • Topic1 Introduction to Scala2 Setting up Scala3 Absolute Scala basics4 Functional Paradigm in Scala5 Object Oriented Programming in Scala6 Where to learn more Scala Saleem Ansari () JDevDay - Introduction to Scala 10th March 2013 3 / 35
    • What is Scala?What is Scala? The name Scala stands for scalable language. Thelanguage is so named because it was designed to grow with thedemands of its users. What makes Scala a Scalable Language ? Statically typed language with OOP + FP both. Fast and expressive, and peasant to use. Excellent type inference. Runs on JVM. Whats more? Scala is compatible with Java Scala is concise Scala is high level Scala is statically typed ( vs dynamically typed ) Saleem Ansari () JDevDay - Introduction to Scala 10th March 2013 4 / 35
    • What can you do with Scala today? Write web applications Play Web Framework http://www.playframework.com/ Lift Web Framework http://liftweb.net/ Write code that scales to huge amounts of data Spark Project http://spark-project.org/ Scalding https://github.com/twitter/scalding Process huge number of concurrent tasks Akka http://akka.io/ Natural Language Processing and Machine Learning ScalaNLP http://www.scalanlp.org/ And anything could do in Java, now more concisely :-) Saleem Ansari () JDevDay - Introduction to Scala 10th March 2013 5 / 35
    • Topic1 Introduction to Scala2 Setting up Scala3 Absolute Scala basics4 Functional Paradigm in Scala5 Object Oriented Programming in Scala6 Where to learn more Scala Saleem Ansari () JDevDay - Introduction to Scala 10th March 2013 6 / 35
    • Install the Scala Complier yum install scala Saleem Ansari () JDevDay - Introduction to Scala 10th March 2013 7 / 35
    • Install your faviourite Editor / IDE yum install emacs OR install Eclipse ( ScalaIDE ) Saleem Ansari () JDevDay - Introduction to Scala 10th March 2013 8 / 35
    • Scala compiler is scalac ( just like javac command ) scala ( just like java command ) fsc ( fast scala compiler ) Saleem Ansari () JDevDay - Introduction to Scala 10th March 2013 9 / 35
    • Topic1 Introduction to Scala2 Setting up Scala3 Absolute Scala basics4 Functional Paradigm in Scala5 Object Oriented Programming in Scala6 Where to learn more Scala Saleem Ansari () JDevDay - Introduction to Scala 10th March 2013 10 / 35
    • Hello Scala Worldhelloworld.scalaobject HelloWorld { def main(args: Array[String]) = { println("Hello Scala World!") }} Saleem Ansari () JDevDay - Introduction to Scala 10th March 2013 11 / 35
    • Compile and run Hello Scala WorldOutput$ scalac helloworld.scala$ lshelloworld.scalaHelloWorld.classHelloWorld$.class$ scala HelloWorldHello Scala World! Saleem Ansari () JDevDay - Introduction to Scala 10th March 2013 12 / 35
    • Values and Variables An example in Ruby ( or maybe Python ) a dynamically typed language counter = Counter.new counter = AtomicCounter.new counter = File.new # this works here! Scalas static type system, avoids runtime overhead of dynamic types. The method dispatch is fast in a statically typed language. var counter = new Counter() counter = new AtomicCounter() // this has to be a Counter counter = new File() // this doesnt work in Scala Saleem Ansari () JDevDay - Introduction to Scala 10th March 2013 13 / 35
    • Data Types Almost everything is same as Java Basic Data Types: ( all integers are signed twos complement ) Integers:Byte (8bit), Short (16bit), Int (32bit), Long (64bit) Char (16 bit unicode character), String (squence of Chars) Reals: Float (32bit), Double (64bit) Boolean: true / false Literal basic data types i.e. 1, 0.123, 12L, `a, String symbol literal: `identier Saleem Ansari () JDevDay - Introduction to Scala 10th March 2013 14 / 35
    • More Concepts Data Containers Array List Set Map Tuple Programming Abstraction Tools Class Object Scala App Package Saleem Ansari () JDevDay - Introduction to Scala 10th March 2013 15 / 35
    • Expressions Every thing is an expression Basic expression: 1+2 An assignment is an expression A function is an expression Saleem Ansari () JDevDay - Introduction to Scala 10th March 2013 16 / 35
    • Control Constructs if-else while do-while for match-case try-catch-nally Saleem Ansari () JDevDay - Introduction to Scala 10th March 2013 17 / 35
    • Topic1 Introduction to Scala2 Setting up Scala3 Absolute Scala basics4 Functional Paradigm in Scala5 Object Oriented Programming in Scala6 Where to learn more Scala Saleem Ansari () JDevDay - Introduction to Scala 10th March 2013 18 / 35
    • Matematical Logic Lambda Calculus ( see Wikipedia ) Saleem Ansari () JDevDay - Introduction to Scala 10th March 2013 19 / 35
    • Factorial Function Expressed as mathematical logic Saleem Ansari () JDevDay - Introduction to Scala 10th March 2013 20 / 35
    • FP is guided by two main ideas: Functions arest-class values Functions have no side eects i.e. they can be replaced with their values Saleem Ansari () JDevDay - Introduction to Scala 10th March 2013 21 / 35
    • Hallmarks of Functional Programming mapping ltering folding reducing Saleem Ansari () JDevDay - Introduction to Scala 10th March 2013 22 / 35
    • Topic1 Introduction to Scala2 Setting up Scala3 Absolute Scala basics4 Functional Paradigm in Scala5 Object Oriented Programming in Scala6 Where to learn more Scala Saleem Ansari () JDevDay - Introduction to Scala 10th March 2013 23 / 35
    • Object Oriented Decompose the problem into entities and interactions among entities Each entity and their interaction is represented using class/object internal state is the member variables interactions are the member functions Saleem Ansari () JDevDay - Introduction to Scala 10th March 2013 24 / 35
    • Functionsfactorial.scaladef factorial(n:Int): Int = if(n<=0) 1 else n*factorial(n-1) Placeholder syntax Partially applied functions Closures Saleem Ansari () JDevDay - Introduction to Scala 10th March 2013 25 / 35
    • Traitstraits.scalatrait PartTime { // trait definition} Saleem Ansari () JDevDay - Introduction to Scala 10th March 2013 26 / 35
    • Classesclasses.scalaclass Employee(name: String, age: Int) { override def toString = name + ", " + age}class Supervisor(name: String, age: Int ) extends Employee(name, age) with PartTime { override def toString = name + ", " + age} Saleem Ansari () JDevDay - Introduction to Scala 10th March 2013 27 / 35
    • Objectsobjects.scalaobject Employee { override def toString = name + ", " + age} Saleem Ansari () JDevDay - Introduction to Scala 10th March 2013 28 / 35
    • Packagespackage-example.scalapackage in.tuxdna.scalaclass Employee(name: String, age: Int) { override def toString = name + ", " + age}object Main extends App { val emp1 = new Employee("Tom", 21) println("Employee 1: "+emp1)}// $ scalac pacakge-example.scala// Employee 1: Tom, 21 Saleem Ansari () JDevDay - Introduction to Scala 10th March 2013 29 / 35
    • Features to be convered later XML Processing Actors Case Classes Properties Extistential Types Implicits Lazy Evaluation Parser Combinations Monads Annotations Saleem Ansari () JDevDay - Introduction to Scala 10th March 2013 30 / 35
    • Using Scala as a scripting language scala scriptname.scalaemployee.scalaclass Employee(name: String, age: Int) { override def toString = name + ", " + age}val emp1 = new Employee("Tom", 21)println("Employee 1: "+emp1)// $ scala employee.scala// Employee 1: Tom, 21 Saleem Ansari () JDevDay - Introduction to Scala 10th March 2013 31 / 35
    • Topic1 Introduction to Scala2 Setting up Scala3 Absolute Scala basics4 Functional Paradigm in Scala5 Object Oriented Programming in Scala6 Where to learn more Scala Saleem Ansari () JDevDay - Introduction to Scala 10th March 2013 32 / 35
    • Books Scala for the Impatient (free) http://blog.typesafe.com/free- pdf-from-typesafe-scala-for-the-impatien-64715 Programming Scala (free) http://ofps.oreilly.com/titles/9780596155957 Programming in Scala 2nd Ed. http://www.amazon.com/Programming-Scala-Comprehensive- Step-Step/dp/0981531644 Functional Programming Principles in Scala ( free online course ) https://www.coursera.org/course/progfun Blogs Forums Saleem Ansari () JDevDay - Introduction to Scala 10th March 2013 33 / 35
    • Questions? tuxdna (at) gmail (dot) com Saleem Ansari () JDevDay - Introduction to Scala 10th March 2013 34 / 35
    • Thank you! twitter.com/tuxdna Saleem Ansari () JDevDay - Introduction to Scala 10th March 2013 35 / 35