Lenguaje de Programación


-Un lenguaje de programación es un idioma artificial diseñado para expresarcomputaciones 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.1Está 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


-También la palabra programación se define como el proceso de creación de un programa decomputadora, mediante la aplicación de procedimientos lógicos, a través de los siguientes pasos:


  1. El desarrollo lógico del programa para resolver un problema en particular.  
  2.   Escritura de la lógica del programa empleando un lenguaje de programación específico (codificación del programa)
  3.  Ensamblaje o compilación del programa hasta convertirlo en lenguaje de máquina
  4.  Prueba y depuración del programa.
  5.  Desarrollo de la documentación.  

  

 
 
Elementos



-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

 -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).


 
Clasificación de los lenguajes de programación: Niveles y Generaciones:

 
-En computación se suele hablar de niveles y generaciones de los lenguajes de programación. Respecto al nivel, se clasifican en lenguajes de bajo y alto nivel. 

Los lenguajes de bajo nivel, son aquellos que se asemejan al lenguaje empleado por la computadora, mientras que los lenguajes de alto nivel, son aquellos que se asemejan al lenguaje humano.

Los lenguajes de alto nivel son resultado de una evolución, desde los lenguajes de bajo nivel. La computadora sólo es capaz de comprender su lenguaje máquina. Pero para las personas no es fácil entender y manejar este código máquina de combinaciones binarias. 
Las investigaciones dieron un primer paso que llevó a la evolución desde las hileras de números binarios del código máquina, a un lenguaje ensamblador, que las representaba como una serie de comandos más entendibles. Los lenguajes de nivel superior están orientados más hacia lo que se quiere realizar, que en la manera como se ejecutarán los comandos.

 


Niveles de los lenguajes de programación:
 

1.- Lenguajes de bajo nivel:
 -A nivel de circuitos, los microprocesadores sólo son capaces de procesar señales electrónicas binarias. Estas instrucciones binarias que se envían al microprocesador, se componen de series de unos y ceros, espaciadas en el tiempo de una forma determinada. Esta secuencia de señales se denomina código máquina. El código representa normalmente datos y números, así como instrucciones para manipularlos. Para hacer más fácil el manejo del código máquina, se dio a cada instrucción un mnemónico, como por ejemplo STORE (Almacenar), ADD (Adicionar) o JUMP (Saltar). Tal abstracción da como resultado el ensamblador, que es un lenguaje de muy bajo nivel basado en mnemónicos y que es específico para cada microprocesador.

2.- Lenguajes de alto nivel:
 -Al pensar en una computadora, normalmente se concibe como una máquina que realiza tareas de procesamiento de texto y cálculos. Esta es una percepción bastante sintética y esquemática de entender la computadora. Existe un alto nivel de abstracción entre lo que se pide a la computadora y lo que realmente comprende. De un modo paralelo se presenta una relación compleja entre los lenguajes de alto nivel y el código máquina. Un programa escrito en un lenguaje de alto nivel, debe ser compilado o interpretado para traducir su código, en otro de bajo nivel (lenguaje máquina). Como ejemplo de lenguajes de alto nivel se tienen Pascal, BASIC, FORTRAN, COBOL, Java, C y C++.

 -En los lenguajes de alto nivel las instrucciones son independientes de la máquina, son más fáciles de aprender porque están formados por elementos de lenguajes naturales (del inglés). En BASIC, comandos como "IF CONTADOR = 10 THEN STOP" son usados para ordenar a la computadora, que pare si CONTADOR es igual a 10. Pero aunque las computadoras parecieran comprender el lenguaje natural, lo hacen de una manera bastante rígida y sistemática, lo cual podría parecer un poco frustrante e inspira la búsqueda de lenguajes más cercanos aún al natural.
 

Compiladores e Intérpretes

 Proceso de compilación 
 
 -Se ha señalado que la computadora sólo puede ejecutar instrucciones en código de máquina, por lo cual, todos los programas escritos en cualquiera de los lenguajes de programación deben ser convertidos o traducidos. Este proceso es llevado a cabo por unos programas especiales, los compiladores y los interpretes.
 
-La traducción del código fuente, escrito en lenguaje ensamblador, a código máquina (o código objeto), no representa un proceso complicado y se lleva a cabo mediante un compilador. De manera similar, la traducción de código fuente de lenguajes de alto nivel puede ser realizada por un compilador, o también mediante un intérprete
Con base en el código fuente suministrado, el compilador crea una lista de instrucciones de código máquina:

El código objeto. Este código objeto obtenido, es un programa rápido y ya listo para funcionar, pero está expuesto a poseer errores que pueden provocar fallas en la computadora.
Generaciones de los lenguajes de programación


Generaciones  
  
  •  Primera generación: Lenguaje máquina Son los lenguajes más básicos. Los lenguajes de máquina se representan en bytes, los cuales, están compuestos de bits, que son números binarios o que consisten únicamente de ceros (0) o unos (1). Estos valores pueden corresponder a que la electricidad esté encendida o apagada en la máquina, o a la presencia o ausencia de carga magnética en un medio de almacenamiento. A partir de estos dos estados se forman los esquemas de codificación (como el código ASCII) que permiten generar letras, números, signos de puntuación y caracteres especiales. 

  • Segunda generación: lenguajes ensambladores: 
    Están constituidos por nemotécnicos similares a palabras en idioma inglés. En primer lugar, se  crea un archivo fuente con las instrucciones que se desea que la computadora ejecute, usando un editor, que es una especie de procesador de palabras. El código fuente es traducido al lenguaje máquina mediante programas traductores (compiladores)   
       
  • Tercera generación: Lenguajes de alto nivel:  
      Son llamados de alto nivel porque se asemejan más al lenguaje que utilizan los humanos al comunicarse. Fueron desarrollados con la finalidad de facilitar el proceso de programación. Cuentan con comandos que se acercan más a las palabras de uso común en lugar de tener que   usar combinaciones binarias del código máquina o los comandos básicos del ensamblador.
  • Entre los lenguajes de tercera generación se incluyen:
     
  • FORTRAN (Traductor de Fórmulas: Formula TRANslator), diseñado específicamente para     programas matemáticos y de ingeniería, motivo por el cual, no fue de amplio uso en computadoras  personales.   
  •   COBOL (Lenguaje simbólico de programación, orientado hacia aplicaciones comerciales y de     gestión: Common Business Oriented Languaje) desarrollado en 1960, con el fin de solucionar las incompatibilidades de los fabricantes de computadoras.
     
  • BASIC (Código de instrucción simbólica universal para principiantes: Begginners Allpurpose     Symbolic Instruction Code) comienza como una herramienta para enseñar sobre programación a     estudiantes. Fue desarrollado por Jhon Kemeny y Thomas Kurtz en 1964. Por su simplicidad se     volvió ampliamente popular y usado en educación y entre los programadores aficionados, pero no     ha llegado a ser un lenguaje viable para aplicaciones comerciales.
     
  • pASCAL, nombrado en honor del inventor francés Blas Pascal, es introducido por Niklaus Wirth en     1971. El Pascal, buscaba superar las limitaciones de los otros lenguajes de programación y     demostrar la manera adecuada de implementar un lenguaje de cómputo. Ha llegado a considerarse     un excelente lenguaje de enseñanza.
     
  • C, desarrollado a principios de los sesenta por Brian Kernighan y Dennis Ritchie, quienes buscaban     un mejor lenguaje de integrar con el sistema operativo UNIX, para que los usuarios pudiesen hacer     modificaciones y mejoras con facilidad.

     
  • C++, Es un lenguaje de principios de los ochenta desarrollado por Bjarne Stroustrup. Es     extremadamente poderoso y eficiente igual que el C.   
  •  Java (1991) es desarrollado por Sun Microsistema. Cuando Internet comenzó a ganar popularidad  como red de comunicaciones a mediados de los noventa, Sun redirige a Java para convertirlo en un   ambiente de programación que permitiese crear sistemas interactivos y dinámicos (denominados   applets) para las páginas Web.  
  • Quinta generación: Lenguajes naturales: 
     Esta generación incluye la inteligencia artificial y sistemas expertos. En lugar de sólo ejecutar  un conjunto de órdenes, el objetivo de estos sistemas es pensar y anticipar las necesidades de  los usuarios. Estos sistemas se encuentran aún en desarrollo.