You are on page 1of 14

Tecnolgico de estudios

Superiores de Ecatepec
Alumnas:
Ortiz Flores Guillermina
Islas Lpez Sandy Paulina
Maestro:
uan Manuel Stein !arrillo
Materia:
Fundamentos de programacin
Grupo:
"#$#
Scala (lenguaje de programacin)
Historia
Scala fue creado en cole Polytechnique Fdrale de Lausanne (EPFL) en 2001
por Martin ders!y" Fue lan#ado p$%lico en Platafor&a de 'a(a en enero de 200)*
y en la platafor&a de "+E, en -unio el &is&o a.o" /na se0unda (ersi1n de la
len0ua fue lan#ada en &ar#o de 2002"
Scala es %auti#ado con ese no&%re para precisa&ente decir que se in(enta un
len0ua-e escala%le"
El tr&ino escala%le est3
4so%recar0ado5" Es una pala%ra que
hace alusi1n a diferentes cosas*
dependiendo del conte6to" En
7rquitectura de soft8are se utili#a
para descri%ir a uno de los atri%utos
de calidad i&portantes de siste&as
que &ane-an &uchos recursos y
para el cual desea&os que no se
4de0rade5 con el creci&iento de
esos recursos"
Scala es un len0ua-e de
pro0ra&aci1n de prop1sito 0eneral
dise.ado para e6presar patrones
co&unes de pro0ra&aci1n de una
&anera concisa* ele0ante y con
se0uridad de tipos" Se inte0ra sin
pro%le&as las caracter9sticas de los
len0ua-es orientados a o%-etos y
funcional* per&itiendo a los
pro0ra&adores de 'a(a y otros para
ser &3s producti(os" :1di0o
ta&a.os se reducen t9pica&ente por
un factor de dos a tres cuando se
co&para con un equi(alente de aplicaciones 'a(a"
Muchas e&presas ya e6istentes que dependen de 'a(a para aplicaciones cr9ticas
de ne0ocio est3n recurriendo a la Scala para au&entar su producti(idad de
desarrollo* la escala%ilidad y la fia%ilidad de las aplicaciones en 0eneral"
Scala
Desarrollador(es)
La%oratorio de &todos de pro0ra&aci1n de la
EPFL
www.scala-lang.org
Informacin general
Paradigma funcional* orientado a o%-etos
Apareci en 200;
Diseado por Martin ders!y
ltima versin
estable
2"<"1
ipo de dato est3tico* fuerte
Influido por S&alltal!* 'a(a* =as!ell*
Standard ML* :a&l

Plataforma
Funciona&ientos de Scala en Platafor&a de 'a(a (M3quina (irtual de 'a(a) y es
co&pati%le con e6istir 'a(a pro0ra&as" /na puesta en pr3ctica alternati(a e6iste para
Platafor&a de "+E,* no o%stante no se ha &antenido actuali#ado" ,a&%in funciona
encendido Platafor&a de 'a(a* edici1n &icro :onfi0uraci1n de dispositi(o li&itada
conectada"
!aracter"sticas
#rientacin a objetos
Scala es un len0ua-e de pro0ra&aci1n orientado a o%-etos puro* en el sentido de
que cada (alor es un o%-eto" El tipo y co&porta&iento de los o%-etos se descri%e
por &edio de clases y traits" La a%stracci1n de clases se reali#a e6tendiendo otras
clases y usando un &ecanis&o de co&posici1n %asado en &i6ins co&o un
ree&pla#o li&pio de la herencia &$ltiple"
$a perfecta integracin con %ava
El c1di0o 'a(a e6istente y las ha%ilidades del pro0ra&ador son total&ente
reutili#a%les" Scala pro0ra&as se e-ecutan en la &3quina (irtual de 'a(a* son el
c1di0o de %ytes co&pati%le con 'a(a para que pueda hacer un uso co&pleto de
las actuales %i%liotecas de 'a(a o c1di0o de aplicaci1n e6istente" /sted puede
lla&ar a Scala de 'a(a y se puede lla&ar a 'a(a desde Scala* la inte0raci1n es
perfecta"
Scala rendimiento del compilador
El co&pilador de Scala es &aduro y pro%ado alta&ente confia%le por a.os de uso
en entornos de producci1n* el co&pilador fue escrito por Martin ders!y quien
ta&%in escri%i1 el co&pilador 'a(a de referencia y co>autor de los 0enricos*
utili#ados por &illones de pro0ra&adores de 'a(a en la actualidad" /sted puede
estar se0uro de que su puesta en pr3ctica de la Scala co&pilador produce c1di0o
de %ytes que se lle(a a ca%o tan %ueno co&o co&para%le c1di0o 'a(a"
$a concepcin de Scala
?espus de ha%er escrito cientos de &iles de l9neas de 'a(a a s9 &is&o* Martin
ders!y* profesor de la EPFL* era &uy consciente de las frustraciones que
enfrentan los pro0ra&adores de 'a(a" For&1 la (isi1n de la aplicaci1n del &e-or
conoci&iento de la co&unidad de in(esti0aci1n acad&ica para el pro%le&a de
hacer la e6periencia en pro0ra&aci1n 'a(a &e-or* incluso di(ertido" Su paso
pra0&3tico pri&era 'a(a @enerics* (isto co&o un 0ran 6ito por la co&unidad
'a(a" Sin e&%ar0o* para la (isi1n co&pleta de la pro0ra&aci1n concurrente
escala%le para lo0rar que (io que la sinta6is %3sica de 'a(a tendr9a que ca&%iar"
/sted si&ple&ente no puede lle0ar all9 desde aqu9" Sin e&%ar0o* un ca&%io
aparente&ente si&ple en la sinta6is de 0anado &ayor unifor&idad a los aspectos
orientados a o%-etos de 'a(a* y esto a su (e# per&iti1 una fusi1n natural con los
conceptos de pro0ra&aci1n funcional que son funda&entales para hacer frente a
la concurrencia" En 2001 naci1 Scala"
Scala interoperable con %ava & '(
Scala est3 dise.ado para interoperar %ien con el entorno de e-ecuci1n 'a(a 2
populares ('AE)" En particular* la interacci1n con la corriente orientada a o%-etos
len0ua-e de pro0ra&aci1n 'a(a es lo &3s sua(e posi%le" Scala tiene el &is&o
&odelo de co&pilaci1n (co&pilaci1n separada* car0a din3&ica de clases) co&o
'a(a y per&ite el acceso a &iles de las actuales %i%liotecas de alta calidad"
Soporte para "+E, Fra&e8or! (:LA) est3 ta&%in disponi%le"
ipos De Datos
Tipo de dato Rango Ejemplo
Byte 8-bit con signo 38
Short 16 bit con signo 23
Long 64 bit con signo 3434332
Int 32 bit con signo 70
Char 16 bit sin signo 'A'
Foat 32 bit !otante con signo 1"234
#o$be 64 bit !otante con signo 1"234
Booean tr$e o !ase tr$e
Tipo de dato Rango Ejemplo
String sec$encia %e caracteres &hoa&
ipos est)ticosB Scala est3 equipado con un siste&a de tipos e6presi(o que
refuer#a a que las a%stracciones de tipos se usen en for&a coherente y se0ura"
ipos fuerteB /n len0ua-e de pro0ra&aci1n es fuerte&ente tipado si no se
per&iten (iolaciones de los tipos de datos* es decir* dado una (aria%le de un tipo
concreto* no se puede usar co&o si fuera una (aria%le de otro tipo distinto a
&enos que se ha0a una con(ersi1n"
$enguaje funcional
Scala es un len0ua-e funcional en el sentido de que cada funci1n es un (alor
ta&%in posee caracter9sticas propias de los len0ua-es funcionales" En Scala las
funciones son (alores de pri&era clase* soportando funciones an1ni&as* orden
superior* funciones anidadas y currificaci1n" Scala ofrece una sinta6is li0era para
definir funciones an1ni&as* es co&pati%le con funciones de orden superior* que
per&ite que las funciones puedan anidar" Scala (iene inte0rado de f3%rica con la
tcnica de pattern &atchin0 para &odelar tipos al0e%raicos usados en &uchos
len0ua-es funcionales"
7de&3s* la noci1n Scala de coincidencia de patrones* natural&ente* se e6tiende
al trata&iento de datos CML con la ayuda de los patrones de secuencia correcta*
haciendo caso o&iso" En este conte6to* las co&prensiones de secuencia son
$tiles para la for&ulaci1n de consultas" Estas caracter9sticas hacen Scala ideal
para el desarrollo de aplicaciones co&o ser(icios 8e%"es"
Poner al0unas en e-ecuci1n de las construcciones &3s a(an#adas de la
pro0ra&aci1n funcional de Scala se puede li&itar de (e# en cuando por el hecho
eso lla&ada de la cola las opti&i#aciones no se apoyan total&ente* porque el 'DM
carece los c1di0os del octeto para ponerlos en e-ecuci1n eficiente&ente" En estas
situaciones una tiene que ir si&ple&ente de nue(o a la pro0ra&aci1n procesal
tradicional"
/na puesta en pr3ctica de a Euic!sort al0orit&o en estilo funcional* para la
co&paraci1n con E-e&plo de Erlan0 Euic!sortB
qsort del def (lst: Lista [interna]): Lista [interna] =
fsforo del lst {
nada del caso => Pivote
del caso de la nada:: cola => qsort (filtro de la cola {_ <
pivote})::: pivote:: qsort (filtro de la cola {_ >= pivote})
}
ipificado est)tico
Scala est3 equipado con un siste&a de tipos e6presi(o que refuer#a a que las
a%stracciones de tipos se usen en for&a coherente y se0ura"
En particular* el siste&a de tipo de soportesB
clases 0enricas*
anotaciones de la (ariaci1n*
tipo superior y &3s %a-o l9&ites*
clases y tipos a%stractos co&o &ie&%ros del o%-eto*
tipos co&puestos*
referencias e6pl9cita&ente &ecano0rafiadas del uno &is&o*
opiniones* y
poli&1rfico &todos"
/n &ecanis&o de inferencia local se encar0a de que el usuario no est o%li0ado a
anotar el pro0ra&a con la infor&aci1n de tipo redundante" En co&%inaci1n* estas
caracter9sticas proporcionan una s1lida %ase para la reutili#aci1n se0ura de las
a%stracciones de pro0ra&aci1n y para la e6tensi1n de se0uridad de tipos de
soft8are"
(*tensibilidad
Scala se dise.o teniendo en &ente el hecho de que en la pr3ctica el desarrollo de
aplicaciones requiere a &enudo de e6tensiones espec9ficas del len0ua-e* para ello*
Scala proporciona una co&%inaci1n $nica de &ecanis&os que hacen f3cil y sin
pro%le&as a0re0ar construcciones nue(as al len0ua-e en for&a de %i%liotecas"
F :ualquier &todo puede ser utili#ado co&o un infi-o u operador postfi6"
F :ierres se construyen auto&3tica&ente en funci1n del tipo esperado
(escri%iendo o%-eti(o)"
/n uso co&$n de las dos caracter9sticas facilita la definici1n de nue(os estados
sin e6tender la sinta6is y sin el uso de &acro>co&o la pro0ra&aci1n de &eta>
instalaciones"
Independencia de la plataforma
Scala se dise.a al interoperate %ien con los a&%ientes de pro0ra&aci1n populares
co&o 'a(a 7&%iente Aunti&e 2 ('AE) y "+E, :LA"
G2H
Particular&ente* la
interacci1n con las idio&as orientadas al o%-eto de corriente tiene 0usto de 'a(a y
:I es tan liso co&o sea posi%le"
Es decir Scala puede effortlessly hacer uso todas las %i%liotecas disponi%les para
'a(aJ:I* tratando la des(enta-a co&$n de usar idio&as funcionales a(an#adas
que sea que la co&unidad peque.a* &ucha de l se centr1 alrededor de la
acade&ia* no consi0a a &enudo a poner las %i%liotecas de la calidad en e-ecuci1n
para las tareas del &undo real co&unes tales co&o acceso de %ase de datos
e&parentada* CML proceso* e6presiones re0ulares* y as9 sucesi(a&ente" Scala
puede lo0rar esas tareas de una for&a &uy se&e-ante&ente a c1&o una en 'a(a
o :I"
Scala tiene el &is&o &odelo de la co&pilaci1n (co&pilaci1n separada*
car0a&ento din3&ico de la clase) co&o 'a(a y :I* y per&ite que los &illares de
%i%liotecas de alta calidad sean alcan#ados"
Hola ejemplo del mundo
7qu9 est3 el can1nico =ola pro0ra&a del &undo escrito en ScalaB
objeto Helloorld extiende !"so {
println (#$ola% &'ndo( ))
}
o
objeto Helloorld {
def ca*er+a (ar,s: !-rsenal [sec'encia]) {
println (#$ola% &'ndo( ))
}
}
7(iso c1&o es si&ilar est3 a uso independiente del &undo del hola para 'a(a" La
diferencia nota%le es que no declara&os cualquier cosa ser est3ticos o (ac9osK
objeto la pala%ra cla(e nos da a sin0leton op1n0ase* li%er3ndonos de tener que
in(ocar cualesquiera construcciones"
/no entonces co&pilar9a esto de la l9nea de co&ando 3spero co&o si0ue* si se
asu&e que la fue ahorrada en un no&%re de fichero lla&ado =elloLorld"scalaB
> scalac Helloorld.scala
/no entonces lo funcionar9a tiene 0usto tanB
> scala / classpat$. Helloorld
Esto es an3lo0o a c1&o uno co&pila y funciona un pro0ra&a del &undo de 'a(a
4hola5" ?e hecho* la co&pilaci1n de Scala y el &odelo de la e-ecuci1n es idnticos
a la de 'a(a* hacindolo co&pati%le con las herra&ientas de la estructura de 'a(a
por e-e&plo =or&i0a"
ipo de operadores
#P(+AD#+(S P+#,+A-A!I.'
'(era%or
0 1"2-
/ 3415-
6 2"L57PL78-879:
; <7=7179:
> P954:87-879:
&od. 29<"L9
En todos los len0ua-es de pro0ra&aci1n se utili#an operadores para efectuar
operaciones arit&ticas" :o&%inando las (aria%les y constantes en e6presiones
arit&ticas por &edio de funciones adecuadas"
/na e6presi1n es un con-unto de datos o funciones unidos por operadores
arit&ticos* los cuales se &uestran en la si0uiente ta%laB
#P(+AD#+(S $.,I!#S
En ocasiones en los pro0ra&as se necesitan reali#ar co&paraciones entre
distintos (alores* esto se reali#a utili#ando los operadores relaciones* los cuales se
listan a continuaci1nB
'(era%or Signi!ica%o
M Menor que N Mayor que MO Menor o i0ual que NO Mayor o i0ual que O P0ual a MN
?istinto a* diferente de
#P(+AD#+(S A+I-(I!#S / D( ASI,'A!I#'
7 continuaci1n se e6plican los tipos de operadores (arit&ticos y de asi0naci1n)
que per&iten reali#ar operaciones &ate&3ticas en len0ua-e :"
0#peradores aritm1ticos2
E6isten dos tipos de operadores arit&ticosB
Los ?inarios:
0 1'&a
/ 3esta
6 2'ltiplicacin
; <ivisin
@ 2d'lo (resto)
A los 'narios:
00 7ncre&ento (s'&a B)
/ / <ecre&ento (resta B)
/ 8a&?io de si,no
1' sintaCis es:
?inarios:
<varia?leB><operador><varia?leD>
'narios:
<varia?le><operador> A al revEs%
<operador><varia?le>.
0#peradores de asignacin2
La &ayor9a de los operadores arit&ticos %inarios e6plicados con anterioridad
tienen su correspondiente operador de asi0naci1nB
= -si,nacin si&ple
0= 1'&a
/= 3esta
6= 2'ltiplicacin
;= <ivisin
@= 2d'lo (resto)
:on estos operadores se pueden escri%ir* de for&a &3s %re(e* e6presiones del
tipoB
n=n0F se p'ede escri?ir n0=F
G=G6(C/D) lo pode&os s'stit'ir por G6=C/D
0%erar3u"a de los operadores2
Ser3 i&portante tener en cuenta la precedencia de los operadores a la hora de
tra%a-ar con ellosB
( ) 2aAor precedencia
00% / /
6% ;% @
0% / 2enor precendencia
Las operaciones con &ayor precedencia se reali#an antes que las de &enor
precedencia"
Si en una operaci1n encontra&os si0nos del &is&o ni(el de precedencia* dicha
operaci1n se reali#a de i#quierda a derecha" 7 continuaci1n se &uestra un e-e&plo
so%re elloB
a6?0c;d/e
B. a6? res'ltado = C
D. c;d res'ltado = A
F. C0A res'ltado = H
I. H/e
Fi-arse que la &ultiplicaci1n se resuel(e antes que la di(isi1n ya que est3 situada
&3s a la i#quierda en la operaci1n" Lo &is&o ocurre con la su&a y la resta"
SI'A4IS D( 5' P+#,+A-A
!$AS(
/na clase es un contenedor de uno o &3s datos ((aria%les o propiedades
&ie&%ro) -unto a las operaciones de &anipulaci1n de dichos datos (&todos)" Las
clases pueden definirse co&o estructuras (struct)* uniones (union) o clases (class)
pudiendo e6istir diferencias entre cada una de las definiciones se0$n el len0ua-e"
7de&3s las clases son a0rupaciones de o%-etos que descri%en su
co&porta&iento"
La sinta6is t9pica de una clase esB
class :o&?re {
;; =aria?les &ie&?ro ($a?it'al&ente privadas)
&ie&?ro_BJ ;;lista de &ie&?ros
&ie&?ro_DJ
&ie&?ro_FJ

;; K'nciones o &Etodos ($a?it'al&ente pL?licas)
f'ncion_&ie&?ro_B( )J ;; f'nciones &ie&?ro conocidas
f'ncion_&ie&?ro_D ( )J ;; f'nciones co&o &Etodos

;; Propiedades ($a?it'al&ente pL?licas)
propiedad_BJ
propiedad_DJ
propiedad_FJ
propiedad_IJ
}
Los atributos
Los datos se encapsulan dentro de una clase declarando (aria%les dentro de las
lla(es de apertura y cierre de la declaraci1n de la clase* (aria%les que se conocen
co&o atri%utos" Se declaran i0ual que las (aria%les locales de un &todo en
concreto"
Por e-e&plo* este es un pro0ra&a que declara una clase MiPunto* con dos
atri%utos enteros lla&ados x e y"
class 2iP'nto {
int C% AJ
}
Los atri%utos se pueden declarar con dos clases de tiposB un tipo si&ple 'a(a (ya
descritos)* o el no&%re de una clase (ser3 una referencia a objeto* (ase el punto
:"a de este &is&o apartado)"
:uando se reali#a una instancia de una clase (creaci1n de un o%-eto) se reser(ar3
en la &e&oria un espacio para un con-unto de datos co&o el que definen los
atri%utos de una clase" 7 este con-unto de (aria%les se le deno&ina variables de
instancia"
-(#D#
/n &todo es un %loque de c1di0o que tiene un no&%re* tipo de acceso* tipo de
retorno y una lista de ar0u&entos o par3&etros"
Los &todos en 'a(a son equi(alentes a las funciones delas clases en :QQ" con la
e6cepci1n de las sentencias de declaraci1n de o%-etos y (aria%les* y los %loques
de iniciali#aci1n est3tica* todo en el c1di0o e-ecuta%le en 'a(a se sit$a dentro ed
un &todo" /na definici1n de un &todo consta de dos partes B cabecera y cuerpo
Sita6is de un &todo
tipo no&%re(lista de par3&etros)
)
JJcuerpo del &todo
R
tipo especifica el tipo de datos de(uelto por el &todo (cualquier tipo (3lido
incluyendo tipos de clase que se puedan crear)
nombre el no&%re que identifica al &todo" El con(enio suele ser utili#ar una letra
&in$scula para la pri&era letra del no&%re"
Si el &todo no de(uel(e un (alor* su tipo de retorno de%e ser void6 El no&%re del
&todo puede ser cualquiera distinto de aquellos ya utili#ados por otros ele&entos
dentro del 3&%ito actual (no puede ser i0ual a una pala%ra reser(ada 'a(a)"
La lista de parmetros es una secuencia de pare-as de identificadores y tipos de
datos separados por co&as" Los par3&etros son* funda&ental&ente* (aria%les
que reci%en el (alor de los argumentos pasados al &todo cuando ste es
lla&ado" Si el &todo no tiene par3&etros* entonces la lista de par3&etros ser3
(ac9a ( )"
Los &todos que de(uel(en a la rutina lla&adora un tipo de datos distinto de void
de%en utili#ar una sentencia return con la si0uiente sinta6isB
return (alor
(alor es una e6presi1n con el (alor que de(uel(e"
Conclusin
Pslas L1pe# Sandy Paulina
?espus de ha%er ela%orado este tra%a-o he lle0ado a la conclusi1n de que es
i&portante el conocer las caracter9sticas y el c1&o est3 co&puesto Scala* nos
ayudara a que en un futuro poder crear un pro0ra&a"
rti# Flores @uiller&ina
Puedo concluir que es su&a&ente i&portante conocer Scala por todos los
co&ponentes que tiene y porque &e sir(i1 para conocer las diferencias Scala
tiene sus (ariaciones en cuanto a -a(a descu%r9 que es co&pati%le con -a(a S los
pro0ra&as en Scala se co&pilan a %ytecodes de 'a(a y se e-ecutan en la &3quina
(irtual 'a(a" Sus caracter9sticas funcionales lo hacen &uy apropiado para
desarrollar pro0ra&as &uy eficientes en arquitecturas paralelas for&adas por
0ran-as de &$ltiples ordenadores"
Bibliografa
httpBJJ888"-a(a&e6ico"or0J%lo0sJ%ferroJscalaTparteT1
httpBJJes"8i!ipedia"or0J8i!iJLen0ua-eTdeTpro0ra&aciU:;UV;nTScala
httpBJJ888"8orldlin0o"co&J&aJen8i!iJesJScalaT(pro0ra&&in0Tlan0ua0e)
httpBJJ888"slideshare"netJ0uest2))W22X0Jtipos>de>datos>presentation>Y211)Y
httpBJJ888"scala>lan0"or0JnodeJ2W

You might also like