You are on page 1of 8

Lenguaje de programación

Captura de la microcomputadora Commodore PET-32 mostrando
un programa en el lenguaje de programación BASIC, bajo
el emulador VICE en una distribución GNU/Linux.
Un ejemplo de código fuente escrito en el lenguaje de programación Java,
que imprimirá el mensaje "Hello World!" a la salida estándar cuando
es compilado y ejecutado
Un lenguaje de programación es un lenguaje formal diseñado para
expresar procesos que pueden ser llevados a cabo por máquinas como
las computadoras.
Pueden usarse para crear programas que controlen el comportamiento físico
y lógico de una máquina, para expresaralgoritmos con precisión, o como
modo de comunicación humana. 1
Está formado por un conjunto de símbolos y
reglas sintácticas y semánticas 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 código fuente de
un programa informático se le llama programación.
También la palabra programación se define como el proceso de creación de
un programa de computadora, mediante la aplicación de procedimientos
lógicos, a través de los siguientes pasos:
El desarrollo lógico del programa para resolver un problema en particular.
Escritura de la lógica del programa empleando un lenguaje de programación
específico (codificación del programa).
Ensamblaje o compilación del programa hasta convertirlo en lenguaje de
máquina.
Prueba y depuración del programa.
Desarrollo de la documentación.
Existe un error común que trata por sinónimos los términos 'lenguaje de
programación' y 'lenguaje informático'. Los lenguajes informáticos engloban a
los lenguajes de programación y a otros más, como por
ejemplo HTML (lenguaje para el marcado depáginas web que no es
propiamente un lenguaje de programación, 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, cómo deben ser almacenados o transmitidos y qué acciones
debe tomar bajo una variada gama de circunstancias. Todo esto, a través de
un lenguaje que intenta estar relativamente próximo al lenguaje humano o
natural. Una característica relevante de los lenguajes de programación es
precisamente que más de un programador pueda usar un conjunto común de
instrucciones que sean comprendidas entre ellos para realizar la construcción
de un programa de forma colaborativa.
Historia[editar]
Código 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 específico conocido como código máquina, el cual la máquina
comprende fácilmente, pero que lo hace excesivamente complicado para las
personas. De hecho sólo consiste en cadenas extensas de números 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 abstracción de
palabras y letras provenientes del inglés; é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 máquina, pero las letras y palabras son más fáciles de recordar y
entender que los números.
La necesidad de recordar secuencias de programación para las acciones
usuales llevó a denominarlas con nombres fáciles 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
programación, los cuales reciben su denominación porque tienen una
estructura sintáctica similar a los lenguajes escritos por los humanos,
denominados también 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
matemáticas a Ada quien, después de conocer a Charles Babbage, tradujo y
amplió una descripción de su máquina analítica. Incluso aunque Babbage
nunca completó la construcción de cualquiera de sus máquinas, el trabajo que
Ada realizó con éstas le hizo ganarse el título de primera programadora de
computadoras del mundo. El nombre del lenguaje de programación 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 más práctica al lenguaje
ensamblador para programar lacomputadora central IBM 704. El histórico
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 código cuyo desempeño fuera
comparable al de un código hecho a mano en lenguaje ensamblador.
En 1960, se creó COBOL, uno de los lenguajes usados aún en la actualidad,
en informática de gestión.
A medida que la complejidad de las tareas que realizaban las computadoras
aumentaba, se hizo necesario disponer de un método más eficiente para
programarlas. Entonces, se crearon los lenguajes de alto nivel, como lo
fue BASIC en las versiones introducidas en los microordenadores de la

década de 1980. Mientras que una tarea tan sencilla como sumar dos
números 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 programación en español creado en
Argentina.
Las variables podrían calificarse como contenedores de datos y por ello se
diferencian según el tipo de dato que son capaces de almacenar. En la
mayoría de lenguajes de programación 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
especificación de variables no es necesario. Además, existen variables
compuestas por varias variables llamadas vectores. Un vector no es más que
un conjunto de variables consecutivas en memoria y del mismo tipo
guardadas dentro de una variable contenedor. A continuación, un listado con
los tipos de variables y vectores más comunes:
Variables tipo Char: Estas variables contienen un único carácter, es decir, una
letra, un signo o un número.
Variables tipo Int: Contienen un número entero.
Variables tipo float: Contienen un número 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 código 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 más conocidos y empleados en
programación son:
If: Indica una condición para que se ejecute una
parte del programa.
Else if: Siempre va precedido de un "If" e indica
una condición para que se ejecute una parte del
programa siempre que no cumpla la condición 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 prévias.
Bucles[editar]
Los bucles son parientes cercanos de los condicionantes, pero ejecutan
constantemente un código mientras se cumpla una determinada condición.
Los más frecuentes son:
For: Ejecuta un código mientras una variable se encuentre entre 2
determinados parámetros.
While: Ejecuta un código mientras que se cumpla la condición 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 código. Una función podría considerarse como una variable
que encierra código dentro de si. Por lo tanto cuando accedemos a dicha
variable (la función) en realidad lo que estamos haciendo es ordenar al
programa que ejecute un determinado código predefinido anteriormente.
Todos los lenguajes de programación tienen algunos elementos de formación
primitivos para la descripción de los datos y de los procesos o
transformaciones aplicadas a estos datos (tal como la suma de dos números
o la selección de un elemento que forma parte de una colección). Estos
elementos primitivos son definidos por reglas sintácticas y semánticas 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 programación se le conoce como sintaxis.
La mayoría de los lenguajes de programación son puramente textuales, es
decir, utilizan secuencias de texto que incluyen palabras, números y
puntuación, de manera similar a los lenguajes naturales escritos. Por otra
parte, hay algunos lenguajes de programación que son más gráficos en su
naturaleza, utilizando relaciones visuales entre símbolos para especificar un
programa.
La sintaxis de un lenguaje de programación describe las combinaciones
posibles de los símbolos que forman un programa sintácticamente correcto. El
significado que se le da a una combinación de símbolos es manejado por su
semántica (ya sea formal o como parte del código duro de la referencia de
implementación). Dado que la mayoría de los lenguajes son textuales, este
artículo trata de la sintaxis textual.
La sintaxis de los lenguajes de programación es definida generalmente
utilizando una combinación de expresiones regulares (para la estructura
léxica) y la Notación de Backus-Naur (para la estructura gramática). Este es
un ejemplo de una gramática simple, tomada de Lisp:
expresión ::= átomo | lista
átomo ::= número | símbolo
número ::= [+-]? ['0'-'9']+
símbolo ::= ['A'-'Z'] ['a'-'z'].*
lista ::= '(' expresión* ')'
Con esta gramática se especifica lo siguiente:
una expresión puede ser un átomo o una lista;

En lugar de traducir el programa fuente y grabar en forma permanente el código objeto que se produce durante la compilación para utilizarlo en una ejecución futura. los tipos están asociados con valores en ejecución en lugar de expresiones textuales. estas operaciones sin significado son detectadas cuando el programa es compilado (validación de tipos "estática") y son rechazadas por el compilador. En la mayoría de los lenguajes de programación. En la práctica. Estos son con frecuencia lenguajes de marcado o de scripts. un lenguaje sin tipos. 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 cuestión. o incluido de manera permanente dentro de la máquina. Por ejemplo. Por tanto. que le quita al programador la tarea de especificar los tipos. ni pueden guardarse en una variable que está definida como fecha. el programador sólo carga el programa fuente en la computadora junto con los datos que se van a procesar. Sin embargo. todavía puede tener un significado que no es el que la persona que lo escribió estaba tratando de construir. La implementación de un lenguaje es la que provee una manera de que se ejecute un programa para una determinada combinación de software y hardware. Muchas restricciones importantes de este tipo. Si la declaración de tipo de la primera línea fuera omitida. las operaciones p->real y p->im no tienen ningún significado): complex *p = NULL. Para los lenguajes compilados. un Array o una cadena de letras. por ejemplo una cadena puede ser operada como un número. y una lista es un par de paréntesis que abren y cierran. llevan a cabo lo que se conoce como inferencia de tipos. muchos lenguajes de tipos explícitos permiten inferencias parciales de tipo. El código objeto no se graba para utilizarlo posteriormente. esto permite que una misma variable se pueda asociar con valores de tipos distintos en diferentes momentos de la ejecución de un programa. Como los lenguajes formales pueden definirse en términos puramente sintácticos. pues la variable "p" no estaría definida. Éstos. Existen básicamente dos maneras de implementar un lenguaje: compilación einterpretación. generando un programa equivalente que la máquina será capaz interpretar. pero su trato en diferentes textos varia. la semántica estática básicamente incluye las reglas semánticas que se pueden verificar en el momento de compilar. dividir un número por una cadena no tiene ningún significado. con la implicación de que no es aplicable a otros tipos. Otras formas de análisis estáticos. en lenguajes con tipos dinámicos se suele dejar de lado la depuración en favor de técnicas de desarrollo como por ejemplo BDD yTDD. complex abs_p = sqrt (p->real * p->real + p->im * p->im). JavaScript y Python son lenguajes con tipos dinámicos. Usando el lenguaje natural. Lenguajes tipados versus lenguajes no tipados[editar] Se dice que un lenguaje tiene tipos si la especificación de cada operación define tipos de datos para los cuales la operación es aplicable. Sistema de tipos[editar] Artículo principal: Sistema de tipos Un sistema de tipos define la manera en la cual un lenguaje de programación clasifica los valores y expresiones en tipos. Algunos lenguajes. y solamente cuentan con un tipo de datos. almacenado en el sistema operativo del disco. algunos lenguajes incluyen lagunas de tipos. los lenguajes con tipos dinámicos no requieren que el programador escriba los tipos de las expresiones. Una interpretación otorga significado a esas fórmulas. Las características de estáticos y fuertes son ahora generalmente consideradas conceptos ortogonales. manejan tipos explícitos. Lenguajes de alto nivel sin datos incluyen BCPL y algunas variedades de Forth. que verifican o rechazan todas las operaciones). Otros lenguajes de programación como Java y C# tienen un análisis definido de asignaciones. Tipos estáticos versus tipos dinámicos[editar] En lenguajes con tipos estáticos se determina el tipo de todas las expresiones antes de la ejecución del programa (típicamente al compilar). también pueden ser parte de la semántica estática. Además. o que las llamadas a subrutinas tengan el número y tipo de parámetros adecuado. En algunos casos. Cualquier intento de llevar a cabo una operación sobre el tipo equivocado dispara un error. que pueden tener cálculos generales. como los programas ensambladores avanzados. y no requieren ejecución de código. 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. como parte de su semántica estática. por ejemplo. un programa intérprete. La mayoría de los lenguajes populares con tipos estáticos. Los programas traductores que pueden realizar esta operación se llaman compiladores. Inferencia total de los tipos suele asociarse con lenguajes menos populares. dado que las declaraciones de tipo proveen información semántica solamente. Algunos ejemplos de secuencias bien formadas de acuerdo a esta gramática: ' 12345 '. Estas conversiones implícitas son útiles con frecuencia. infieren tipos en un número limitado de casos. tales como Haskell y ML. undefined . dificultando la depuración de los programas. tales programas pueden exhibir un comportamiento indefinido. cómo pueden ser manipulados dichos tipos y cómo interactúan. el programa dispararía un error de compilación. En contraste con el sistema de macros de Lisp y los bloques BEGIN de Perl. sus fórmulas bien formadas pueden no ser más quecadenas de símbolos sin ningún significado. Como en el caso de lenguajes con tipos inferidos. La sintaxis de la mayoría de los lenguajes de programación puede ser especificada utilizando una gramática Tipo-2. para aumentar la confusión. pero también puede permitir ciertos tipos de fallas que no pueden ser detectadas durante la compilación o a veces ni siquiera durante la ejecución. Si bien muchos lenguajes de producción proveen medios para brincarse o subvertir el sistema de tipos. incluso cuando un programa está bien definido dentro de un lenguaje. puede no ser posible asignarle significado a una oración gramaticalmente válida o la oración puede ser falsa: "Las ideas verdes y descoloridas duermen furiosamente" es una oración bien formada gramaticalmente pero no tiene significado comúnmente aceptado. Los lenguajes con tipos estáticos pueden manejar tipos explícitos o tipos inferidos. permiten que cualquier operación se aplique a cualquier dato. Sin embargo. Interpretación: es una asignación de significados a las fórmulas bien formadas de un lenguaje formal. La gramática necesaria para especificar un lenguaje de programación puede ser clasificada por su posición en la Jerarquía de Chomsky. Los lenguajes que permiten construcciones que permiten al programador alterar el comportamiento de un analizador hacen del análisis de la sintaxis un problema sin decisión única. un número es una secuencia continua de uno o más dígitos decimales. el sistema de tipos es usado solamente para checar los tipos de los programas. un símbolo es una letra seguida de cero o más caracteres (excluyendo espacios). El siguiente fragmento en el lenguaje C es sintácticamente correcto. los errores de tipo no pueden ser detectados automáticamente hasta que se ejecuta el código. incluyendo a Perl y a Lisp. Un caso especial de lenguajes de tipo son los lenguajes de tipo sencillo. la mayoría de los lenguajes de programación modernos rechazaran cualquier intento de ejecutar dicha operación por parte de algún programa. no pueden ser pasadas a una función que espera una cadena. Algunos utilizan el término de tipos fuertes para referirse a tipos fuertemente estáticos o. generalmente funcionales. como los análisis de flujo de datos. En el primer caso. con cero o más expresiones en medio. la mayoría de los lenguajes modernos ofrecen algún grado de manejo de tipos. precedido opcionalmente por un signo más o un signo menos. C# y Java. una forma de análisis de flujo de datos. detectando ciertas operaciones inválidas. En otras palabras. Semántica estática[editar] La semántica estática define las restricciones sobre la estructura de los textos válidos que resulta imposible o muy difícil expresar mediante formalismos sintácticos estándar. . En contraste. Se puede también utilizar una alternativa para traducir lenguajes de alto nivel. las macros de C son meros reemplazos de cadenas. En el segundo caso. simplemente como equivalencia de tipos estáticos. Muchos programas sintácticamente correctos tienen inconsistencias con las reglas del lenguaje. En la mayoría de los lenguajes con tipos. En algunos lenguajes. convierte cada proposición del programa fuente en lenguaje de máquina conforme vaya siendo necesario durante el procesamiento de los datos. ' (a b c232 (1)) ' No todos los programas sintácticamente correctos son semánticamente correctos. A los lenguajes con tipos fuertes se les suele llamar de tipos seguros. el compilador infiere los tipos de las expresiones y las declaraciones de acuerdo al contexto. Esto puede ser útil a veces. es decir. contienen construcciones que permiten la ejecución durante la fase de análisis. aunque pocos lenguajes son considerados con tipo desde el punto de vista de la teoría de tipos (es decir. ' () '. comúnmente cadenas de caracteres que luego son usadas tanto para datos numéricos como simbólicos. y generalmente oscurecen la separación entre análisis y ejecución. Pero el programa sería sintácticamente correcto todavía. Al diseño y estudio formal de los sistemas de tipos se le conoce como teoría de tipos. De tal manera que C ha sido llamado tanto lenguaje de tipos fuertes como lenguaje de tipos estáticos débiles. pero ejecuta una operación que no está definida semánticamente (dado que p es un apuntador nulo. que por lo general se consideran secuencias de bits de varias longitudes. Compilación: es el proceso que traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación. Entre otras cosas. pero también pueden ocultar errores de programación. el programador debe escribir los tipos en determinadas posiciones textuales. como la validación de que los identificadores sean usados en los contextos apropiados (por ejemplo no sumar un entero al nombre de una función). Lenguajes con tipos débiles como Perl y JavaScript permiten un gran número de conversiones de tipo implícitas. Por ejemplo en JavaScript la expresión 2 * x convierte implícitamente x a un número. " este texto entre comillas " es una cadena. como la mayoría de los lenguajes ensambladores. como REXX o SGML. pueden generar muchas líneas de código de máquina por cada proposición del programa fuente. conversiones explícitas no checadas que pueden ser usadas por el programador para permitir explícitamente una operación normalmente no permitida entre diferentes tipos. Ruby. Implementación[editar] Código fuente de un programa escrito en ellenguaje de programación Java. mientras en otros son detectadas cuando el programa es ejecutado (validación de tipos "dinámica") y se genera una excepción en tiempo de ejecución. no obstante. Por ejemplo. pero varios lenguajes. también prohíbe algunos programas correctos aunque poco comunes. por ejemplo. "Juan es un soltero casado" también está bien formada gramaticalmente pero expresa un significado que no puede ser verdadero. 1 y (2+2) son expresiones enteras. tales como C++. Los lenguajes fuertemente tipados evitan que pase lo anterior. tanto Java y C#. Tipos débiles y tipos fuertes[editar] Los lenguajes débilmente tipados permiten que un valor de un tipo pueda ser tratado como de otro tipo. puede ser implementadas definiéndolas como reglas en una lógica conocida como sistema de tipos. Los lenguajes con tipos dinámicos determinan la validez de los tipos involucrados en las operaciones durante la ejecución del programa. son gramáticas libres de contexto. Cualquier sistema de tipos decidible tiene sus ventajas y desventajas: mientras por un lado rechaza muchos programas incorrectos. Para poder minimizar esta desventaja. Lisp. y esta conversión es exitosa inclusive cuando x es null . A continuación. y pueden (dependiendo de la especificación del lenguaje y la solidez de la implementación) resultar en un error de traducción o ejecución.un átomo puede ser un número o un símbolo.

Luego ya depende de si queremos una web más o menos elaborada podremos profundizar en este lenguaje. Fases que pueden ser realizadas incluso por otro programador. para manejar datos . tipos de letra…etc Lenguaje de Programación “SQL”: Este lenguaje está creado para realizar consultas a bases de datos principalmente. Estos lenguajes también se llaman de código máquina. de esta forma se ve facilitado el trabajo del programador. 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. entonces tal sub-objetivo se descarta y sistemáticamente se prueba otra ruta. Es muy importante que el programa sea lo más claro y legible posible. Se trata de que el programa. 4 Los programas que usan un lenguaje declarativo especifican las propiedades que la salida debe conocer y no especifica cualquier detalle de implementación. que básicamente es un conjunto de etiquetas que sirven para definir el texto y otros elementos que puedes ver en las páginas web. todas las aplicaciones (apps) que tienes en tu móvil y los programas informáticos que tienes en tu ordenador están diseñados con diferentes lenguajes de programación. Al elaborar un programa se debe intentar que su estructura sea sencilla y coherente. 3 Una declaración asocia un nombre de variable con un tipo de dato. los humanos. Python o JavaScript. Ese código es el que se llama “código fuente” que caracteriza a cada lenguaje de programación. Por ejemplo. Los principales paradigmas son: imperativos. Si quieres conocer mejor este sistema de numeración te recomendamos este enlace: Sistema Binario Se clasifican en dos tipos: Los Lenguajes de Programación de Bajo Nivel: que son aquellos utilizados fundamentalmente para controlar el “hardware” del ordenador y dependen totalmente de la máquina y no se pueden utilizar en otras máquinas. Los Lenguajes de Programación de Alto Nivel: Estos lenguajes son más parecidos al lenguaje natural humano y no dependen de la máquina y sirven fundamentalmente para crear programas informáticos que solucionan diferentes problemas. expresiones y sentencias. por ejemplo: 2 + 2 contiene el valor 4. Para escribir programas que proporcionen los mejores resultados. En la programación visual los elementos son manipulados gráficamente en vez de especificarse por medio de texto. etc. Para que te hagas una idea. El intérprete elimina la necesidad de realizar una compilación después de cada modificación del programa cuando se quiere agregar funciones o corregir errores. además de realizar aquello para lo que fue creado (es decir. . la creación de tipos de datos. Una crítica común en los lenguajes imperativos es el efecto de las sentencias de asignación sobre una clase de variables llamadas "no locales". que no es más que un sistema estructurado de comunicación. Si fuera de bajo nivel. durante el procesamiento repetitivo de los pasos de un ciclo o bucle.La siguiente vez que se utilice una instrucción. Para no extendernos mucho en esto que es bastante amplio. ya que permite. recurren al uso de código ofuscado. en el ejemplo saber que sqt realiza el cuadrado de un número. muy fácil para que podáis haceros una idea de base de su utilidad. Algunos programadores llegan incluso a utilizar Arte ASCII para delimitar secciones de código. Os diremos qué tipos de lenguajes de programación existen y para qué sirven fundamentalmente. por ejemplo: var x: integer. Corrección. calcular el cuadrado de x. pero es obvio que un programa objeto compilado con antelación deberá ejecutarse con mucha mayor rapidez que uno que se debe interpretar a cada paso durante una ejecución del código. usan declaraciones. tanto en la fase de creación como en las fases posteriores de corrección de errores. Por ejemplo.). Son los más usados por los programadores y por todo del mundo que realiza programas informáticos. Esto permite que el programa pueda llegar a más usuarios más fácilmente. LENGUAJES DE PROGRAMACION Vamos a explicar los Lenguajes de Programación para que entendáis de forma fácil y sencilla qué son y para qué sirven. pero ésto te lo explicaremos más adelante. 5 El objetivo es definido dando una lista de sub-objetivos. etc. programas como funciones matemáticas. Los lenguajes funcionales no permiten asignaciones de variables no locales. pero hay otros recursos que también pueden ser de consideración al obtener la eficiencia de un programa. diferente a aquella en la que se elaboró. una sentencia debe asignar una expresión a una variable o usar el valor de una variable para alterar el flujo de un programa. if x == 4 then haz_algo(). lo cual hace que el programa sea más lento en tiempo de ejecución (porque se va revisando el código en tiempo de ejecución) pero más rápido en tiempo de diseño (porque no se tiene que estar compilando a cada momento el código completo). aunque muchos de ellos fueron diseñados para permitir programación dedicada. unos y abreviaturas de letras. etc. Los programas que usan un lenguaje imperativo especifican un algoritmo. 4 El principio detrás de los lenguajes lógicos es definir el problema que se quiere resolver (el objetivo) y dejar los detalles de la solución al sistema. cada instrucción del bucle tendrá que volver a ser interpretada en cada ejecución repetida del ciclo. HTML significa HyperText Markup Lenguaje («lenguaje de marcas de hipertexto») y es muy fácil de aprender. . También se han implementado lenguajes educativos infantiles como Logo mediante una serie de simples instrucciones. Todos los días estamos continuamente comunicándonos con máquinas (ordenadores. al hablar de eficiencia de un programa. Dos amplias categorías de lenguajes declarativos son los lenguajes funcionales y los lenguajes lógicos. con lo cual la claridad es aún más necesaria para que otros programadores puedan continuar el trabajo fácilmente. Un ordenador no entiende un lenguaje como el que utilizan los humanos. yo mismo tendría que crear la función sabiendo como funciona el cuadrado de un número: 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. a un programa que se ha desarrollado para sistemas GNU/Linuxejecutarse también en la familia de sistemas operativos Windows. como Perl. Eficiencia. así. el uso de punteros. compararlo con lo que realmente hace. se escribe. una vez acabado. La portabilidad es una característica muy deseable para un programa. Cada sub-objetivo también se define dando una lista de sus sub-objetivos. Paradigmas[editar] Los programas se pueden clasificar por el paradigma del lenguaje que se use para producirlos. pero solo los usan prácticamente los creadores de las máquinas. Claridad. un ordenador). que sea correcto). como por ejemplo el lenguaje humano que nos permite comunicarnos unos con otros por medio de signos (palabras. dependiendo de su naturaleza (espacio en disco que utiliza. Utiliza básicamente ceros. ¿QUÉ TIPOS DE LENGUAJE DE PROGRAMACIÓN HAY Y PARA QUE SIRVEN? En la actualidad hay más de 100 lenguajes de programación diferentes. Para determinar si un programa hace lo que debe. Están orientados exclusivamente para la máquina Estos lenguajes son los que ordenan a la máquina operaciones fundamentales para que pueda funcionar. entendiendo esto es muy fácil entender qué es un lenguaje de programación. modificaciones. Normalmente. Cada lenguaje de programación tiene un “código fuente” característico y único que está diseñado para una función o un propósito determinado y que nos sirven para que una máquina o computador se comporte de una manera deseada. Con este tipo de lenguajes programan la asignación y liberación de memoria. Portabilidad. cabe tener en cuenta una serie de detalles. Un programa es correcto si hace lo que debe hacer tal y como se estableció en las fases previas a su desarrollo. Contiene un conjunto de acciones consecutivas que el ordenador debe ejecutar. La forma en la cual se programa puede ser por medio de texto o de forma visual. gestos…etc). se codifica. sino que el lenguaje que entiende se llama “lenguaje binario” o “código binario” o “código máquina” que consiste en ceros y unos básicamente. Finalmente. etc) y todos ellos tienen almacenados lenguajes de programación para poder utilizarlos. Un lenguaje de programación no es más que un sistema estructurado y diseñado principalmente para que las máquinas y computadoras se entiendan entre sí y con nosotros. ¿QUE SON LOS LENGUAJES DE PROGRAMACIÓN? Para empezar a explicar qué son los lenguajes de programación empezaremos dando por hecho que entendéis lo que es un “lenguaje” cualquiera. por ejemplo. Si al tratar de buscar una solución. El término “programación” se define como un proceso por medio del cual se diseña. etc. PHP. se la deberá interpretar otra vez y traducir a lenguaje máquina. así como cuidar el estilo en la edición. En la actualidad son muy populares algunos lenguajes especialmente indicados para aplicaciones web. tablets. La diferencia fundamental se puede explicar con el siguiente ejemplo: En un lenguaje de alto nivel sólo tengo que poner sqt(x). No vamos a definir todos los lenguajes de programación que existen porque son muchos pero sí os hablaremos de los más importantes y para qué se utilizan. Otros. como lo fue elPascal con las matemáticas en su comienzo. Son los más complicados. se prueba y se depura un código básico para las computadoras. pasaremos a explicaros algunos de los lenguajes de programación más usados en las máquinas que más utilizamos. el lenguaje de programación CSS (Cascading Style Sheets) son hojas que sirven para dar “estilo” a las páginas web como su color. como siempre. Técnica[editar] Libros sobre diversos lenguajes de programación. por diversión o para impedir un análisis cómodo a otros programadores. sonidos. para facilitar así su desarrollo y posterior mantenimiento. es muy importante especificar claramente qué debe hacer el programa antes de desarrollarlo y. se hacen más fácil. que sería una función predeterminada. definir su fondo. por ejemplo. Una expresión contiene un valor. es decir. Estos lenguajes de programación usan diferentes normas o bases y se utilizan para controlar cómo se comporta una máquina (por ejemplo. por ejemplo. por ejemplo: x := 2 + 2. que es mucha. una máquina sólo utiliza los números 0 y 1 para codificar cualquier acción a tomar. tráfico de red que genera. Ruby. ampliaciones. el poder usar paso por valor y por referencia. LENGUAJES DE PROGRAMACIÓN MÁS USADOS Lenguaje de Programación “HTML”: Este lenguaje es con el que se crean las páginas web. ya sea hardware o software. etc. también pueden usarse para crear programas informáticos. móviles. Pues bien. Un programa es portable cuando tiene la capacidad de poder ejecutarse en una plataforma. SQL son las siglas de Structured Query Lenguaje ( Lenguaje estructurado de consultas) y se utiliza para páginas web y también para aplicaciones de ordenadores. lo haga gestionando de la mejor forma posible los recursos que utiliza. La mayoría de lenguajes de alto nivel permiten la programación multipropósito. declarativos y orientación a objetos. una ruta de subobjetivos falla.

juegos y aplicaciones. programas especializados en diferentes tareas. Pero Babagge se dedico al proyecto de la máquina analítica. facilitando la labor a los programadores. en las próximas páginas se procederá a un análisis más exhaustivo y detallado y se verán las numerosas formas en que se pueden agrupar los lenguajes teniendo en cuenta funcionalidad y orientación. Los dos son gratuitos y fáciles. es decir. Como la maquina no llego nunca a construirse. el programador tenía que conocer el funcionamiento de la máquina al más bajo nivel y los errores de programación eran muy frecuentes. Lenguaje de Programación “PHP”: El PHP es un lenguaje de programación similar al HTML que nos sirve fundamentalmente para páginas web y se puede combinar con el lenguaje HTML. mientras que el HTML te da el dato nada más. OBJETIVOS ESPECÍFICOS Determinar qué son los lenguajes de programación declarativos y a la vez los lenguajes que forman parte de este grupo. al lenguaje ensamblador y por consiguiente al lenguaje de máquina. Este hombre era un fabricante de tejidos y había creado un telar que podía reproducir automáticamente patrones de tejidos. fáciles de traducir al lenguaje de la máquina. etc. actualizar datos. por lo que la ejecución se realiza en un periodo muy breve. que. Pero aunque el programador de esta forma se distancie del hardware del computador. decisiones y otras operaciones que pueden ejecutar una computadora.es un interesantísimo juego en el que podrás ser capaz de programar casi cualquier cosa. Casi todos los lenguajes de programación tienen unos fundamentos o bases comunes. Charles Babbage. Es también muy utilizado en robótica con el que se programan simuladores. 4) Unidad Aritmético-Lógica. su contribución es decisiva.pues ¡manos a la obra! INTRODUCCIÓN Una computadora es una máquina que solo comprende las instrucciones que se le den en un determinado formato. Esta operación recibe el nombre de compilación. Te da el dato + el significado de ese dato. Los lenguajes de programación de bajo nivel fueron los primeros que surgieron y se llaman así porque están directamente relacionados con el hardware del computador. para niños. ya que los ordenadores actuales responden a un esquema análogo al de la máquina analítica. Si bien las ideas de Babagge no llegaron a materializarse de forma definitiva. Lenguaje de Programación “C”: Este lenguaje de programación está orientado a los Sistemas Operativos y es muy eficaz y con él podemos crear Softwares de sistemas operativos como Windows o Linux y también para aplicaciones. cálculos. Por ello. En el siguiente enlace puedes aprender estos fundamentos básicos: Fundamentos de Programación. irá ejecutando las instrucciones una a una haciendo que el proceso requiera un periodo de tiempo sensiblemente mayor del que necesitaría un compilador. ¿Te imaginas que pudieras ser capaz de programar tú mismo cómo funciona un robot y que haga lo que tú le digas? Interesante. que siguen el mismo concepto: facilitar la vida al programador. Aunque en esta introducción se ha comenzado a hablar de los lenguajes dividiéndolos en bajo y alto nivel. la cual se le ocurrió a este hombre a mediados del siglo XIX. (Introducir datos. tampoco llegaron a ejecutarse. Consistía en lo que él denominaba la maquina analítica. en tarjetas perforadas. que abarcase a los lenguajes más importantes. en estos casos. XML se preocupa del significado del texto que define el HTML. como su nombre indica. Es muy sencillo para niños. inició como un "simple" esfuerzo de traducir un lenguaje de fórmulas. pero que por motivos técnicos no pudo construirse hasta mediados del siglo XX. Pero la tecnología de la época no bastaba para hacer realidad sus ideas. También sirve para experimentos informáticos. encargada de comunicar al exterior los resultados. conocido como el "padre de la informática" no pudo completar en aquella época la construcción del computador que había soñado. los programas de Ada. los programadores utilizaron las técnicas diseñadas por Charles Babagge. son considerados mayoritariamente de bajo nivel. El lenguaje PHP se basa en los “scripts” que es un guión de órdenes o instrucciones que recibe un servidor de una página web para leer su código fuente. y requiere de un entendimiento apropiado de cómo funciona la máquina. pero si suponen un punto de partida de la programación. Por ello se hace necesaria una traducción a una secuencia de instrucciones interpretables por el computador. A pesar de ello. Sin embargo no está estipulada ninguna clasificación estricta debido a que dependiendo de la característica por la que se clasifique. que se pudiera programar con tarjetas perforadas. eliminar o seleccionar datos) Lenguaje de Programación “Java”: Probablemente éste podría ser el favorito de más de uno ya que es el lenguaje utilizado para programas punteros como herramientas. abandonando la maquina de diferencias. Como verás son verdaderamente útiles y necesarios y sirven prácticamente para cualquier cosa. lenguajes de nivel medio. CONOCIMIENTOS BÁSICOS 1. Diferenciar los lenguajes de bajo nivel (lenguaje máquina) de los lenguajes de alto nivel. No obstante se ha tratado de realizar una clara y esquemática clasificación de los distintos tipos. un lenguaje podría estar relativamente en un grupo u otro. etc. A pesar de que en este trabajo parte de la división de lenguajes de programación en imperativos y declarativos (los cuales a su vez se dividen en numerosos subgrupos). Esta investigación se justifica en la necesidad que todo programador tiene de diferenciar y clasificar correctamente los tipos de lenguajes de programación. Para usar este lenguaje. esto hace que sea relativamente fácil aprender un lenguaje nuevo si ya conocemos otro. gracias a la creación de Charles Jacquard (francés). El XML es un complemento fundamental al HTML. En 1823 el gobierno Británico lo apoyo para crear el proyecto de una máquina de diferencias. Los lenguajes de alto nivel surgieron con posterioridad con el primer compilador de FORTRAN (FORmula TRANslation). En su diseño. o ¿crear esa aplicación para móvil que todavía no existe y estás deseando poner en práctica esa idea genial?. si bien. leyendo la información codificada en patrones de agujeros perforados en tarjetas de papel rígido. Ensamblador). que es otro lenguaje utilizado para crear pequeños programas encargados de realizar acciones dentro de una web como por ejemplo para crear efectos especiales o para definir interactividades con los usuarios. El programa es traducido completamente antes de que se ejecute. Esta labor es llevada a cabo por los compiladores y los intérpretes. HISTORIA DE LOS LENGUAJES DE PROGRAMACIÓN Los primeros lenguajes de programación surgieron de la idea de Charles Babagge. las órdenes a traducir son de tal complejidad que no merece la pena crear un compilador ya que este también tendría que ser de una complejidad por encima de lo normal. Un ejemplo es C: contiene estructuras de programación de alto nivel. Luego puedes seguir con MSWLOGO. matemáticos…etc. Un lenguaje de programación es un conjunto limitado de palabras y de símbolos que representan procedimientos.. algunos consideran a lenguajes como C (que fue diseñado para hacer sistemas operativos). pero a diferencia de éste. la cual es considerada como la primera programadora de la historia. para introducir datos e instrucciones. Este lenguaje de programación se utiliza en miles de millones de dispositivos móviles y aparatos de televisión y en más de 850 millones de ordenadores personales de todo el mundo. conociendo sus aplicaciones y los beneficios o desventajas que ofrece cada uno de ellos. OBJETIVOS OBJETIVO GENERAL Conocer los tipos de lenguajes de programación y la clasificación que comúnmente se les da. Cada máquina reconoce y ejecuta un número de instrucciones diferentes que se agrupan en los distintos lenguajes de programación. Entonces Babagge intento crear la máquina que se pudiera programar con tarjetas perforadas para efectuar cualquier cálculo con una precisión de 20 dígitos. aumentando la productividad. Con él colaboro Ada Lovedby. Era un profesor matemático de la universidad de Cambridge e inventor ingles. sobre todo si observamos que en cuanto se empezó a programar. a los programas. Así podríamos seguir definiendo múltiples y variados lenguajes de programación. etcétera. pero mejor empezar por aquí para no desilusionarnos desde el principio. Probablemente también te suene JavaScript. es decir. que la principio del siglo XIX predijo muchas de las teorías en que se basan los actuales ordenadores. sin embargo. se han desarrollado innumerables lenguajes. El intérprete por el contrario lleva a cabo una traducción inmediata en el momento de la ejecución. que efectúa las operaciones. en la programación mediante tarjetas perforadas. MARCO TEÓRICO 1. Sería utópico tratar de clasificar todos los lenguajes existentes ya que hay demasiados y con frecuencia surgen nuevos. pues realizo programas para aquélla supuesta maquina de Babagge. Lenguaje de Programación “XML”: Este lenguaje es también un lenguaje de etiquetas como el HTML. la clasificación más común y básica que suele hacerse de los lenguajes de programación es la que los divide en lenguajes de bajo y de alto nivel. 5) Unidad de salida. CONCLUSION Hoy en día utilizamos aplicaciones para todo. Si te apasiona el mundo de la informática adentrarte en los lenguajes de programación es como abrirle las tripas a tu ordenador. 3) Unidad de control. A partir de FORTRAN. lógicamente. el uso de la memoria. que consistían entre otras. Si quieres aprender a programar te recomendamos una primera experiencia con Robomind muy sencillo. dado que . fue diseñado con muy pocas instrucciones. Hay que mencionar la existencia de lenguajes que combinan características de los de alto nivel y los de bajo nivel (es decir. etc…si queremos saber qué hay detrás de todo eso necesitamos nadar en el maravilloso e interesante mundo de los lenguajes de programación y así entender por qué cuando a un juego le doy al botón “play” puedo empezar a jugar.…. JUSTIFICACIÓN El estudio de los lenguajes de programación requiere a su vez comprender perfectamente los tipos de lenguajes de programación que existen y la clasificación comúnmente aceptada que a éstos se les da. el lenguaje XML separa el contenido de la presentación. para regular la secuencia de ejecución de las operaciones. el usuario introduce una serie de códigos numéricos que la máquina va a interpretar como instrucciones. Estos lenguajes usan un número reducido de instrucciones (normalmente en inglés) que siguen unas estrictas reglas gramaticales que se conocen como sintaxis del lenguaje. la máquina constaba de cinco unidades básicas: 1) Unidad de entrada. se adelantaron un siglo a su época. lo cual describe la inteligencia de la que se hallaban dotados. Java está instalado en inmensidad de aplicaciones y sitios web. Se dice por tanto que estos dos genios de antaño.sobre todo. las cuales son sumamente sencillas.. este sigue trabajando en lenguaje máquina. 2) Memoria. ¿no?.1. y Ada.. físicos. Determinar qué son los lenguajes de programación imperativos y los lenguajes que están comprendidos en este grupo. es decir. Ada ha permanecido como la primera programadora de la historia. donde se almacenaban datos y resultados intermedios. a las aplicaciones. El compilador es un programa que se encarga de la traducción global del programa realizado por el usuario. un dispositivo mecánico para efectuar sumas repetidas. o sencillamente por qué puedo hacer una suma en una calculadora online. Los intérpretes son usados para traducir programas de alta dificultad de implementación.

pero es obvio que un programa objeto compilado con antelación deberá ejecutarse con mucha mayor rapidez que uno que se debe interpretar a cada paso durante una corrida de producción. Se requiere una corrida de compilación antes de procesar los datos de un problema. Pero existen limitaciones. La siguiente vez que se utilice una instrucción. Revisar las instrucciones para localizar errores era casi tan tedioso como escribirlas por primera vez. cada instrucción del ciclo tendrá que volver a ser interpretado cada vez que se ejecute el ciclo. Además. una sola macroinstrucción podía producir varias líneas de código en lenguaje de máquina.2. Eso se puede lograr con un lenguaje declarativo como SQL. Éstos. un enfoque diferente al de la programación imperativa tradicional. La computadora sigue utilizando el lenguaje de máquina para procesar los datos. el procesador ajustaba automáticamente las localidades de memoria la próxima vez que se ejecutaba el programa. y el programa traductor produciría una serie detallada de instrucciones al lenguaje de máquina previamente preparadas. 1. La codificación en lenguaje ensamblador es todavía un proceso lento. La programación declarativa adopta. La primera es el comando u operación. o ensamblador. La segunda parte de la instrucción es el operando.faltaba algo fundamental: la electrónica. Estos programas de ensamble. el programador podría escribir "LEER ARCHIVO". Por ejemplo. En la actualidad.3. también permite a la computadora convertir las instrucciones en lenguaje ensamblador del programador en su propio código de máquina. Así. Un programador que sepa escribir programas en uno de estos lenguajes no está limitado a utilizar un solo tipo de máquina. LENGUAJES DE ALTO NIVEL Los primeros programas ensambladores producían sólo una instrucción en lenguaje de máquina por cada instrucción del programa fuente. Así. y es probable que. Además. Por ejemplo. se podría escribir la instrucción "S CRÉDITO TOTAL" para restar el valor de las mercancías devueltas del importa total de compras para obtener el importe de la factura mensual del cliente. como los programas ensambladores avanzados. El formato de operando único es popular en las microcomputadoras más pequeñas. Por ejemplo. A diferencia de los programas de ensamble. Así. Se podría asignar el valor de la mercancía devuelta sin usar durante el mes a la dirección 2047 y dársele el nombre simbólico CRÉDITO. un programa que se escribe en un lenguaje de alto nivel también tiene que traducirse a un código que pueda utilizar la máquina. 1. El camino señalado de Babbage. Un programa de instrucciones escrito en lenguaje ensamblador por un programador se llama programa fuente. Uno de los primeros pasos para mejorar el proceso de preparación de programas fue sustituir los códigos de operaciones numéricos del lenguaje de máquina por símbolos alfabéticos. almacenado en el sistema operativo del disco. pueden generar muchas líneas de código de máquina por cada proposición del programa fuente. pero los programas ensambladores traducen antes los símbolos de código de operación especificados a sus equivalentes en lenguaje de máquina. LENGUAJES INTERPRETADOS Se puede también utilizar una alternativa diferente de los compiladores para traducir lenguajes de alto nivel. y con el fin de facilitar la labor de los programadores. el programa desarrollado nunca se ejecuta mientras haya errores. lo cual hace que el programa sea más lento en tiempo de ejecución (porque se va revisando el código en tiempo de ejecución) pero más rápido en tiempo de diseño (porque no se tiene que estar compilando a cada momento el código completo). y el programa ensamblador se encarga de lo demás: asigna localidades tanto para las instrucciones como para los datos. de manera automática. Los lenguajes ensambladores tienen ventajas sobre los lenguajes de máquina. se han diseñado varios lenguajes para procesar problemas científico-matemático. No se graba el código objeto para utilizarlo posteriormente. al desarrollo de lenguajes de alto nivel que a menudo están orientados hacia una clase determinada de problemas de proceso. que indica a la computadora dónde hallar o almacenar los datos y otras instrucciones que se van a manipular. que son los códigos nemotécnicos. 2. la estructura de dos operandos se encuentra en casi todas las demás máquinas. por lo que era costosa y era frecuente que originara errores. A continuación. El desarrollo de las técnicas nemotécnicas y las macroinstrucciones condujo. no fue nunca abandonado y siguiéndolo. para una máquina diferente. Si la computadora era capaz de traducir símbolos convenientes en operaciones básicas. 1. el número de operandos de una instrucción varía en las distintas computadoras. durante el procesamiento repetitivo de los pasos de un ciclo. con lo que se copiaría un registro del archivo que estuviera leyendo el dispositivo de entrada a la memoria principal. el programador asigna un nombre simbólico y una dirección real a un dato. Durante las primeras etapas del direccionamiento simbólico. convierte cada proposición del programa fuente en lenguaje de máquina conforme vaya siendo necesario durante el proceso de los datos. Para los programadores es más fácil escribir instrucciones en un lenguaje ensamblador que en códigos de lenguajes de máquina. Por ejemplo. Dicho de otra manera. Lo único que tenía que hacer el programador era indicar a la computadora la dirección de la primera instrucción. LENGUAJES ENSAMBLADORES A principios de la década de 1950. Después de que el ensamblador convierte el programa fuente en código de máquina a éste se le denomina programa objeto. Se incurren en menos errores y los que se cometen son más fáciles de localizar. o incluido de manera permanente dentro de la máquina. un programador que escribiera la instrucción "SUMAR 0814" para una de las primeras máquinas IBM hubiera escrito: 000100000000000000000000000010111000 Además de recordar las docenas de códigos numéricos para los comandos del conjunto de instrucciones de la máquina. todas las demás en forma secuencial a partir de ese punto. LENGUAJES DE MÁQUINA El lenguaje máquina de una computadora consta de cadenas de números binarios (ceros y unos) y es el único que "entienden" directamente los procesadores. el programador sólo carga el programa fuente en la computadora junto con los datos que se van a procesar. y el programa ensamblador se encargaba de almacenar. los programas en lenguaje de alto nivel se pueden utilizar con diferentes marcas de computadores sin tener que hacer modificaciones considerables. Todas las instrucciones preparadas en cualquier lenguaje de máquina tienen por lo menos dos partes. La palabra nemotécnico se refiere a una ayuda para la memorización. naturalmente. la tarea podía llevarse meses. dejando la interpretación de los pasos específicos para llegar a dicha solución a un intérprete no especificado. Por ejemplo. las primeras computadoras eran poco tolerantes. Todas las computadoras tienen un código de operación para cada una de sus funciones. sino hasta que luego de haber compilado el programa. Se pueden escribir más rápidamente. 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. si se agregaba más tarde otra instrucción al programa. LENGUAJES DE PROGRAMACIÓN DECLARATIVOS Se les conoce como lenguajes declarativos en ciencias computacionales a aquellos lenguajes de programación en los cuales se le indica a la computadora qué es lo que se desea obtener o qué es lo que se esta buscando. el programa ensamblador traduciría la instrucción simbólica a esta cadena de bits: Más adelante se hizo otra mejora. más que a las direcciones. Todas las computadoras actuales tienen códigos nemotécnicos aunque. por lo tanto.4. se desarrollaron programas ensambladores que podían producir una cantidad variable de instrucciones en lenguaje de máquina por cada instrucción del programa fuente. como la asignación de direcciones de almacenamiento a los datos? La técnica de direccionamiento simbólico permite expresar una dirección no en términos de su localización numérica absoluta. cuando fuera preciso procesar estos datos. a su vez. En una computadora de operando único. se desarrollaron códigos nemotécnicos para las operaciones y direcciones simbólicas. A continuación. Los compiladores son aquellos cuya función es traducir un programa escrito en un determinado lenguaje a un idioma que la computadora entienda (lenguaje máquina con código binario). el programador tenía que conocer las posiciones donde se almacenan los datos y las instrucciones. Son más fáciles de mantener. Esto permite reducir sustancialmente el costo de la reprogramación cuando se adquiere equipo nuevo. simplemente especifican dónde quieren que se coloque la primera localidad del programa. Este procedimiento preparó avances posteriores. se le debe interpretar otra vez y traducir a lenguaje máquina. Los programadores tenían que traducir las instrucciones de manera directa a la forma de lenguaje de máquina que comprendían las computadoras. están diseñados para la marca y modelo específico de procesador que se utiliza. LENGUAJES COMPILADOS Naturalmente. 3. se tengan que volver a codificar los programas. Según los estándares actuales. los programadores no asignan números de dirección reales a los datos simbólicos. Una desventaja importante de estos lenguajes es que tienen una orientación a la máquina. Para agilizar la codificación. ya no aparecen errores en el código. . Los programas traductores que pueden realizar esta operación se llaman compiladores. La programación declarativa es una forma de programación que implica la descripción de un problema dado en lugar de proveer una solución para dicho problema. 4. La codificación inicial muchas veces requería meses. En vez de ello. Permiten tener mejor documentación. En vez de traducir el programa fuente y grabar en forma permanente el código objeto que se produce durante la corrida de compilación para utilizarlo en una corrida de producción futura. ¿por qué no hacer también que realizara otras funciones rutinarias de codificación. Es decir. que dice a la computadora cuál es la función que va a realizar. y darle el nombre simbólico TOTAL. El intérprete elimina la necesidad de realizar una corrida de compilación después de cada modificación del programa cuando se quiere agregar funciones o corregir errores. el programador se referirá a los nombres simbólicos. por ejemplo: Obtener los nombres de todos los empleados que tengan más de 32 años. asimismo han aparecido otros lenguajes que hacen hincapié en las aplicaciones de proceso de archivos. se construyeron las primeras computadoras. Ahorran tiempo y requieren menos atención a detalles. los símbolos que se usan varían en las diferentes marcas y modelos. el programador no se tenía que ocupar de escribir una instrucción por cada operación de máquina realizada. si era necesario modificar un programa posteriormente. En una máquina de dos operandos. no era necesario modificar las direcciones de todas las instrucciones que seguían al punto de inserción (como tendría que hacerse en el caso de programas escritos en lenguaje de máquina). los programas en lenguaje ensamblador son más fáciles de modificar que los programas en lenguaje de máquina. Al usar un lenguaje compilado (como lo son los lenguajes del popular Visual Studio de Microsoft). un programa intérprete. Se dejó a la computadora la tarea de asignar y recordar las direcciones de las instrucciones. la representación binaria de "SUMAR 0814 8672" podría hacer que se sume el valor que está en la localidad 8672 al valor que está en la dirección 0814. el equivalente binario de "SUMAR 0814" podría hacer que se sume el valor que se encuentra en la localidad de almacenamiento o dirección 0814 al valor que se encuentra en la unidad aritmética lógica. Por ejemplo. Otras ventajas de los lenguajes de alto nivel son: Son más fáciles de aprender que los lenguajes ensambladores. sino en términos de símbolos convenientes para el programador. el programador podría asignar el valor total de mercancía adquirida durante un mes por un cliente de una tienda de departamentos a la dirección 0063. durante el resto del programa.

con ellas se puede organizar y reorganizar la información. la programación consiste en indicar cómo resolver un problema mediante sentencias. permiten la recuperación rápida y flexible de información.6. forma parte de lo que se conoce como programación declarativa. todo el contenido de todas las ediciones de una colección de revistas científicas. entendiendo éstas no como subprogramas clásicos de un lenguaje imperativo (pues la programación funcional es declarativa). La lógica no es imperativa porque no sirve para indicar cómo resolver un problema (órdenes). por lo general se refieren a algoritmos. En la programación lógica. comunicar y manejar información en formas que serían imposibles sin las computadoras. El objetivo de la programación funcional es conseguir lenguajes expresivos y matemáticamente elegantes. como su nombre indica. que es un clásico de la inteligencia artificial y que se aplica de múltiples formas en el desarrollo de software comercial. Otras características propias de estos lenguajes son la no existencia de asignaciones de variables y la falta de construcciones estructuradas como la secuencia o la iteración (lo que obliga en la práctica a que todas las repeticiones de instrucciones se lleven a cabo por medio de funciones recursivas). sino como funciones puramente matemáticas. indicando no cómo. La programación declarativa es muy usada en la resolución de problemas relacionados con inteligencia artificial. al permitir conceptos tomados de los lenguajes imperativos. en la programación lógica. Debido a esto. una farmacia. CLASIFICACIÓN DE BASES DE DATOS SEGÚN CONTENIDO Esta clasificación basa su enfoque en el contenido o lo que almacena la base de datos. sin embargo. realizar proyecciones y tomar decisiones. En este sentido. Por lo tanto se puede ver que la programación declarativa tiene dos fases bien diferenciadas. 4.1. BASES DE DATOS DE TEXTO COMPLETO: Almacenan las fuentes primarias. En este modelo los datos se organizan en una forma similar a un árbol (visto al revés). utilizadas primordialmente para almacenar datos históricos que posteriormente se pueden utilizar para estudiar el comportamiento de un conjunto de datos a través del tiempo. configuración. Los sistemas gestores de bases de datos (SGBD) permiten almacenar y posteriormente acceder a los datos de forma rápida y estructurada. un algoritmo se construye especificando conocimiento en un lenguaje formal (lógica de primer orden). la programación declarativa provee el "qué". Una base de datos también se puede definir como un banco de datos o conjunto de datos que pertenecen al mismo contexto. editorial. y no se enfatiza el "cómo". Los modelos de datos no son cosas físicas: son abstracciones que permiten la implementación de un sistema eficiente de base de datos. en que los cambios de estado del sistema están dados por instrucciones particulares y no por un conjunto de condiciones arbitrariamente grande. y conceptos matemáticos.1. algo que no se cumple siempre con un lenguaje híbrido. 4. de esta manera: BASES DE DATOS BIBLIOGRÁFICAS: Solo contienen un "representante" de la fuente primaria. la carencia total de efectos laterales. la declaración y la interpretación. sin preocuparse por la forma de llegar a ello. Las características de las bases de datos pueden ser ventajosas o desventajosas: pueden ayudar a almacenar. Puede contener un resumen o extracto de la publicación original. Las bases de datos jerárquicas son especialmente útiles en el caso de aplicaciones que manejan un gran volumen de información y datos muy compartidos permitiendo crear estructuras estables y . los lenguajes funcionales puros tienen una mayor potencia expresiva. AUDIO. MODELOS DE BASES DE DATOS Además de la clasificación por la función de las bases de datos. El orden de la ejecución no resulta importante debido a que no existen efectos colaterales. etc.2. 4. DIRECTORIOS: Un ejemplo son las guías telefónicas en formato electrónico. Un ejemplo de esto puede ser la base de datos utilizada en un sistema de información de una tienda de abarrotes. de acuerdo al criterio elegido para su clasificación. 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. en la cual se deben evaluar todas las consecuencias de todas las declaraciones realizadas. TIPOS DE BASES DE DATOS Las bases de datos pueden clasificarse de varias maneras. conservando a la vez su transparencia referencial. Algunos modelos con frecuencia utilizados en las bases de datos son: BASES DE DATOS JERÁRQUICAS: Éstas son bases de datos que. PROGRAMACIÓN ORIENTADA A BASES DE DATOS Las bases de datos son programas que administran información y hacen más ordenada la información. pero nunca el texto completo. lo que hace a las soluciones más fácil de entender por las personas. cobra especial importancia el uso del anidamiento y la recursividad. bases de datos. ETC. La diferencia entre ambos estriba en que los lenguajes funcionales híbridos son menos dogmáticos que los puros. Dentro de esta clasificación se tiene lo siguiente: BASES DE DATOS ESTÁTICAS: Éstas son bases de datos de sólo lectura. BANCO DE IMÁGENES.5. o si se mantienen estáticos sin sufrir modificaciones o cambios. Un registro típico de una base de datos bibliográfica contiene información sobre el autor. En los lenguajes tradicionales.7. las cuales describen lo que debe ser calculado. Es claro que los lenguajes orientados a bases de datos son declarativos y no imperativos. el programador debe concentrarse en la lógica del algoritmo. pues el problema es "qué" se quiere hacer o "qué" se necesita buscar y encontrar en la base de datos. Otra desventaja de la programación declarativa está relacionada con la eficiencia. recuperar. una biblioteca puede considerarse una base de datos compuesta en su mayoría por documentos y textos impresos en papel e indexados para su consulta. edición. 4. sino qué hacer. 4. El control de la ejecución no es responsabilidad del programador. Al hacer un recorrido por la programación lógica. Por ejemplo.1. es decir. aparte de hacer la fácil de buscar y por supuesto de encontrar. ningún leguaje declarativo se aproxima en popularidad a los lenguajes imperativos. sin entrar en detalles de implementación irrelevantes. etc. y comunicación entre procesos. permitiendo operaciones como actualización y adición de datos. Es decir.7.1. 4. CARACTERÍSTICAS DE LOS LENGUAJES DE PROGRAMACIÓN DECLARATIVOS Los lenguajes declarativos están orientados a buscar la solución del problema. una colección de resultados de análisis de laboratorio.7. Las bases de datos tienen muchos usos: facilitan el almacenamiento de grandes cantidades de información.2. como las secuencias de instrucciones o la asignación de variables. que puede ser según la variabilidad de los datos almacenados o según el contenido. así como imprimirla o distribuirla en formas diversas. en los que no sea necesario bajar al nivel de la máquina para describir el proceso llevado a cabo por el programa.4. así como de los métodos para almacenar y recuperar información de esos contenedores. se trabaja de forma descriptiva. Entre las ventajas se destaca que la solución de un problema se puede realizar con un nivel de abstracción considerablemente alto. Existen dos grandes categorías de lenguajes funcionales: los funcionales puros y los híbridos. Un modelo de datos es básicamente una "descripción" de algo conocido como contenedor de datos (algo en donde se guarda la información). y a los nodos que no tienen hijos se los conoce como hojas. y gracias al desarrollo tecnológico de campos como la informática y la electrónica. La lógica es declarativa porque sirve para especificar qué problema resolver (condiciones). en donde un nodo padre de información puede tener varios hijos. PROGRAMACIÓN FUNCIONAL La programación funcional es un paradigma de programación declarativa basado en la utilización de funciones matemáticas. DESVENTAJAS DE LA PROGRAMACIÓN DECLARATIVA La principal desventaja de la programación declarativa es que no puede resolver cualquier problema dado. que ofrece un amplio rango de soluciones al problema de almacenar datos. BASES DE DATOS DINÁMICAS: Éstas son bases de datos donde la información almacenada se modifica con el tiempo. pero deja el "cómo" liberado a la implementación particular del intérprete. almacenados sistemáticamente para su posterior uso.En otras palabras. el contenido son cifras o números. entre otras. además de las operaciones fundamentales de consulta. fecha de publicación. como por ejemplo. se deducen las soluciones a partir de las condiciones y el énfasis de todo está en qué problema resolver. éstas también se pueden clasificar de acuerdo a su modelo de administración de datos. Es importante señalar que a pesar de hacer referencia a intérprete. La resolución de problemas complejos es resuelta por el intérprete a partir de la declaración de las condiciones dadas.3. la mayoría de las bases de datos tienen formato electrónico. lo cual implica que no puede existir asignación destructiva. VENTAJAS DE LA PROGRAMACIÓN DECLARATIVA A pesar de lo anterior existen algunas ventajas en el uso de la programación declarativa. Las expresiones o definiciones pueden ser usadas como valores y por lo tanto se pueden tratar como argumentos de otras definiciones. junto con la funcional. resulta imposible afectar el cálculo de otros y con esto se puede afirmar que cualquier secuencia de ejecución deberá conducir al mismo resultado. Los programas están formados por un conjunto de definiciones o ecuaciones. en las que se verifican ciertas propiedades como la transparencia referencial (el significado de una expresión depende únicamente del significado de sus subexpresiones). un videoclub.1 CLASIFICACIÓN DE BASES DE DATOS SEGÚN LA VARIABILIDAD DE LOS DATOS ALMACENADOS Esta clasificación depende de cómo los datos cambian o varían dentro de la base de datos. MULTIMEDIA.7. no en sí la forma de hacerlo. Como su nombre lo indica. 4. estableciendo relaciones entre entidades. almacenan su información en una estructura jerárquica. sino que también se puede estar trabajando con "lenguajes compilados". organizar. más que en el control de la secuencia. que permite localizarla. PROGRAMACIÓN LÓGICA La idea fundamental de la programación lógica consiste en emplear la lógica como lenguaje de programación. el proceso es relativamente más lento que en la programación imperativa. Las listas representan la estructura fundamental de datos. Se establece entonces que la idea esencial de la programación lógica es: algoritmos = lógica + control. Los programas escritos en un lenguaje funcional están constituidos únicamente por definiciones de funciones. Las variables sólo pueden tener asignado un solo valor a lo largo de la ejecución del programa. La programación lógica. En contraste. título. y por tanto. 4. aparece como uno de sus lenguajes más representativos. se especifican las condiciones que satisfacen las soluciones. porque sino se estaría en presencia de una base de datos a texto completo (o de fuentes primarias). de una determinada publicación. Dado que es necesaria una fase de interpretación extra. 4. Prolog. El problema se describe especificando qué caracteriza a sus posibles soluciones. no hay que limitarse a "lenguajes interpretados" en el sentido habitual del término. 4. El nodo que no tiene padres es llamado raíz. pero también afecta de alguna manera ya que existen enormes cantidades de información en bases de datos de las que no se tiene control del acceso. En la actualidad. sino que está restringida al subconjunto de problemas para los que el intérprete o compilador fue diseñado. y el problema se resuelve mediante un mecanismo de inferencia (control) que actúa sobre aquél. que al calcular un valor. es decir.2.7.

Esto difiere de los lenguajes imperativos tradicionales. Forma Normal de Boyce-Codd: una tabla está en FNBC. etc. multiplicar número por dos. Perl. LENGUAJES DE PROGRAMACIÓN IMPERATIVOS En ciencias de la computación se llama lenguajes imperativos a aquellos en los cuales se le ordena a la computadora cómo realizar una tarea siguiendo una serie de pasos o instrucciones. y la secuencia en que este se ejecuta. se puede hablar de lenguajes de dominio específico y de dominio general. lo mismo datos que instrucciones. Durante su diseño. datos) comportamiento (esto es. condicionales. la arquitectura consta de una secuencia de celdas. Paso 4. y de un procesador. principalmente aritméticas y booleanas. hasta que un comando no ha sido ejecutado no se lee el siguiente.2. un lenguaje procedural ofrece al programador conceptos que se traducen de forma natural al modelo de la máquina. a raíz de que se basan en lógica matemática. La programación estructurada anima al programador a pensar sobre todo en términos de procedimientos o funciones. C++. PASCAL. El lenguaje más habitual para construir las consultas a bases de datos relacionales es SQL. Clipper. También las bases de datos deductivas son llamadas base de datos lógica. llamadas comandos. y en consecuencia. una base de datos relacional pasa por un proceso al que se le conoce como normalización (reglas fundamentales para el buen funcionamiento de una base de datos relacional) de una base de datos. cercanos a la máquina. un algoritmo en el que se describen los pasos necesarios para solucionar un problema. al poder tener valores bien diferenciados en sus atributos). con el fin de organizar o cambiar valores en ciertas partes de la memoria. BASE DE DATOS DEDUCTIVAS: un sistema de base de datos deductivas. . Paso 3. ya que se necesitan sus estructuras (bucles. por ejemplo: Paso 1. trata de almacenar en la base de datos los objetos completos (estado y comportamiento). solicitar número. LENGUAJES DE PROGRAMACIÓN ORIENTADOS A OBJETOS En la Programación Orientada a Objetos (POO u OOP según siglas en inglés) se definen los programas en términos de "clases de objetos". BASES DE DATOS DE RED: Éste es un modelo ligeramente distinto del jerárquico. los usuarios pueden definir operaciones sobre los datos como parte de la definición de la base de datos. en los que los datos y los procedimientos están separados y sin relación. Esto es pensando en cada relación como si fuese una tabla que está compuesta por registros (las filas de una tabla). es un sistema de base de datos pero con la diferencia de que permite hacer deducciones a través de inferencias.de gran rendimiento. en la mayor parte de ellos. ALGOL. 5. En este modelo. Los lenguajes imperativos describen paso a paso un conjunto de instrucciones que deben ejecutarse para variar el estado un programa y hallar la solución. Fue una gran mejora con respecto al modelo jerárquico. es la aplicación quien controla qué porciones de código se ejecuta. Está en segunda forma normal y todo atributo no primo es implicado por la clave primaria en una secuencia no transitiva. o mejor dicho con el propósito que se utiliza el programa. Su idea fundamental es el uso de "relaciones".… En este tipo de lenguajes. ya que ofrecía una solución eficiente al problema de redundancia de datos. pero no se puede incluir una lista de datos. ALGUNOS LENGUAJES IMPERATIVOS Algunos lenguajes de programación imperativos que se pueden mencionar son: BASIC C C++ Java C# PHP Perl 6. Esto tiene la considerable ventaja de que es más fácil de entender y de utilizar para un usuario esporádico de la base de datos.1. Toda relación que tenga como clave sólo un atributo está en 2FN. Tercera Forma Normal (3FN): dependencia transitiva. el cual es capaz de ejecutar de manera secuencial una serie de operaciones. 7. Dentro de la programación imperativa. Quinta Forma Normal (5FN): está en cuarta forma normal y toda dependenciajoin viene implicada por claves candidatas. un objeto contiene toda la información. Los atributos han de ser atómicos. es decir. llamando procedimientos según sea necesario. Paso 2. La programación orientada a objetos expresa un programa como un conjunto de estos objetos. Hacerlo puede llevar al programador a seguir el hábito erróneo de crear clases contenedoras de información por un lado y clases con métodos que manejen esa información por otro (llegando a una programación estructurada camuflada en un lenguaje de programación orientada a objetos). aun así. y campos (las columnas de una tabla). etc. Pese a que ésta es la teoría de las bases de datos relacionales creadas por Edgar Frank Codd. ya que lo único que se busca es el procesamiento de unos datos de entrada para obtener otros de salida. Durante los años '80 (1980-1989) la aparición de dBASE produjo una revolución en los lenguajes de programación y sistemas de administración de datos. en cada uno de los atributos sólo se puede incluir un dato. Esto quiere decir que el usuario debe especificar todas las operaciones de acceso a datos llamando a los procedimientos necesarios para obtener la información requerida. se crea una clave foránea para la nueva tabla. la dificultad que significa administrar la información en una base de datos de red ha significado que sea un modelo utilizado en su mayoría por programadores más que por usuarios finales. sí y sólo sí las únicas dependencias funcionales elementales son aquellas en las que la Clave primaria determina un atributo. BASES DE DATOS DOCUMENTALES: permiten la indexación a texto completo. Esta característica lleva a tratarlos como unidades indivisibles. requiere de unos métodos para poder tratarlos (lo que hace que ambos conceptos están íntimamente entrelazados). Los programadores de lenguajes imperativos escriben funciones y después les pasan los datos. imprimir resultado de la operación. etc. 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. C. impidiendo así accesos incorrectos o conflictos). que representarían las tuplas. ya que no debe nunca separar o dar mayor importancia a los atributos a favor de los métodos. que al contar con una serie de atributos definitorios. ni viceversa. A su vez. Una base de datos orientada a objetos es una base de datos que incorpora todos los conceptos importantes del paradigma de objetos: encapsulación (propiedad que permite ocultar la información al resto de los objetos. 5. Algunos ejemplos son: FORTRAN. Segunda Forma Normal (2FN): dependencia completa. no tardó en consolidarse como un nuevo paradigma en los modelos de base de datos. Structured Query Language o Lenguaje Estructurado de Consultas. secuencialmente. llamadas memoria. bastante reciente. PHP. Dada esta propiedad de conjunto de una clase de objetos. ADA. Estos lenguajes acceden a un registro. Los programadores que emplean lenguajes orientados a objetos definen objetos con datos y métodos y después envían mensajes a los objetos diciendo que realicen esos métodos por sí mismos. un estándar implementado por los principales motores o sistemas de gestión de bases de datos relacionales. es decir. y en líneas generales realizar búsquedas más potentes. Gráficamente las celdas de la tabla contienen solo un valor. El proceso anterior se puede realizar con un lenguaje imperativo como por ejemplo BASIC. Así se va accediendo a registros y se van procesando hasta que se obtienen los datos deseados. acceden a otro registro. Se basa principalmente en reglas y hechos que son almacenados en la base de datos. Las sentencias de un lenguaje procedural deben estar embebidas en un lenguaje de alto nivel. La ejecución de estos comandos se realiza. Aunque nunca debe olvidarse que dBase no utilizaba SQL como lenguaje base para su gestión. que también deben procesar. pero no las instrucciones necesarias para solucionarlo. la mayoría de las veces se conceptualiza de una manera más fácil de imaginar. Esto permite hacer los programas módulos más fáciles de escribir. herencia (propiedad a través de la cual los objetos heredan comportamiento dentro de una jerarquía de clases y polimorfismo (propiedad de una operación mediante la cual puede ser aplicada a distintos tipos de objetos. el lugar y la forma en que se almacenen los datos no tienen relevancia (a diferencia de otros modelos como el jerárquico y el de red). ya que lo único que se busca es el procesamiento de unos datos y los procedimientos están separados y sin relación. La normalización de una base de datos relacional consiste en las siguientes reglas: Primera Forma Normal (1FN): se eliminan los grupos repetitivos. Estas relaciones podrían considerarse en forma lógica como conjuntos de datos llamados "tuplas". Se trata de que cada atributo guarde la menor cantidad de información posible. procedimientos o métodos) e identidad (propiedad del objeto que lo diferencia del resto). C#. se tiene un conjunto de instrucciones que le indican al computador cómo realizar una tarea. LENGUAJES IMPERATIVOS PROCEDURALES En los lenguajes tradicionales o procedurales. mantener y reutilizar. objetos que son entidades que combinan estado (es decir. La información puede ser recuperada o almacenada mediante "consultas" que ofrecen una amplia flexibilidad y poder para administrar la información.) para obtener y procesar cada registro individual. y propio de los modelos informáticos orientados a objetos. esa nueva tabla hereda la clave primaria de la relación en la que se encontraban. Para eliminar los grupos repetitivos se pone cada uno de ellos en una tabla aparte. Con un lenguaje procedural el usuario (normalmente será un programador) especifica qué datos se necesitan y cómo obtenerlos. Los lenguajes procedurales están fundamentados en la utilización de variables para almacenar valores y en la realización de operaciones con los datos almacenados. El programador tiene que traducir la solución abstracta del problema a términos muy primitivos. Según el dominio. que colaboran entre ellos para realizar tareas. aunque sea compuesto. Dbase. el programador debe pensar indistintamente en ambos términos. En bases de datos orientadas a objetos. dispone de mecanismos de interacción (los llamados métodos) que favorecen la comunicación entre objetos (de una misma clase o de distintas). 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. lo procesan y basándose en los resultados obtenidos. Una de las principales limitaciones de este modelo es su incapacidad de representar eficientemente la redundancia de datos. en las que no se separan (ni deben separarse) información (datos) y procesamiento (métodos). De esta forma. BASES DE DATOS RELACIONAL: Éste es el modelo más utilizado en la actualidad para modelar problemas reales y administrar datos dinámicamente. en las cuales se pueden guardar en forma codificada. Los lenguajes imperativos se basan en comandos u órdenes que se le dan a la computadora para que haga algo. Tras ser postulados sus fundamentos en 1970 por Edgar Frank Codd. Está en 2FN si está en 1FN y si sus atributos no principales dependen de forma completa de la clave principal. 5. (los denominados atributos) que permite definirlo e identificarlo frente a otros objetos pertenecientes a otras clases (e incluso entre objetos de la misma clase. BASES DE DATOS ORIENTADAS A OBJETOS: este modelo. pero. Esto último se realizará mediante mecanismos internos de inferencia de información a partir de la descripción realizada. su diferencia fundamental es la modificación del concepto de nodo: se permite que un mismo nodo tenga varios padres (posibilidad no permitida en el modelo jerárquico). La ejecución de la aplicación se inicia con la primera línea de código. de los laboratorios IBM en San José (California). el cambio de estado en los propios objetos. Java. y sigue una ruta predefinida a través de la aplicación. En general. y en segundo lugar en las estructuras de datos que esos procedimientos manejan. C.

sino que el programador esté capacitado para dar razones contundentes y certeras del por qué un lenguaje es mejor que otro para determinada tarea. y que así también el programador sea capaz de seleccionar el lenguaje que más le convenga para la resolución de un problema determinado. y la invocación de un comportamiento en una referencia producirá el comportamiento correcto para el tipo real del objeto referenciado. El sistema maneja el evento enviando el mensaje adecuado al objeto pertinente. pueden compartir el mismo nombre. Esta característica o propiedad permite por tanto ejecutar la información al resto de los objetos. y cuyo valor puede ser alterado por la ejecución de algún método. Form2. PRINCIPALES DIFERENCIAS ENTRE LA PROGRAMACIÓN IMPERATIVA Y LA PROGRAMACIÓN ORIENTADA A OBJETOS La programación orientada a objetos es más moderna. que superan y amplían conceptos antiguos ya conocidos. POLIMORFISMO: comportamientos diferentes. y se pueden crear instancias de esa clase al tener Form1. Entro ellos destacan los siguientes: OBJETO: entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o funcionalidad ("métodos"). Con esta propiedad. pues de esa manera se logra tener una perspectiva global y mucho más amplia que tendrá mucho peso al estar bien documentados y al conocer qué son.4. Introduce nuevos conceptos. así como la "función" es un procedimiento interno del método del objeto.1. que hace los datos visibles desde fuera del objeto. Desde el punto de vista del comportamiento. es lo que el objeto puede hacer. qué ventajas tiene uno respecto del otro. con algunos nuevos. solamente los propios métodos internos del objeto pueden acceder a su estado. Estos pueden compartir (y extender) su comportamiento sin tener que reimplementar su comportamiento. ALGUNOS LENGUAJES ORIENTADOS A OBJETOS Entre los lenguajes orientados a objetos más importantes que se pueden mencionar. Este estudio también permite desarrollar un sentido crítico de los lenguajes de programación. que puede ser únicamente accedida y alterada por un método del objeto. o un mensaje enviado por un objeto). 7. asociados a objetos distintos. propiedades y funcionamiento de los lenguajes de programación es elemental para cualquier estudiante o profesional dedicado a la computación. Los procesos. . 7. los objetos heredan comportamientos dentro de una jerarquía de clases. eliminando efectos secundarios e interacciones inesperadas. La aplicación entera se reduce a un agregado o rompecabezas de objetos. Por ejemplo en Visual Basic. o la generación de un "evento" con un nuevo mensaje para otro objeto del sistema. cómo se clasifican y de qué manera trabajan los lenguajes de programación. CARACTERÍSTICAS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS Las características más importantes de la programación orientada a objetos son las siguientes: ABSTRACCIÓN: Cada objeto en el sistema sirve como modelo de un "agente" abstracto que puede realizar trabajo. declaración o definición de un tipo de objeto. Esto asegura que otros objetos no pueden cambiar el estado interno de un objeto de maneras inesperadas. O dicho de otro modo. Este tipo de lenguajes son muy recientes en comparación a los primeros lenguajes de programación que aparecieron. cuya ejecución se desencadena tras la recepción de un "mensaje". La instanciación es la lectura de estas definiciones y la creación de un objeto a partir de ellas. Estudiar los conceptos básicos. las referencias y las colecciones de objetos pueden contener objetos de diferentes tipos. una variedad de técnicas son requeridas para ampliar una abstracción. Esta investigación servirá para evaluar correctamente los lenguajes de programación. Cuando un objeto pertenece a más de una clase se dice que hay herencia múltiple. etc. y que se utiliza para indicar distintas situaciones posibles para el objeto (o clase de objetos). Esto suele hacerse habitualmente agrupando los objetos en clases y estas en árboles o enrejados que reflejan un comportamiento común. 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. Cada vez que se construye un objeto de una clase se crea una instancia de esa clase. ESTADO INTERNO: es una propiedad invisible de los objetos. una "variable no es más que un contenedor interno del atributo del objeto o de un estado interno. o a objetos internos del sistema (del programa). La programación orientada a objetos incorpora en su entorno de ejecución mecanismos tales como el polimorfismo y el envío de mensajes entre objetos. Un programa orientado a objetos es un método de implementación en el que los programas están organizados como colecciones de objetos. CLASE: definiciones de las propiedades y comportamiento de un tipo de objeto concreto. EVENTO: un suceso en el sistema (tal como una interacción del usuario con la máquina. que le ordena que ejecute uno de sus métodos con ciertos parámetros asociados al evento que lo generó. MÉTODO: algoritmo asociado a un objeto (o a una clase de objetos). Label. etc. El aislamiento protege a las propiedades de un objeto contra su modificación por quien no tenga derecho a acceder a ellas. permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstracción. es un módulo natural. La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. ENCAPSULAMIENTO: también llamado "ocultación de la información". Luego del desarrollo de esta investigación resulta fácil comprender los tipos y la clasificación que se les da a los lenguajes de programación en base a sus funcionalidades y características. Un método puede producir un cambio en lar propiedades del objeto. diferencias. y donde todas las clases son miembros de una jerarquía de clases conectadas por relaciones de herencia. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. CONCEPTOS BÁSICOS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS La programación orientada a objetos es una nueva forma de programar que trata de encontrar la solución a problemas de una forma que ofrece muchas ventajas y facilidades que no se tenían anteriormente. al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté usando.3. y "comunicarse" con otros objetos en el sistema sin revelar cómo se implementan estas características. Se define al conjunto de datos como "estado". MENSAJE: una comunicación dirigida a un objeto. La programación orientada a objetos se basa en lenguajes que soportan sintáctica y semánticamente la unión entre los tipos abstractos de datos y sus operaciones (a esta unión se la suele llamar clase). Algunos lenguajes relajan esto. y cada tipo de objeto expone una interfaz a otros objetos que específica cómo pueden interactuar con los objetos de la clase. 7. Corresponden a los objetos reales del mundo que nos rodea. aparecen los siguientes: Ada C++ C# VB. donde cada uno es una instancia de alguna clase. determinando las ventajas y desventajas que cada uno de ellos presenta. y "métodos" como el conjunto de procedimientos que pueden alterar ese estado. 7.Un objeto se puede definir como un grupo de procedimientos que comparten un estado. Por ejemplo en Visual Basic. se tiene la clase Form. Cada objeto está aislado del exterior. PROPIEDAD O ATRIBUTO: contenedor de un tipo de datos asociados a un objeto (o a una clase de objetos). Una clase es una colección de objetos similares o la implementación. formando una jerarquía de clasificación. clasificación.NET Clarion Delphi Eiffel Jave Lexico (en castellano) Objective-C Ocaml Oz PHP PowerBuilder Pitón Ruby Smalltalk CONCLUSIÓN Los lenguajes de programación no son simplemente un detalle más del amplio mundo de la informática. En comparación con un lenguaje imperativo. informar y cambiar su estado. impidiendo así accesos incorrectos o conflictos. y por lo tanto deben ser vistos como el fundamento y la base del desarrollo y avance de la computación. esta característica no está soportada por algunos lenguajes (como Java). sino que se relacionan entre sí. es una evolución de la programación imperativa plasmada en el diseño de una familia de lenguajes conceptos que existían previamente.) HERENCIA: las clases no están aisladas.2. las funciones o los métodos pueden también ser abstraídos y cuando lo están. Así se está creando una instancia de la clase Form. el polimorfismo se da al tener diferentes tipos de objetos (Form.