Você está na página 1de 19

UNIVERSIDAD NACIONAL PEDRO RUIZ GALLO

FICSA

UNIVERSIDAD NACIONAL
PEDRO RUIZ GALLO
FICSA
PROFESOR

: Irma Capuay Capuay

INTEGRANTES:
Huatangari Alarcn Yeltsin

LAMBAYEQUE, SEPTIEMBRE DEL 2013

UNIVERSIDAD NACIONAL PEDRO RUIZ GALLO


FICSA

INTRODUCCIN
Una computadora es una mquina que solo comprende las instrucciones que se le den
en un determinado formato. Cada mquina reconoce y ejecuta un nmero de
instrucciones diferentes que se agrupan en los distintos lenguajes de programacin.
Un lenguaje de programacin es un conjunto limitado de palabras y de smbolos que
representan procedimientos, clculos, decisiones y otras operaciones que pueden
ejecutar una computadora. A pesar de que en este trabajo parte de la divisin de
lenguajes de programacin en imperativos y declarativos (los cuales a su vez se
dividen en numerosos subgrupos), la clasificacin ms comn y bsica que suele
hacerse de los lenguajes de programacin es la que los divide en lenguajes de bajo y
de alto nivel. Los lenguajes de programacin de bajo nivel fueron los primeros que
surgieron y se llaman as porque estn directamente relacionados con el hardware del
computador, es decir, el usuario introduce una serie de cdigos numricos que la
mquina va a interpretar como instrucciones. Para usar este lenguaje, el programador
tena que conocer el funcionamiento de la mquina al ms bajo nivel y los errores de
programacin eran muy frecuentes.
Los lenguajes de alto nivel surgieron con posterioridad con el primer compilador de
FORTRAN (FORmula TRANslation), que, como su nombre indica, inici como un
"simple" esfuerzo de traducir un lenguaje de frmulas, al lenguaje ensamblador y por
consiguiente al lenguaje de mquina, facilitando la labor a los programadores. A partir
de FORTRAN, se han desarrollado innumerables lenguajes, que siguen el mismo
concepto: facilitar la vida al programador, aumentando la productividad. Estos
lenguajes usan un nmero reducido de instrucciones (normalmente en ingls) que
siguen unas estrictas reglas gramaticales que se conocen como sintaxis del lenguaje.
Pero aunque el programador de esta forma se distancie del hardware del computador,
este sigue trabajando en lenguaje mquina. Por ello se hace necesaria una traduccin
a una secuencia de instrucciones interpretables por el computador. Esta labor es
llevada a cabo por los compiladores y los intrpretes.
El compilador es un programa que se encarga de la traduccin global del programa
realizado por el usuario. Esta operacin recibe el nombre de compilacin. El programa
es traducido completamente antes de que se ejecute, por lo que la ejecucin se
realiza en un periodo muy breve. El intrprete por el contrario lleva a cabo una
traduccin inmediata en el momento de la ejecucin, es decir, ir ejecutando las
instrucciones una a una haciendo que el proceso requiera un periodo de tiempo
sensiblemente mayor del que necesitara un compilador. Los intrpretes son usados
para traducir programas de alta dificultad de implementacin, en estos casos, las
rdenes a traducir son de tal complejidad que no merece la pena crear un compilador
ya que este tambin tendra que ser de una complejidad por encima de lo normal.
Hay que mencionar la existencia de lenguajes que combinan caractersticas de los de
alto nivel y los de bajo nivel (es decir, Ensamblador). Un ejemplo es C: contiene
estructuras de programacin de alto nivel; sin embargo, fue diseado con muy pocas
instrucciones, las cuales son sumamente sencillas, fciles de traducir al lenguaje de la
mquina; y requiere de un entendimiento apropiado de cmo funciona la mquina, el

UNIVERSIDAD NACIONAL PEDRO RUIZ GALLO


FICSA

uso de la memoria, etctera. Por ello, algunos consideran a lenguajes como C (que fue
diseado para hacer sistemas operativos), lenguajes de nivel medio, si bien, son
considerados mayoritariamente de bajo nivel.
Aunque en esta introduccin se ha comenzado a hablar de los lenguajes dividindolos
en bajo y alto nivel, en las prximas pginas se proceder a un anlisis ms
exhaustivo y detallado y se vern las numerosas formas en que se pueden agrupar los
lenguajes teniendo en cuenta funcionalidad y orientacin. Sin embargo no est
estipulada ninguna clasificacin estricta debido a que dependiendo de la caracterstica
por la que se clasifique, un lenguaje podra estar relativamente en un grupo u otro.
Sera utpico tratar de clasificar todos los lenguajes existentes ya que hay demasiados
y con frecuencia surgen nuevos. No obstante se ha tratado de realizar una clara y
esquemtica clasificacin de los distintos tipos, que abarcase a los lenguajes ms
importantes.
JUSTIFICACIN
El estudio de los lenguajes de programacin requiere a su vez comprender
perfectamente los tipos de lenguajes de programacin que existen y la clasificacin
comnmente aceptada que a stos se les da.
Esta investigacin se justifica en la necesidad que todo programador tiene de
diferenciar y clasificar correctamente los tipos de lenguajes de programacin,
conociendo sus aplicaciones y los beneficios o desventajas que ofrece cada uno de
ellos.
OBJETIVOS
OBJETIVO GENERAL
Conocer los tipos de lenguajes de programacin y la clasificacin que
comnmente se les da.
OBJETIVOS ESPECFICOS
Determinar qu son los lenguajes de programacin declarativos y a la vez los
lenguajes que forman parte de este grupo.
Determinar qu son los lenguajes de programacin imperativos y los lenguajes
que estn comprendidos en este grupo.
Diferenciar los lenguajes de bajo nivel (lenguaje mquina) de los lenguajes de
alto nivel.
MARCO TERICO
A. TIPOS DE LENGUAJE:
- Lenguaje Natural
- Lenguaje de Programacin

1. LENGUAJE NATURAL

UNIVERSIDAD NACIONAL PEDRO RUIZ GALLO


FICSA

El trmino lengua natural designa una variedad lingstica o forma de lenguaje


humano con fines comunicativos que est dotado de una sintaxis.
El lenguaje natural es el lenguaje que hablamos todos los das, nuestra forma
de comunicarnos por excelencia. Aunque para nosotros sea un gesto sencillo,
casi inconsciente, el habla es un proceso que implica millones de conexiones
neuronales y complejos procesos corporales de captacin y comprensin.
El lenguaje natural se diferencia de otros en que surge de modo espontneo
entre la gente. As, por ejemplo, aunque el ordenador usa lenguajes propios
para comunicarse entre s, estos han sido diseados, esto es, impuestos.
En informtica desde siempre se ha buscado que los ordenadores fuesen
capaces de comprender el lenguaje humano, de modo que pudiesen obedecer
rdenes directas del hombre. Sin embargo, aunque la gramtica es sencilla de
asimilar para los ordenadores, no as el resto de variables. El timbre de cada
persona, casi nico, el tono, los ademanes y gestos etc., todos ellos forman
parte del lenguaje natural humano, y son mucho ms difcilmente entendibles
para un ordenador. Los avances tecnolgicos, sin embargo ya permiten que se
hayan hecho ciertos experimentos con xito de captacin de gestos, y
reconocimiento de voz.
Estos avances individuales han permitido que haya surgido con fuerza una rama
de la informtica, llamada procesamiento del lenguaje natural, que busca
precisamente permitir que los ordenadores sean capaces de captar la
informacin transmitida por una persona y trasladarla luego a otra,
interactuando con ella con su mismo lenguaje, o al menos, de un modo
inteligible. El fin ltimo sera un ordenador capaz de razonar y aprender como
un ser humano, y para ello el primer paso es que pueda recibir informacin y
comunicarla como tal.
Es por eso que esta rama se haya ubicada dentro de la inteligencia artificial, si
bien el procesamiento de lenguaje natural no busca tanto que el equipo
aprenda de la comunicacin como que sea capaz por medio de mecanismos y
lenguajes programados, de entender al hombre y transformar las palabras
humanas en algo comprensible para l.
Sin embargo el procesamiento de lenguaje natural plantea muchos problemas:
los mltiples significados de cada palabra, los acentos de cada zona, la jerga de
cada lugar, expresiones tpicas, lenguaje ambiguo, ironas etc., etc., son cosas
que an estn solventndose. Para un ordenador, una frase de 10 palabras es
un nmero enorme de posibilidades. No slo tiene que mirar esas 10 palabras,
sino sus posibles significados, y como cada una de ellas se relaciona con las
dems. Si alguien est familiarizado con las matemticas esa frase de tan slo
10
palabras
escondera
10!
posibilidades
a
estudiar
(esto
es
10x9x8x7x6x5x4x3x2x1 = 3.628.800), y eso en el mejor de los casos.
A nivel prctico, los buscadores ms importantes ya saben diferenciar ciertos
tipos de preguntas o frases hechas para conseguir resultados de bsquedas
ms optimizados, sin embargo de momento cuando buscamos algo en la red
usamos ms las palabras clave que pensamos darn mejores resultados que
realmente las expresiones que usaramos si le preguntsemos a alguien en la
calle. Existe pues una desviacin importante que se intenta corregir aplicando
el lenguaje natural a los parmetros de bsqueda.

UNIVERSIDAD NACIONAL PEDRO RUIZ GALLO


FICSA

2. CONOCIMIENTOS BSICOS SOBRE LENGUAJE DE PROGRAMACIN


2.1HISTORIA DE LOS LENGUAJES DE PROGRAMACIN
Los primeros lenguajes de programacin surgieron de la idea de Charles
Babagge, la cual se le ocurri a este hombre a mediados del siglo XIX. Era
un profesor matemtico de la universidad de Cambridge e inventor ingls,
que en principio del siglo XIX predijo muchas de las teoras en que se basan
los actuales ordenadores. Consista en lo que l denominaba la maquina
analtica, pero que por motivos tcnicos no pudo construirse hasta mediados
del siglo XX. Con l colaboro Ada Lovedby, la cual es considerada como la
primera programadora de la historia, pues realizo programas para aqulla
supuesta maquina de Babagge, en tarjetas perforadas.
Como la maquina no llego nunca a construirse, los programas de Ada,
lgicamente, tampoco llegaron a ejecutarse, pero si suponen un punto de
partida de la programacin, sobre todo si observamos que en cuanto se
empez a programar, los programadores utilizaron las tcnicas diseadas
por Charles Babagge, y Ada, que consistan entre otras, en la programacin
mediante tarjetas perforadas. A pesar de ello, Ada ha permanecido como la
primera programadora de la historia. Se dice por tanto que estos dos genios
de antao, se adelantaron un siglo a su poca, lo cual describe la
inteligencia de la que se hallaban dotados.
En 1823 el gobierno Britnico lo apoyo para crear el proyecto de una
mquina de diferencias, un dispositivo mecnico para efectuar sumas
repetidas. Pero Babagge se dedico al proyecto de la mquina analtica,
abandonando la maquina de diferencias, que se pudiera programar con
tarjetas perforadas, gracias a la creacin de Charles Jacquard (francs). Este
hombre era un fabricante de tejidos y haba creado un telar que poda
reproducir automticamente patrones de tejidos, leyendo la informacin
codificada en patrones de agujeros perforados en tarjetas de papel rgido.
Entonces Babagge intento crear la mquina que se pudiera programar con
tarjetas perforadas para efectuar cualquier clculo con una precisin de 20
dgitos. Pero la tecnologa de la poca no bastaba para hacer realidad sus
ideas. Si bien las ideas de Babagge no llegaron a materializarse de forma
definitiva, su contribucin es decisiva, ya que los ordenadores actuales
responden a un esquema anlogo al de la mquina analtica. En su diseo,
la mquina constaba de cinco unidades bsicas: 1) Unidad de entrada, para
introducir datos e instrucciones; 2) Memoria, donde se almacenaban datos y
resultados intermedios; 3) Unidad de control, para regular la secuencia de
ejecucin de las operaciones; 4) Unidad Aritmtico-Lgica, que efecta las
operaciones; 5) Unidad de salida, encargada de comunicar al exterior los
resultados. Charles Babbage, conocido como el "padre de la informtica" no
pudo completar en aquella poca la construccin del computador que haba
soado, dado que faltaba algo fundamental: la electrnica. El camino
sealado de Babbage, no fue nunca abandonado y siguindolo, se
construyeron las primeras computadoras.
2.2 LENGUAJES DE MQUINA

UNIVERSIDAD NACIONAL PEDRO RUIZ GALLO


FICSA

El lenguaje mquina de una computadora consta de cadenas de nmeros


binarios (ceros y unos) y es el nico que "entienden" directamente los
procesadores. Todas las instrucciones preparadas en cualquier lenguaje de
mquina tienen por lo menos dos partes. La primera es el comando u
operacin, que dice a la computadora cul es la funcin que va a realizar.
Todas las computadoras tienen un cdigo de operacin para cada una de sus
funciones. La segunda parte de la instruccin es el operando, que indica a la
computadora dnde hallar o almacenar los datos y otras instrucciones que
se van a manipular; el nmero de operandos de una instruccin vara en las
distintas computadoras. En una computadora de operando nico, el
equivalente binario de "SUMAR 0814" podra hacer que se sume el valor que
se encuentra en la localidad de almacenamiento o direccin 0814 al valor
que se encuentra en la unidad aritmtica lgica. En una mquina de dos
operandos, la representacin binaria de "SUMAR 0814 8672" podra hacer
que se sume el valor que est en la localidad 8672 al valor que est en la
direccin 0814. El formato de operando nico es popular en las
microcomputadoras ms pequeas; la estructura de dos operandos se
encuentra en casi todas las dems mquinas.
Segn los estndares actuales, las primeras computadoras eran poco
tolerantes. Los programadores tenan que traducir las instrucciones de
manera directa a la forma de lenguaje de mquina que comprendan las
computadoras. Por ejemplo, un programador que escribiera la instruccin
"SUMAR 0814" para una de las primeras mquinas IBM hubiera escrito:
000100000000000000000000000010111000
Adems de recordar las docenas de cdigos numricos para los comandos
del conjunto de instrucciones de la mquina, el programador tena que
conocer las posiciones donde se almacenan los datos y las instrucciones. La
codificacin inicial muchas veces requera meses, por lo que era costosa y
era frecuente que originara errores. Revisar las instrucciones para localizar
errores era casi tan tedioso como escribirlas por primera vez. Adems, si era
necesario modificar un programa posteriormente, la tarea poda llevarse
meses.
2.3 LENGUAJES ENSAMBLADORES
A principios de la dcada de 1950, y con el fin de facilitar la labor de los
programadores, se desarrollaron cdigos nemotcnicos para las operaciones
y direcciones simblicas. La palabra nemotcnico se refiere a una ayuda
para la memorizacin. Uno de los primeros pasos para mejorar el proceso de
preparacin de programas fue sustituir los cdigos de operaciones
numricos del lenguaje de mquina por smbolos alfabticos, que son los
cdigos nemotcnicos. Todas las computadoras actuales tienen cdigos
nemotcnicos aunque, naturalmente, los smbolos que se usan varan en las
diferentes marcas y modelos. La computadora sigue utilizando el lenguaje
de mquina para procesar los datos, pero los programas ensambladores
traducen antes los smbolos de cdigo de operacin especificados a sus
equivalentes en lenguaje de mquina.

UNIVERSIDAD NACIONAL PEDRO RUIZ GALLO


FICSA

Este procedimiento prepar avances posteriores. Si la computadora era


capaz de traducir smbolos convenientes en operaciones bsicas, por qu
no hacer tambin que realizara otras funciones rutinarias de codificacin,
como la asignacin de direcciones de almacenamiento a los datos? La
tcnica de direccionamiento simblico permite expresar una direccin no en
trminos de su localizacin numrica absoluta, sino en trminos de smbolos
convenientes para el programador.
Durante las primeras etapas del direccionamiento simblico, el programador
asigna un nombre simblico y una direccin real a un dato. Por ejemplo, el
programador podra asignar el valor total de mercanca adquirida durante un
mes por un cliente de una tienda de departamentos a la direccin 0063, y
darle el nombre simblico TOTAL. Se podra asignar el valor de la mercanca
devuelta sin usar durante el mes a la direccin 2047 y drsele el nombre
simblico CRDITO. As, durante el resto del programa, el programador se
referir a los nombres simblicos, ms que a las direcciones, cuando fuera
preciso procesar estos datos. Por ejemplo, se podra escribir la instruccin "S
CRDITO TOTAL" para restar el valor de las mercancas devueltas del
importe total de compras para obtener el importe de la factura mensual del
cliente. A continuacin, el programa ensamblador traducira la instruccin
simblica a esta cadena de bits:
Ms adelante se hizo otra mejora. Se dej a la computadora la tarea de
asignar y recordar las direcciones de las instrucciones. Lo nico que tena
que hacer el programador era indicar a la computadora la direccin de la
primera instruccin, y el programa ensamblador se encargaba de
almacenar, de manera automtica, todas las dems en forma secuencial a
partir de ese punto. As, si se agregaba ms tarde otra instruccin al
programa, no era necesario modificar las direcciones de todas las
instrucciones que seguan al punto de insercin (como tendra que hacerse
en el caso de programas escritos en lenguaje de mquina). En vez de ello, el
procesador ajustaba automticamente las localidades de memoria la
prxima vez que se ejecutaba el programa.
En la actualidad, los programadores no asignan nmeros de direccin reales
a los datos simblicos, simplemente especifican dnde quieren que se
coloque la primera localidad del programa, y el programa ensamblador se
encarga de lo dems: asigna localidades tanto para las instrucciones como
para los datos.
Estos programas de ensamble, o ensamblador, tambin permite a la
computadora convertir las instrucciones en lenguaje ensamblador del
programador en su propio cdigo de mquina. Un programa de instrucciones
escrito en lenguaje ensamblador por un programador se llama programa
fuente. Despus de que el ensamblador convierte el programa fuente en
cdigo de mquina a ste se le denomina programa objeto. Para los
programadores es ms fcil escribir instrucciones en un lenguaje
ensamblador que en cdigos de lenguajes de mquina, pero es posible que
se requieran dos corridas de computadora antes de que se puedan utilizar
las instrucciones del programa fuente para producir las salidas deseadas.

UNIVERSIDAD NACIONAL PEDRO RUIZ GALLO


FICSA

Los lenguajes ensambladores tienen ventajas sobre los lenguajes de


mquina. Ahorran tiempo y requieren menos atencin a detalles. Se incurren
en menos errores y los que se cometen son ms fciles de localizar. Adems,
los programas en lenguaje ensamblador son ms fciles de modificar que los
programas en lenguaje de mquina. Pero existen limitaciones. La
codificacin en lenguaje ensamblador es todava un proceso lento. Una
desventaja importante de estos lenguajes es que tienen una orientacin a la
mquina. Es decir, estn diseados para la marca y modelo especfico de
procesador que se utiliza, y es probable que, para una mquina diferente, se
tengan que volver a codificar los programas.
2.4 LENGUAJES DE ALTO NIVEL
Los primeros programas ensambladores producan slo una instruccin en
lenguaje de mquina por cada instruccin del programa fuente. Para agilizar
la codificacin, se desarrollaron programas ensambladores que podan
producir una cantidad variable de instrucciones en lenguaje de mquina por
cada instruccin del programa fuente. Dicho de otra manera, una sola
macroinstruccin poda producir varias lneas de cdigo en lenguaje de
mquina. Por ejemplo, el programador podra escribir "LEER ARCHIVO", y el
programa traductor producira una serie detallada de instrucciones al
lenguaje de mquina previamente preparadas, con lo que se copiara un
registro del archivo que estuviera leyendo el dispositivo de entrada a la
memoria principal. As, el programador no se tena que ocupar de escribir
una instruccin por cada operacin de mquina realizada.
El desarrollo de las tcnicas nemotcnicas y las macroinstrucciones condujo,
a su vez, al desarrollo de lenguajes de alto nivel que a menudo estn
orientados hacia una clase determinada de problemas de proceso. Por
ejemplo, se han diseado varios lenguajes para procesar problemas
cientfico-matemtico, asimismo han aparecido otros lenguajes que hacen
hincapi en las aplicaciones de proceso de archivos.
A diferencia de los programas de ensamble, los programas en lenguaje de
alto nivel se pueden utilizar con diferentes marcas de computadores sin
tener que hacer modificaciones considerables. Esto permite reducir
sustancialmente el costo de la reprogramacin cuando se adquiere equipo
nuevo. Otras ventajas de los lenguajes de alto nivel son:
Son ms fciles de aprender que los lenguajes ensambladores.
Se pueden escribir ms rpidamente.
Permiten tener mejor documentacin.
Son ms fciles de mantener.
Un programador que sepa escribir programas en uno de estos lenguajes no
est limitado a utilizar un solo tipo de mquina.
3. LENGUAJES COMPILADOS
Naturalmente, un programa que se escribe en un lenguaje de alto nivel tambin
tiene que traducirse a un cdigo que pueda utilizar la mquina. Los programas
traductores que pueden realizar esta operacin se llaman compiladores. stos,

UNIVERSIDAD NACIONAL PEDRO RUIZ GALLO


FICSA

como los programas ensambladores avanzados, pueden generar muchas lneas


de cdigo de mquina por cada proposicin del programa fuente. Se requiere
una corrida de compilacin antes de procesar los datos de un problema.
Los compiladores son aquellos cuya funcin es traducir un programa escrito en
un determinado lenguaje a un idioma que la computadora entienda (lenguaje
mquina con cdigo binario).
Al usar un lenguaje compilado (como lo son los lenguajes del popular Visual
Studio de Microsoft), el programa desarrollado nunca se ejecuta mientras haya
errores, sino hasta que luego de haber compilado el programa, ya no aparecen
errores en el cdigo.
4. LENGUAJES INTERPRETADOS
Se puede tambin utilizar una alternativa diferente de los compiladores para
traducir lenguajes de alto nivel. En vez de traducir el programa fuente y grabar
en forma permanente el cdigo objeto que se produce durante la corrida de
compilacin para utilizarlo en una corrida de produccin futura, el programador
slo carga el programa fuente en la computadora junto con los datos que se van
a procesar. A continuacin, un programa intrprete, almacenado en el sistema
operativo del disco, o incluido de manera permanente dentro de la mquina,
convierte cada proposicin del programa fuente en lenguaje de mquina
conforme vaya siendo necesario durante el proceso de los datos. No se graba el
cdigo objeto para utilizarlo posteriormente.
La siguiente vez que se utilice una instruccin, se le debe interpretar otra vez y
traducir a lenguaje mquina. Por ejemplo, durante el procesamiento repetitivo
de los pasos de un ciclo, cada instruccin del ciclo tendr que volver a ser
interpretado cada vez que se ejecute el ciclo, lo cual hace que el programa sea
ms lento en tiempo de ejecucin (porque se va revisando el cdigo en tiempo
de ejecucin) pero ms rpido en tiempo de diseo (porque no se tiene que
estar compilando a cada momento el cdigo completo). El intrprete elimina la
necesidad de realizar una corrida de compilacin despus de cada modificacin
del programa cuando se quiere agregar funciones o corregir errores; pero es
obvio que un programa objeto compilado con antelacin deber ejecutarse con
mucha mayor rapidez que uno que se debe interpretar a cada paso durante una
corrida de produccin.
5.

LENGUAJES DE PROGRAMACIN DECLARATIVOS


Se les conoce como lenguajes declarativos en ciencias computacionales a
aquellos lenguajes de programacin en los cuales se le indica a la computadora
qu es lo que se desea obtener o qu es lo que se est buscando,
Por ejemplo: Obtener los nombres de todos los ing: civiles que tengan
ms de 25 aos. Eso se puede lograr con un lenguaje declarativo como
SQL.
La programacin declarativa es una forma de programacin que implica la
descripcin de un problema dado en lugar de proveer una solucin para dicho
problema, dejando la interpretacin de los pasos especficos para llegar a dicha
solucin a un intrprete no especificado.

UNIVERSIDAD NACIONAL PEDRO RUIZ GALLO


FICSA

La programacin declarativa adopta, por lo tanto, un enfoque diferente al de la


programacin imperativa tradicional.
En otras palabras, la programacin declarativa provee el "qu", pero deja el
"cmo" liberado a la implementacin particular del intrprete. Por lo tanto se
puede ver que la programacin declarativa tiene dos fases bien diferenciadas,
la declaracin y la interpretacin.
Es importante sealar que a pesar de hacer referencia a intrprete, no hay que
limitarse a "lenguajes interpretados" en el sentido habitual del trmino, sino
que tambin se puede estar trabajando con "lenguajes compilados".
5.1CARACTERSTICAS
DE
LOS
LENGUAJES
DE
PROGRAMACIN
DECLARATIVOS
Los lenguajes declarativos estn orientados a buscar la solucin del
problema, sin preocuparse por la forma de llegar a ello; es decir, el
programador debe concentrarse en la lgica del algoritmo, ms que en el
control de la secuencia.
Los programas estn formados por un conjunto de definiciones o
ecuaciones, las cuales describen lo que debe ser calculado, no en s la
forma de hacerlo.
Las variables slo pueden tener asignado un solo valor a lo largo de la
ejecucin del programa, lo cual implica que no puede existir asignacin
destructiva. Debido a esto, cobra especial importancia el uso del
anidamiento y la recursividad.
Las listas representan la estructura fundamental de datos.
El orden de la ejecucin no resulta importante debido a que no existen
efectos colaterales; es decir, que al calcular un valor, resulta imposible
afectar el clculo de otros y con esto se puede afirmar que cualquier
secuencia de ejecucin deber conducir al mismo resultado.
Las expresiones o definiciones pueden ser usadas como valores y por lo
tanto se pueden tratar como argumentos de otras definiciones.
El control de la ejecucin no es responsabilidad del programador.
5.2DESVENTAJAS DE LA PROGRAMACIN DECLARATIVA
La principal desventaja de la programacin declarativa es que no puede
resolver cualquier problema dado, sino que est restringida al
subconjunto de problemas para los que el intrprete o compilador fue
diseado.
Otra desventaja de la programacin declarativa est relacionada con la
eficiencia. Dado que es necesaria una fase de interpretacin extra, en la
cual se deben evaluar todas las consecuencias de todas las declaraciones
realizadas, el proceso es relativamente ms lento que en la programacin
imperativa, en que los cambios de estado del sistema estn dados por
instrucciones particulares y no por un conjunto de condiciones
arbitrariamente grande.
5.3VENTAJAS DE LA PROGRAMACIN DECLARATIVA
A pesar de lo anterior existen algunas ventajas en el uso de la
programacin declarativa. Entre las ventajas se destaca que la solucin

UNIVERSIDAD NACIONAL PEDRO RUIZ GALLO


FICSA

de un problema se puede realizar con un nivel de abstraccin


considerablemente alto, sin entrar en detalles de implementacin
irrelevantes, lo que hace a las soluciones ms fcil de entender por las
personas. La resolucin de problemas complejos es resuelta por el
intrprete a partir de la declaracin de las condiciones dadas.
La programacin declarativa es muy usada en la resolucin de problemas
relacionados con inteligencia artificial, bases de datos, configuracin, y
comunicacin entre procesos; sin embargo, ningn leguaje declarativo se
aproxima en popularidad a los lenguajes imperativos.
5.4EJEMPLOS DE LENGUAJES DECLARATIVOS
Algunos lenguajes declarativos que se pueden mencionar son:
PROLOG
SQL
HTML
WSDL (Web Services Description Language)
XML Stylesheet Language for Transformation
5.5PROGRAMACIN LGICA
La idea fundamental de la programacin lgica consiste en emplear la
lgica como lenguaje de programacin.
La lgica no es imperativa porque no sirve para indicar cmo resolver un
problema (rdenes). La lgica es declarativa porque sirve para especificar
qu problema resolver (condiciones).
En la programacin lgica, se especifican las condiciones que satisfacen
las soluciones, se deducen las soluciones a partir de las condiciones y el
nfasis de todo est en qu problema resolver. El problema se describe
especificando qu caracteriza a sus posibles soluciones.
La programacin lgica, junto con la funcional, forma parte de lo que se
conoce como programacin declarativa. En los lenguajes tradicionales, la
programacin consiste en indicar cmo resolver un problema mediante
sentencias; en la programacin lgica, se trabaja de forma descriptiva,
estableciendo relaciones entre entidades, indicando no cmo, sino qu
hacer. Se establece entonces que la idea esencial de la programacin
lgica es: algoritmos = lgica + control. Es decir, un algoritmo se
construye especificando conocimiento en un lenguaje formal (lgica de
primer orden), y el problema se resuelve mediante un mecanismo de
inferencia (control) que acta sobre aqul.
Al hacer un recorrido por la programacin lgica, aparece como uno de
sus lenguajes ms representativos, Prolog, que es un clsico de la
inteligencia artificial y que se aplica de mltiples formas en el desarrollo
de software comercial.
5.6PROGRAMACIN FUNCIONAL
La programacin funcional es un paradigma de programacin declarativa
basado en la utilizacin de funciones matemticas. El objetivo de la
programacin funcional es conseguir lenguajes expresivos y
matemticamente elegantes, en los que no sea necesario bajar al nivel
de la mquina para describir el proceso llevado a cabo por el programa.

UNIVERSIDAD NACIONAL PEDRO RUIZ GALLO


FICSA

Los programas escritos en un lenguaje funcional estn constituidos


nicamente por definiciones de funciones, entendiendo stas no como
subprogramas clsicos de un lenguaje imperativo (pues la programacin
funcional es declarativa), sino como funciones puramente matemticas,
en las que se verifican ciertas propiedades como la transparencia
referencial (el significado de una expresin depende nicamente del
significado de sus subexpresiones), y por tanto, la carencia total de
efectos laterales.
Otras caractersticas propias de estos lenguajes son la no existencia de
asignaciones de variables y la falta de construcciones estructuradas
como la secuencia o la iteracin (lo que obliga en la prctica a que todas
las repeticiones de instrucciones se lleven a cabo por medio de funciones
recursivas).
Existen dos grandes categoras de lenguajes funcionales: los funcionales
puros y los hbridos. La diferencia entre ambos estriba en que los
lenguajes funcionales hbridos son menos dogmticos que los puros, al
permitir conceptos tomados de los lenguajes imperativos, como las
secuencias de instrucciones o la asignacin de variables. En contraste,
los lenguajes funcionales puros tienen una mayor potencia expresiva,
conservando a la vez su transparencia referencial, algo que no se cumple
siempre con un lenguaje hbrido.
5.7PROGRAMACIN ORIENTADA A BASES DE DATOS
5.8Las bases de datos son programas que administran informacin y hacen
ms ordenada la informacin, aparte de hacer la fcil de buscar y por
supuesto de encontrar.
Las caractersticas de las bases de datos pueden ser ventajosas o
desventajosas: pueden ayudar a almacenar, organizar, recuperar,
comunicar y manejar informacin en formas que seran imposibles sin las
computadoras, pero tambin afecta de alguna manera ya que existen
enormes cantidades de informacin en bases de datos de las que no se
tiene control del acceso.
Las bases de datos tienen muchos usos: facilitan el almacenamiento de
grandes cantidades de informacin; permiten la recuperacin rpida y
flexible de informacin, con ellas se puede organizar y reorganizar la
informacin, as como imprimirla o distribuirla en formas diversas.
Es claro que los lenguajes orientados a bases de datos son declarativos y
no imperativos, pues el problema es "qu" se quiere hacer o "qu" se
necesita buscar y encontrar en la base de datos, y no se enfatiza el
"cmo".
Una base de datos tambin se puede definir como un banco de datos o
conjunto de datos que pertenecen al mismo contexto, almacenados
sistemticamente para su posterior uso. En este sentido, una biblioteca
puede considerarse una base de datos compuesta en su mayora por
documentos y textos impresos en papel e indexados para su consulta.
En la actualidad, y gracias al desarrollo tecnolgico de campos como la
informtica y la electrnica, la mayora de las bases de datos tienen

UNIVERSIDAD NACIONAL PEDRO RUIZ GALLO


FICSA

formato electrnico, que ofrece un amplio rango de soluciones al


problema de almacenar datos.
Los sistemas gestores de bases de datos (SGBD) permiten almacenar y
posteriormente acceder a los datos de forma rpida y estructurada.
6. LENGUAJES DE PROGRAMACIN IMPERATIVOS
En ciencias de la computacin se llama lenguajes imperativos a aquellos en los
cuales se le ordena a la computadora cmo realizar una tarea siguiendo una
serie de pasos o instrucciones, por ejemplo:
Paso 1, solicitar nmero.
Paso 2, multiplicar nmero por dos.
Paso 3, imprimir resultado de la operacin.
Paso 4, etc,
El proceso anterior se puede realizar con un lenguaje imperativo como por
ejemplo BASIC, C, C++, Java, Clipper, Dbase, C#, PHP, Perl, etc.
Dentro de la programacin imperativa, se tiene un conjunto de instrucciones
que le indican al computador cmo realizar una tarea.
Los lenguajes imperativos se basan en comandos u rdenes que se le dan a la
computadora para que haga algo, con el fin de organizar o cambiar valores en
ciertas partes de la memoria.
La ejecucin de estos comandos se realiza, en la mayor parte de ellos,
secuencialmente, es decir, hasta que un comando no ha sido ejecutado no se
lee el siguiente.
Segn el dominio, o mejor dicho con el propsito que se utiliza el programa, se
puede hablar de lenguajes de dominio especfico y de dominio general.
6.1LENGUAJES IMPERATIVOS PROCEDURALES
En los lenguajes tradicionales o procedurales, es la aplicacin quien
controla qu porciones de cdigo se ejecuta, y la secuencia en que este
se ejecuta. La ejecucin de la aplicacin se inicia con la primera lnea de
cdigo, y sigue una ruta predefinida a travs de la aplicacin, llamando
procedimientos segn sea necesario.
Los lenguajes procedurales estn fundamentados en la utilizacin de
variables para almacenar valores y en la realizacin de operaciones con
los datos almacenados. Algunos ejemplos son: FORTRAN, PASCAL, C, ADA,
ALGOL,
En este tipo de lenguajes, la arquitectura consta de una secuencia de
celdas, llamadas memoria, en las cuales se pueden guardar en forma
codificada, lo mismo datos que instrucciones; y de un procesador, el cual
es capaz de ejecutar de manera secuencial una serie de operaciones,
principalmente aritmticas y booleanas, llamadas comandos. En general,
un lenguaje procedural ofrece al programador conceptos que se traducen
de forma natural al modelo de la mquina. El programador tiene que
traducir la solucin abstracta del problema a trminos muy primitivos,
cercanos a la mquina.
Con un lenguaje procedural el usuario (normalmente ser un
programador) especifica qu datos se necesitan y cmo obtenerlos. Esto
quiere decir que el usuario debe especificar todas las operaciones de
acceso a datos llamando a los procedimientos necesarios para obtener la

UNIVERSIDAD NACIONAL PEDRO RUIZ GALLO


FICSA

informacin requerida. Estos lenguajes acceden a un registro, lo procesan


y basndose en los resultados obtenidos, acceden a otro registro, que
tambin deben procesar. As se va accediendo a registros y se van
procesando hasta que se obtienen los datos deseados. Las sentencias de
un lenguaje procedural deben estar embebidas en un lenguaje de alto
nivel, ya que se necesitan sus estructuras (bucles, condicionales, etc.)
para obtener y procesar cada registro individual.
6.2ALGUNOS LENGUAJES IMPERATIVOS
6.3Algunos lenguajes de programacin imperativos que se pueden
mencionar son:
BASIC
C
C++
Java
C#
PHP
Perl
7. DIFERENCIA ENTRE LENGUAJES DECLARATIVOS E IMPERATIVOS
En los lenguajes declarativos las sentencias que se utilizan lo que hacen es
describir el problema que se quiere solucionar, pero no las instrucciones
necesarias para solucionarlo. Esto ltimo se realizar mediante mecanismos
internos de inferencia de informacin a partir de la descripcin realizada.
Los lenguajes imperativos describen paso a paso un conjunto de instrucciones
que deben ejecutarse para variar el estado un programa y hallar la solucin, es
decir, un algoritmo en el que se describen los pasos necesarios para solucionar
un problema.
8.

LENGUAJES DE PROGRAMACIN ORIENTADOS A OBJETOS


En la Programacin Orientada a Objetos (POO u OOP segn siglas en ingls) se
definen los programas en trminos de "clases de objetos", objetos que son
entidades que combinan estado (es decir, datos) comportamiento (esto es,
procedimientos o mtodos) e identidad (propiedad del objeto que lo diferencia
del resto). La programacin orientada a objetos expresa un programa como un
conjunto de estos objetos, que colaboran entre ellos para realizar tareas. Esto
permite hacer los programas mdulos ms fciles de escribir, mantener y
reutilizar.
De esta forma, un objeto contiene toda la informacin, (los denominados
atributos) que permite definirlo e identificarlo frente a otros objetos
pertenecientes a otras clases (e incluso entre objetos de la misma clase, al
poder tener valores bien diferenciados en sus atributos). A su vez, dispone de
mecanismos de interaccin (los llamados mtodos) que favorecen la
comunicacin entre objetos (de una misma clase o de distintas), y en
consecuencia, el cambio de estado en los propios objetos. Esta caracterstica
lleva a tratarlos como unidades indivisibles, en las que no se separan (ni deben
separarse) informacin (datos) y procesamiento (mtodos).
Dada esta propiedad de conjunto de una clase de objetos, que al contar con una
serie de atributos definitorios, requiere de unos mtodos para poder tratarlos (lo

UNIVERSIDAD NACIONAL PEDRO RUIZ GALLO


FICSA

que hace que ambos conceptos estn ntimamente entrelazados), el


programador debe pensar indistintamente en ambos trminos, ya que no debe
nunca separar o dar mayor importancia a los atributos a favor de los mtodos,
ni viceversa. Hacerlo puede llevar al programador a seguir el hbito errneo de
crear clases contenedoras de informacin por un lado y clases con mtodos que
manejen esa informacin por otro (llegando a una programacin estructurada
camuflada en un lenguaje de programacin orientada a objetos).
Esto difiere de los lenguajes imperativos tradicionales, en los que los datos y los
procedimientos estn separados y sin relacin, ya que lo nico que se busca es
el procesamiento de unos datos y los procedimientos estn separados y sin
relacin, ya que lo nico que se busca es el procesamiento de unos datos de
entrada para obtener otros de salida. La programacin estructurada anima al
programador a pensar sobre todo en trminos de procedimientos o funciones, y
en segundo lugar en las estructuras de datos que esos procedimientos
manejan. Los programadores de lenguajes imperativos escriben funciones y
despus les pasan los datos. Los programadores que emplean lenguajes
orientados a objetos definen objetos con datos y mtodos y despus envan
mensajes a los objetos diciendo que realicen esos mtodos por s mismos.
Un objeto se puede definir como un grupo de procedimientos que comparten un
estado. Se define al conjunto de datos como "estado", y "mtodos" como el
conjunto de procedimientos que pueden alterar ese estado. Un programa
orientado a objetos es un mtodo de implementacin en el que los programas
estn organizados como colecciones de objetos, donde cada uno es una
instancia de alguna clase, y donde todas las clases son miembros de una
jerarqua de clases conectadas por relaciones de herencia. Este tipo de
lenguajes son muy recientes en comparacin a los primeros lenguajes de
programacin que aparecieron.
8.1CONCEPTOS BSICOS DE LA PROGRAMACIN ORIENTADA A OBJETOS
La programacin orientada a objetos es una nueva forma de programar
que trata de encontrar la solucin a problemas de una forma que ofrece
muchas ventajas y facilidades que no se tenan anteriormente. Introduce
nuevos conceptos, que superan y amplan conceptos antiguos ya
conocidos. Entro ellos destacan los siguientes:
OBJETO: entidad provista de un conjunto de propiedades o atributos
(datos) y de comportamiento o funcionalidad ("mtodos"). Corresponden
a los objetos reales del mundo que nos rodea, o a objetos internos del
sistema (del programa).
CLASE: definiciones de las propiedades y comportamiento de un tipo de
objeto concreto. La instanciacin es la lectura de estas definiciones y la
creacin de un objeto a partir de ellas. Una clase es una coleccin de
objetos similares o la implementacin, declaracin o definicin de un tipo
de objeto. Cada vez que se construye un objeto de una clase se crea una
instancia de esa clase. Por ejemplo en Visual Basic, se tiene la clase
Form, y se pueden crear instancias de esa clase al tener Form1, Form2,
etc. As se est creando una instancia de la clase Form.
MTODO: algoritmo asociado a un objeto (o a una clase de objetos), cuya
ejecucin se desencadena tras la recepcin de un "mensaje". Desde el

UNIVERSIDAD NACIONAL PEDRO RUIZ GALLO


FICSA

punto de vista del comportamiento, es lo que el objeto puede hacer. Un


mtodo puede producir un cambio en lar propiedades del objeto, o la
generacin de un "evento" con un nuevo mensaje para otro objeto del
sistema.
EVENTO: un suceso en el sistema (tal como una interaccin del usuario
con la mquina, o un mensaje enviado por un objeto). El sistema maneja
el evento enviando el mensaje adecuado al objeto pertinente.
MENSAJE: una comunicacin dirigida a un objeto, que le ordena que
ejecute uno de sus mtodos con ciertos parmetros asociados al evento
que lo gener.
PROPIEDAD O ATRIBUTO: contenedor de un tipo de datos asociados a un
objeto (o a una clase de objetos), que hace los datos visibles desde fuera
del objeto, y cuyo valor puede ser alterado por la ejecucin de algn
mtodo.
ESTADO INTERNO: es una propiedad invisible de los objetos, que puede
ser nicamente accedida y alterada por un mtodo del objeto, y que se
utiliza para indicar distintas situaciones posibles para el objeto (o clase
de objetos).
En comparacin con un lenguaje imperativo, una "variable no es ms que
un contenedor interno del atributo del objeto o de un estado interno, as
como la "funcin" es un procedimiento interno del mtodo del objeto.
8.2CARACTERSTICAS DE LA PROGRAMACIN ORIENTADA A OBJETOS
Las caractersticas ms importantes de la programacin orientada a
objetos son las siguientes:
ABSTRACCIN: Cada objeto en el sistema sirve como modelo de un
"agente" abstracto que puede realizar trabajo, informar y cambiar su
estado, y "comunicarse" con otros objetos en el sistema sin revelar cmo
se implementan estas caractersticas. Los procesos, las funciones o los
mtodos pueden tambin ser abstrados y cuando lo estn, una variedad
de tcnicas son requeridas para ampliar una abstraccin.
ENCAPSULAMIENTO: tambin llamado "ocultacin de la informacin".
Cada objeto est aislado del exterior, es un mdulo natural, y cada tipo
de objeto expone una interfaz a otros objetos que especfica cmo
pueden interactuar con los objetos de la clase. El aislamiento protege a
las propiedades de un objeto contra su modificacin por quien no tenga
derecho a acceder a ellas, solamente los propios mtodos internos del
objeto pueden acceder a su estado. Esto asegura que otros objetos no
pueden cambiar el estado interno de un objeto de maneras inesperadas,
eliminando efectos secundarios e interacciones inesperadas. Algunos
lenguajes relajan esto, permitiendo un acceso directo a los datos internos
del objeto de una manera controlada y limitando el grado de abstraccin.
La aplicacin entera se reduce a un agregado o rompecabezas de
objetos. Esta caracterstica o propiedad permite por tanto ejecutar la
informacin al resto de los objetos, impidiendo as accesos incorrectos o
conflictos.
POLIMORFISMO: comportamientos diferentes, asociados a objetos
distintos, pueden compartir el mismo nombre, al llamarlos por ese

UNIVERSIDAD NACIONAL PEDRO RUIZ GALLO


FICSA

nombre se utilizar el comportamiento correspondiente al objeto que se


est usando. O dicho de otro modo, las referencias y las colecciones de
objetos pueden contener objetos de diferentes tipos, y la invocacin de
un comportamiento en una referencia producir el comportamiento
correcto para el tipo real del objeto referenciado. Por ejemplo en Visual
Basic, el polimorfismo se da al tener diferentes tipos de objetos (Form,
Label, etc.)
HERENCIA: las clases no estn aisladas, sino que se relacionan entre s,
formando una jerarqua de clasificacin. Los objetos heredan las
propiedades y el comportamiento de todas las clases a las que
pertenecen. La herencia organiza y facilita el polimorfismo y el
encapsulamiento permitiendo a los objetos ser definidos y creados como
tipos especializados de objetos preexistentes. Estos pueden compartir (y
extender) su comportamiento sin tener que reimplementar su
comportamiento. Esto suele hacerse habitualmente agrupando los
objetos en clases y estas en rboles o enrejados que reflejan un
comportamiento comn. Cuando un objeto pertenece a ms de una clase
se dice que hay herencia mltiple; esta caracterstica no est soportada
por algunos lenguajes (como Java). Con esta propiedad, los objetos
heredan comportamientos dentro de una jerarqua de clases.
8.3PRINCIPALES DIFERENCIAS ENTRE LA PROGRAMACIN IMPERATIVA Y LA
PROGRAMACIN ORIENTADA A OBJETOS
La programacin orientada a objetos es ms moderna, es una evolucin
de la programacin imperativa plasmada en el diseo de una familia de
lenguajes conceptos que existan previamente, con algunos nuevos.
La programacin orientada a objetos se basa en lenguajes que soportan
sintctica y semnticamente la unin entre los tipos abstractos de datos
y sus operaciones (a esta unin se la suele llamar clase).
La programacin orientada a objetos incorpora en su entorno de
ejecucin mecanismos tales como el polimorfismo y el envo de mensajes
entre objetos.
8.4ALGUNOS LENGUAJES ORIENTADOS A OBJETOS
Entre los lenguajes orientados a objetos ms importantes que se pueden
mencionar, aparecen los siguientes:
Ada
C++
C#
VB.NET
Clarion
Delphi
Eiffel
Jave

B. EJEMPLO DE APLICACIN

UNIVERSIDAD NACIONAL PEDRO RUIZ GALLO


FICSA

Nos piden hallar una aproximacin a la raz exacta de la ecuacin:

ln ( X ) + X=0 , con una tolerancia de

10

ANALISIS:
Recoleccin de datos:
- Aplicacin de logaritmos
- Solucin dentro de los nmeros reales
Campo de accin:
- Algebra
DISEO:
Secuencia de pasos:
- Aplicamos el mtodo de Newton:
.

P n1+ P n1.
.
.
n1ln ( P n1+1)

P n..=P
n
0
1
2
3

Pn
0.5
0.564382
0.5671389865
0.56714329

TOLERANCIA

0.000004<0.0
01

COMPROBACIN:
Escogemos la solucin dada que es de 0.56714329, ingresamos en la ecuacin
original y finalmente comprobamos si el resultado es de esa tolerancia.
C. CONCLUSIN
Los lenguajes de programacin no son simplemente un detalle ms del amplio
mundo de la informtica, y por lo tanto deben ser vistos como el fundamento y
la base del desarrollo y avance de la computacin.
Estudiar los conceptos bsicos, clasificacin, diferencias, propiedades y
funcionamiento de los lenguajes de programacin es elemental para cualquier
estudiante o profesional dedicado a la computacin, pues de esa manera se
logra tener una perspectiva global y mucho ms amplia que tendr mucho peso
al estar bien documentados y al conocer qu son, cmo se clasifican y de qu
manera trabajan los lenguajes de programacin.
Luego del desarrollo de esta investigacin resulta fcil comprender los tipos y la
clasificacin que se les da a los lenguajes de programacin en base a sus
funcionalidades y caractersticas.
Este estudio tambin permite desarrollar un sentido crtico de los lenguajes de
programacin, de forma que 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 que goza cierto lenguaje, sino
que el programador est capacitado para dar razones contundentes y certeras

UNIVERSIDAD NACIONAL PEDRO RUIZ GALLO


FICSA

del por qu un lenguaje es mejor que otro para determinada tarea, qu ventajas
tiene uno respecto del otro, y que as tambin el programador sea capaz de
seleccionar el lenguaje que ms le convenga para la resolucin de un problema
determinado.
Esta investigacin servir para evaluar correctamente los lenguajes de
programacin, determinando las ventajas y desventajas que cada uno de ellos
presenta.

Você também pode gostar