4. Lenguajes actuales de programación. Características técnicas. Gramática Compilación Análisis o o o
Léxico Sintáctico Semántico
Síntesis
Generación código objeto Generación de código intermedio, para evitar la dependencia o del HW y SO de la compilación (virtualiación! "rimera pa#ada$ %uente a la ab#tracción Segunda pa#ada$ ab#tracción al detalle Optimiación$ mejorar el código intermedio, de modo &ue re#ulte un código má&uina má# rápido de ejecutar o
•
Enlazado$ #e enlaa el código de bajo nivel generado de todo# lo# 'cero#
y #ubprograma# &ue #e an mandado compilar y #e a)ade el código de la# %uncione# &ue ay en la# biblioteca# del compilador para &ue el ejecutable pueda comunicar#e directamente con el #i#tema operativo* ope rativo*
Lenguaje máquina $ ejecución directa, %uerte dependencia del HW (binario
puro!
Lenguajes simbólicos $ di#tanciarno# del HW Lenguaje en#amblador$ utilia nemónicos o nemotécnicos &ue •
#u#tituyen a un código de operación, operación, nece#ita traducción, no e# portable depende del HW, programación de controladore#* +
•
Lenguaje# de alto nivel n#truccione# &ue repre#entan la lógica del problema o "rogramación e#tructurada utilia la# e#tructura# bá#ica# de programación$ #ecuencial - condicional - iterativa .#tructura# de dato# o
ortabilidad • •
/ependencia del HW y SO "ara pa#ar a otra má&uina nece#ito compilar el código %uente
Especialización •
•
"ropó#ito general 0"# del lenguaje re#uelven la mayor parte de lo# problema#$ o 1i#ual 2a#ic (2a#ic!, /elpi ("a#cal!, 3-- (3!, 4ava, 35 "ropó#ito e#pec6'co Ge#tión$ 3O2OL (3obol *7.8!, 9"G, "L+, S:L o 3ient6'co$ ;ortran,
o #iguen el modelo de traducción por interprete, ademá# el navegador ?eb tiene un par#er
aradigmas de programación
@9epre#enta un en%o&ue particular o 'lo#o%6a para di#e)ar #olucione#A @7orma# y procedimiento# &ue indican la %orma de organiar la# tarea# de un programa compartida# por un conjunto de lenguaje# de programaciónA 0ctualmente, el paradigma de programación má# utiliado e# el paradigma de la programación orientada a objeto#* .n general la mayor6a #on variante# de lo# do# tipo# principale#, imperativa y declarativa$ Al ni!el máquina $ lenguaje má&uina y en#amblador .jecutiva#$ #uma#, de#plaamiento#, BO9 /e control$ #alto incondicional (goto! y condicional /e .CS aradigma imperati!o o por procedimiento# (DcómoE!$ modular (máxima coe#ión y m6nimo acoplamiento! y e#tructurada (#e de#aprueba el u#o de goto!* .# el má# u#ado en general, #e ba#a en dar in#truccione# al ordenador de como acer la# co#a# en %orma de algoritmo#* La programación imperativa e# la má# u#ada y la má# antigua,ejemplo# de lenguaje# puro# de e#te paradigma #er6an el ;ortran, 3O2OL, 3, 0/0, 20S3 o "a#cal, pero también .iFel, 4ava, 3-, 35, "yton •
o o o
•
•
aradigma declarati!o$ e#tá ba#ado en de#cribir el problema
declarando propiedade# y regla# &ue deben cumplir#e, en lugar de in#truccione#* Hay lenguaje# para la programación %uncional, la programación lógica, o la combinación lógico=%uncional* no# de lo# primero# lenguaje# %uncionale# %ueron Li#p y "rolog* o
"rogramación "uncional$ ba#ada en la de'nición lo# predicado# y e# de corte má# matemático, e#tá repre#entado por Sc#eme (una variante de Lisp! o $as%ell *
o
o
•
"rogramación lógica $ ba#ado en la de'nición de relacione# lógica#, e#tá repre#entado por rolog* "rogramación con re#triccione#$ Similar a la lógica u#ando ecuacione#* 3a#i todo# lo# lenguaje# #on variante# del "rolog*
Lenguaje especí&co del dominio o 'SL$ Se denomina a#6 a lo#
lenguaje# de#arrollado# para re#olver un problema e#pec6'co, pudiendo entrar dentro de cual&uier grupo anterior* .l má# repre#entativo #er6a S:L para el manejo de la# ba#e# de dato#, de tipo declarativo, pero lo# ay imperativo# como el Logo* •
aradigma (rientación a objetos (OO!, primero %ue el lenguaje o
o
.#tá ba#ada en el imperativo, pero encap#ula elemento# denominado# objeto# &ue incluyen tanto variable# como %uncione#* .#tá repre#entado por 3-- o el 4ava, pero el má# puro #er6a el SmalltalI* 3la#e$ conjunto de objeto# con atributo# y método#
o
o
0b#tracta
Objeto$ in#tanciación de una cla#e, #olo exi#ten en tiempo de ejecución 8ipo ab#tracto de dato#
.ncap#ular (inter%ace!
Operadore# de alcance
ublic$ vi#ible para todo# lo# objeto# en el mi#mo
ámbito de vi#ibilidad
ri!ate$ #olo vi#ible para el objeto al &ue
pertenece (la# cla#e# ija# no van a eredar nunca lo# atributo# y método# privado# de la cla#e padre!
rotected$ #olo e# vi#ible e#e atributo o método
de#de una de la# cla#e# ija# y no de#de otra cla#e
or de"ecto$ #i no e#peci'camo# ningJn
modi'cador de acce#o #e utilia el nivel de acce#o por de%ecto, &ue con#i#te en &ue el elemento puede #er accedido #ólo de#de la# cla#e# &ue pertenecan al mi#mo pa&uete*
K
Static$ no #irve para crear con#tante#, #ino para
crear miembro# &ue pertenecen a la cla#e, y no a una in#tancia de la cla#e* 7o e# nece#ario crear un objeto de la cla#e para poder acceder a e#to# atributo# y método#* .#te e# el motivo por el cual e# obligatorio &ue main #e declare como #tatic de e#ta %orma no tenemo# &ue o%recer un con#tructor vac6o para la cla#e &ue contiene el método, o indicar de alguna %orma a la má&uina virtual cómo in#tanciar la cla#e* n u#o del modi'cador #tatic #er6a, por ejemplo, crear un contador de lo# objeto# de la cla#e &ue #e an creado, incrementando la variable e#tática en el con#tructor*
)ati!e$ e# un modi'cador utiliado cuando un
determinado método e#tá e#crito en un lenguaje di#tinto a 4ava, normalmente 3, 3-- o en#amblador para mejorar el rendimiento* La %orma má# comJn de implementar e#to# método# e# utiliar 47 (4ava 7ative nter%ace!*
!olatile y s*nc#ronized * 1olatile e#, junto con
#yncronied, uno de lo# mecani#mo# de #incroniación bá#ico# de 4ava* Se utilia e#te M
modi'cador #obre lo# atributo# de lo# objeto# para indicar al compilador &ue e# po#ible &ue dico atributo vaya a #er modi'cado por vario# tread# de %orma #imultanea y a#6ncrona, y &ue no &ueremo# guardar una copia local del valor para cada tread a modo de cacé, #ino &ue &ueremo# &ue lo# valore# de todo# lo# tread# e#tén #incroniado# en todo momento, a#egurando a#6 la vi#ibilidad del valor actualiado a co#ta de un pe&ue)o impacto en el rendimiento* 1olatile e# má# #imple y má# #encillo &ue #yncronied, lo &ue implica también un mejor rendimiento* Sin embargo volatile, a di%erencia de #yncronied, no proporciona atomicidad, lo &ue puede acer &ue #ea má# complicado de utiliar*
Abstract* n viejo conocido para la mayor6a de
lo# programadore# 4ava* La palabra clave ab#tract indica &ue no #e provee una implementación para un cierto método, #ino &ue la implementación vendrá dada por la# cla#e# &ue extiendan la cla#e actual* na cla#e &ue tenga uno o má# método# ab#tract debe declarar#e como ab#tract a #u ve*
+inal* ndica &ue una variable, método o cla#e no
#e va a modi'car, lo cuál puede #er Jtil para a)adir má# #emántica, por cue#tione# de rendimiento, y para detectar errore#* Si una variable #e marca como 'nal, no #e podrá a#ignar un nuevo valor a la variable* Si una cla#e #e marca como 'nal, no #e podrá extender la cla#e* Si e# un método el &ue #e declara como 'nal, no #e podrá #obree#cribir*
o
na variable con modi'cadore# static y final #er6a lo má# cercano en 4ava a la# con#tante# de otro# lenguaje# de programación
"olimor'#mo y #obrecarga
"olimor'#mo e# una palabra de origen griego &ue #igni'ca @muca# %orma#A* .#te termino #e utilia en la "OO para @re%erir#e a la propiedad por la &ue e# po#ible enviar men#aje# #intácticamente iguale# a objeto# de tipo# di#tinto#@* "ara metodo# y propiedade#* La# nter%ace# #irven para e#tablecer la %orma &ue debe de tener una cla#e (implement#!* 3la#e ab#tracta pura, con todo# #u# método# ab#tracto#, e# decir, obligatoriamente #e implementan en la# cla#e# ija#* N
o
o
o
•
Sobrecarga (@Override!, e#pecialiación de método#, cuando en na cla#e exi#ten do# método# con idéntico nombre pero con di#tinto# parámetro#*
Herencia (extend#!$ una cla#e a#ume como propio# lo# atribut# y método# de'nid# por otra (cla#e padre! Herencia mJltiple .nlace dinámico o dynamic binding o enlace tard6o* 9etra#ar a#ta el in#tante de ejecución la a#ociación tipo y objeto, en cual&uier otro paradigma #e realia en tiempo de compilación*
aradigma de la programación orientada a Aspectos $ e# un
paradigma de programación relativamente nuevo (a#pect=oriented programming 0O"! cuya intención e# permitir una adecuada modulariación de la# aplicacione# y po#ibilitar una mejor #eparación de re#pon#abilidade# (obligación o corre#pondencia de acer algo!* Se pueden encap#ular lo# di%erente# concepto# &ue componen una aplicación en entidade# bien de'nida#, eliminando la# dependencia# entre cada uno de lo# módulo#* /e e#ta %orma #e con#igue raonar mejor #obre lo# concepto#, #e elimina la di#per#ión del código y la# implementacione# re#ultan má# compren#ible#, adaptable# y reu#able#* .jemplo#$ o o
3-- => 0#pect3- 4ava 0#pect4 e# una exten#ión 4ava del proyecto .clip#e* 0O" con Spring;rame?orI *N e# un ;rame?orI de 4ava &ue permite programar en el paradigma de 0#pecto# utiliando 0notación 4ava "erl => 0#pect, di#ponible en 3"07* "H" "H"=0O" (0O"*io! e# una lib* pp0#pect e# una exten#ión "H" para implementar el paradigma de la "O0, mediante árbole# de deci#ión B 0#pyct 0O"*
o o
o
•
rogramación multiparadigma$ e# el u#o de do# o má# paradigma# dentro de un programa* .# realmente com,n el di#e)o
de lenguaje# &ue #oporten mJltiple# paradigma# de programación* .#to# lenguaje# #on a&uello# &ue #oportan al menos dos paradigmas* o
Scala$ mperativo, orientado a objeto#, %uncional, genérico y
concurrente o
Erlang$ ;uncional, concurrente y di#tribuido
o
erl$ mperativo, orientado a objeto# y %uncional
o
o
$$ mperativo, orientado a objeto#, %uncional y rePexivo -a!aScript$ mperativo, orientado a objeto# (prototipo#! y
%uncional o
o
-a!a$ mperativo, orientado a objeto#, rePexivo y genérico *t#on * ub*$ mperativo, orientado a objeto#, rePexivo y
%uncional o
C//$ mperativo, orientado a objeto#, %uncional y genérico
o
C0$ mperativo, orientado a objeto#, %uncional (lambda!,
rePexivo y genérico o
Lisp$ orientado a objeto#, %uncional, declarativo
o
rolog$ lógico y declarativo
.#to# #on alguno# ejemplo#, exi#ten lenguaje# como (z &ue #oporta nue!e paradigmas de programación, para alguno# e# un acierto y para otro# un error* n ejemplo #on lo# lenguaje# multiplata%orma*
Q
0LGO98 lenguaje natural /0G90<0 /. ;L4O O9/7OG90<0 7S8933R7 8area elemental "9OG90<0 3onjunto de in#truccione# => . - (declaración variable# in#truccione#! - S L.7G04. /. "9OG90<03O7 3onjunto de norma# &ue permiten e#cribir un programa S29870 O S2"9OG90<0 ;ragmento de programa &ue re#uelve un #ubproblema ;73O7 => #ubprograma de n entrada# y + #alida "9O3./<.78O => #ubprograma de n entrada# y n #alida# 3O<"L0/O9 8raductor lenguaje alto nivel => programa objeto en código má&uina 78.9"9.8. 8raductor &ue realia la compilación pa#o a pa#o (no genera código intermedio! L.7G04.S <0:70 (binario puro .jecutiva#, de control y de .CS! L.7G04.S S<2OL3OS .7S0<2L0/O9 => cada in#trucción lenguaje ma&uina un nombre nemotécnico L.7G04.S /. 0L8O 71.L (L07! L.7G04.S O9.780/OS 0 O24.8OS (LOOS! 3la#e Objeto# 8ipo# ab#tracto# de dato# (8/0! o encap#ulación "olimor'#moCSobrecarga Herencia .nlace dinámico 8ipo# de LOOS L.7G04. <L8"L080;O9<0 (4ava, 35, "yton! L.7G04.S /. 30980 G.7.903O7$ S:L (MGL! //L /
T