Vous êtes sur la page 1sur 8

Lenguaje de programacin

Captura de la microcomputadora Commodore PET-32 mostrando


un programa en el lenguaje de programacin BASIC, bajo
el emulador VICE en una distribucin GNU/Linux.
Un ejemplo de cdigo fuente escrito en el lenguaje de programacin Java,
que imprimir el mensaje "Hello World!" a la salida estndar cuando
es compilado y ejecutado
Un lenguaje de programacin es un lenguaje formal diseado para
expresar procesos que pueden ser llevados a cabo por mquinas como
las computadoras.
Pueden usarse para crear programas que controlen el comportamiento fsico
y lgico de una mquina, para expresaralgoritmos con precisin, o como
modo de comunicacin humana. 1
Est formado por un conjunto de smbolos y
reglas sintcticas y semnticas que definen su estructura y el significado de
sus elementos y expresiones. Al proceso por el cual se escribe, se prueba, se
depura, se compila (de ser necesario) y se mantiene el cdigo fuente de
un programa informtico se le llama programacin.
Tambin la palabra programacin se define como el proceso de creacin de
un programa de computadora, mediante la aplicacin de procedimientos
lgicos, a travs de los siguientes pasos:
El desarrollo lgico del programa para resolver un problema en particular.
Escritura de la lgica del programa empleando un lenguaje de programacin
especfico (codificacin del programa).
Ensamblaje o compilacin del programa hasta convertirlo en lenguaje de
mquina.
Prueba y depuracin del programa.
Desarrollo de la documentacin.
Existe un error comn que trata por sinnimos los trminos 'lenguaje de
programacin' y 'lenguaje informtico'. Los lenguajes informticos engloban a
los lenguajes de programacin y a otros ms, como por
ejemplo HTML (lenguaje para el marcado depginas web que no es
propiamente un lenguaje de programacin, sino un conjunto de
instrucciones que permiten estructurar el contenido de los documentos).
Permite especificar de manera precisa sobre qu datos debe operar una
computadora, cmo deben ser almacenados o transmitidos y qu acciones
debe tomar bajo una variada gama de circunstancias. Todo esto, a travs de
un lenguaje que intenta estar relativamente prximo al lenguaje humano o
natural. Una caracterstica relevante de los lenguajes de programacin es
precisamente que ms de un programador pueda usar un conjunto comn de
instrucciones que sean comprendidas entre ellos para realizar la construccin
de un programa de forma colaborativa.
Historia[editar]
Cdigo Fortran en una tarjeta perforada, mostrando el uso especializado de
las columnas 1-5, 6 y 73-80.
Para que la computadora entienda nuestras instrucciones debe usarse un
lenguaje especfico conocido como cdigo mquina, el cual la mquina
comprende fcilmente, pero que lo hace excesivamente complicado para las
personas. De hecho slo consiste en cadenas extensas de nmeros 0 y 1.
Para facilitar el trabajo, los primeros operadores de computadoras decidieron
hacer un traductor para reemplazar los 0 y 1 por palabras o abstraccin de
palabras y letras provenientes del ingls; ste se conoce como lenguaje
ensamblador. Por ejemplo, para sumar se usa la letra A de la palabra
inglesa add (sumar). El lenguaje ensamblador sigue la misma estructura del
lenguaje mquina, pero las letras y palabras son ms fciles de recordar y
entender que los nmeros.
La necesidad de recordar secuencias de programacin para las acciones
usuales llev a denominarlas con nombres fciles de memorizar y
asociar: ADD (sumar), SUB (restar), MUL (multiplicar), CALL (ejecutar
subrutina), etc. A esta secuencia de posiciones se le denomin
"instrucciones", y a este conjunto de instrucciones se le llam lenguaje
ensamblador. Posteriormente aparecieron diferentes lenguajes de
programacin, los cuales reciben su denominacin porque tienen una
estructura sintctica similar a los lenguajes escritos por los humanos,
denominados tambin lenguajes de alto nivel.
La primera programadora de computadora conocida fue Ada Lovelace, hija
de Anabella Milbanke Byron y Lord Byron. Anabella introdujo en las
matemticas a Ada quien, despus de conocer a Charles Babbage, tradujo y
ampli una descripcin de su mquina analtica. Incluso aunque Babbage
nunca complet la construccin de cualquiera de sus mquinas, el trabajo que
Ada realiz con stas le hizo ganarse el ttulo de primera programadora de
computadoras del mundo. El nombre del lenguaje de programacin Adafue
escogido como homenaje a esta programadora.
A finales de 1953, John Backus someti una propuesta a sus superiores
en IBM para desarrollar una alternativa ms prctica al lenguaje
ensamblador para programar lacomputadora central IBM 704. El histrico
equipo Fortran de Backus consisti en los programadores Richard
Goldberg, Sheldon F. Best, Harlan
Herrick, Peter Sheridan, Roy Nutt,Robert
Nelson, Irving Ziller, Lois Haibt y David
Sayre.2
El primer manual para el
lenguaje Fortran apareci en octubre
de 1956, con el
primer compilador Fortran entregado en abril de 1957. Esto era un compilador
optimizado, porque los clientes eran reacios a usar un lenguaje de alto nivel a
menos que su compilador pudiera generar cdigo cuyo desempeo fuera
comparable al de un cdigo hecho a mano en lenguaje ensamblador.
En 1960, se cre COBOL, uno de los lenguajes usados an en la actualidad,
en informtica de gestin.
A medida que la complejidad de las tareas que realizaban las computadoras
aumentaba, se hizo necesario disponer de un mtodo ms eficiente para
programarlas. Entonces, se crearon los lenguajes de alto nivel, como lo
fue BASIC en las versiones introducidas en los microordenadores de la

dcada de 1980. Mientras que una tarea tan sencilla como sumar dos
nmeros puede necesitar varias instrucciones en lenguaje ensamblador, en
un lenguaje de alto nivel bastar una sola sentencia.
Elementos[editar]
Variables y vectores[editar]
Imagen tomada de Pauscal, lenguaje de programacin en espaol creado en
Argentina.
Las variables podran calificarse como contenedores de datos y por ello se
diferencian segn el tipo de dato que son capaces de almacenar. En la
mayora de lenguajes de programacin se requiere especificar un tipo de
variable concreto para guardar un dato concreto. Por ejemplo, en Java, si
deseamos guardar una cadena de texto deberemos especificar que la variable
es del tipo String. Por otra parte, en lenguajes como el PHPeste tipo de
especificacin de variables no es necesario. Adems, existen variables
compuestas por varias variables llamadas vectores. Un vector no es ms que
un conjunto de variables consecutivas en memoria y del mismo tipo
guardadas dentro de una variable contenedor. A continuacin, un listado con
los tipos de variables y vectores ms comunes:
Variables tipo Char: Estas variables contienen un nico carcter, es decir, una
letra, un signo o un nmero.
Variables tipo Int: Contienen un nmero entero.
Variables tipo float: Contienen un nmero decimal.
Variables tipo String: Contienen cadenas de texto, o lo que es lo mismo, es un
vector con varias variables del tipo Char.
Variables del tipo Boolean: Solo pueden contener un 0 o un 1. El cero es
considerado para muchos lenguajes como el literal "False", mientras que el 1
se considera "True".
Condicionantes[editar]
Los condicionantes son estructuras de cdigo que indican que, para que
cierta parte del programa se ejecute, deben cumplirse ciertas premisas; por
ejemplo: que dos valores sean iguales, que un
valor exista, que un valor sea mayor que otro...
Estos condicionantes por lo general solo se
ejecutan una vez a lo largo del programa. Los
condicionantes ms conocidos y empleados en
programacin son:
If: Indica una condicin para que se ejecute una
parte del programa.
Else if: Siempre va precedido de un "If" e indica
una condicin para que se ejecute una parte del
programa siempre que no cumpla la condicin del
if previo y si se cumpla con la que el "else if" especifique.
Else: Siempre precedido de "If" y en ocasiones de "Else If". Indica que debe
ejecutarse cuando no se cumplan las condiciones prvias.
Bucles[editar]
Los bucles son parientes cercanos de los condicionantes, pero ejecutan
constantemente un cdigo mientras se cumpla una determinada condicin.
Los ms frecuentes son:
For: Ejecuta un cdigo mientras una variable se encuentre entre 2
determinados parmetros.
While: Ejecuta un cdigo mientras que se cumpla la condicin que solicita.
Hay que decir que a pesar de que existan distintos tipos de bucles, ambos
son capaces de realizar exactamente las mismas funciones. El empleo de uno
u otro depende, por lo general, del gusto del programador.
Funciones[editar]
Las funciones se crearon para evitar tener que repetir constantemente
fragmentos de cdigo. Una funcin podra considerarse como una variable
que encierra cdigo dentro de si. Por lo tanto cuando accedemos a dicha
variable (la funcin) en realidad lo que estamos haciendo es ordenar al
programa que ejecute un determinado cdigo predefinido anteriormente.
Todos los lenguajes de programacin tienen algunos elementos de formacin
primitivos para la descripcin de los datos y de los procesos o
transformaciones aplicadas a estos datos (tal como la suma de dos nmeros
o la seleccin de un elemento que forma parte de una coleccin). Estos
elementos primitivos son definidos por reglas sintcticas y semnticas que
describen su estructura y significado respectivamente.
Sintaxis[editar]
Con frecuencia se resaltan los elementos de la sintaxis con colores diferentes
para facilitar su lectura. Este ejemplo est escrito en Python.
A la forma visible de un lenguaje de programacin se le conoce como sintaxis.
La mayora de los lenguajes de programacin son puramente textuales, es
decir, utilizan secuencias de texto que incluyen palabras, nmeros y
puntuacin, de manera similar a los lenguajes naturales escritos. Por otra
parte, hay algunos lenguajes de programacin que son ms grficos en su
naturaleza, utilizando relaciones visuales entre smbolos para especificar un
programa.
La sintaxis de un lenguaje de programacin describe las combinaciones
posibles de los smbolos que forman un programa sintcticamente correcto. El
significado que se le da a una combinacin de smbolos es manejado por su
semntica (ya sea formal o como parte del cdigo duro de la referencia de
implementacin). Dado que la mayora de los lenguajes son textuales, este
artculo trata de la sintaxis textual.
La sintaxis de los lenguajes de programacin es definida generalmente
utilizando una combinacin de expresiones regulares (para la estructura
lxica) y la Notacin de Backus-Naur (para la estructura gramtica). Este es
un ejemplo de una gramtica simple, tomada de Lisp:
expresin ::= tomo | lista
tomo ::= nmero | smbolo
nmero ::= [+-]? ['0'-'9']+
smbolo ::= ['A'-'Z'] ['a'-'z'].*
lista ::= '(' expresin* ')'
Con esta gramtica se especifica lo siguiente:
una expresin puede ser un tomo o una lista;

un tomo puede ser un nmero o un smbolo;


un nmero es una secuencia continua de uno o ms dgitos decimales,
precedido opcionalmente por un signo ms o un signo menos;
un smbolo es una letra seguida de cero o ms caracteres (excluyendo
espacios); y
una lista es un par de parntesis que abren y cierran, con cero o ms
expresiones en medio.
Algunos ejemplos de secuencias bien formadas de acuerdo a esta gramtica:
' 12345 ', ' () ', ' (a b c232 (1)) '
No todos los programas sintcticamente correctos son semnticamente
correctos. Muchos programas sintcticamente correctos tienen
inconsistencias con las reglas del lenguaje; y pueden (dependiendo de la
especificacin del lenguaje y la solidez de la implementacin) resultar en un
error de traduccin o ejecucin. En algunos casos, tales programas pueden
exhibir un comportamiento indefinido. Adems, incluso cuando un programa
est bien definido dentro de un lenguaje, todava puede tener un significado
que no es el que la persona que lo escribi estaba tratando de construir.
Usando el lenguaje natural, por ejemplo, puede no ser posible asignarle
significado a una oracin gramaticalmente vlida o la oracin puede ser falsa:
"Las ideas verdes y descoloridas duermen furiosamente" es una oracin bien
formada gramaticalmente pero no tiene significado comnmente aceptado.
"Juan es un soltero casado" tambin est bien formada gramaticalmente pero
expresa un significado que no puede ser verdadero.
El siguiente fragmento en el lenguaje C es sintcticamente correcto, pero
ejecuta una operacin que no est definida semnticamente (dado que p es
un apuntador nulo, las operaciones p->real y p->im no tienen ningn
significado):
complex *p = NULL;
complex abs_p = sqrt (p->real * p->real + p->im * p->im);
Si la declaracin de tipo de la primera lnea fuera omitida, el programa
disparara un error de compilacin, pues la variable "p" no estara definida.
Pero el programa sera sintcticamente correcto todava, dado que las
declaraciones de tipo proveen informacin semntica solamente.
La gramtica necesaria para especificar un lenguaje de programacin puede
ser clasificada por su posicin en la Jerarqua de Chomsky. La sintaxis de la
mayora de los lenguajes de programacin puede ser especificada utilizando
una gramtica Tipo-2, es decir, son gramticas libres de contexto. Algunos
lenguajes, incluyendo a Perl y a Lisp, contienen construcciones que permiten
la ejecucin durante la fase de anlisis. Los lenguajes que permiten
construcciones que permiten al programador alterar el comportamiento de un
analizador hacen del anlisis de la sintaxis un problema sin decisin nica, y
generalmente oscurecen la separacin entre anlisis y ejecucin. En
contraste con el sistema de macros de Lisp y los bloques BEGIN de Perl, que
pueden tener clculos generales, las macros de C son meros reemplazos de
cadenas, y no requieren ejecucin de cdigo.
Semntica esttica[editar]
La semntica esttica define las restricciones sobre la estructura de los textos
vlidos que resulta imposible o muy difcil expresar mediante formalismos
sintcticos estndar. Para los lenguajes compilados, la semntica esttica
bsicamente incluye las reglas semnticas que se pueden verificar en el
momento de compilar. Por ejemplo el chequeo de que cada identificador sea
declarado antes de ser usado (en lenguajes que requieren tales
declaraciones) o que las etiquetas en cada brazo de una estructura case sean
distintas. Muchas restricciones importantes de este tipo, como la validacin de
que los identificadores sean usados en los contextos apropiados (por ejemplo
no sumar un entero al nombre de una funcin), o que las llamadas a
subrutinas tengan el nmero y tipo de parmetros adecuado, puede ser
implementadas definindolas como reglas en una lgica conocida como
sistema de tipos. Otras formas de anlisis estticos, como los anlisis de flujo
de datos, tambin pueden ser parte de la semntica esttica. Otros lenguajes
de programacin como Java y C# tienen un anlisis definido de asignaciones,
una forma de anlisis de flujo de datos, como parte de su semntica esttica.
Sistema de tipos[editar]
Artculo principal: Sistema de tipos
Un sistema de tipos define la manera en la cual un lenguaje de programacin
clasifica los valores y expresiones en tipos, cmo pueden ser manipulados
dichos tipos y cmo interactan. El objetivo de un sistema de tipos es verificar
y normalmente poner en vigor un cierto nivel de exactitud en programas
escritos en el lenguaje en cuestin, detectando ciertas operaciones invlidas.
Cualquier sistema de tipos decidible tiene sus ventajas y desventajas:
mientras por un lado rechaza muchos programas incorrectos, tambin prohbe
algunos programas correctos aunque poco comunes. Para poder minimizar
esta desventaja, algunos lenguajes incluyen lagunas de tipos, conversiones
explcitas no checadas que pueden ser usadas por el programador para
permitir explcitamente una operacin normalmente no permitida entre
diferentes tipos. En la mayora de los lenguajes con tipos, el sistema de tipos
es usado solamente para checar los tipos de los programas, pero varios
lenguajes, generalmente funcionales, llevan a cabo lo que se conoce como
inferencia de tipos, que le quita al programador la tarea de especificar los
tipos. Al diseo y estudio formal de los sistemas de tipos se le conoce
como teora de tipos.
Lenguajes tipados versus lenguajes no tipados[editar]
Se dice que un lenguaje tiene tipos si la especificacin de cada operacin
define tipos de datos para los cuales la operacin es aplicable, con la
implicacin de que no es aplicable a otros tipos. Por ejemplo, " este texto
entre comillas " es una cadena. En la mayora de los lenguajes de
programacin, dividir un nmero por una cadena no tiene ningn significado.
Por tanto, la mayora de los lenguajes de programacin modernos rechazaran
cualquier intento de ejecutar dicha operacin por parte de algn programa. En
algunos lenguajes, estas operaciones sin significado son detectadas cuando
el programa es compilado (validacin de tipos "esttica") y son rechazadas
por el compilador, mientras en otros son detectadas cuando el programa es
ejecutado (validacin de tipos "dinmica") y se genera una excepcin en
tiempo de ejecucin.

Un caso especial de lenguajes de tipo son los lenguajes de tipo sencillo. Estos
son con frecuencia lenguajes de marcado o de scripts, como REXX o SGML,
y solamente cuentan con un tipo de datos; comnmente cadenas de
caracteres que luego son usadas tanto para datos numricos como
simblicos.
En contraste, un lenguaje sin tipos, como la mayora de los lenguajes
ensambladores, permiten que cualquier operacin se aplique a cualquier dato,
que por lo general se consideran secuencias de bits de varias longitudes.
Lenguajes de alto nivel sin datos incluyen BCPL y algunas variedades
de Forth.
En la prctica, aunque pocos lenguajes son considerados con tipo desde el
punto de vista de la teora de tipos (es decir, que verifican o
rechazan todas las operaciones), la mayora de los lenguajes modernos
ofrecen algn grado de manejo de tipos. Si bien muchos lenguajes de
produccin proveen medios para brincarse o subvertir el sistema de tipos.
Tipos estticos versus tipos dinmicos[editar]
En lenguajes con tipos estticos se determina el tipo de todas las expresiones
antes de la ejecucin del programa (tpicamente al compilar). Por ejemplo, 1 y
(2+2) son expresiones enteras; no pueden ser pasadas a una funcin que
espera una cadena, ni pueden guardarse en una variable que est definida
como fecha.
Los lenguajes con tipos estticos pueden manejar tipos explcitos o
tipos inferidos. En el primer caso, el programador debe escribir los tipos en
determinadas posiciones textuales. En el segundo caso, el
compilador infiere los tipos de las expresiones y las declaraciones de acuerdo
al contexto. La mayora de los lenguajes populares con tipos estticos, tales
como C++, C# y Java, manejan tipos explcitos. Inferencia total de los tipos
suele asociarse con lenguajes menos populares, tales como Haskell y ML. Sin
embargo, muchos lenguajes de tipos explcitos permiten inferencias parciales
de tipo; tanto Java y C#, por ejemplo, infieren tipos en un nmero limitado de
casos.
Los lenguajes con tipos dinmicos determinan la validez de los tipos
involucrados en las operaciones durante la ejecucin del programa. En otras
palabras, los tipos estn asociados con valores en ejecucin en lugar
de expresiones textuales. Como en el caso de lenguajes con tipos inferidos,
los lenguajes con tipos dinmicos no requieren que el programador escriba
los tipos de las expresiones. Entre otras cosas, esto permite que una misma
variable se pueda asociar con valores de tipos distintos en diferentes
momentos de la ejecucin de un programa. Sin embargo, los errores de tipo
no pueden ser detectados automticamente hasta que se ejecuta el cdigo,
dificultando la depuracin de los programas, no obstante, en lenguajes con
tipos dinmicos se suele dejar de lado la depuracin en favor de tcnicas de
desarrollo como por ejemplo BDD yTDD. Ruby, Lisp, JavaScript y Python son
lenguajes con tipos dinmicos.
Tipos dbiles y tipos fuertes[editar]
Los lenguajes dbilmente tipados permiten que un valor de un tipo pueda ser
tratado como de otro tipo, por ejemplo una cadena puede ser operada como
un nmero. Esto puede ser til a veces, pero tambin puede permitir ciertos
tipos de fallas que no pueden ser detectadas durante la compilacin o a veces
ni siquiera durante la ejecucin.
Los lenguajes fuertemente tipados evitan que pase lo anterior. Cualquier
intento de llevar a cabo una operacin sobre el tipo equivocado dispara un
error. A los lenguajes con tipos fuertes se les suele llamar de tipos seguros.
Lenguajes con tipos dbiles como Perl y JavaScript permiten un gran nmero
de conversiones de tipo implcitas. Por ejemplo en JavaScript la expresin 2
* x convierte implcitamente x a un nmero, y esta conversin es exitosa
inclusive cuando x es null , undefined , un Array o una cadena de letras.
Estas conversiones implcitas son tiles con frecuencia, pero tambin pueden
ocultar errores de programacin.
Las caractersticas de estticos y fuertes son ahora generalmente
consideradas conceptos ortogonales, pero su trato en diferentes textos varia.
Algunos utilizan el trmino de tipos fuertes para referirse a tipos fuertemente
estticos o, para aumentar la confusin, simplemente como equivalencia
de tipos estticos. De tal manera que C ha sido llamado tanto lenguaje de
tipos fuertes como lenguaje de tipos estticos dbiles.
Implementacin[editar]
Cdigo fuente de un programa escrito en ellenguaje de programacin Java.
La implementacin de un lenguaje es la que provee una manera de que se
ejecute un programa para una determinada combinacin
de software y hardware. Existen bsicamente dos maneras de implementar un
lenguaje: compilacin einterpretacin.
Compilacin: es el proceso que traduce un programa escrito en un lenguaje
de programacin a otro lenguaje de programacin, generando un programa
equivalente que la mquina ser capaz interpretar. Los programas traductores
que pueden realizar esta operacin se llaman compiladores. stos, como los
programas ensambladores avanzados, pueden generar muchas lneas de
cdigo de mquina por cada proposicin del programa fuente.
Interpretacin: es una asignacin de significados a las frmulas bien
formadas de un lenguaje formal. Como los lenguajes formales pueden
definirse en trminos puramente sintcticos, sus frmulas bien formadas
pueden no ser ms quecadenas de smbolos sin ningn significado. Una
interpretacin otorga significado a esas frmulas.
Se puede tambin utilizar una alternativa para traducir lenguajes de alto nivel.
En lugar de traducir el programa fuente y grabar en forma permanente el
cdigo objeto que se produce durante la compilacin para utilizarlo en una
ejecucin 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 procesamiento de los datos. El cdigo objeto no se graba para
utilizarlo posteriormente.

La siguiente vez que se utilice una instruccin, se la deber interpretar otra


vez y traducir a lenguaje mquina. Por ejemplo, durante el procesamiento
repetitivo de los pasos de un ciclo o bucle, cada instruccin del bucle tendr
que volver a ser interpretada en cada ejecucin repetida del 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 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 ejecucin del cdigo.
La mayora de lenguajes de alto nivel permiten la programacin
multipropsito, aunque muchos de ellos fueron diseados para permitir
programacin dedicada, como lo fue elPascal con las matemticas en su
comienzo. Tambin se han implementado lenguajes educativos infantiles
como Logo mediante una serie de simples instrucciones. En la actualidad son
muy populares algunos lenguajes especialmente indicados para aplicaciones
web, como Perl, PHP, Ruby, Python o JavaScript.
Tcnica[editar]
Libros sobre diversos lenguajes de programacin.
Para escribir programas que proporcionen los mejores resultados, cabe tener
en cuenta una serie de detalles.
Correccin. Un programa es correcto si hace lo que debe hacer tal y como se
estableci en las fases previas a su desarrollo. Para determinar si un
programa hace lo que debe, es muy importante especificar claramente qu
debe hacer el programa antes de desarrollarlo y, una vez acabado,
compararlo con lo que realmente hace.
Claridad. Es muy importante que el programa sea lo ms claro y legible
posible, para facilitar as su desarrollo y posterior mantenimiento. Al elaborar
un programa se debe intentar que su estructura sea sencilla y coherente, as
como cuidar el estilo en la edicin; de esta forma se ve facilitado el trabajo
del programador, tanto en la fase de creacin como en las fases posteriores
de correccin de errores, ampliaciones, modificaciones, etc. Fases que
pueden ser realizadas incluso por otro programador, con lo cual la claridad es
an ms necesaria para que otros programadores puedan continuar el trabajo
fcilmente. Algunos programadores llegan incluso a utilizar Arte ASCII para
delimitar secciones de cdigo. Otros, por diversin o para impedir un anlisis
cmodo a otros programadores, recurren al uso de cdigo ofuscado.
Eficiencia. Se trata de que el programa, adems de realizar aquello para lo
que fue creado (es decir, que sea correcto), lo haga gestionando de la mejor
forma posible los recursos que utiliza. Normalmente, al hablar de eficiencia de
un programa, se suele hacer referencia al tiempo que tarda en realizar la
tarea para la que ha sido creado y a la cantidad de memoria que necesita,
pero hay otros recursos que tambin pueden ser de consideracin al obtener
la eficiencia de un programa, dependiendo de su naturaleza (espacio en disco
que utiliza, trfico de red que genera, etc.).
Portabilidad. Un programa es portable cuando tiene la capacidad de poder
ejecutarse en una plataforma, ya sea hardware o software, diferente a aquella
en la que se elabor. La portabilidad es una caracterstica muy deseable para
un programa, ya que permite, por ejemplo, a un programa que se ha
desarrollado para sistemas GNU/Linuxejecutarse tambin en la familia
de sistemas operativos Windows. Esto permite que el programa pueda llegar
a ms usuarios ms fcilmente.
Paradigmas[editar]
Los programas se pueden clasificar por el paradigma del lenguaje que se use
para producirlos. Los principales paradigmas
son: imperativos, declarativos y orientacin a objetos.
Los programas que usan un lenguaje imperativo especifican un algoritmo,
usan declaraciones, expresiones y sentencias. 3 Una declaracin asocia un
nombre de variable con un tipo de dato, por ejemplo: var x: integer; . Una
expresin contiene un valor, por ejemplo: 2 + 2 contiene el valor 4.
Finalmente, una sentencia debe asignar una expresin a una variable o usar
el valor de una variable para alterar el flujo de un programa, por ejemplo: x :=
2 + 2; if x == 4 then haz_algo(); . Una crtica comn en los lenguajes
imperativos es el efecto de las sentencias de asignacin sobre una clase de
variables llamadas "no locales". 4
Los programas que usan un lenguaje declarativo especifican las propiedades
que la salida debe conocer y no especifica cualquier detalle de
implementacin. Dos amplias categoras de lenguajes declarativos son
los lenguajes funcionales y los lenguajes lgicos. Los lenguajes funcionales
no permiten asignaciones de variables no locales, as, se hacen ms fcil, por
ejemplo, programas como funciones matemticas. 4 El principio detrs de los
lenguajes lgicos es definir el problema que se quiere resolver (el objetivo) y
dejar los detalles de la solucin al sistema. 5 El objetivo es definido dando una
lista de sub-objetivos. Cada sub-objetivo tambin se define dando una lista de
sus sub-objetivos, etc. Si al tratar de buscar una solucin, una ruta de subobjetivos falla, entonces tal sub-objetivo se descarta y sistemticamente se
prueba otra ruta.
La forma en la cual se programa puede ser por medio de texto o de forma
visual. En la programacin visual los elementos son manipulados
grficamente en vez de especificarse por medio de texto.
LENGUAJES DE PROGRAMACION
Vamos a explicar los Lenguajes de Programacin para que entendis de
forma fcil y sencilla qu son y para qu sirven. Os diremos qu tipos de
lenguajes de programacin existen y para qu sirven fundamentalmente,
como siempre, muy fcil para que podis haceros una idea de base de su
utilidad, que es mucha.
Para que te hagas una idea, todas las aplicaciones (apps) que tienes en tu
mvil y los programas informticos que tienes en tu ordenador estn
diseados con diferentes lenguajes de programacin, pero sto te lo
explicaremos ms adelante.

Todos los das estamos continuamente comunicndonos con mquinas


(ordenadores, mviles, tablets, etc) y todos ellos tienen almacenados
lenguajes de programacin para poder utilizarlos.
QUE SON LOS LENGUAJES DE PROGRAMACIN?
Para empezar a explicar qu son los lenguajes de programacin
empezaremos dando por hecho que entendis lo que es un lenguaje
cualquiera, que no es ms que un sistema estructurado de comunicacin,
como por ejemplo el lenguaje humano que nos permite comunicarnos unos
con otros por medio de signos (palabras, sonidos, gestosetc). Pues bien,
entendiendo esto es muy fcil entender qu es un lenguaje de programacin.
Un lenguaje de programacin no es ms que un sistema estructurado y
diseado principalmente para que las mquinas y computadoras se entiendan
entre s y con nosotros, los humanos. Contiene un conjunto de acciones
consecutivas que el ordenador debe ejecutar.
Estos lenguajes de programacin usan diferentes normas o bases y se
utilizan para controlar cmo se comporta una mquina (por ejemplo, un
ordenador), tambin pueden usarse para crear programas informticos, etc.
El trmino programacin se define como un proceso por medio del cual se
disea, se codifica, se escribe, se prueba y se depura un cdigo bsico para
las computadoras. Ese cdigo es el que se llama cdigo fuente que
caracteriza a cada lenguaje de programacin. Cada lenguaje de programacin
tiene un cdigo fuente caracterstico y nico que est diseado para una
funcin o un propsito determinado y que nos sirven para que una mquina o
computador se comporte de una manera deseada.
QU TIPOS DE LENGUAJE DE PROGRAMACIN HAY Y PARA QUE
SIRVEN?
En la actualidad hay ms de 100 lenguajes de programacin diferentes. No
vamos a definir todos los lenguajes de programacin que existen porque son
muchos pero s os hablaremos de los ms importantes y para qu se utilizan.
Un ordenador no entiende un lenguaje como el que utilizan los humanos,
sino que el lenguaje que entiende se llama lenguaje binario o cdigo
binario o cdigo mquina que consiste en ceros y unos bsicamente, es
decir, una mquina slo utiliza los nmeros 0 y 1 para codificar cualquier
accin a tomar. Si quieres conocer mejor este sistema de numeracin te
recomendamos este enlace: Sistema Binario
Se clasifican en dos tipos:
Los Lenguajes de Programacin de Bajo Nivel: que son aquellos utilizados
fundamentalmente para controlar el hardware del ordenador y dependen
totalmente de la mquina y no se pueden utilizar en otras mquinas. Estn
orientados exclusivamente para la mquina Estos lenguajes son los que
ordenan a la mquina operaciones fundamentales para que pueda funcionar.
Utiliza bsicamente ceros, unos y abreviaturas de letras. Estos lenguajes
tambin se llaman de cdigo mquina. Son los ms complicados, pero solo
los usan prcticamente los creadores de las mquinas. Con este tipo de
lenguajes programan la asignacin y liberacin de memoria, el uso de
punteros, el poder usar paso por valor y por referencia, la creacin de tipos de
datos, etc.
Los Lenguajes de Programacin de Alto Nivel: Estos
lenguajes son ms parecidos al lenguaje natural humano
y no dependen de la mquina y sirven fundamentalmente
para crear programas informticos que solucionan
diferentes problemas. Son los ms usados por los
programadores y por todo del mundo que realiza
programas informticos.
La diferencia fundamental se puede explicar con el
siguiente ejemplo:
En un lenguaje de alto nivel slo tengo que poner sqt(x), que sera una
funcin predeterminada, calcular el cuadrado de x.
Si fuera de bajo nivel, yo mismo tendra que crear la funcin sabiendo como
funciona el cuadrado de un nmero:
cuadrado(x) = x * x
Como vemos para aprender a programar con un lenguaje de alto nivel
debemos conocer el propio lenguaje que utiliza y todos sus comandos, en el
ejemplo saber que sqt realiza el cuadrado de un nmero.
Para no extendernos mucho en esto que es bastante amplio, pasaremos a
explicaros algunos de los lenguajes de programacin ms usados en las
mquinas que ms utilizamos.
LENGUAJES DE PROGRAMACIN MS USADOS
Lenguaje de Programacin HTML: Este lenguaje es con el que se crean
las pginas web, por ejemplo, que bsicamente es un conjunto de etiquetas
que sirven para definir el texto y otros elementos que puedes ver en las
pginas web. HTML significa HyperText Markup Lenguaje (lenguaje de
marcas de hipertexto) y es muy fcil de aprender. Luego ya depende de si
queremos una web ms o menos elaborada podremos profundizar en este
lenguaje. Por ejemplo, el lenguaje de programacin CSS (Cascading Style
Sheets) son hojas que sirven para dar estilo a las pginas web como su
color, definir su fondo, tipos de letraetc
Lenguaje de Programacin SQL: Este lenguaje est creado para realizar
consultas a bases de datos principalmente. SQL son las siglas de Structured
Query Lenguaje ( Lenguaje estructurado de consultas) y se utiliza para
pginas web y tambin para aplicaciones de ordenadores, para manejar datos

sobre todo. (Introducir datos, actualizar datos, eliminar o seleccionar datos)


Lenguaje de Programacin Java: Probablemente ste podra ser el favorito
de ms de uno ya que es el lenguaje utilizado para programas punteros como
herramientas, juegos y aplicaciones. Este lenguaje de programacin se utiliza
en miles de millones de dispositivos mviles y aparatos de televisin y en ms
de 850 millones de ordenadores personales de todo el mundo. Java est
instalado en inmensidad de aplicaciones y sitios web. Probablemente tambin
te suene JavaScript, que es otro lenguaje utilizado para crear pequeos
programas encargados de realizar acciones dentro de una web como por
ejemplo para crear efectos especiales o para definir interactividades con los
usuarios.
Lenguaje de Programacin C: Este lenguaje de programacin est
orientado a los Sistemas Operativos y es muy eficaz y con l podemos crear
Softwares de sistemas operativos como Windows o Linux y tambin para
aplicaciones. Tambin sirve para experimentos informticos, fsicos,
matemticosetc. Es tambin muy utilizado en robtica con el que se
programan simuladores, etc.
Lenguaje de Programacin XML: Este lenguaje es tambin un lenguaje de
etiquetas como el HTML, pero a diferencia de ste, el lenguaje XML separa el
contenido de la presentacin, es decir, XML se preocupa del significado del
texto que define el HTML. Te da el dato + el significado de ese dato, mientras
que el HTML te da el dato nada ms. El XML es un complemento fundamental
al HTML.
Lenguaje de Programacin PHP: El PHP es un lenguaje de programacin
similar al HTML que nos sirve fundamentalmente para pginas web y se
puede combinar con el lenguaje HTML. El lenguaje PHP se basa en
los scripts que es un guin de rdenes o instrucciones que recibe un
servidor de una pgina web para leer su cdigo fuente.
As podramos seguir definiendo mltiples y variados lenguajes de
programacin. Como vers son verdaderamente tiles y necesarios y sirven
prcticamente para cualquier cosa.
Casi todos los lenguajes de programacin tienen unos fundamentos o bases
comunes, esto hace que sea relativamente fcil aprender un lenguaje nuevo
si ya conocemos otro. En el siguiente enlace puedes aprender estos
fundamentos bsicos: Fundamentos de Programacin.
Si quieres aprender a programar te recomendamos una primera experiencia
con Robomind muy sencillo, para nios, pero mejor empezar por aqu para no
desilusionarnos desde el principio. Es muy sencillo para nios. Luego puedes
seguir con MSWLOGO. Los dos son gratuitos y fciles.
CONCLUSION
Hoy en da utilizamos aplicaciones para todo, programas especializados en
diferentes tareas, etcsi queremos saber qu hay detrs de todo eso
necesitamos nadar en el maravilloso e interesante mundo de los lenguajes de
programacin y as entender por qu cuando a un juego le doy al botn play
puedo empezar a jugar, o sencillamente por qu puedo hacer una suma en
una calculadora online.
Si te apasiona el mundo de la informtica adentrarte en los lenguajes de
programacin es como abrirle las tripas a tu ordenador, a las aplicaciones, a
los programas, etc..es un interesantsimo juego en el que podrs ser capaz
de programar casi cualquier cosa.
Te imaginas que pudieras ser capaz de programar t mismo cmo
funciona un robot y que haga lo que t le digas? Interesante, no?, o crear
esa aplicacin para mvil que todava no existe y ests deseando poner en
prctica esa idea genial?....pues manos a la obra!
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 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
1. CONOCIMIENTOS BSICOS
1.1. HISTORIA 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 ingles, que la
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.
1.2. LENGUAJES DE MQUINA
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.
1.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.
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
importa 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.
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.
1.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.
2. 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, 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.
3. 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.
4. 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 esta
buscando, por ejemplo: Obtener los nombres de todos los empleados que
tengan ms de 32 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. 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".
4.1. CARACTERSTICAS 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.
4.2. DESVENTAJAS 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.
4.3. VENTAJAS 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 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.
4.4. EJEMPLOS DE LENGUAJES DECLARATIVOS
Algunos lenguajes declarativos que se pueden mencionar son:
PROLOG
SQL
HTML
WSDL (Web Services Description Language)
XML Stylesheet Language for Transformation
4.5. PROGRAMACIN 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.
4.6. PROGRAMACIN 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.
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.
4.7. PROGRAMACIN ORIENTADA A BASES DE DATOS
Las 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 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.
4.7.1. TIPOS DE BASES DE DATOS
Las bases de datos pueden clasificarse de varias maneras, de acuerdo al
criterio elegido para su clasificacin, que puede ser segn la variabilidad de
los datos almacenados o segn el contenido.
4.7.1.1 CLASIFICACIN DE BASES DE DATOS SEGN LA VARIABILIDAD
DE LOS DATOS ALMACENADOS
Esta clasificacin depende de cmo los datos cambian o varan dentro de la
base de datos, o si se mantienen estticos sin sufrir modificaciones o
cambios. Dentro de esta clasificacin se tiene lo siguiente:
BASES DE DATOS ESTTICAS: stas son bases de datos de slo lectura,
utilizadas primordialmente para almacenar datos histricos que
posteriormente se pueden utilizar para estudiar el comportamiento de un
conjunto de datos a travs del tiempo, realizar proyecciones y tomar
decisiones.
BASES DE DATOS DINMICAS: stas son bases de datos donde la
informacin almacenada se modifica con el tiempo, permitiendo operaciones
como actualizacin y adicin de datos, adems de las operaciones
fundamentales de consulta. Un ejemplo de esto puede ser la base de datos
utilizada en un sistema de informacin de una tienda de abarrotes, una
farmacia, un videoclub, etc.
4.7.1.2. CLASIFICACIN DE BASES DE DATOS SEGN CONTENIDO
Esta clasificacin basa su enfoque en el contenido o lo que almacena la base
de datos, de esta manera:
BASES DE DATOS BIBLIOGRFICAS: Solo contienen un "representante" de
la fuente primaria, que permite localizarla. Un registro tpico de una base de
datos bibliogrfica contiene informacin sobre el autor, fecha de publicacin,
editorial, ttulo, edicin, de una determinada publicacin, etc. Puede contener
un resumen o extracto de la publicacin original, pero nunca el texto
completo, porque sino se estara en presencia de una base de datos a texto
completo (o de fuentes primarias). Como su nombre lo indica, el contenido
son cifras o nmeros. Por ejemplo, una coleccin de resultados de anlisis de
laboratorio, entre otras.
BASES DE DATOS DE TEXTO COMPLETO: Almacenan las fuentes
primarias, como por ejemplo, todo el contenido de todas las ediciones de una
coleccin de revistas cientficas.
DIRECTORIOS: Un ejemplo son las guas telefnicas en formato electrnico.
BANCO DE IMGENES, AUDIO, MULTIMEDIA, ETC.
4.7.2. MODELOS DE BASES DE DATOS
Adems de la clasificacin por la funcin de las bases de datos, stas
tambin se pueden clasificar de acuerdo a su modelo de administracin de
datos.
Un modelo de datos es bsicamente una "descripcin" de algo conocido como
contenedor de datos (algo en donde se guarda la informacin), as como de
los mtodos para almacenar y recuperar informacin de esos contenedores.
Los modelos de datos no son cosas fsicas: son abstracciones que permiten
la implementacin de un sistema eficiente de base de datos; por lo general se
refieren a algoritmos, y conceptos matemticos.
Algunos modelos con frecuencia utilizados en las bases de datos son:
BASES DE DATOS JERRQUICAS: stas son bases de datos que, como su
nombre indica, almacenan su informacin en una estructura jerrquica. En
este modelo los datos se organizan en una forma similar a un rbol (visto al
revs), en donde un nodo padre de informacin puede tener varios hijos. El
nodo que no tiene padres es llamado raz, y a los nodos que no tienen hijos
se los conoce como hojas. Las bases de datos jerrquicas son especialmente
tiles en el caso de aplicaciones que manejan un gran volumen de
informacin 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.
BASES DE DATOS DE RED: ste es un modelo ligeramente distinto del
jerrquico; su diferencia fundamental es la modificacin del concepto de nodo:
se permite que un mismo nodo tenga varios padres (posibilidad no permitida
en el modelo jerrquico). Fue una gran mejora con respecto al modelo
jerrquico, ya que ofreca una solucin eficiente al problema de redundancia
de datos; pero, aun as, la dificultad que significa administrar la informacin en
una base de datos de red ha significado que sea un modelo utilizado en su
mayora por programadores ms que por usuarios finales.
BASES DE DATOS RELACIONAL: ste es el modelo ms utilizado en la
actualidad para modelar problemas reales y administrar datos dinmicamente.
Tras ser postulados sus fundamentos en 1970 por Edgar Frank Codd, de los
laboratorios IBM en San Jos (California), no tard en consolidarse como un
nuevo paradigma en los modelos de base de datos. Su idea fundamental es el
uso de "relaciones". Estas relaciones podran considerarse en forma lgica
como conjuntos de datos llamados "tuplas". Pese a que sta es la teora de
las bases de datos relacionales creadas por Edgar Frank Codd, la mayora de
las veces se conceptualiza de una manera ms fcil de imaginar. Esto es
pensando en cada relacin como si fuese una tabla que est compuesta por
registros (las filas de una tabla), que representaran las tuplas, y campos (las
columnas de una tabla).
En este modelo, el lugar y la forma en que se almacenen los datos no tienen
relevancia (a diferencia de otros modelos como el jerrquico y el de red). Esto
tiene la considerable ventaja de que es ms fcil de entender y de utilizar para
un usuario espordico de la base de datos. La informacin puede ser
recuperada o almacenada mediante "consultas" que ofrecen una amplia
flexibilidad y poder para administrar la informacin. El lenguaje ms habitual
para construir las consultas a bases de datos relacionales es SQL, Structured
Query Language o Lenguaje Estructurado de Consultas, un estndar
implementado por los principales motores o sistemas de gestin de bases de
datos relacionales. Durante su diseo, una base de datos relacional pasa por
un proceso al que se le conoce como normalizacin (reglas fundamentales
para el buen funcionamiento de una base de datos relacional) de una base de
datos. Durante los aos '80 (1980-1989) la aparicin de dBASE produjo una
revolucin en los lenguajes de programacin y sistemas de administracin de
datos. Aunque nunca debe olvidarse que dBase no utilizaba SQL como
lenguaje base para su gestin. La normalizacin de una base de datos
relacional consiste en las siguientes reglas:
Primera Forma Normal (1FN): se eliminan los grupos repetitivos. Los atributos
han de ser atmicos. Grficamente las celdas de la tabla contienen solo un
valor, en cada uno de los atributos slo se puede incluir un dato, aunque sea
compuesto, pero no se puede incluir una lista de datos. Se trata de que cada
atributo guarde la menor cantidad de informacin posible. Para eliminar los
grupos repetitivos se pone cada uno de ellos en una tabla aparte, esa nueva
tabla hereda la clave primaria de la relacin en la que se encontraban, se crea
una clave fornea para la nueva tabla.
Segunda Forma Normal (2FN): dependencia completa. Est en 2FN si est en
1FN y si sus atributos no principales dependen de forma completa de la clave
principal. Toda relacin que tenga como clave slo un atributo est en 2FN.
Tercera Forma Normal (3FN): dependencia transitiva. Est en segunda forma
normal y todo atributo no primo es implicado por la clave primaria en una
secuencia no transitiva.
Forma Normal de Boyce-Codd: una tabla est en FNBC, s y slo s las nicas
dependencias funcionales elementales son aquellas en las que la Clave
primaria determina un atributo.
Cuarta Forma Normal (4FN): est en forma normal de Boyce-Codd y se
eliminan las dependencias multivaluadas y se generan todas las relaciones
externas con otras tablas u otras bases de datos.
Quinta Forma Normal (5FN): est en cuarta forma normal y toda dependenciajoin viene implicada por claves candidatas.
BASES DE DATOS ORIENTADAS A OBJETOS: este modelo, bastante
reciente, y propio de los modelos informticos 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 que incorpora todos los conceptos importantes del paradigma de
objetos: encapsulacin (propiedad que permite ocultar la informacin al resto
de los objetos, impidiendo as accesos incorrectos o conflictos), herencia
(propiedad a travs de la cual los objetos heredan comportamiento dentro de
una jerarqua de clases y polimorfismo (propiedad de una operacin mediante
la cual puede ser aplicada a distintos tipos de objetos. En bases de datos
orientadas a objetos, los usuarios pueden definir operaciones sobre los datos
como parte de la definicin de la base de datos.
BASES DE DATOS DOCUMENTALES: permiten la indexacin a texto
completo, y en lneas generales realizar bsquedas ms potentes.
BASE DE DATOS DEDUCTIVAS: un sistema de base de datos deductivas, es
un sistema de base de datos pero con la diferencia de que permite hacer
deducciones a travs de inferencias. Se basa principalmente en reglas y
hechos que son almacenados en la base de datos. Tambin las bases de
datos deductivas son llamadas base de datos lgica, a raz de que se basan
en lgica matemtica.
5. 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.
5.1. LENGUAJES 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 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.
5.2. ALGUNOS LENGUAJES IMPERATIVOS
Algunos lenguajes de programacin imperativos que se pueden mencionar
son:
BASIC
C
C++
Java
C#
PHP
Perl
6. 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.
7. 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 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.
7.1. CONCEPTOS 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 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.
7.2. CARACTERSTICAS 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 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.
7.3. PRINCIPALES 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.
7.4. ALGUNOS 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
Lexico (en castellano)
Objective-C
Ocaml
Oz
PHP
PowerBuilder
Pitn
Ruby
Smalltalk
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
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.