Está en la página 1de 17

http://www.monografias.

com/trabajos38/tipos-lenguajes-programacion/tipos-lenguajes-
programacion.shtml
Tipos de Lenguajes de Programación
Jaime Oswaldo Montoya Guzmán - jaimemontoya@gmail.com
1. ntroducción
!. Justi"icación
#. O$jeti%os
&. 'onocimientos $ásicos
(. Lenguajes compilados
). Lenguajes interpretados
*. Lenguajes de programación declarati%os
+. Lenguajes de programación imperati%os
,. -i"erencia entre lenguajes declarati%os e imperati%os
1.. Lenguajes de programación orientados a o$jetos
11. 'onclusión
1!. /e"erencias $i$liográ"icas
0T/O-1''20
Una computadora es una máuina ue solo comprende las instrucciones ue se le den en un
determinado formato. !ada máuina reconoce y ejecuta un n"mero de instrucciones diferentes ue se
agrupan en los distintos lenguajes de programaci#n.
Un lenguaje de programaci#n es un conjunto limitado de palabras y de s$mbolos ue representan
procedimientos% cálculos% decisiones y otras operaciones ue pueden ejecutar una computadora. & pesar
de ue en este trabajo parte de la di'isi#n de lenguajes de programaci#n en imperati'os y declarati'os
(los cuales a su 'e) se di'iden en numerosos subgrupos*% la clasificaci#n más com"n y básica ue suele
hacerse de los lenguajes de programaci#n es la ue los di'ide en lenguajes de bajo y de alto ni'el. +os
lenguajes de programaci#n de bajo ni'el fueron los primeros ue surgieron y se llaman as$ porue están
directamente relacionados con el hardware del computador% es decir% el usuario introduce una serie de
c#digos num,ricos ue la máuina 'a a interpretar como instrucciones. -ara usar este lenguaje% el
programador ten$a ue conocer el funcionamiento de la máuina al más bajo ni'el y los errores de
programaci#n eran muy frecuentes.
+os lenguajes de alto ni'el surgieron con posterioridad con el primer compilador de ./010&2
(./0mula 10&2slation*% ue% como su nombre indica% inici# como un 3simple3 esfuer)o de traducir un
lenguaje de f#rmulas% al lenguaje ensamblador y por consiguiente al lenguaje de máuina% facilitando la
labor a los programadores. & partir de ./010&2% se han desarrollado innumerables lenguajes% ue
siguen el mismo concepto: facilitar la vida al programador, aumentando la productividad. 4stos lenguajes
usan un n"mero reducido de instrucciones (normalmente en ingl,s* ue siguen unas estrictas reglas
gramaticales ue se conocen como sinta5is del lenguaje. -ero aunue el programador de esta forma se
distancie del hardware del computador% este sigue trabajando en lenguaje máuina. -or ello se hace
necesaria una traducci#n a una secuencia de instrucciones interpretables por el computador. Esta labor
es llevada a cabo por los compiladores y los intérpretes.
El compilador es un programa que se encarga de la traducción global del programa realizado por
el usuario. 4sta operaci#n recibe el nombre de compilaci#n. 4l programa es traducido completamente
antes de ue se ejecute% por lo ue la ejecuci#n se reali)a en un periodo muy bre'e. El intérprete por el
contrario lleva a cabo una traducción inmediata en el momento de la ejecución, es decir% irá ejecutando
las instrucciones una a una haciendo ue el proceso reuiera un periodo de tiempo sensiblemente mayor
del ue necesitar$a un compilador. +os int,rpretes son usados para traducir programas de alta dificultad
de implementaci#n% en estos casos% las #rdenes a traducir son de tal complejidad ue no merece la pena
crear un compilador ya ue este tambi,n tendr$a ue ser de una complejidad por encima de lo normal.
iv
6ay ue mencionar la e5istencia de lenguajes ue combinan caracter$sticas de los de alto ni'el y
los de bajo ni'el (es decir% 4nsamblador*. Un ejemplo es !: contiene estructuras de programaci#n de alto
ni'el7 sin embargo% fue dise8ado con muy pocas instrucciones% las cuales son sumamente sencillas%
fáciles de traducir al lenguaje de la máuina7 y reuiere de un entendimiento apropiado de c#mo funciona
la máuina% el uso de la memoria% etc,tera. -or ello% algunos consideran a lenguajes como ! (ue fue
dise8ado para hacer sistemas operati'os*% lenguajes de ni'el medio% si bien% son considerados
mayoritariamente de bajo ni'el.
&unue en esta introducci#n se ha comen)ado a hablar de los lenguajes di'idi,ndolos en bajo y
alto ni'el% en las pr#5imas páginas se procederá a un análisis más e5hausti'o y detallado y se 'erán las
numerosas formas en ue se pueden agrupar los lenguajes teniendo en cuenta funcionalidad y
orientaci#n. 9in embargo no está estipulada ninguna clasificaci#n estricta debido a ue dependiendo de
la caracter$stica por la ue se clasifiue% un lenguaje podr$a estar relati'amente en un grupo u otro. 9er$a
ut#pico tratar de clasificar todos los lenguajes e5istentes ya ue hay demasiados y con frecuencia surgen
nue'os. 2o obstante se ha tratado de reali)ar una clara y esuemática clasificaci#n de los distintos tipos%
ue abarcase a los lenguajes más importantes.
J13T4'5'20
4l estudio de los lenguajes de programaci#n reuiere a su 'e) comprender perfectamente los
tipos de lenguajes de programaci#n ue e5isten y la clasificaci#n com"nmente aceptada ue a ,stos se
les da.
4sta in'estigaci#n se justifica en la necesidad ue todo programador tiene de diferenciar y
clasificar correctamente los tipos de lenguajes de programaci#n% conociendo sus aplicaciones y los
beneficios o des'entajas ue ofrece cada uno de ellos.
O6J7T8O3
O6J7T8O G707/5L
!onocer los tipos de lenguajes de programaci#n y la clasificaci#n ue com"nmente se les da.
O6J7T8O3 73P7'94'O3
:. ;eterminar u, son los lenguajes de programaci#n declarati'os y a la 'e) los lenguajes ue
forman parte de este grupo.
<. ;eterminar u, son los lenguajes de programaci#n imperati'os y los lenguajes ue están
comprendidos en este grupo.
3. ;iferenciar los lenguajes de bajo ni'el (lenguaje máuina* de los lenguajes de alto ni'el.
M5/'O T72/'O
1. 'O0O'M70TO3 6:3'O3
1.1. ;3TO/5 -7 LO3 L70G15J73 -7 P/OG/5M5'20
+os primeros lenguajes de programaci#n surgieron de la idea de !harles =abagge% la cual se le
ocurri# a este hombre a mediados del siglo >?>. 4ra un profesor matemático de la uni'ersidad de
!ambridge e in'entor ingles% ue la principio del siglo >?> predijo muchas de las teor$as en ue se basan
los actuales ordenadores. !onsist$a en lo ue ,l denominaba la mauina anal$tica% pero ue por moti'os
t,cnicos no pudo construirse hasta mediados del siglo >>. !on ,l colaboro &da +o'edby% la cual es
considerada como la primera programadora de la historia% pues reali)o programas para au,lla supuesta
mauina de =abagge% en tarjetas perforadas.
!omo la mauina no llego nunca a construirse% los programas de &da% l#gicamente% tampoco
llegaron a ejecutarse% pero si suponen un punto de partida de la programaci#n% sobre todo si obser'amos
ue en cuanto se empe)# a programar% los programadores utili)aron las t,cnicas dise8adas por !harles
=abagge% y &da% ue consist$an entre otras% en la programaci#n mediante tarjetas perforadas. & pesar de
ello% &da ha permanecido como la primera programadora de la historia. 9e dice por tanto ue estos dos
genios de anta8o% se adelantaron un siglo a su ,poca% lo cual describe la inteligencia de la ue se
hallaban dotados.
4n :8<3 el gobierno =ritánico lo apoyo para crear el proyecto de una máuina de diferencias% un
dispositi'o mecánico para efectuar sumas repetidas. -ero =abagge se dedico al proyecto de la máuina
2
anal$tica% abandonando la mauina de diferencias% ue se pudiera programar con tarjetas perforadas%
gracias a la creaci#n de !harles @acuard (franc,s*. 4ste hombre era un fabricante de tejidos y hab$a
creado un telar ue pod$a reproducir automáticamente patrones de tejidos% leyendo la informaci#n
codificada en patrones de agujeros perforados en tarjetas de papel r$gido. 4ntonces =abagge intento
crear la máuina ue se pudiera programar con tarjetas perforadas para efectuar cualuier cálculo con
una precisi#n de <A d$gitos. -ero la tecnolog$a de la ,poca no bastaba para hacer realidad sus ideas. 9i
bien las ideas de =abagge no llegaron a materiali)arse de forma definiti'a% su contribuci#n es decisi'a% ya
ue los ordenadores actuales responden a un esuema análogo al de la máuina anal$tica. 4n su dise8o%
la máuina constaba de cinco unidades básicas: :* Unidad de entrada% para introducir datos e
instrucciones7 <* Bemoria% donde se almacenaban datos y resultados intermedios7 3* Unidad de control%
para regular la secuencia de ejecuci#n de las operaciones7 C* Unidad &ritm,tico-+#gica% ue efect"a las
operaciones7 D* Unidad de salida% encargada de comunicar al e5terior los resultados. !harles =abbage%
conocido como el 3padre de la informática3 no pudo completar en auella ,poca la construcci#n del
computador ue hab$a so8ado% dado ue faltaba algo fundamental: la electr#nica. 4l camino se8alado de
=abbage% no fue nunca abandonado y sigui,ndolo% se construyeron las primeras computadoras.
1.!. L70G15J73 -7 M:<105
4l lenguaje máquina de una computadora consta de cadenas de n"meros binarios (ceros y unos*
y es el "nico ue EentiendenF directamente los procesadores. 1odas las instrucciones preparadas en
cualuier lenguaje de máuina tienen por lo menos dos partes. +a primera es el comando u operación,
ue dice a la computadora cuál es la funci#n ue 'a a reali)ar. 1odas las computadoras tienen un código
de operación para cada una de sus funciones. +a segunda parte de la instrucci#n es el operando, que
indica a la computadora d#nde hallar o almacenar los datos y otras instrucciones ue se 'an a
manipular7 el n"mero de operandos de una instrucci#n 'ar$a en las distintas computadoras. 4n una
computadora de operando único, el eui'alente binario de E9UB&0 A8:CF podr$a hacer ue se sume el
'alor ue se encuentra en la localidad de almacenamiento o dirección 0!" al 'alor ue se encuentra en
la unidad aritm,tica l#gica. 4n una máuina de dos operandos, la representaci#n binaria de E9UB&0
A8:C 8GH<F podr$a hacer ue se sume el 'alor ue está en la localidad 8GH< al 'alor ue está en la
direcci#n A8:C. 4l formato de operando "nico es popular en las microcomputadoras más peue8as7 la
estructura de dos operandos se encuentra en casi todas las demás máuinas.
9eg"n los estándares actuales% las primeras computadoras eran poco tolerantes. +os
programadores ten$an ue traducir las instrucciones de manera directa a la forma de lenguaje de
máuina ue comprend$an las computadoras. -or ejemplo% un programador ue escribiera la instrucci#n
E9UB&0 A8:CF para una de las primeras máuinas ?=B hubiera escrito:
AAA:AAAAAAAAAAAAAAAAAAAAAAAA:A:::AAA
&demás de recordar las docenas de c#digos num,ricos para los comandos del conjunto de
instrucciones de la máuina% el programador ten$a ue conocer las posiciones donde se almacenan los
datos y las instrucciones. +a codificaci#n inicial muchas 'eces reuer$a meses% por lo ue era costosa y
era frecuente ue originara errores. 0e'isar las instrucciones para locali)ar errores era casi tan tedioso
como escribirlas por primera 'e). &demás% si era necesario modificar un programa posteriormente% la
tarea pod$a lle'arse meses.
1.#. L70G15J73 7035M6L5-O/73
& principios de la d,cada de :IDA% y con el fin de facilitar la labor de los programadores% se
desarrollaron c#digos nemotécnicos para las operaciones y direcciones simbólicas. +a palabra
nemot,cnico se refiere a una ayuda para la memori)aci#n. Uno de los primeros pasos para mejorar el
proceso de preparaci#n de programas fue sustituir los c#digos de operaciones num,ricos del lenguaje de
máuina por s$mbolos alfab,ticos% ue son los c#digos nemot,cnicos. 1odas las computadoras actuales
tienen códigos nemotécnicos aunue% naturalmente% los s$mbolos ue se usan 'ar$an en las diferentes
marcas y modelos. +a computadora sigue utili)ando el lenguaje de máuina para procesar los datos%
3
pero los programas ensambladores traducen antes los s$mbolos de c#digo de operaci#n especificados a
sus eui'alentes en lenguaje de máuina.
4ste procedimiento prepar# a'ances posteriores. 9i la computadora era capa) de traducir
s$mbolos con'enientes en operaciones básicas% Jpor u, no hacer tambi,n ue reali)ara otras funciones
rutinarias de codificaci#n% como la asignaci#n de direcciones de almacenamiento a los datosK +a t,cnica
de direccionamiento simbólico permite e5presar una direcci#n no en t,rminos de su locali)aci#n num,rica
absoluta% sino en t,rminos de s$mbolos con'enientes para el programador.
;urante las primeras etapas del direccionamiento simb#lico% el programador asigna un nombre
simb#lico y una direcci#n real a un dato. -or ejemplo% el programador podr$a asignar el 'alor total de
mercanc$a aduirida durante un mes por un cliente de una tienda de departamentos a la direcci#n AAG3% y
darle el nombre simb#lico 1/1&+. 9e podr$a asignar el 'alor de la mercanc$a de'uelta sin usar durante el
mes a la direcci#n <ACH y dársele el nombre simb#lico !0L;?1/. &s$% durante el resto del programa% el
programador se referirá a los nombres simbólicos, más que a las direcciones, cuando fuera preciso
procesar estos datos. -or ejemplo% se podr$a escribir la instrucci#n E9 !0L;?1/ 1/1&+F para restar el
'alor de las mercanc$as de'ueltas del importa total de compras para obtener el importe de la factura
mensual del cliente. & continuaci#n% el programa ensamblador traducir$a la instrucci#n simb#lica a esta
cadena de bits:
Bás adelante se hi)o otra mejora. 9e dej# a la computadora la tarea de asignar y recordar las
direcciones de las instrucciones. +o "nico ue ten$a ue hacer el programador era indicar a la
computadora la direcci#n de la primera instrucci#n% y el programa ensamblador se encargaba de
almacenar% de manera automática% todas las demás en forma secuencial a partir de ese punto. &s$% si se
agregaba más tarde otra instrucci#n al programa% no era necesario modificar las direcciones de todas las
instrucciones ue segu$an al punto de inserci#n (como tendr$a ue hacerse en el caso de programas
escritos en lenguaje de máuina*. 4n 'e) de ello% el procesador ajustaba automáticamente las
localidades de memoria la pr#5ima 'e) ue se ejecutaba el programa.
4n la actualidad% los programadores no asignan n"meros de direcci#n reales a los datos
simb#licos% simplemente especifican d#nde uieren ue se coloue la primera localidad del programa% y
el programa ensamblador se encarga de lo demás: asigna localidades tanto para las instrucciones como
para los datos.
4stos programas de ensamble, o ensamblador, tambi,n permite a la computadora con'ertir las
instrucciones en lenguaje ensamblador del programador en su propio c#digo de máuina. Un programa
de instrucciones escrito en lenguaje ensamblador por un programador se llama programa fuente.
;espu,s de ue el ensamblador con'ierte el programa fuente en c#digo de máuina a ,ste se le
denomina programa objeto. -ara los programadores es más fácil escribir instrucciones en un lenguaje
ensamblador ue en c#digos de lenguajes de máuina% pero es posible ue se reuieran dos corridas de
computadora antes de ue se puedan utili)ar las instrucciones del programa fuente para producir las
salidas deseadas.
+os lenguajes ensambladores tienen ventajas sobre los lenguajes de máquina. &horran tiempo y
reuieren menos atenci#n a detalles. 9e incurren en menos errores y los ue se cometen son más
fáciles de locali)ar. &demás% los programas en lenguaje ensamblador son más fáciles de modificar ue
los programas en lenguaje de máuina. -ero e5isten limitaciones. +a codificaci#n en lenguaje
ensamblador es toda'$a un proceso lento. Una des'entaja importante de estos lenguajes es ue tienen
una orientación a la máquina. 4s decir% están dise8ados para la marca y modelo espec$fico de
procesador ue se utili)a% y es probable ue% para una máuina diferente% se tengan ue 'ol'er a
codificar los programas.
4
1.&. L70G15J73 -7 5LTO 087L
+os primeros programas ensambladores produc$an s#lo una instrucci#n en lenguaje de máuina
por cada instrucci#n del programa fuente. -ara agili)ar la codificaci#n% se desarrollaron programas
ensambladores ue pod$an producir una cantidad variable de instrucciones en lenguaje de máuina por
cada instrucci#n del programa fuente. ;icho de otra manera% una sola macroinstrucción pod$a producir
varias l$neas de c#digo en lenguaje de máuina. -or ejemplo% el programador podr$a escribir E+440
&0!6?M/F% y el programa traductor producir$a una serie detallada de instrucciones al lenguaje de
máuina pre'iamente preparadas% con lo ue se copiar$a un registro del archi'o ue estu'iera leyendo el
dispositi'o de entrada a la memoria principal. &s$% el programador no se ten$a ue ocupar de escribir una
instrucci#n por cada operaci#n de máuina reali)ada.
4l desarrollo de las t,cnicas nemot,cnicas y las macroinstrucciones condujo% a su 'e)% al
desarrollo de lenguajes de alto nivel ue a menudo están orientados hacia una clase determinada de
problemas de proceso. -or ejemplo% se han dise8ado 'arios lenguajes para procesar problemas
cient$fico-matemático% asimismo han aparecido otros lenguajes ue hacen hincapi, en las aplicaciones de
proceso de archi'os.
& diferencia de los programas de ensamble% los programas en lenguaje de alto ni'el se pueden
utili)ar con diferentes marcas de computadores sin tener ue hacer modificaciones considerables. 4sto
permite reducir sustancialmente el costo de la reprogramaci#n cuando se aduiere euipo nue'o. /tras
'entajas de los lenguajes de alto ni'el son:
• 9on más fáciles de aprender ue los lenguajes ensambladores.
• 9e pueden escribir más rápidamente.
• -ermiten tener mejor documentaci#n.
• 9on más fáciles de mantener.
• Un programador ue sepa escribir programas en uno de estos lenguajes no está limitado a
utili)ar un solo tipo de máuina.
!. L70G15J73 'OMPL5-O3
2aturalmente% un programa ue se escribe en un lenguaje de alto ni'el tambi,n tiene ue
traducirse a un c#digo ue pueda utili)ar la máuina. +os programas traductores ue pueden reali)ar
esta operaci#n se llaman compiladores. Lstos% como los programas ensambladores a'an)ados% pueden
generar muchas l$neas de c#digo de máuina por cada proposici#n del programa fuente. 9e reuiere una
corrida de compilación antes de procesar los datos de un problema.
+os compiladores son auellos cuya funci#n es traducir un programa escrito en un determinado
lenguaje a un idioma ue la computadora entienda (lenguaje máuina con c#digo binario*.
&l usar un lenguaje compilado (como lo son los lenguajes del popular Misual 9tudio de Bicrosoft*%
el programa desarrollado nunca se ejecuta mientras haya errores% sino hasta ue luego de haber
compilado el programa% ya no aparecen errores en el c#digo.
#. L70G15J73 0T7/P/7T5-O3
9e puede tambi,n utili)ar una alternati'a diferente de los compiladores para traducir lenguajes de
alto ni'el. 4n 'e) de traducir el programa fuente y grabar en forma permanente el c#digo objeto ue se
produce durante la corrida de compilaci#n para utili)arlo en una corrida de producci#n futura% el
programador s#lo carga el programa fuente en la computadora junto con los datos ue se 'an a procesar.
& continuaci#n% un programa intérprete, almacenado en el sistema operati'o del disco% o incluido de
manera permanente dentro de la máuina% con'ierte cada proposici#n del programa fuente en lenguaje
de máuina conforme 'aya siendo necesario durante el proceso de los datos. 2o se graba el c#digo
objeto para utili)arlo posteriormente.
+a siguiente 'e) ue se utilice una instrucci#n% se le debe interpretar otra 'e) y traducir a
lenguaje máuina. -or ejemplo% durante el procesamiento repetiti'o de los pasos de un ciclo% cada
instrucci#n del ciclo tendrá ue 'ol'er a ser interpretado cada 'e) ue se ejecute el ciclo% lo cual hace ue
el programa sea más lento en tiempo de ejecuci#n (porue se 'a re'isando el c#digo en tiempo de
ejecuci#n* pero más rápido en tiempo de dise8o (porue no se tiene ue estar compilando a cada
5
momento el c#digo completo*. 4l int,rprete elimina la necesidad de reali)ar una corrida de compilaci#n
despu,s de cada modificaci#n del programa cuando se uiere agregar funciones o corregir errores7 pero
es ob'io ue un programa objeto compilado con antelaci#n deberá ejecutarse con mucha mayor rapide)
ue uno ue se debe interpretar a cada paso durante una corrida de producci#n.
&. L70G15J73 -7 P/OG/5M5'20 -7'L5/5T8O3
9e les conoce como lenguajes declarati'os en ciencias computacionales a auellos lenguajes de
programaci#n en los cuales se le indica a la computadora u, es lo ue se desea obtener o u, es lo ue
se esta buscando% por ejemplo: /btener los nombres de todos los empleados ue tengan más de 3<
a8os. 4so se puede lograr con un lenguaje declarati'o como 9N+.
+a programaci#n declarati'a es una forma de programaci#n ue implica la descripci#n de un
problema dado en lugar de pro'eer una soluci#n para dicho problema% dejando la interpretaci#n de los
pasos espec$ficos para llegar a dicha soluci#n a un int,rprete no especificado. +a programaci#n
declarati'a adopta% por lo tanto% un enfoue diferente al de la programaci#n imperati'a tradicional.
4n otras palabras% la programaci#n declarati'a pro'ee el Eu,F% pero deja el Ec#moF liberado a la
implementaci#n particular del int,rprete. -or lo tanto se puede 'er ue la programaci#n declarati'a tiene
dos fases bien diferenciadas% la declaraci#n y la interpretaci#n.
4s importante se8alar ue a pesar de hacer referencia a int,rprete% no hay ue limitarse a
Elenguajes interpretadosF en el sentido habitual del t,rmino% sino ue tambi,n se puede estar trabajando
con Elenguajes compiladosF.
&.1. '5/5'T7/93T'53 -7 LO3 L70G15J73 -7 P/OG/5M5'20 -7'L5/5T8O3
• +os lenguajes declarati'os están orientados a buscar la soluci#n del problema% sin
preocuparse por la forma de llegar a ello7 es decir% el programador debe concentrarse en la
l#gica del algoritmo% más ue en el control de la secuencia.
• +os programas están formados por un conjunto de definiciones o ecuaciones% las cuales
describen lo ue debe ser calculado% no en s$ la forma de hacerlo.
• +as 'ariables s#lo pueden tener asignado un solo 'alor a lo largo de la ejecuci#n del
programa% lo cual implica ue no puede e5istir asignaci#n destructi'a. ;ebido a esto% cobra
especial importancia el uso del anidamiento y la recursi'idad.
• +as listas representan la estructura fundamental de datos.
• 4l orden de la ejecuci#n no resulta importante debido a ue no e5isten efectos colaterales7 es
decir% ue al calcular un 'alor% resulta imposible afectar el cálculo de otros y con esto se
puede afirmar ue cualuier secuencia de ejecuci#n deberá conducir al mismo resultado.
• +as e5presiones o definiciones pueden ser usadas como 'alores y por lo tanto se pueden
tratar como argumentos de otras definiciones.
• 4l control de la ejecuci#n no es responsabilidad del programador.
&.!. -73870T5J53 -7 L5 P/OG/5M5'20 -7'L5/5T85
+a principal des'entaja de la programaci#n declarati'a es ue no puede resol'er cualuier
problema dado% sino ue está restringida al subconjunto de problemas para los ue el int,rprete o
compilador fue dise8ado.
/tra des'entaja de la programaci#n declarati'a está relacionada con la eficiencia. ;ado ue es
necesaria una fase de interpretaci#n e5tra% en la cual se deben e'aluar todas las consecuencias de todas
las declaraciones reali)adas% el proceso es relati'amente más lento ue en la programaci#n imperati'a%
en ue los cambios de estado del sistema están dados por instrucciones particulares y no por un conjunto
de condiciones arbitrariamente grande.
&.#. 870T5J53 -7 L5 P/OG/5M5'20 -7'L5/5T85
& pesar de lo anterior e5isten algunas 'entajas en el uso de la programaci#n declarati'a. 4ntre
las 'entajas se destaca ue la soluci#n de un problema se puede reali)ar con un ni'el de abstracci#n
considerablemente alto% sin entrar en detalles de implementaci#n irrele'antes% lo ue hace a las
soluciones más fácil de entender por las personas. +a resoluci#n de problemas complejos es resuelta por
el int,rprete a partir de la declaraci#n de las condiciones dadas.
6
+a programaci#n declarati'a es muy usada en la resoluci#n de problemas relacionados con
inteligencia artificial% bases de datos% configuraci#n% y comunicaci#n entre procesos7 sin embargo% ning"n
leguaje declarati'o se apro5ima en popularidad a los lenguajes imperati'os.
&.&. 7J7MPLO3 -7 L70G15J73 -7'L5/5T8O3
&lgunos lenguajes declarati'os ue se pueden mencionar son:
• -0/+/O
• 9N+
• 61B+
• P9;+ (Peb 9er'ices ;escription +anguage*
• >B+ 9tylesheet +anguage for 1ransformation
&.(. P/OG/5M5'20 L2G'5
+a idea fundamental de la programaci#n l#gica consiste en emplear la l#gica como lenguaje de
programaci#n.
#a lógica no es imperativa porue no sir'e para indicar c#mo resol'er un problema (#rdenes*. #a
lógica es declarativa porue sir'e para especificar u, problema resol'er (condiciones*.
4n la programaci#n l#gica% se especifican las condiciones ue satisfacen las soluciones% se
deducen las soluciones a partir de las condiciones y el ,nfasis de todo está en u, problema resol'er. 4l
problema se describe especificando u, caracteri)a a sus posibles soluciones.
+a programaci#n l#gica% junto con la funcional% forma parte de lo ue se conoce como
programación declarativa. 4n los lenguajes tradicionales% la programaci#n consiste en indicar cómo
resol'er un problema mediante sentencias7 en la programaci#n l#gica% se trabaja de forma descripti'a%
estableciendo relaciones entre entidades% indicando no cómo, sino qué $acer. 9e establece entonces
ue la idea esencial de la programaci#n l#gica es: algoritmos = lógica > control. 4s decir% un algoritmo
se construye especificando conocimiento en un lenguaje formal (l#gica de primer orden*% y el problema se
resuel'e mediante un mecanismo de inferencia (control* ue act"a sobre au,l.
&l hacer un recorrido por la programaci#n l#gica% aparece como uno de sus lenguajes más
representati'os% -rolog% ue es un clásico de la inteligencia artificial y ue se aplica de m"ltiples formas
en el desarrollo de software comercial.
&.). P/OG/5M5'20 410'O05L
+a programaci#n funcional es un paradigma de programaci#n declarati'a basado en la utili)aci#n
de funciones matemáticas. 4l objeti'o de la programaci#n funcional es conseguir lenguajes e5presi'os y
matemáticamente elegantes, en los ue no sea necesario bajar al ni'el de la máuina para describir el
proceso lle'ado a cabo por el programa.
+os programas escritos en un lenguaje funcional están constituidos "nicamente por definiciones
de funciones% entendiendo ,stas no como subprogramas clásicos de un lenguaje imperati'o (pues la
programaci#n funcional es declarati'a*% sino como funciones puramente matemáticas% en las ue se
'erifican ciertas propiedades como la transparencia referencial (el significado de una e5presi#n depende
"nicamente del significado de sus sube5presiones*% y por tanto% la carencia total de efectos laterales.
/tras caracter$sticas propias de estos lenguajes son la no e5istencia de asignaciones de
'ariables y la falta de construcciones estructuradas como la secuencia o la iteraci#n (lo ue obliga en la
práctica a ue todas las repeticiones de instrucciones se lle'en a cabo por medio de funciones
recursi'as*.
45isten dos grandes categor$as de lenguajes funcionales: los funcionales puros y los $%bridos. +a
diferencia entre ambos estriba en ue los lenguajes funcionales h$bridos son menos dogmáticos ue los
puros% al permitir conceptos tomados de los lenguajes imperati'os% como las secuencias de instrucciones
o la asignaci#n de 'ariables. 4n contraste% los lenguajes funcionales puros tienen una mayor potencia
e5presi'a% conser'ando a la 'e) su transparencia referencial% algo ue no se cumple siempre con un
lenguaje h$brido.
&.*. P/OG/5M5'20 O/70T5-5 5 65373 -7 -5TO3
7
+as bases de datos son programas ue administran informaci#n y hacen más ordenada la
informaci#n% aparte de hacer la fácil de buscar y por supuesto de encontrar.
+as caracter$sticas de las bases de datos pueden ser 'entajosas o des'entajosas: pueden ayudar
a almacenar% organi)ar% recuperar% comunicar y manejar informaci#n en formas ue ser$an imposibles sin
las computadoras% pero tambi,n afecta de alguna manera ya ue e5isten enormes cantidades de
informaci#n en bases de datos de las ue no se tiene control del acceso.
+as bases de datos tienen muchos usos: facilitan el almacenamiento de grandes cantidades de
informaci#n7 permiten la recuperaci#n rápida y fle5ible de informaci#n% con ellas se puede organi)ar y
reorgani)ar la informaci#n% as$ como imprimirla o distribuirla en formas di'ersas.
4s claro ue los lenguajes orientados a bases de datos son declarati'os y no imperati'os% pues el
problema es &qué' se uiere hacer o &qué' se necesita buscar y encontrar en la base de datos% y no se
enfati)a el &cómo'.
Una base de datos tambi,n se puede definir como un banco de datos o conjunto de datos ue
pertenecen al mismo conte5to% almacenados sistemáticamente para su posterior uso. 4n este sentido%
una biblioteca puede considerarse una base de datos compuesta en su mayor$a por documentos y te5tos
impresos en papel e inde5ados para su consulta.
4n la actualidad% y gracias al desarrollo tecnol#gico de campos como la informática y la
electr#nica% la mayor$a de las bases de datos tienen formato electr#nico% ue ofrece un amplio rango de
soluciones al problema de almacenar datos.
+os sistemas gestores de bases de datos (9O=;* permiten almacenar y posteriormente acceder
a los datos de forma rápida y estructurada.
&.*.1. TPO3 -7 65373 -7 -5TO3
+as bases de datos pueden clasificarse de 'arias maneras% de acuerdo al criterio elegido para su
clasificaci#n% ue puede ser seg"n la 'ariabilidad de los datos almacenados o seg"n el contenido.
&.*.1.1 'L534'5'20 -7 65373 -7 -5TO3 37G?0 L5 85/56L-5- -7 LO3 -5TO3
5LM5'705-O3
4sta clasificaci#n depende de c#mo los datos cambian o 'ar$an dentro de la base de datos% o si
se mantienen estáticos sin sufrir modificaciones o cambios. ;entro de esta clasificaci#n se tiene lo
siguiente:
• 65373 -7 -5TO3 73T:T'53@ Lstas son bases de datos de s#lo lectura% utili)adas
primordialmente para almacenar datos hist#ricos ue posteriormente se pueden utili)ar para
estudiar el comportamiento de un conjunto de datos a tra',s del tiempo% reali)ar
proyecciones y tomar decisiones.
• 65373 -7 -5TO3 -0:M'53@ Lstas son bases de datos donde la informaci#n
almacenada se modifica con el tiempo% permitiendo operaciones como actuali)aci#n y adici#n
de datos% además de las operaciones fundamentales de consulta. Un ejemplo de esto puede
ser la base de datos utili)ada en un sistema de informaci#n de una tienda de abarrotes% una
farmacia% un 'ideoclub% etc.
&.*.1.!. 'L534'5'20 -7 65373 -7 -5TO3 37G?0 'O0T70-O
4sta clasificaci#n basa su enfoue en el contenido o lo ue almacena la base de datos% de esta
manera:
• 65373 -7 -5TO3 66LOG/:4'53@ 9olo contienen un ErepresentanteF de la fuente
primaria% ue permite locali)arla. Un registro t$pico de una base de datos bibliográfica
contiene informaci#n sobre el autor% fecha de publicaci#n% editorial% t$tulo% edici#n% de una
determinada publicaci#n% etc. -uede contener un resumen o e5tracto de la publicaci#n
original% pero nunca el te5to completo% porue sino se estar$a en presencia de una base de
datos a te5to completo (o de fuentes primarias*. !omo su nombre lo indica% el contenido son
cifras o n"meros. -or ejemplo% una colecci#n de resultados de análisis de laboratorio% entre
otras.
• 65373 -7 -5TO3 -7 T7ATO 'OMPL7TO@ &lmacenan las fuentes primarias% como por
ejemplo% todo el contenido de todas las ediciones de una colecci#n de re'istas cient$ficas.
• -/7'TO/O3@ Un ejemplo son las gu$as telef#nicas en formato electr#nico.
8
• 650'O -7 M:G7073B 51-OB M1LTM7-5B 7T'.
&.*.!. MO-7LO3 -7 65373 -7 -5TO3
&demás de la clasificaci#n por la funci#n de las bases de datos% ,stas tambi,n se pueden
clasificar de acuerdo a su modelo de administraci#n de datos.
Un modelo de datos es básicamente una 3descripci#n3 de algo conocido como contenedor de
datos (algo en donde se guarda la informaci#n*% as$ como de los m,todos para almacenar y recuperar
informaci#n de esos contenedores. +os modelos de datos no son cosas f$sicas: son abstracciones ue
permiten la implementaci#n de un sistema eficiente de base de datos7 por lo general se refieren a
algoritmos% y conceptos matemáticos.
&lgunos modelos con frecuencia utili)ados en las bases de datos son:
• 65373 -7 -5TO3 J7/:/<1'53@ Lstas son bases de datos ue% como su nombre indica%
almacenan su informaci#n en una estructura jeráruica. 4n este modelo los datos se
organi)an en una forma similar a un árbol ('isto al re',s*% en donde un nodo padre de
informaci#n puede tener 'arios hijos. 4l nodo ue no tiene padres es llamado ra$)% y a los
nodos ue no tienen hijos se los conoce como hojas. +as bases de datos jeráruicas son
especialmente "tiles en el caso de aplicaciones ue manejan un gran 'olumen de
informaci#n y datos muy compartidos permitiendo crear estructuras estables y de gran
rendimiento. Una de las principales limitaciones de este modelo es su incapacidad de
representar eficientemente la redundancia de datos.
• 65373 -7 -5TO3 -7 /7-@ Lste es un modelo ligeramente distinto del jeráruico7 su
diferencia fundamental es la modificaci#n del concepto de nodo: se permite ue un mismo
nodo tenga 'arios padres (posibilidad no permitida en el modelo jeráruico*. .ue una gran
mejora con respecto al modelo jeráruico% ya ue ofrec$a una soluci#n eficiente al problema
de redundancia de datos7 pero% aun as$% la dificultad ue significa administrar la informaci#n
en una base de datos de red ha significado ue sea un modelo utili)ado en su mayor$a por
programadores más ue por usuarios finales.
• 65373 -7 -5TO3 /7L5'O05L@ Lste es el modelo más utili)ado en la actualidad para
modelar problemas reales y administrar datos dinámicamente. 1ras ser postulados sus
fundamentos en :IHA por 4dgar .ranQ !odd% de los laboratorios ?=B en 9an @os,
(!alifornia*% no tard# en consolidarse como un nue'o paradigma en los modelos de base de
datos. 9u idea fundamental es el uso de 3relaciones3. 4stas relaciones podr$an considerarse
en forma l#gica como conjuntos de datos llamados 3tuplas3. -ese a ue ,sta es la teor$a de
las bases de datos relacionales creadas por 4dgar .ranQ !odd% la mayor$a de las 'eces se
conceptuali)a de una manera más fácil de imaginar. 4sto es pensando en cada relaci#n
como si fuese una tabla ue está compuesta por registros (las filas de una tabla*% ue
representar$an las tuplas% y campos (las columnas de una tabla*. 4n este modelo% el lugar y
la forma en ue se almacenen los datos no tienen rele'ancia (a diferencia de otros modelos
como el jeráruico y el de red*. 4sto tiene la considerable 'entaja de ue es más fácil de
entender y de utili)ar para un usuario esporádico de la base de datos. +a informaci#n puede
ser recuperada o almacenada mediante 3consultas3 ue ofrecen una amplia fle5ibilidad y
poder para administrar la informaci#n. 4l lenguaje más habitual para construir las consultas a
bases de datos relacionales es 9N+% 9tructured Nuery +anguage o +enguaje 4structurado de
!onsultas% un estándar implementado por los principales motores o sistemas de gesti#n de
bases de datos relacionales. ;urante su dise8o% una base de datos relacional pasa por un
proceso al ue se le conoce como normali)aci#n (reglas fundamentales para el buen
funcionamiento de una base de datos relacional* de una base de datos. ;urante los a8os R8A
(:I8A-:I8I* la aparici#n de d=&94 produjo una re'oluci#n en los lenguajes de programaci#n
y sistemas de administraci#n de datos. &unue nunca debe ol'idarse ue d=ase no utili)aba
9N+ como lenguaje base para su gesti#n. +a normalización de una base de datos relacional
consiste en las siguientes reglas:
9
a. Primera 4orma 0ormal C140D@ se eliminan los grupos repetiti'os. +os atributos han de ser
at#micos. Oráficamente las celdas de la tabla contienen solo un 'alor% en cada uno de los
atributos s#lo se puede incluir un dato% aunue sea compuesto% pero no se puede incluir una
lista de datos. 9e trata de ue cada atributo guarde la menor cantidad de informaci#n
posible. -ara eliminar los grupos repetiti'os se pone cada uno de ellos en una tabla aparte%
esa nue'a tabla hereda la cla'e primaria de la relaci#n en la ue se encontraban% se crea una
cla'e foránea para la nue'a tabla.
$. 3egunda 4orma 0ormal C!40D@ dependencia completa. 4stá en <.2 si está en :.2 y si sus
atributos no principales dependen de forma completa de la cla'e principal. 1oda relaci#n ue
tenga como cla'e s#lo un atributo está en <.2.
c. Tercera 4orma 0ormal C#40D@ dependencia transiti'a. 4stá en segunda forma normal y todo
atributo no primo es implicado por la cla'e primaria en una secuencia no transiti'a.
d. 4orma 0ormal de 6oyceE'odd@ una tabla está en .2=!% s$ y s#lo s$ las "nicas
dependencias funcionales elementales son auellas en las ue la !la'e primaria determina
un atributo.
e. 'uarta 4orma 0ormal C&40D@ está en forma normal de =oyce-!odd y se eliminan las
dependencias multi'aluadas y se generan todas las relaciones e5ternas con otras tablas u
otras bases de datos.
". <uinta 4orma 0ormal C(40D@ está en cuarta forma normal y toda dependencia-join 'iene
implicada por cla'es candidatas.
• 65373 -7 -5TO3 O/70T5-53 5 O6J7TO3@ este modelo% bastante reciente% y propio de
los modelos informáticos orientados a objetos% trata de almacenar en la base de datos los
objetos completos (estado y comportamiento*. Una base de datos orientada a objetos es una
base de datos ue incorpora todos los conceptos importantes del paradigma de objetos:
encapsulación (propiedad ue permite ocultar la informaci#n al resto de los objetos%
impidiendo as$ accesos incorrectos o conflictos*% $erencia (propiedad a tra',s de la cual los
objetos heredan comportamiento dentro de una jeraru$a de clases y polimorfismo (propiedad
de una operaci#n mediante la cual puede ser aplicada a distintos tipos de objetos. 4n bases
de datos orientadas a objetos% los usuarios pueden definir operaciones sobre los datos como
parte de la definici#n de la base de datos.
• 65373 -7 -5TO3 -O'1M70T5L73@ permiten la inde5aci#n a te5to completo% y en l$neas
generales reali)ar b"suedas más potentes.
• 6537 -7 -5TO3 -7-1'T853@ un sistema de base de datos deductivas, es un sistema de
base de datos pero con la diferencia de ue permite hacer deducciones a tra',s de
inferencias. 9e basa principalmente en reglas y hechos ue son almacenados en la base de
datos. 1ambi,n las bases de datos deducti'as son llamadas base de datos l#gica% a ra$) de
ue se basan en l#gica matemática.
(. L70G15J73 -7 P/OG/5M5'20 MP7/5T8O3
4n ciencias de la computaci#n se llama lenguajes imperati'os a auellos en los cuales se le
ordena a la computadora c#mo reali)ar una tarea siguiendo una serie de pasos o instrucciones% por
ejemplo:
Paso 1B solicitar n"mero.
Paso !B multiplicar n"mero por dos.
Paso #B imprimir resultado de la operaci#n.
Paso &B etc%
4l proceso anterior se puede reali)ar con un lenguaje imperati'o como por ejemplo =&9?!% !% !S
S% @a'a% !lipper% ;base% !T% -6-% -erl% etc.
;entro de la programaci#n imperati'a% se tiene un conjunto de instrucciones ue le indican al
computador cómo reali)ar una tarea.
+os lenguajes imperati'os se basan en comandos u #rdenes ue se le dan a la computadora
para ue haga algo% con el fin de organi)ar o cambiar 'alores en ciertas partes de la memoria.
10
+a ejecuci#n de estos comandos se reali)a% en la mayor parte de ellos% secuencialmente% es
decir% hasta ue un comando no ha sido ejecutado no se lee el siguiente.
9eg"n el dominio% o mejor dicho con el prop#sito ue se utili)a el programa% se puede hablar de
lenguajes de dominio espec$fico y de dominio general.
(.1. L70G15J73 MP7/5T8O3 P/O'7-1/5L73
4n los lenguajes tradicionales o procedurales% es la aplicaci#n uien controla u, porciones de
c#digo se ejecuta% y la secuencia en ue este se ejecuta. +a ejecuci#n de la aplicaci#n se inicia con la
primera l$nea de c#digo% y sigue una ruta predefinida a tra',s de la aplicaci#n% llamando procedimientos
seg"n sea necesario.
+os lenguajes procedurales están fundamentados en la utili)aci#n de 'ariables para almacenar
'alores y en la reali)aci#n de operaciones con los datos almacenados. &lgunos ejemplos son:
./010&2% -&9!&+% !% &;&% &+O/+%U
4n este tipo de lenguajes% la aruitectura consta de una secuencia de celdas% llamadas memoria%
en las cuales se pueden guardar en forma codificada% lo mismo datos ue instrucciones7 y de un
procesador% el cual es capa) de ejecutar de manera secuencial una serie de operaciones% principalmente
aritm,ticas y booleanas% llamadas comandos. 4n general% un lenguaje procedural ofrece al programador
conceptos ue se traducen de forma natural al modelo de la máuina. 4l programador tiene ue traducir
la soluci#n abstracta del problema a t,rminos muy primiti'os% cercanos a la máuina.
!on un lenguaje procedural el usuario (normalmente será un programador* especifica u, datos
se necesitan y c#mo obtenerlos. 4sto uiere decir ue el usuario debe especificar todas las operaciones
de acceso a datos llamando a los procedimientos necesarios para obtener la informaci#n reuerida.
4stos lenguajes acceden a un registro% lo procesan y basándose en los resultados obtenidos% acceden a
otro registro% ue tambi,n deben procesar. &s$ se 'a accediendo a registros y se 'an procesando hasta
ue se obtienen los datos deseados. +as sentencias de un lenguaje procedural deben estar embebidas
en un lenguaje de alto ni'el% ya ue se necesitan sus estructuras (bucles% condicionales% etc.* para
obtener y procesar cada registro indi'idual.
(.!. 5LG10O3 L70G15J73 MP7/5T8O3
&lgunos lenguajes de programaci#n imperati'os ue se pueden mencionar son:
• =&9?!
• !
• !SS
• @a'a
• !T
• -6-
• -erl
). -47/70'5 70T/7 L70G15J73 -7'L5/5T8O3 7 MP7/5T8O3
4n los lenguajes declarati'os las sentencias ue se utili)an lo ue hacen es describir el
problema ue se uiere solucionar% pero no las instrucciones necesarias para solucionarlo. 4sto "ltimo se
reali)ará mediante mecanismos internos de inferencia de informaci#n a partir de la descripci#n reali)ada.
+os lenguajes imperati'os describen paso a paso un conjunto de instrucciones ue deben
ejecutarse para 'ariar el estado un programa y hallar la soluci#n% es decir% un algoritmo en el ue se
describen los pasos necesarios para solucionar un problema.
*. L70G15J73 -7 P/OG/5M5'20 O/70T5-O3 5 O6J7TO3
4n la -rogramaci#n /rientada a /bjetos (-// u //- seg"n siglas en ingl,s* se definen los
programas en t,rminos de Eclases de objetosF% objetos ue son entidades ue combinan estado (es decir%
datos* comportamiento (esto es% procedimientos o m,todos* e identidad (propiedad del objeto ue lo
diferencia del resto*. +a programaci#n orientada a objetos e5presa un programa como un conjunto de
11
estos objetos% ue colaboran entre ellos para reali)ar tareas. 4sto permite hacer los programas m#dulos
más fáciles de escribir% mantener y reutili)ar.
;e esta forma% un objeto contiene toda la informaci#n% (los denominados atributos* ue permite
definirlo e identificarlo frente a otros objetos pertenecientes a otras clases (e incluso entre objetos de la
misma clase% al poder tener 'alores bien diferenciados en sus atributos*. & su 'e)% dispone de
mecanismos de interacci#n (los llamados m,todos* ue fa'orecen la comunicaci#n entre objetos (de una
misma clase o de distintas*% y en consecuencia% el cambio de estado en los propios objetos. 4sta
caracter$stica lle'a a tratarlos como unidades indi'isibles% en las ue no se separan (ni deben separarse*
informaci#n (datos* y procesamiento (m,todos*.
;ada esta propiedad de conjunto de una clase de objetos% ue al contar con una serie de
atributos definitorios% reuiere de unos m,todos para poder tratarlos (lo ue hace ue ambos conceptos
están $ntimamente entrela)ados*% el programador debe pensar indistintamente en ambos t,rminos% ya
ue no debe nunca separar o dar mayor importancia a los atributos a fa'or de los m,todos% ni 'ice'ersa.
6acerlo puede lle'ar al programador a seguir el hábito err#neo de crear clases contenedoras de
informaci#n por un lado y clases con m,todos ue manejen esa informaci#n por otro (llegando a una
programaci#n estructurada camuflada en un lenguaje de programaci#n orientada a objetos*.
4sto difiere de los lenguajes imperati'os tradicionales% en los ue los datos y los procedimientos
están separados y sin relaci#n% ya ue lo "nico ue se busca es el procesamiento de unos datos y los
procedimientos están separados y sin relaci#n% ya ue lo "nico ue se busca es el procesamiento de
unos datos de entrada para obtener otros de salida. +a programaci#n estructurada anima al programador
a pensar sobre todo en t,rminos de procedimientos o funciones% y en segundo lugar en las estructuras de
datos ue esos procedimientos manejan. +os programadores de lenguajes imperati'os escriben
funciones y despu,s les pasan los datos. +os programadores ue emplean lenguajes orientados a
objetos definen objetos con datos y m,todos y despu,s en'$an mensajes a los objetos diciendo ue
realicen esos m,todos por s$ mismos.
Un objeto se puede definir como un grupo de procedimientos ue comparten un estado. 9e
define al conjunto de datos como EestadoF% y Em,todosF como el conjunto de procedimientos ue pueden
alterar ese estado. Un programa orientado a objetos es un m,todo de implementaci#n en el ue los
programas están organi)ados como colecciones de objetos% donde cada uno es una instancia de alguna
clase% y donde todas las clases son miembros de una jeraru$a de clases conectadas por relaciones de
herencia. 4ste tipo de lenguajes son muy recientes en comparaci#n a los primeros lenguajes de
programaci#n ue aparecieron.
*.1. 'O0'7PTO3 6:3'O3 -7 L5 P/OG/5M5'20 O/70T5-5 5 O6J7TO3
+a programaci#n orientada a objetos es una nue'a forma de programar ue trata de encontrar la
soluci#n a problemas de una forma ue ofrece muchas 'entajas y facilidades ue no se ten$an
anteriormente. ?ntroduce nue'os conceptos% ue superan y ampl$an conceptos antiguos ya conocidos.
4ntro ellos destacan los siguientes:
• O6J7TO@ entidad pro'ista de un conjunto de propiedades o atributos (datos* y de
comportamiento o funcionalidad (Em,todosF*. !orresponden a los objetos reales del
mundo ue nos rodea% o a objetos internos del sistema (del programa*.
• 'L537@ definiciones de las propiedades y comportamiento de un tipo de objeto concreto.
+a instanciaci#n es la lectura de estas definiciones y la creaci#n de un objeto a partir de
ellas. Una clase es una colecci#n de objetos similares o la implementaci#n% declaraci#n
o definici#n de un tipo de objeto. !ada 'e) ue se construye un objeto de una clase se
crea una instancia de esa clase. -or ejemplo en Misual =asic% se tiene la clase .orm% y
se pueden crear instancias de esa clase al tener .orm:% .orm<% etc. &s$ se está creando
una instancia de la clase .orm.
• MFTO-O@ algoritmo asociado a un objeto (o a una clase de objetos*% cuya ejecuci#n se
desencadena tras la recepci#n de un EmensajeF. ;esde el punto de 'ista del
comportamiento% es lo ue el objeto puede hacer. Un m,todo puede producir un cambio
12
en lar propiedades del objeto% o la generaci#n de un Ee'entoF con un nue'o mensaje para
otro objeto del sistema.
• 7870TO@ un suceso en el sistema (tal como una interacci#n del usuario con la máuina%
o un mensaje en'iado por un objeto*. 4l sistema maneja el e'ento en'iando el mensaje
adecuado al objeto pertinente.
• M7035J7@ una comunicaci#n dirigida a un objeto% ue le ordena ue ejecute uno de sus
m,todos con ciertos parámetros asociados al e'ento ue lo gener#.
• P/OP7-5- O 5T/61TO@ contenedor de un tipo de datos asociados a un objeto (o a
una clase de objetos*% ue hace los datos 'isibles desde fuera del objeto% y cuyo 'alor
puede ser alterado por la ejecuci#n de alg"n m,todo.
• 73T5-O 0T7/0O@ es una propiedad in'isible de los objetos% ue puede ser
"nicamente accedida y alterada por un m,todo del objeto% y ue se utili)a para indicar
distintas situaciones posibles para el objeto (o clase de objetos*.
4n comparaci#n con un lenguaje imperati'o% una E'ariable no es más ue un contenedor interno
del atributo del objeto o de un estado interno% as$ como la Efunci#nF es un procedimiento interno del
m,todo del objeto.
*.!. '5/5'T7/93T'53 -7 L5 P/OG/5M5'20 O/70T5-5 5 O6J7TO3
+as caracter$sticas más importantes de la programaci#n orientada a objetos son las siguientes:
• 563T/5''20@ !ada objeto en el sistema sir'e como modelo de un 3agente3 abstracto
ue puede reali)ar trabajo% informar y cambiar su estado% y 3comunicarse3 con otros
objetos en el sistema sin re'elar c#mo se implementan estas caracter$sticas. +os
procesos% las funciones o los m,todos pueden tambi,n ser abstra$dos y cuando lo están%
una 'ariedad de t,cnicas son reueridas para ampliar una abstracci#n.
• 70'5P31L5M70TO@ tambi,n llamado 3ocultaci#n de la informaci#n3. !ada objeto está
aislado del e5terior% es un m#dulo natural% y cada tipo de objeto e5pone una interfa) a
otros objetos ue espec$fica c#mo pueden interactuar con los objetos de la clase. 4l
aislamiento protege a las propiedades de un objeto contra su modificaci#n por uien no
tenga derecho a acceder a ellas% solamente los propios m,todos internos del objeto
pueden acceder a su estado. 4sto asegura ue otros objetos no pueden cambiar el
estado interno de un objeto de maneras inesperadas% eliminando efectos secundarios e
interacciones inesperadas. &lgunos lenguajes relajan esto% permitiendo un acceso directo
a los datos internos del objeto de una manera controlada y limitando el grado de
abstracci#n. +a aplicaci#n entera se reduce a un agregado o rompecabe)as de objetos.
4sta caracter$stica o propiedad permite por tanto ejecutar la informaci#n al resto de los
objetos% impidiendo as$ accesos incorrectos o conflictos.
• POLMO/43MO@ comportamientos diferentes% asociados a objetos distintos% pueden
compartir el mismo nombre% al llamarlos por ese nombre se utili)ará el comportamiento
correspondiente al objeto ue se est, usando. / dicho de otro modo% las referencias y las
colecciones de objetos pueden contener objetos de diferentes tipos% y la in'ocaci#n de un
comportamiento en una referencia producirá el comportamiento correcto para el tipo real
del objeto referenciado. -or ejemplo en Misual =asic% el polimorfismo se da al tener
diferentes tipos de objetos (.orm% +abel% etc.*
• ;7/70'5@ las clases no están aisladas% sino ue se relacionan entre s$% formando una
jeraru$a de clasificaci#n. +os objetos heredan las propiedades y el comportamiento de
todas las clases a las ue pertenecen. +a herencia organi)a y facilita el polimorfismo y el
encapsulamiento permitiendo a los objetos ser definidos y creados como tipos
especiali)ados de objetos pree5istentes. 4stos pueden compartir (y e5tender* su
comportamiento sin tener ue reimplementar su comportamiento. 4sto suele hacerse
habitualmente agrupando los objetos en clases y estas en árboles o enrejados ue
reflejan un comportamiento com"n. !uando un objeto pertenece a más de una clase se
dice ue hay herencia m"ltiple7 esta caracter$stica no está soportada por algunos
13
lenguajes (como @a'a*. !on esta propiedad% los objetos heredan comportamientos
dentro de una jeraru$a de clases.
*.#. P/0'P5L73 -47/70'53 70T/7 L5 P/OG/5M5'20 MP7/5T85 G L5
P/OG/5M5'20 O/70T5-5 5 O6J7TO3
• +a programaci#n orientada a objetos es más moderna% es una e'oluci#n de la
programaci#n imperati'a plasmada en el dise8o de una familia de lenguajes conceptos
ue e5ist$an pre'iamente% con algunos nue'os.
• +a programaci#n orientada a objetos se basa en lenguajes ue soportan sintáctica y
semánticamente la uni#n entre los tipos abstractos de datos y sus operaciones (a esta
uni#n se la suele llamar clase*.
• +a programaci#n orientada a objetos incorpora en su entorno de ejecuci#n mecanismos
tales como el polimorfismo y el en'$o de mensajes entre objetos.
*.&. 5LG10O3 L70G15J73 O/70T5-O3 5 O6J7TO3
4ntre los lenguajes orientados a objetos más importantes ue se pueden mencionar% aparecen
los siguientes:
• &da
• !SS
• !T
• M=.241
• !larion
• ;elphi
• 4iffel
• @a'e
• +e5ico (en castellano*
• /bjecti'e-!
• /caml
• /)
• -6-
• -ower=uilder
• -it#n
• 0uby
• 9malltalQ
14
'O0'L1320
+os lenguajes de programaci#n no son simplemente un detalle más del amplio mundo de la
informática% y por lo tanto deben ser 'istos como el fundamento y la base del desarrollo y a'ance de la
computaci#n.
4studiar los conceptos básicos% clasificaci#n% diferencias% propiedades y funcionamiento de los
lenguajes de programaci#n es elemental para cualuier estudiante o profesional dedicado a la
computaci#n% pues de esa manera se logra tener una perspecti'a global y mucho más amplia ue tendrá
mucho peso al estar bien documentados y al conocer u, son% c#mo se clasifican y de u, manera
trabajan los lenguajes de programaci#n.
+uego del desarrollo de esta in'estigaci#n resulta fácil comprender los tipos y la clasificaci#n ue
se les da a los lenguajes de programaci#n en base a sus funcionalidades y caracter$sticas.
4ste estudio tambi,n permite desarrollar un sentido cr$tico de los lenguajes de programaci#n% de
forma ue el programador no seleccione ni emita un juicio respecto a determinado lenguaje basado
simplemente en su limitado conocimiento ni basado en la popularidad de la ue go)a cierto lenguaje% sino
ue el programador est, capacitado para dar ra)ones contundentes y certeras del por u, un lenguaje es
mejor ue otro para determinada tarea% u, 'entajas tiene uno respecto del otro% y ue as$ tambi,n el
programador sea capa) de seleccionar el lenguaje ue más le con'enga para la resoluci#n de un
problema determinado.
4sta in'estigaci#n ser'irá para e'aluar correctamente los lenguajes de programaci#n%
determinando las 'entajas y des'entajas ue cada uno de ellos presenta.
15
/747/70'53 66LOG/:4'53
:. !ejas% !.=7 !respillo% /.O.7 @im,ne) ..% B.@.7 0am$re) O.% !.7 9ánche) O.% !.7 9ánche) 2.% !.
(ipos de #enguajes de )rogramación. 45tra$do el <I de agosto% <AAG de
http://juanfc.lcc.uma.es/4;U/4-/trabajos/1<A:.!lasificaciondelostiposdelenguajes.pdfTsearchV
W<<tiposW<AdeW<AlenguajesW<Aimperati'osW<<
<. PiQipedia. +a enciclopedia libre. )rogramación declarativa. 45tra$do el <I de agosto% <AAG de
http://es.wiQipedia.org/wiQi/-rogramaciW!3W=3nXdeclarati'a
3. !onceptY;e'elopment. )rogramación declarativa. 45tra$do el <I de agosto% <AAG de
http://p'iojo.net/posts/programacion-declarati'a
C. 9anders% ;onald 6.7 *nformática )resente y +uturo. (ercera Edición. BcOraw6ill7 2aucalpán de
@uáre)% B,5ico7 :IIA.
D. PiQipedia. +a enciclopedia libre. )rogramación imperativa. 45tra$do el <I de agosto% <AAG de
http://es.wiQipedia.org/wiQi/+enguajesXimperati'os
G. Uni'ersidad 1ecnol#gica 2acional. .acultad 0egional 1ucuman. #enguajes de )rogramación.
45tra$do el <I de agosto% <AAG de http://www.frt.utn.edu.ar/sistemas/paradigmas/lenguajes.htm
H. Batta O.% ;.&. 1utorial *ntroducción al ,esarrollo de -plicaciones con .isual /asic.
8. PiQipedia. +a enciclopedia libre. )rogramación orientada a objetos. 45tra$do el 3A de agosto%
<AAG de http://es.wiQipedia.org/wiQi/-rogramaci
W!3W=3nXorientadaXaXobjetosT+aX-rogramaci.!3.=3nX/rientadaXaX/bjetosX.<8-//.<IXco
moXsoluci.!3.=3n
I. *ntroducción a la )rogramación #ógica. ?ngenier$a 1,cnica en ?nformática de 9istemas.
;epartamento de +enguajes y !iencias de la !omputaci#n. Uni'ersidad de Bálaga. 45tra$do el
3A de agosto% <AAG de http://H<.:C.<AI.:AC/searchK
Vcache:do6QO'5HwN?@:www.lcc.uma.es/Zlope)/apuntes/declasis/apuntes/introduccion/introXsis
Cpp.pdfSprogramacionSdeclarati'aSlogicaYhlVesYglVs'YctVclnQYcdVG
:A. 0ossel% O. )rogramación lógica. 45tra$do el 3A de agosto% <AAG de
http://www.am)i.com/articles/codeAHXwhitepaper.pdfTsearchVW<<programacionW<AW<Alogica
W<<
::. PiQipedia. +a enciclopedia libre. )rogramación funcional. 45tra$do el 3A de agosto% <AAG de
http://es.wiQipedia.org/wiQi/-rogramaciW!3W=3nXfuncional
:<. Panadoo. 4l 0inc#n del Mago. /ase de ,atos. 45tra$do el 3A de agosto% <AAG de
http://html.rincondel'ago.com/concepto-de-base-de-datos.html
:3. PiQipedia. +a enciclopedia libre. /ase de datos. 45tra$do el 3A de agosto% <AAG de
http://es.wiQipedia.org/wiQi/=aseXdeXdatosT1iposXdeXbasesXdeXdatos
:C. PiQipedia. +a enciclopedia libre. 0ormalización de una base de datos. 45tra$do el 3A de agosto%
<AAG de http://es.wiQipedia.org/wiQi/2ormali)aciW!3W=3nXdeXunaXbaseXdeXdatos
16
&U1/049:
7dil$erto 5$dulio 6aHos MartInez.
Jenni"er 7smeralda 'Jacón 'arranza.
JosK 5milcar 'JigLKn 'JegLKn
Glenda Maritza 7spaHa 'analez.
Jaime Oswaldo Montoya Guzmán
jaimemontoya@gmail.com
http://jaimemontoya.googlepages.com
4l 9al'ador
9anta &na% C de septiembre de <AAG.
17