SlideShare une entreprise Scribd logo
1  sur  20
scala['skeilə]  东白
scala? OOP FP DSL
OOP? 数据的抽象化(data abstraction) 继承(inheritance) 多态(ploymorphism) 模块化(module) 复用(reuse) 类型(type)
FP? lambda calculus lambda x . plus x x (lambda x . plus x x) y  rule: 	alpha – 变量替换 	beta – 值应用 {lisp[ML/erlang/haskell]} functionisvalue[hightorderfunction]; 	nosideeffect; lazy evaluation; 	pattern match;  currying/partial funcitons; 	tail recursion optimization; etc…
DSL? definition: Domain-Specific Languages/领域特定语言 internal DSL 便于用库来提供语言特性 	easy debug 	etc… external DSL 	easy design and write[withparser] 	newsyntax 	etc…
not simple? 
base 1.原生类型是对象的实例 123.toByte "1".toInt true.toString 2.函数也是值 val compare = (x: Int, y: Int) => x > y compare(1, 2) // result: Boolean = false 3.变量 var Val/lazy val 4.字面量/literals vali = 1234356; //Int val l = 123454L; // Long val f = 0.123; // Float val c = 'a' or '0041'; //Chaar val s = "string" or """ String "ssssss'""" //String val symbol = 'name  [scala.Symbol("programming scala") //symbol 5.Predef.scala 一切操作都是函数 一切操作都返回值 }=>
trait
companion objects
parameterized types invariant/不变: C[T], C is invariant on T 如果Tsub或Tsup是T的子类或超类,C[Tsub]或C[Tsup]都不是C[T]类 covariant/协变: C[+T], C is covariant on T 如果Tsub是T的子类,则C[Tsub]也是C[T]的子类 Contravatiant/逆变: C[‐T], C is contravariant on T 如果Tsup是T的超类,则C[Tsup]也是C[T]的子类
implicit and type bounds
function
functional data structures
pattern match & case class
concurrent 1.thread 2.java.util.concurrent 3.event/NIO 4.Actor	  ==> <==
DSL
herding xml in scala
ETC…
THANKS

Contenu connexe

Tendances

F# Type Provider for R Statistical Platform
F# Type Provider for R Statistical PlatformF# Type Provider for R Statistical Platform
F# Type Provider for R Statistical PlatformHoward Mansell
 
Scala - The Simple Parts, SFScala presentation
Scala - The Simple Parts, SFScala presentationScala - The Simple Parts, SFScala presentation
Scala - The Simple Parts, SFScala presentationMartin Odersky
 
Oscon keynote: Working hard to keep it simple
Oscon keynote: Working hard to keep it simpleOscon keynote: Working hard to keep it simple
Oscon keynote: Working hard to keep it simpleMartin Odersky
 
scalaliftoff2009.pdf
scalaliftoff2009.pdfscalaliftoff2009.pdf
scalaliftoff2009.pdfHiroshi Ono
 
Learn a language : LISP
Learn a language : LISPLearn a language : LISP
Learn a language : LISPDevnology
 
Session 04 - Arrays in Java
Session 04 - Arrays in JavaSession 04 - Arrays in Java
Session 04 - Arrays in JavaPawanMM
 
INTRODUCTION TO LISP
INTRODUCTION TO LISPINTRODUCTION TO LISP
INTRODUCTION TO LISPNilt1234
 
Scala: functional programming for the imperative mind
Scala: functional programming for the imperative mindScala: functional programming for the imperative mind
Scala: functional programming for the imperative mindSander Mak (@Sander_Mak)
 
Combinators, DSLs, HTML and F#
Combinators, DSLs, HTML and F#Combinators, DSLs, HTML and F#
Combinators, DSLs, HTML and F#Robert Pickering
 
Javascript Tip and Triks
Javascript Tip and TriksJavascript Tip and Triks
Javascript Tip and TriksEb Styles
 
bccon-2014 dev03 xpages-road_to_damascas-lotus-script-and-@formula-to-ssjs
bccon-2014 dev03 xpages-road_to_damascas-lotus-script-and-@formula-to-ssjsbccon-2014 dev03 xpages-road_to_damascas-lotus-script-and-@formula-to-ssjs
bccon-2014 dev03 xpages-road_to_damascas-lotus-script-and-@formula-to-ssjsICS User Group
 
Scala eXchange opening
Scala eXchange openingScala eXchange opening
Scala eXchange openingMartin Odersky
 

Tendances (17)

F# Type Provider for R Statistical Platform
F# Type Provider for R Statistical PlatformF# Type Provider for R Statistical Platform
F# Type Provider for R Statistical Platform
 
Scala - The Simple Parts, SFScala presentation
Scala - The Simple Parts, SFScala presentationScala - The Simple Parts, SFScala presentation
Scala - The Simple Parts, SFScala presentation
 
Basic lisp
Basic lispBasic lisp
Basic lisp
 
Java 8
Java 8Java 8
Java 8
 
Oscon keynote: Working hard to keep it simple
Oscon keynote: Working hard to keep it simpleOscon keynote: Working hard to keep it simple
Oscon keynote: Working hard to keep it simple
 
scalaliftoff2009.pdf
scalaliftoff2009.pdfscalaliftoff2009.pdf
scalaliftoff2009.pdf
 
Learn a language : LISP
Learn a language : LISPLearn a language : LISP
Learn a language : LISP
 
Session 04 - Arrays in Java
Session 04 - Arrays in JavaSession 04 - Arrays in Java
Session 04 - Arrays in Java
 
INTRODUCTION TO LISP
INTRODUCTION TO LISPINTRODUCTION TO LISP
INTRODUCTION TO LISP
 
Scala: functional programming for the imperative mind
Scala: functional programming for the imperative mindScala: functional programming for the imperative mind
Scala: functional programming for the imperative mind
 
(Ai lisp)
(Ai lisp)(Ai lisp)
(Ai lisp)
 
Prolog & lisp
Prolog & lispProlog & lisp
Prolog & lisp
 
Combinators, DSLs, HTML and F#
Combinators, DSLs, HTML and F#Combinators, DSLs, HTML and F#
Combinators, DSLs, HTML and F#
 
Javascript Tip and Triks
Javascript Tip and TriksJavascript Tip and Triks
Javascript Tip and Triks
 
bccon-2014 dev03 xpages-road_to_damascas-lotus-script-and-@formula-to-ssjs
bccon-2014 dev03 xpages-road_to_damascas-lotus-script-and-@formula-to-ssjsbccon-2014 dev03 xpages-road_to_damascas-lotus-script-and-@formula-to-ssjs
bccon-2014 dev03 xpages-road_to_damascas-lotus-script-and-@formula-to-ssjs
 
Lisp
LispLisp
Lisp
 
Scala eXchange opening
Scala eXchange openingScala eXchange opening
Scala eXchange opening
 

En vedette

Js intro
Js introJs intro
Js introdogstar
 
Om Max Power Of Having A Spritual Friend 1
Om Max   Power Of Having A Spritual Friend 1Om Max   Power Of Having A Spritual Friend 1
Om Max Power Of Having A Spritual Friend 1Bryan Sumendap
 
Iniesta 1st touch screenshots
Iniesta 1st touch screenshotsIniesta 1st touch screenshots
Iniesta 1st touch screenshotsMark Upton
 
Om Max Power Of Having A Spritual Friend 1
Om Max   Power Of Having A Spritual Friend 1Om Max   Power Of Having A Spritual Friend 1
Om Max Power Of Having A Spritual Friend 1Bryan Sumendap
 
Scala overview
Scala overviewScala overview
Scala overviewdogstar
 
Killer Classes No Bullets Webinar Version [Compatibility Mode]
Killer Classes No Bullets  Webinar Version [Compatibility Mode]Killer Classes No Bullets  Webinar Version [Compatibility Mode]
Killer Classes No Bullets Webinar Version [Compatibility Mode]University of Arkansas-Fort Smith
 

En vedette (8)

Impro
ImproImpro
Impro
 
Js intro
Js introJs intro
Js intro
 
Om Max Power Of Having A Spritual Friend 1
Om Max   Power Of Having A Spritual Friend 1Om Max   Power Of Having A Spritual Friend 1
Om Max Power Of Having A Spritual Friend 1
 
Iniesta 1st touch screenshots
Iniesta 1st touch screenshotsIniesta 1st touch screenshots
Iniesta 1st touch screenshots
 
Om Max Power Of Having A Spritual Friend 1
Om Max   Power Of Having A Spritual Friend 1Om Max   Power Of Having A Spritual Friend 1
Om Max Power Of Having A Spritual Friend 1
 
Social Networking 101
Social Networking 101Social Networking 101
Social Networking 101
 
Scala overview
Scala overviewScala overview
Scala overview
 
Killer Classes No Bullets Webinar Version [Compatibility Mode]
Killer Classes No Bullets  Webinar Version [Compatibility Mode]Killer Classes No Bullets  Webinar Version [Compatibility Mode]
Killer Classes No Bullets Webinar Version [Compatibility Mode]
 

Similaire à Scala overview

Scalable Data Science with SparkR
Scalable Data Science with SparkRScalable Data Science with SparkR
Scalable Data Science with SparkRDataWorks Summit
 
Introduction to Scala
Introduction to ScalaIntroduction to Scala
Introduction to ScalaSynesso
 
Scala Talk at FOSDEM 2009
Scala Talk at FOSDEM 2009Scala Talk at FOSDEM 2009
Scala Talk at FOSDEM 2009Martin Odersky
 
Enhancing Domain Specific Language Implementations Through Ontology
Enhancing Domain Specific Language Implementations Through OntologyEnhancing Domain Specific Language Implementations Through Ontology
Enhancing Domain Specific Language Implementations Through OntologyChunhua Liao
 
Exciting JavaScript - Part II
Exciting JavaScript - Part IIExciting JavaScript - Part II
Exciting JavaScript - Part IIEugene Lazutkin
 
Scalable Data Science with SparkR: Spark Summit East talk by Felix Cheung
Scalable Data Science with SparkR: Spark Summit East talk by Felix CheungScalable Data Science with SparkR: Spark Summit East talk by Felix Cheung
Scalable Data Science with SparkR: Spark Summit East talk by Felix CheungSpark Summit
 
About Functional Programming
About Functional ProgrammingAbout Functional Programming
About Functional ProgrammingAapo Kyrölä
 
Scalable Data Science in Python and R on Apache Spark
Scalable Data Science in Python and R on Apache SparkScalable Data Science in Python and R on Apache Spark
Scalable Data Science in Python and R on Apache Sparkfelixcss
 
The Evolution of Scala / Scala進化論
The Evolution of Scala / Scala進化論The Evolution of Scala / Scala進化論
The Evolution of Scala / Scala進化論scalaconfjp
 
JSPP: Morphing C++ into Javascript
JSPP: Morphing C++ into JavascriptJSPP: Morphing C++ into Javascript
JSPP: Morphing C++ into JavascriptChristopher Chedeau
 
AestasIT - Internal DSLs in Scala
AestasIT - Internal DSLs in ScalaAestasIT - Internal DSLs in Scala
AestasIT - Internal DSLs in ScalaDmitry Buzdin
 
Master in javascript
Master in javascriptMaster in javascript
Master in javascriptRobbin Zhao
 
IBM Solutions '99 XML and Java: Lessons Learned
IBM Solutions '99 XML and Java: Lessons LearnedIBM Solutions '99 XML and Java: Lessons Learned
IBM Solutions '99 XML and Java: Lessons LearnedTed Leung
 
javascript
javascript javascript
javascript Kaya Ota
 
ITU - MDD - Textural Languages and Grammars
ITU - MDD - Textural Languages and GrammarsITU - MDD - Textural Languages and Grammars
ITU - MDD - Textural Languages and GrammarsTonny Madsen
 

Similaire à Scala overview (20)

Scalable Data Science with SparkR
Scalable Data Science with SparkRScalable Data Science with SparkR
Scalable Data Science with SparkR
 
Introduction to Scala
Introduction to ScalaIntroduction to Scala
Introduction to Scala
 
Scala Talk at FOSDEM 2009
Scala Talk at FOSDEM 2009Scala Talk at FOSDEM 2009
Scala Talk at FOSDEM 2009
 
Enhancing Domain Specific Language Implementations Through Ontology
Enhancing Domain Specific Language Implementations Through OntologyEnhancing Domain Specific Language Implementations Through Ontology
Enhancing Domain Specific Language Implementations Through Ontology
 
The Style of C++ 11
The Style of C++ 11The Style of C++ 11
The Style of C++ 11
 
Exciting JavaScript - Part II
Exciting JavaScript - Part IIExciting JavaScript - Part II
Exciting JavaScript - Part II
 
Scalable Data Science with SparkR: Spark Summit East talk by Felix Cheung
Scalable Data Science with SparkR: Spark Summit East talk by Felix CheungScalable Data Science with SparkR: Spark Summit East talk by Felix Cheung
Scalable Data Science with SparkR: Spark Summit East talk by Felix Cheung
 
About Functional Programming
About Functional ProgrammingAbout Functional Programming
About Functional Programming
 
Scalable Data Science in Python and R on Apache Spark
Scalable Data Science in Python and R on Apache SparkScalable Data Science in Python and R on Apache Spark
Scalable Data Science in Python and R on Apache Spark
 
The Evolution of Scala / Scala進化論
The Evolution of Scala / Scala進化論The Evolution of Scala / Scala進化論
The Evolution of Scala / Scala進化論
 
JSPP: Morphing C++ into Javascript
JSPP: Morphing C++ into JavascriptJSPP: Morphing C++ into Javascript
JSPP: Morphing C++ into Javascript
 
J
JJ
J
 
AestasIT - Internal DSLs in Scala
AestasIT - Internal DSLs in ScalaAestasIT - Internal DSLs in Scala
AestasIT - Internal DSLs in Scala
 
IN4308 1
IN4308 1IN4308 1
IN4308 1
 
DSL简介
DSL简介DSL简介
DSL简介
 
Master in javascript
Master in javascriptMaster in javascript
Master in javascript
 
IBM Solutions '99 XML and Java: Lessons Learned
IBM Solutions '99 XML and Java: Lessons LearnedIBM Solutions '99 XML and Java: Lessons Learned
IBM Solutions '99 XML and Java: Lessons Learned
 
Lecture02(constants, variable & data types)
Lecture02(constants, variable & data types)Lecture02(constants, variable & data types)
Lecture02(constants, variable & data types)
 
javascript
javascript javascript
javascript
 
ITU - MDD - Textural Languages and Grammars
ITU - MDD - Textural Languages and GrammarsITU - MDD - Textural Languages and Grammars
ITU - MDD - Textural Languages and Grammars
 

Scala overview