Scala un lenguaje para multiprocesador
-
Upload
octavio-bernal -
Category
Technology
-
view
117 -
download
1
description
Transcript of Scala un lenguaje para multiprocesador
![Page 1: Scala un lenguaje para multiprocesador](https://reader036.fdocuments.es/reader036/viewer/2022081414/54c2b4a34a795903128b457c/html5/thumbnails/1.jpg)
Un lenguaje para la era del multiprocesadorOctavio Luna @tavo_luna
Presentación: http://goo.gl/YmA6G
![Page 2: Scala un lenguaje para multiprocesador](https://reader036.fdocuments.es/reader036/viewer/2022081414/54c2b4a34a795903128b457c/html5/thumbnails/2.jpg)
@tavo_luna +octavio.luna http://goo.gl/YmA6G
Scala es como el Toruk de Avatar: Va a tratar de matarte, pero una vez que lo
dominas puedes alcanzar grandes alturas
![Page 3: Scala un lenguaje para multiprocesador](https://reader036.fdocuments.es/reader036/viewer/2022081414/54c2b4a34a795903128b457c/html5/thumbnails/3.jpg)
@tavo_luna +octavio.luna http://goo.gl/YmA6G
![Page 4: Scala un lenguaje para multiprocesador](https://reader036.fdocuments.es/reader036/viewer/2022081414/54c2b4a34a795903128b457c/html5/thumbnails/4.jpg)
@tavo_luna +octavio.luna http://goo.gl/YmA6G
¿Por qué SCALA?
Orientado a ObjetosFuncional Reactivo
EscalableTipos Seguros
JVM y .NET*
![Page 5: Scala un lenguaje para multiprocesador](https://reader036.fdocuments.es/reader036/viewer/2022081414/54c2b4a34a795903128b457c/html5/thumbnails/5.jpg)
@tavo_luna +octavio.luna http://goo.gl/YmA6G
La escalabilidad es Horizontal
![Page 6: Scala un lenguaje para multiprocesador](https://reader036.fdocuments.es/reader036/viewer/2022081414/54c2b4a34a795903128b457c/html5/thumbnails/6.jpg)
@tavo_luna +octavio.luna http://goo.gl/YmA6G
![Page 7: Scala un lenguaje para multiprocesador](https://reader036.fdocuments.es/reader036/viewer/2022081414/54c2b4a34a795903128b457c/html5/thumbnails/7.jpg)
@tavo_luna +octavio.luna http://goo.gl/YmA6G
Parallels Collections
![Page 8: Scala un lenguaje para multiprocesador](https://reader036.fdocuments.es/reader036/viewer/2022081414/54c2b4a34a795903128b457c/html5/thumbnails/8.jpg)
@tavo_luna +octavio.luna http://goo.gl/YmA6G
//Secuencial:object SequentialImplementation extends Computation { def compute(list:List[Data]):Int =
list.map{f}.max}//Paralelizadoobject ParallelImplementation extends Computation { def compute(list:List[Data]):Int =list.par.map{f}.par.max}
![Page 9: Scala un lenguaje para multiprocesador](https://reader036.fdocuments.es/reader036/viewer/2022081414/54c2b4a34a795903128b457c/html5/thumbnails/9.jpg)
@tavo_luna +octavio.luna http://goo.gl/YmA6G
DEMOSTRACION
![Page 10: Scala un lenguaje para multiprocesador](https://reader036.fdocuments.es/reader036/viewer/2022081414/54c2b4a34a795903128b457c/html5/thumbnails/10.jpg)
@tavo_luna +octavio.luna http://goo.gl/YmA6G
La escalabilidad es Horizontal
![Page 11: Scala un lenguaje para multiprocesador](https://reader036.fdocuments.es/reader036/viewer/2022081414/54c2b4a34a795903128b457c/html5/thumbnails/11.jpg)
@tavo_luna +octavio.luna http://goo.gl/YmA6G
La escalabilidad es Horizontal
![Page 12: Scala un lenguaje para multiprocesador](https://reader036.fdocuments.es/reader036/viewer/2022081414/54c2b4a34a795903128b457c/html5/thumbnails/12.jpg)
@tavo_luna +octavio.luna http://goo.gl/YmA6G
ACTORES - AKKA
![Page 13: Scala un lenguaje para multiprocesador](https://reader036.fdocuments.es/reader036/viewer/2022081414/54c2b4a34a795903128b457c/html5/thumbnails/13.jpg)
@tavo_luna +octavio.luna http://goo.gl/YmA6G
Desarrollo Lineal (tradicioNAL)
Iterador de LíneasWebService
Main.scala
![Page 14: Scala un lenguaje para multiprocesador](https://reader036.fdocuments.es/reader036/viewer/2022081414/54c2b4a34a795903128b457c/html5/thumbnails/14.jpg)
@tavo_luna +octavio.luna http://goo.gl/YmA6G
Desarrollo Lineal (tradicioNAL)
Iterador de LíneasWebService
Main.scala
![Page 15: Scala un lenguaje para multiprocesador](https://reader036.fdocuments.es/reader036/viewer/2022081414/54c2b4a34a795903128b457c/html5/thumbnails/15.jpg)
@tavo_luna +octavio.luna http://goo.gl/YmA6G
def readXLS(){ import java.io._ val writer = new PrintWriter(new File("output.csv" )) val sheet = new HSSFWorkbook(
new FileInputStream("WalmartForGEOCODING.xls")).getSheetAt(0) val r0 = sheet.getFirstRowNum val r1 = sheet.getLastRowNum try{ for(i <- r0 to r1){ val r = sheet.getRow(i) val addr = r.getCell(1) val city = r.getCell(2) val state = r.getCell(3)
val zip = r.getCell(4) val (gLat, gLong) = callWS(s"$addr, $city, $state, $zip") val outTxt = s"$fullAddr, $gLat, $gLong\n" print(outTxt)
writer.write(outTxt) } }catch{ case e:Exception => e.printStackTrace() }
writer.close()}
![Page 16: Scala un lenguaje para multiprocesador](https://reader036.fdocuments.es/reader036/viewer/2022081414/54c2b4a34a795903128b457c/html5/thumbnails/16.jpg)
@tavo_luna +octavio.luna http://goo.gl/YmA6G
def readXLS(){ import java.io._ val writer = new PrintWriter(new File("output.csv" )) val sheet = new HSSFWorkbook(
new FileInputStream("WalmartForGEOCODING.xls")).getSheetAt(0) val r0 = sheet.getFirstRowNum val r1 = sheet.getLastRowNum try{ for(i <- r0 to r1){ val r = sheet.getRow(i) val addr = r.getCell(1) val city = r.getCell(2) val state = r.getCell(3)
val zip = r.getCell(4) val (gLat, gLong) = callWS(s"$addr, $city, $state, $zip") val outTxt = s"$fullAddr, $gLat, $gLong\n" print(outTxt)
writer.write(outTxt) } }catch{ case e:Exception => e.printStackTrace() }
writer.close()}
Punto de Mejora
![Page 17: Scala un lenguaje para multiprocesador](https://reader036.fdocuments.es/reader036/viewer/2022081414/54c2b4a34a795903128b457c/html5/thumbnails/17.jpg)
@tavo_luna +octavio.luna http://goo.gl/YmA6G
Desarrollo Lineal (tradicioNAL)
Iterador de LíneasWebService
Main.scala
![Page 18: Scala un lenguaje para multiprocesador](https://reader036.fdocuments.es/reader036/viewer/2022081414/54c2b4a34a795903128b457c/html5/thumbnails/18.jpg)
@tavo_luna +octavio.luna http://goo.gl/YmA6G
Desarrollo Con Actores (concurrente)
Iterador de Líneas
WebService
Master.actorreceive
Geolocate
Escribe en ArchivoGeolocation
WorkerRouter
WorkerWorkerWorkerWorkerWorkerN
![Page 19: Scala un lenguaje para multiprocesador](https://reader036.fdocuments.es/reader036/viewer/2022081414/54c2b4a34a795903128b457c/html5/thumbnails/19.jpg)
@tavo_luna +octavio.luna http://goo.gl/YmA6G
DEMOSTRACION
![Page 20: Scala un lenguaje para multiprocesador](https://reader036.fdocuments.es/reader036/viewer/2022081414/54c2b4a34a795903128b457c/html5/thumbnails/20.jpg)
@tavo_luna +octavio.luna http://goo.gl/YmA6G
Actores en la JVM
Akka: Java & ScalaKilim: JavaJetlang: JavaActors Guild: JavaActorFoundry: JavaActorom: JavaFunctional Java: JavaGParallelizer: GroovyFan Actors: Fan