El documento describe los diferentes tipos de lenguajes de programación, incluyendo lenguajes de máquina, ensambladores, compiladores e intérpretes. También discute conceptos como el álgebra relacional, lenguaje de consulta estructurado (SQL), lenguajes de definición y manipulación de datos.
2. Un lenguaje de programación es un idioma artificial
diseñado para expresar computaciones que pueden ser
llevadas 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
expresar algoritmos con precisión, o como modo de
comunicación humana.] 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 y se mantiene el código
fuente de un programa informático se le llama
programación.
3. 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. Todas las
instrucciones preparadas en cualquier
lenguaje de máquina tienen por lo menos
dos partes. La primera es el comando u
operación, que dice a la computadora
cuál es la función que va a realizar.
4. A principios de la década de 1950, y con el fin de facilitar
la labor de los programadores, se desarrollaron códigos
nemotécnicos para las operaciones y direcciones
simbólicas. La palabra nemotécnico se refiere a una
ayuda para la memorización. Uno de los primeros pasos
para mejorar el proceso de preparación de programas
fue sustituir los códigos de operaciones numéricos del
lenguaje de máquina por símbolos alfabéticos, que son
los códigos nemotécnicos. Todas las computadoras
actuales tienen códigos nemotécnicos
aunque, naturalmente, los símbolos que se usan varían en
las diferentes marcas y modelos. La computadora sigue
utilizando el lenguaje de máquina para procesar los
datos, pero los programas ensambladores traducen antes
los símbolos de código de operación especificados a sus
equivalentes en lenguaje de máquina.
5. Los primeros programas ensambladores
producían sólo una instrucción en lenguaje
de máquina por cada instrucción del
programa fuente. Para agilizar la
codificación, 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. Dicho de otra
manera, una sola macroinstrucción podía
producir varias líneas de código en
lenguaje de máquina.
6. Naturalmente, 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. Los programas traductores que pueden
realizar esta operación se llaman compiladores. Éstos, como los
programas ensambladores avanzados, pueden generar
muchas líneas de código de máquina por cada proposición del
programa fuente. Se requiere una corrida de compilación antes
de procesar los datos de un problema.
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).
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
código.
7. Se puede también 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 código objeto que se produce durante la
corrida de compilación para utilizarlo en una corrida de
producción futura, el programador sólo carga el
programa fuente en la computadora junto con los datos
que se van a procesar. A continuación, un programa
intérprete, almacenado en el sistema operativo del
disco, o incluido de manera permanente dentro de la
máquina, convierte cada proposición del programa
fuente en lenguaje de máquina conforme vaya siendo
necesario durante el proceso de los datos. No se graba el
código objeto para utilizarlo posteriormente.
8. El calificativo “formal”, determina un lenguaje que es construido
estableciendo una teoría y se le llamaría artificial. Un lenguaje formal
como la lógica consiste de un conjunto de oraciones llamadas fórmulas
o expresiones bien formadas. “lenguaje artificial” se refiere al hecho de
que se forma por medio de reglas de formación, “formal” se refiere
específicamente al hecho de que las oraciones de estos lenguajes
consisten de una lista de símbolos sujetos a diversas interpretaciones.
Una de las metas en computación es poder especificar rigurosamente
los significados por los métodos de interpretación de los sistemas
formales, estos métodos constituyen las semánticas del lenguaje formal.
El proceso de generación y desarrollo de un lenguaje formal es
mediante las palabras y las oraciones que son perfectamente definidas:
una palabra mantiene el mismo significado prescindiendo del contexto
en el que se encuentre.
Los lenguajes formales son, exentos de cualquier componente
semántico fuera de sus operadores y relaciones, y es gracias a esta
ausencia de significado especial, que los lenguajes formales pueden ser
usados para modelar una teoría de la mecánica, de la ingeniería
electrónica, etc., en la lingüística u otra naturaleza, la cual asume el
estatus del componente semántico de tal lenguaje.
9. El álgebra relacional es un conjunto de operaciones
que describen paso a paso como computar una
respuesta sobre las relaciones, tal y como éstas son
definidas en el modelo relacional. Denominada de
tipo procedimental, a diferencia del Cálculo
relacional que es de tipo declarativo.
Describe el aspecto de la manipulación de datos.
Estas operaciones se usan como una representación
intermedia de una consulta a una base de datos
y, debido a sus propiedades algebraicas, sirven para
obtener una versión más optimizada y eficiente de
dicha consulta.
10. El Cálculo relacional es un lenguaje de
consulta que describe la respuesta
deseada sobre una Base de datos sin
especificar como obtenerla, a
diferencia del Álgebra relacional que es
de tipo procedural, el cálculo relacional
es de tipo declarativo; pero siempre
ambos métodos logran los mismos
resultados.
11. Cuando hablamos de optimización de consultas nos
referimos a mejorar los tiempos de respuesta en un
sistema de gestión de bases de datos
relacional, pues la optimización es el proceso de
modificar un sistema para mejorar su eficiencia o
también el uso de los recursos disponibles.
En bases de datos relacionales el lenguaje de
consultas SQL es el más utilizado por el común de los
programadores y desarrolladores para obtener
información desde la base de datos. La complejidad
que pueden alcanzar algunas consultas puede ser
tal, que el diseño de una consulta puede tomar un
tiempo considerable, obteniendo no siempre una
respuesta óptima.
12. El lenguaje de consulta estructurado o SQL
(por sus siglas en inglés structured query
language) es un lenguaje declarativo de
acceso a bases de datos relacionales que
permite especificar diversos tipos de
operaciones en éstas. Una de sus
características es el manejo del álgebra y
el cálculo relacional permitiendo efectuar
consultas con el fin de recuperar -de una
forma sencilla- información de interés de
una base de datos, así como también
hacer cambios sobre ella. Es un lenguaje
informático de cuarta generación (4GL).
13. Una vez finalizado el diseño de una base de datos y
escogido un SGBD para su implementación, el primer
paso consiste en especificar el esquema conceptual y el
esquema interno de la base de datos, y la
correspondencia entre ambos. En muchos SGBD no se
mantiene una separación estricta de niveles, por lo que el
administrador de la base de datos y los diseñadores
utilizan el mismo lenguaje para definir ambos
esquemas, es el lenguaje de definición de datos (LDD). El
SGBD posee un compilador de LDD cuya función consiste
en procesar las sentencias del lenguaje para identificar
las descripciones de los distintos elementos de los
esquemas y almacenar la descripción del esquema en el
catálogo o diccionario de datos. Se dice que el
diccionario contiene metadatos: describe los objetos de
la base de datos.
14. Un Lenguaje de Manipulación de Datos (Data
Manipulation Language, DML) es un lenguaje
proporcionado por el sistema de gestión de
base de datos que permite a los usuarios de la
misma llevar a cabo las tareas de consulta o
manipulación de los datos, organizados por el
modelo de datos adecuado.
El lenguaje de manipulación de datos más
popular hoy día es SQL, usado para recuperar
y manipular datos en una base de datos
relacional. Otros ejemplos de DML son los
usados por bases de datos IMS/DL1, CODASYL
u otras.
15. Lenguaje de control de Datos (DCL): Está
conformado por sentencias que controlan la
integridad, atomicidad y en general la
seguridad de los datos. Contiene elementos
útiles para trabajar en un entorno
multiusuario, en el que es importante la
protección delos datos, la seguridad de las
tablas y el establecimiento de restricciones en
el acceso, así como elementos para coordinar
la compartición de datos por parte de usuarios
concurrentes, asegurando que no interfieren
unos con otros. Se utiliza para cambiar los
permisos asociados con un usuario o función
de la base de datos. Sus instrucciones son:
16. • GRANT: permite a un usuario trabajar con los datos o
ejecutar determinadas instrucciones Transact - SQL.
• DENY: deniega los permisos sobre los objetos de la base
de datos. Este es la orden que siempre prevalece.
• REVOKE: quita un permiso concedido o denegado
previamente.
Para el acceso y cambio de los datos Transact - SQL
presenta el Lenguaje de tratamiento de datos (DML, Data
Management Language), que cuenta con cuatro
instrucciones, con las cuales se pueden implementar gran
parte de las operaciones de mantenimiento:
• SELECT recupera los datos existentes.
• UPDATE se usa para cambiar los datos.
• INSERT permite agregar nuevos datos.
• DELETE borra datos de la base de datos.
17. Aunque el cálculo relacional es difícil de entender y de
usar, tiene una propiedad muy atractiva: es un lenguaje
no procedural. Esto ha hecho que se busquen técnicas
no procedurales algo más sencillas, resultando en dos
nuevas categorías de lenguajes relacionales: orientados a
transformaciones y gráficos.
Los lenguajes orientados a transformaciones son lenguajes
no procedurales que utilizan relaciones para transformar
los datos de entrada en la salida deseada. Estos lenguajes
tienen estructuras que son fáciles de utilizar y que
permiten expresar lo que se desea en términos de lo que
se conoce. Uno de estos lenguajes es SQL (Structured
Query Language).
.
18. Los lenguajes gráficos visualizan en pantalla una fila vacía
de cada una de las tablas que indica el usuario. El usuario
rellena estas filas con un `ejemplo' de lo que desea y el
sistema devuelve los datos que siguen tal ejemplo. Uno de
estos lenguajes es QBE (Query-by-Example).
Otra categoría son los lenguajes de cuarta generación
(4GL), que permiten diseñar una aplicación a medida
utilizando un conjunto limitado de órdenes en un entorno
amigable (normalmente un entorno de menús). Algunos
sistemas aceptan cierto lenguaje natural, una versión
restringida del idioma inglés, al que algunos llaman
lenguaje de quinta generación (5GL), aunque todavía se
encuentra en desarrollo