ºÝºÝߣ

ºÝºÝߣShare a Scribd company logo
scala['skeil?] ¶«°×
scala?OOPFPDSL
OOP?Êý¾ÝµÄ³éÏó»¯(data abstraction)¼Ì³Ð(inheritance)¶à̬(ploymorphism)Ä£¿é»¯(module)¸´ÓÃ(reuse)ÀàÐÍ(type)
FP?lambda calculuslambda x . plus x x(lambda x . plus x x) y rule:	alpha ¨C ±äÁ¿Ìæ»»	beta ¨C ÖµÓ¦ÓÃ{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??
base1.Ô­ÉúÀàÐÍÊǶÔÏóµÄʵÀý123.toByte"1".toInttrue.toString2.º¯ÊýÒ²ÊÇÖµval compare = (x: Int, y: Int) => x > ycompare(1, 2) // result: Boolean = false3.±äÁ¿varVal/lazy val4.×ÖÃæÁ¿/literalsvali = 1234356; //Intval l = 123454L; // Longval f = 0.123; // Floatval c = 'a' or '\u0041'; //Chaarval s = "string" or """ String "ssssss'""" //Stringval symbol = 'name  [scala.Symbol("programming scala") //symbol5.Predef.scalaÒ»ÇвÙ×÷¶¼ÊǺ¯ÊýÒ»ÇвÙ×÷¶¼·µ»ØÖµ}=>
Scala overview
trait
companion objects
parameterized typesinvariant/²»±ä: 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
concurrent1.thread2.java.util.concurrent3.event/NIO4.Actor	  ==><==
DSL
herding xml in scala
·¡°Õ°ä¡­
THANKS

More Related Content

What's hot (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
Howard Mansell
?
Scala - The Simple Parts, SFScala presentation
Scala - The Simple Parts, SFScala presentationScala - The Simple Parts, SFScala presentation
Scala - The Simple Parts, SFScala presentation
Martin Odersky
?
Basic lisp
Basic lispBasic lisp
Basic lisp
Arvind sahu
?
Java 8
Java 8Java 8
Java 8
vilniusjug
?
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
Martin Odersky
?
scalaliftoff2009.pdf
scalaliftoff2009.pdfscalaliftoff2009.pdf
scalaliftoff2009.pdf
Hiroshi Ono
?
Learn a language : LISP
Learn a language : LISPLearn a language : LISP
Learn a language : LISP
Devnology
?
Session 04 - Arrays in Java
Session 04 - Arrays in JavaSession 04 - Arrays in Java
Session 04 - Arrays in Java
PawanMM
?
INTRODUCTION TO LISP
INTRODUCTION TO LISPINTRODUCTION TO LISP
INTRODUCTION TO LISP
Nilt1234
?
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
Sander Mak (@Sander_Mak)
?
(Ai lisp)
(Ai lisp)(Ai lisp)
(Ai lisp)
Ravi Rao
?
Prolog & lisp
Prolog & lispProlog & lisp
Prolog & lisp
Ismail El Gayar
?
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 Triks
Eb 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-ssjs
ICS User Group
?
Lisp
LispLisp
Lisp
Aniruddha Chakrabarti
?
Scala eXchange opening
Scala eXchange openingScala eXchange opening
Scala eXchange opening
Martin Odersky
?
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
Howard Mansell
?
Scala - The Simple Parts, SFScala presentation
Scala - The Simple Parts, SFScala presentationScala - The Simple Parts, SFScala presentation
Scala - The Simple Parts, SFScala presentation
Martin 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 simple
Martin Odersky
?
scalaliftoff2009.pdf
scalaliftoff2009.pdfscalaliftoff2009.pdf
scalaliftoff2009.pdf
Hiroshi Ono
?
Learn a language : LISP
Learn a language : LISPLearn a language : LISP
Learn a language : LISP
Devnology
?
Session 04 - Arrays in Java
Session 04 - Arrays in JavaSession 04 - Arrays in Java
Session 04 - Arrays in Java
PawanMM
?
INTRODUCTION TO LISP
INTRODUCTION TO LISPINTRODUCTION TO LISP
INTRODUCTION TO LISP
Nilt1234
?
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
Sander 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 Triks
Eb 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-ssjs
ICS User Group
?

Viewers also liked (8)

ImproImpro
Impro
guest314590
?
Js intro
Js introJs intro
Js intro
dogstar
?
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
Bryan Sumendap
?
Iniesta 1st touch screenshots
Iniesta 1st touch screenshotsIniesta 1st touch screenshots
Iniesta 1st touch screenshots
Mark 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 1
Bryan Sumendap
?
Social Networking 101
Social Networking 101Social Networking 101
Social Networking 101
University of Arkansas-Fort Smith
?
Scala overview
Scala overviewScala overview
Scala overview
dogstar
?
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
?

Similar to Scala overview (20)

Scalable Data Science with SparkR
Scalable Data Science with SparkRScalable Data Science with SparkR
Scalable Data Science with SparkR
DataWorks Summit
?
Introduction to Scala
Introduction to ScalaIntroduction to Scala
Introduction to Scala
Synesso
?
Scala Talk at FOSDEM 2009
Scala Talk at FOSDEM 2009Scala Talk at FOSDEM 2009
Scala Talk at FOSDEM 2009
Martin 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 Ontology
Chunhua Liao
?
The Style of C++ 11
The Style of C++ 11The Style of C++ 11
The Style of C++ 11
Sasha Goldshtein
?
Exciting JavaScript - Part II
Exciting JavaScript - Part IIExciting JavaScript - Part II
Exciting JavaScript - Part II
Eugene 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 Cheung
Spark Summit
?
About Functional Programming
About Functional ProgrammingAbout Functional Programming
About Functional Programming
Aapo 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 Spark
felixcss
?
The Evolution of Scala / ScalaßM»¯Õ“
The Evolution of Scala / ScalaßM»¯Õ“The Evolution of Scala / ScalaßM»¯Õ“
The Evolution of Scala / ScalaßM»¯Õ“
scalaconfjp
?
J
JJ
J
Christopher Chedeau
?
JSPP: Morphing C++ into Javascript
JSPP: Morphing C++ into JavascriptJSPP: Morphing C++ into Javascript
JSPP: Morphing C++ into Javascript
Christopher Chedeau
?
AestasIT - Internal DSLs in Scala
AestasIT - Internal DSLs in ScalaAestasIT - Internal DSLs in Scala
AestasIT - Internal DSLs in Scala
Dmitry Buzdin
?
Report about the LISP Programming Language
Report about the LISP Programming LanguageReport about the LISP Programming Language
Report about the LISP Programming Language
maldosmelandrew
?
IN4308 1
IN4308 1IN4308 1
IN4308 1
Eelco Visser
?
¶Ù³§³¢½éÉÜ
¶Ù³§³¢½éÉܶٳ§³¢½éÉÜ
¶Ù³§³¢½éÉÜ
a596620989
?
Master in javascript
Master in javascriptMaster in javascript
Master in javascript
Robbin 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 Learned
Ted Leung
?
Lecture02(constants, variable & data types)
Lecture02(constants, variable & data types)Lecture02(constants, variable & data types)
Lecture02(constants, variable & data types)
Dhaka University of Engineering & Technology(DUET)
?
javascript
javascript javascript
javascript
Kaya Ota
?
Scalable Data Science with SparkR
Scalable Data Science with SparkRScalable Data Science with SparkR
Scalable Data Science with SparkR
DataWorks Summit
?
Introduction to Scala
Introduction to ScalaIntroduction to Scala
Introduction to Scala
Synesso
?
Scala Talk at FOSDEM 2009
Scala Talk at FOSDEM 2009Scala Talk at FOSDEM 2009
Scala Talk at FOSDEM 2009
Martin 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 Ontology
Chunhua Liao
?
Exciting JavaScript - Part II
Exciting JavaScript - Part IIExciting JavaScript - Part II
Exciting JavaScript - Part II
Eugene 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 Cheung
Spark Summit
?
About Functional Programming
About Functional ProgrammingAbout Functional Programming
About Functional Programming
Aapo 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 Spark
felixcss
?
The Evolution of Scala / ScalaßM»¯Õ“
The Evolution of Scala / ScalaßM»¯Õ“The Evolution of Scala / ScalaßM»¯Õ“
The Evolution of Scala / ScalaßM»¯Õ“
scalaconfjp
?
AestasIT - Internal DSLs in Scala
AestasIT - Internal DSLs in ScalaAestasIT - Internal DSLs in Scala
AestasIT - Internal DSLs in Scala
Dmitry Buzdin
?
Report about the LISP Programming Language
Report about the LISP Programming LanguageReport about the LISP Programming Language
Report about the LISP Programming Language
maldosmelandrew
?
¶Ù³§³¢½éÉÜ
¶Ù³§³¢½éÉܶٳ§³¢½éÉÜ
¶Ù³§³¢½éÉÜ
a596620989
?
Master in javascript
Master in javascriptMaster in javascript
Master in javascript
Robbin 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 Learned
Ted Leung
?

Scala overview