lunes, 1 de diciembre de 2008

Programacion

Lenguajes de Programacion:

Es un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones, y es utilizado para controlar el comportamiento físico y lógico de una máquina.
Aunque muchas veces se usan los términos 'lenguaje de programación' y 'lenguaje informático' como si fuesen sinónimos, no tiene por qué ser así, ya que los lenguajes informáticos engloban a los lenguajes de programación y a otros más, como, por ejemplo, el HTML (lenguaje para el marcado de páginas web que no es propiamente un lenguaje de programación).


Lenguajes de alto nivel:

Son normalmente fáciles de aprender porque están formados por elementos de lenguajes naturales, como el inglés. En BASIC, uno de los lenguajes de alto nivel más conocidos, los comandos como "IF CONTADOR = 10 THEN STOP" pueden utilizarse para pedir a la computadora que pare si el CONTADOR es igual a 10. Esta forma de trabajar puede dar la sensación de que las computadoras parecen comprender un lenguaje natural; en realidad lo hacen de una forma rígida y sistemática, sin que haya cabida, por ejemplo, para ambigüedades o dobles sentidos.

Son independientes de la máquina, las instrucciones no dependen del diseño de la maquina, los programas son portables o transportables, pueden ejecutarse en diferentes máquinas.

Por ejemplo: las líneas siguientes son: una línea de un programa en Turbo Pascal y su línea equivalente en pseudo código.

IF (x=y) AND (z=w) THEN WRITE (`esto es una prueba');
si (x=y) y (z=w) entonces ESCRIBIR (`esto es una prueba');

Estas líneas se pueden comprender fácilmente conociendo la traducción de las palabras inglesas IF(si), THEN (entonces), WRITE(escribir / imprimir), AND(y) y sin necesidad de mucha explicación.

Es posible escribir también operaciones como:

Z := x + y la suma x + y se asigna a la variable z.


Existen muchos tipos de lenguaje de alto nivel, por citar alguno:

ADA
BASIC
Ada
ALGOL
Basic
C#
Clipper
COBOL
Fortran
FoxPro o Visual Foxpro
Java
Lexico
Logo
PL/SQL
RPG
MATLAB
SISTEMA BERNAL ITM
Modula-2

Lenguajes de bajo nivel:

Son para facilitar y agilizar su labor a los programadores, se buscaron nuevos lenguajes. Cuando abstraemos los opcodes y los sustituimos por una palabra que sea una clave de su significado, se tiene el concepto de Lenguaje Ensamblador. Así, el lenguaje ensamblador representa las acciones del ordenador mediante pequeñas abreviaturas de palabras en inglés. Podemos entonces definir al Lenguaje Ensamblador de la siguiente forma:

Lenguaje Ensamblador consiste en asociar a los opcodes palabras clave que faciliten su uso por parte del programador
No obstante, el lenguaje ensamblador requiere de muchas instrucciones para realizar simples operaciones.

Ejemplo:

LOAD R1, (B)
LOAD R2, (C)
ADD R1, R2
STORE (A), R1

Lenguaje maquina:

Están escritos en lenguajes directamente inteligibles por la maquina (computadora), ya que sus instrucciones son cadenas binarias (0 y 1). Da la posibilidad de cargar (transferir un programa a la memoria) sin necesidad de traducción posterior lo que supone una velocidad de ejecución superior, solo que con poca fiabilidad y dificultad de verificar y poner a punto los programas.

Ejemplo:

100001010101010
100100101010100
100011100101110


Generadores de aplicaciones:

Es una herramienta para crear programas que hagan de interfase entre el usuario y la base de datos. El uso de un generador de aplicaciones puede reducir el tiempo que se necesita para diseñar un programa de aplicación. Los generadores de aplicaciones constan de procedimientos que realizan las funciones fundamentales que se utilizan en la mayoría de los programas. Estos procedimientos están escritos en un lenguaje de programación de alto nivel y forman una librería de funciones entre las que escoger. El usuario especifica qué debe hacer el programa y el generador de aplicaciones es quien determina cómo realizar la tarea.

Tipos de Generadores de Aplicación:

Herramientas CASE:
Es una combinación de herramientas software (aplicaciones) y de metodologías de desarrollo.Herramientas de programación:Se engloban aquí los compiladores, los editores y los depuradores de los lenguajes de programación convencionales. Ejemplos de estas herramientas son:
1.Herramientas de codificación convencionales:Hace tiempo, las únicas herramientas de las que disponía un ingeniero de software eran las herramientas de codificación convencionales (compiladores, editores, depuradores). Actualmente estas herramientas siguen existiendo, pero están respaldadas por todas las otras herramientas CASE.

2.Herramientas de codificación de cuarta generación: El objetivo final del CASE es la generación automática de código, esto es, la representación de sistemas a un nivel de abstracción más alto que el de los lenguajes de programación convencionales. Idealmente, estas herramientas de generación de código no sólo traducirán la descripción de un sistema a un programa operativo, sino que también ayudarán a verificar la corrección de la especificación del sistema, de tal forma que la salida resultante satisfaga los requisitos del usuario.

3.Herramientas de programación orientadas a los objetos: Un entorno O-O típico incorpora características de las interfaces de tercera generación con funciones especializadas como la del “inspector”, una función que permite al ingeniero de software examinar todos los objetos contenidos en unas bibliotecas de objetos para determinar si pueden ser reutilizados en la aplicación actual.

Ejemplos de Generadores de Aplicación:


PlusPhone es un generador gráfico de alto nivel en entorno Windows desarrollado por la empresa TeleContact, que permite generar de forma visual el código necesario para efectuar aplicaciones ITO (Integración de la Telefonía y los Ordenadores) basadas en las tarjetas TEIMA. Es una herramienta CASE compuesta por más de 12.000 líneas de código, escrito en el lenguaje de programación C++. Otra característica importante del Generador de Aplicaciones, es la necesidad de compilar una aplicación antes de proceder a su ejecución, garantizándonos así, un correcto funcionamiento de la misma.

ProGen Plus es el más completo generador de aplicaciones en AS/400. La inversión se recupera en un plazo no superior a los 3 meses de utilización.Utiliza las bases de datos existentes, tanto si son de desarrollo propio como si se trata de paquetes Standard y Generación de código fuente.Los programas son transportables a cualquier otro AS/400 sin necesidad de complicados y costosos "runtimes". Pueden llamar y ser llamados desde cualquier aplicación, consiguiendo una integración absoluta con sus sistemas actuales.Los programas ProGen "responden" mucho más rápido que los habituales, al utilizar las últimas tecnologías en programación.Múltiples tipos de programas: consultas, mantenimientos, informes, ventanas de ayuda.

Traductor de lenguaje:

Los traductores de lenguaje son programas que traducen a su vez los programas fuentes escritos en lenguajes de alto nivel a código maquina.

Estos se dividen en dos tipos:

Intérpretes:
Un interprete es un traductor que toma un programa fuente, lo traduce y a continuación lo ejecuta. BASIC es un lenguaje interpretado.

Compiladores:

Es un programa que traduce programas fuentes escritos en alto nivel a lenguaje máquina (programa objeto). Un programa objeto no ha sido traducido normalmente a código maquina sino a ensamblador. Para conseguir el programa maquina real se debe utilizar un programa llamado montador o enlazador (linker). El proceso de enlazador conduce a un programa en lenguaje máquina directamente ejecutable.
Lenguajes compiladores:
Es un programa informático que traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación, generando un programa equivalente que la máquina será capaz de interpretar. Usualmente el segundo lenguaje es código máquina, pero también puede ser simplemente texto. Este proceso de traducción se conoce como compilación.
Tipos de compiladores:
Esta taxonomía de los tipos de compiladores no es excluyente, por lo que puede haber compiladores que se adscriban a varias categorías:
  • Compiladores cruzados
  • Compiladores optimizadores
  • Compiladores de una sola pasada
  • Compiladores de varias pasadas
  • Compiladores JIT (Just In Time)