functional progrmming with scala
TRANSCRIPT
![Page 1: Functional progrmming with scala](https://reader033.vdocuments.net/reader033/viewer/2022052514/58887b041a28ab34788b6353/html5/thumbnails/1.jpg)
Funtional Programmingwith Scala
Han O Seok
2010년 5월 6일 목요일
![Page 2: Functional progrmming with scala](https://reader033.vdocuments.net/reader033/viewer/2022052514/58887b041a28ab34788b6353/html5/thumbnails/2.jpg)
Programming Paradigm
Imprative Programming
Object Oriented Programming
Functional Programming
Logical Programming
2010년 5월 6일 목요일
![Page 3: Functional progrmming with scala](https://reader033.vdocuments.net/reader033/viewer/2022052514/58887b041a28ab34788b6353/html5/thumbnails/3.jpg)
Imperative Programming
Object Oriented Programming
Functional Programming
Logical Programming
Languages C, Fotran, Cobol, Algol, Pascal
Simula, C++, Java, Smalltalk, Ruby
Lisp, ML, Scala, Erlang, Haskell, Scheme
Prolog, CLP
ConceptAssingnment를 기본하는 명령의 나열
모든것은 객체프로그램은 수학함수를 모아놓은것
계산의 결과가 무엇인지를 논리식으로 표현
Programming Paradigm
2010년 5월 6일 목요일
![Page 4: Functional progrmming with scala](https://reader033.vdocuments.net/reader033/viewer/2022052514/58887b041a28ab34788b6353/html5/thumbnails/4.jpg)
Von Neumann Architecture
Stored Program Concept
Assignment
Operation
Memory
Imprative Programming
2010년 5월 6일 목요일
![Page 5: Functional progrmming with scala](https://reader033.vdocuments.net/reader033/viewer/2022052514/58887b041a28ab34788b6353/html5/thumbnails/5.jpg)
Object Oriented Programming
Abstraction
Encapsulation
Inheritance
Polymorphism
2010년 5월 6일 목요일
![Page 6: Functional progrmming with scala](https://reader033.vdocuments.net/reader033/viewer/2022052514/58887b041a28ab34788b6353/html5/thumbnails/6.jpg)
PrologPREDICATES
parent(person, child)grandparent(GP,GC)
CLAUSESparent(margaret,kim)parent(margaret,kent)parent(esther,margaret)parent(esther,jean)grandparent(GP,GC) :- parent(GP,P), parent(P,GC).
GOALgrandparent(esther, child)
child = kimchild = kent2 Solution
Logical Programming
2010년 5월 6일 목요일
![Page 7: Functional progrmming with scala](https://reader033.vdocuments.net/reader033/viewer/2022052514/58887b041a28ab34788b6353/html5/thumbnails/7.jpg)
Scalability Glueing Functions, Glueing Programs
Modularize
No Assignment
Referentially transparent
No Side Effect
Memory Management
Performance
Functional Programming
2010년 5월 6일 목요일
![Page 8: Functional progrmming with scala](https://reader033.vdocuments.net/reader033/viewer/2022052514/58887b041a28ab34788b6353/html5/thumbnails/8.jpg)
Moore’s Law
Multicore Processor
2010년 5월 6일 목요일
![Page 9: Functional progrmming with scala](https://reader033.vdocuments.net/reader033/viewer/2022052514/58887b041a28ab34788b6353/html5/thumbnails/9.jpg)
Singlecore VS Multicore
2010년 5월 6일 목요일
![Page 10: Functional progrmming with scala](https://reader033.vdocuments.net/reader033/viewer/2022052514/58887b041a28ab34788b6353/html5/thumbnails/10.jpg)
Scalable Language [Skah-lah]
The language is so named because it was designed to grow with the demands of its users.
- Programming Scala, p3
2010년 5월 6일 목요일
![Page 11: Functional progrmming with scala](https://reader033.vdocuments.net/reader033/viewer/2022052514/58887b041a28ab34788b6353/html5/thumbnails/11.jpg)
Scala
Multi Paradigm ( OOP + FP )
Strength of variable languages(Haskell, ML, Java, Earlang, Smalltalk ...)
Very Short Code : About 1/2 of Java Code
Increase Readability
Scalability
Type Inference ,Implicit Conversion
2010년 5월 6일 목요일
![Page 12: Functional progrmming with scala](https://reader033.vdocuments.net/reader033/viewer/2022052514/58887b041a28ab34788b6353/html5/thumbnails/12.jpg)
Simple Code
public class Person{private String name;public Person(String name){
self.name = name;}public String getName(){
return name;}public void setName(String name){
self.name = name;}}
class Person(var name:String)
2010년 5월 6일 목요일
![Page 13: Functional progrmming with scala](https://reader033.vdocuments.net/reader033/viewer/2022052514/58887b041a28ab34788b6353/html5/thumbnails/13.jpg)
Scalability
if(StringUtils.isBlank(str)){...}
if(str.isBlank()){...}
2010년 5월 6일 목요일
![Page 14: Functional progrmming with scala](https://reader033.vdocuments.net/reader033/viewer/2022052514/58887b041a28ab34788b6353/html5/thumbnails/14.jpg)
Higher-order Functions
def sum(f: Int => Int) (start:Int, end:Int): Int = {if (start > end) 0else f(start) + sum(f)(start + 1, end)
}
sum:((Int)=>Int)(Int,Int)Int
2010년 5월 6일 목요일
![Page 15: Functional progrmming with scala](https://reader033.vdocuments.net/reader033/viewer/2022052514/58887b041a28ab34788b6353/html5/thumbnails/15.jpg)
No Side EffectsSide Effect : 실 매개변수나 비지역변수의 값이 바뀌어 의도하지 않았던 결과를 얻게 되는 현상
Call By Valuef(x) = y ( Referentially transparent)
Call By Referencef(instance) = ? (Side Effect 가능성)
2010년 5월 6일 목요일
![Page 16: Functional progrmming with scala](https://reader033.vdocuments.net/reader033/viewer/2022052514/58887b041a28ab34788b6353/html5/thumbnails/16.jpg)
Type Inference
def plus (x:Int, y:Int) = {x + y
}
plus: (Int, Int) Int
2010년 5월 6일 목요일
![Page 17: Functional progrmming with scala](https://reader033.vdocuments.net/reader033/viewer/2022052514/58887b041a28ab34788b6353/html5/thumbnails/17.jpg)
Scalability
if(StringUtils.isBlank(str)){...}
if(str.isBlank()){...}
2010년 5월 6일 목요일
![Page 18: Functional progrmming with scala](https://reader033.vdocuments.net/reader033/viewer/2022052514/58887b041a28ab34788b6353/html5/thumbnails/18.jpg)
Implicit Conversionimport org.apache.commons.lang._
class CustomString(var str:String){! def isBlank():Boolean = StringUtils.isBlank(str)}
object CustomString{implicit def customString(s:String):CustomString = {
! new CustomString(s)!}
}
2010년 5월 6일 목요일
![Page 19: Functional progrmming with scala](https://reader033.vdocuments.net/reader033/viewer/2022052514/58887b041a28ab34788b6353/html5/thumbnails/19.jpg)
Actor
100,000 Factorial
http://kldp.org/node/107470
2010년 5월 6일 목요일
![Page 20: Functional progrmming with scala](https://reader033.vdocuments.net/reader033/viewer/2022052514/58887b041a28ab34788b6353/html5/thumbnails/20.jpg)
JVM
Powerful Type System
Functional Programming Object Oriented Programming
2010년 5월 6일 목요일
![Page 21: Functional progrmming with scala](https://reader033.vdocuments.net/reader033/viewer/2022052514/58887b041a28ab34788b6353/html5/thumbnails/21.jpg)
on
Reliable, high performance code
Flexible , Full featured Language
Steve Jenson, Alex Payne and Robey Pointer said….. http://www.artima.com/scalazine/articles/twitter_on_scala.html
2010년 5월 6일 목요일
![Page 22: Functional progrmming with scala](https://reader033.vdocuments.net/reader033/viewer/2022052514/58887b041a28ab34788b6353/html5/thumbnails/22.jpg)
Scala Study
2010년 5월 6일 목요일
![Page 23: Functional progrmming with scala](https://reader033.vdocuments.net/reader033/viewer/2022052514/58887b041a28ab34788b6353/html5/thumbnails/23.jpg)
Thanks (-:
2010년 5월 6일 목요일