Lenguajes de programación.
Hay un solo lenguaje de programación que cualquier computadora puede realmente entender y ejecutar: su propio código de máquina binario nativo. Este es el nivel más bajo posible de lenguaje en el que es posible escribir un programa para comunicarse con una computadora. Todos los otros lenguajes de programación son llamados de más alto nivel o más bajo nivel en proporción a cuanto se alejen o se acerquen al código binario de la maquina.
De acuerdo a esto, un lenguaje del más bajo nivel corresponde totalmente al código de máquina, por lo que una instrucción de lenguaje de bajo nivel se traduce en una sola instrucción de lenguaje máquina. Sin embargo, una instrucción de lenguaje de alto nivel por lo general se traduce en varias instrucciones de lenguaje de máquina.
Los lenguajes de bajo nivel tienen la ventaja de que pueden ser escritos para aprovechar las peculiaridades de la arquitectura de la unidad central de procesamiento (CPU) que es el «cerebro» de cualquier ordenador. De manera que, un programa escrito en un lenguaje de bajo nivel puede ser muy eficaz, haciendo uso óptimo de la memoria de la computadora y tiempo de procesamiento. Sin embargo, escribir un programa de bajo nivel requiere de una cantidad considerable de tiempo, así como una comprensión muy clara del funcionamiento interno del microprocesador. Por lo tanto, la programación de bajo nivel se suele utilizar sólo para programas muy pequeños, o para segmentos de código que son muy críticos y deben funcionar tan eficientemente como sea posible.
Los Lenguajes de alto nivel permiten un desarrollo mucho mas rápido de grandes programas. El programa final, ejecutado por la computadora no es tan eficiente, pero las ventajas del ahorro en tiempo del programador generalmente superan las desventajas de la ineficiencias del programa. Esto se debe a que el costo de escribir un programa es casi constante para cada línea de código, independientemente del Lenguaje usado. Así, un lenguaje de alto nivel donde cada línea de código equivale a 10 instrucciones de Lenguaje de máquina, cuesta solamente la decima parte de lo que costaría programar las 10 líneas de código en Lenguaje de Maquina.
Los primeros Lenguajes de programación de alto nivel se fueron diseñando para tipos específicos de tareas. Los Lenguajes modernos son más de uso general. En cualquier caso, cada Lenguaje tiene sus propias características, vocabulario y sintaxis. Los más importantes son los siguientes:
FORTRAN.
Fue de los primeros lenguajes de programación. FORTRAN (acrónimo de FORmula TRANslator) fue diseñado para manejar operaciones matemáticas, originalmente en computadoras mainframe. Aunque fue muy eficiente en los cálculos matemáticos, FORTRAN fue incapaz de manejar texto de cualquier tipo y apenas podía colocar títulos e identificadores en sus salidas impresas.
COBOL.
Su nombre es el acrónimo de COmmon Business Oriented Language. COBOL en su concepción, es casi el opuesto del FORTRAN. COBOL fue diseñado para facilitar las salidas escritas con mucho texto, en aplicaciones de procesamiento de datos para negocios y usando el Ingles para sus informes de salida. Fue concebido para manejar data textual de negocios y sus capacidades matemáticas están restringidas a poco más que operaciones con dinero y porcentajes.
PASCAL.
Debe su nombre a Blaise Pascal, filósofo y físico francés, y uno de los Padres de la automatización del computo. PASCAL fue diseñado específicamente como un Lenguaje didáctico. Su objeto era ayudar al estudiante a aprender correctamente las técnicas y los requisitos de la programación estructurada. Fue diseñado originalmente para ser utilizado en cualquier plataforma. Es decir, un programa en PASCAL podía compilarse en cualquier computadora, y el resultado funcionaría correctamente en cualquier otro equipo, incluso con un tipo de microprocesador diferente o incompatible. El resultado fue un Lenguaje relativamente lento, pero que funcionó y cumplió su cometido mientras estuvo de moda.
BASIC.
Su nombre es la sigla de Beginner’s All-purpose Symbolic Instruction Code (Código de Instrucciones simbólicas multiuso) y fue el primer Lenguaje interpretador diseñado para uso general. Fue el Lenguaje de Programación mas utilizado y hoy en día evoluciono como Visual Basic para trabajar bajo ambiente Windows.
FORTH.
Es un Compilador e Interprete que fue desarrollado originalmente para el manejo de operaciones en tiempo real y que además permitía al usuario controlarlo y hacer modificaciones rápidamente. El nombre FORTH se origino por el concepto de Lenguaje de 4ta Generación y tenía la restricción de permitir solamente nombres de archivo de hasta 5 caracteres.
C.
Se origino como un lenguaje experimental denominado A, que luego fue mejorado, corregido y ampliado y fue llamado B. Este lenguaje a su vez fue mejorado, actualizado, depurado y finalmente fue llamado C. El lenguaje C ha resultado ser muy versátil y sorprendentemente potente. Es un Lenguaje muy simple y sin embargo es capaz de hacer desarrollos de gran magnitud. El Sistema operativo Unix, que ha sido adaptado a una amplia gama de plataformas y no ha dejado de ganar popularidad, está escrito en Lenguaje C.
C++.
Cuando se desarrollo el concepto de Objetos y de programación orientada a Objetos, el Lenguaje C estándar no tenía la estructura interna para manejarlo. Sin embargo, C fue, y es todavía, muy útil por lo que se ha mantenido en uso. Pero se desarrollo adicionalmente una especie de lenguaje C extendido que fue originalmente llamado «C y algo», o C-plus (C+). Posteriormente se siguieron desarrollando los conceptos de programación orientada a objetos y C+ evoluciono en C++.
JAVA.
La búsqueda constante de un Lenguaje de Plataforma Independiente, genero la aparición de Java. Este es el más reciente Lenguaje diseñado con ese objetivo. Cualquier computador con un ambiente de ejecución Java, puede correr un programa escrito en ese Lenguaje, lo cual lo hace, hasta el momento, el Lenguaje Universal por excelencia.
Uno de los aspectos más útiles de Java es que los navegadores Web ahora están diseñados para ser capaces de incorporar pequeñas aplicaciones Java, o «applets», en páginas Web. Otros programas de Java, llamados «servlets», se ejecutan en los servidores Web. Esto permite comunicaciones adicionales entre la página y el servidor y facilita un alto grado de interactividad y la generación de páginas dinámicas.
La desventaja de utilizar los applets de esta manera es que ellos inherentemente se ejecutan mucho más lentamente que los programas desarrollados en las computadoras.
JAVASCRIPT.
JavaScript es, en la mayoría de los aspectos, una versión interpretada de Java. Su uso más común está en páginas Web, donde puede ser utilizado para proporcionar interactividad y respuesta dinámica. Algunos servidores Web también pueden hacer uso de Javascript para la generación de páginas dinámicas.
PERL.
El Lenguaje Practico de Extracción y Reportes, Perl (Practical Extraction and Report Language), es muy similar al Lenguaje C en muchos aspectos. Sin embargo, tiene una serie de características que lo hacen muy útil para una amplia gama de aplicaciones. El uso más popular de Perl es la programación de CGI (Computer Generated Imagery) o Generación de Imágenes por Computadora, para desarrollo de aplicaciones Web. Por ejemplo, generalmente, cuando usted rellena y envía un formulario vía Internet, muy probablemente ese programa este escrito en Perl.
No obstante, ese no es el único uso de PERL, pues también es un excelente Lenguaje de programación de uso general que permite el desarrollo rápido en una amplia gama de Plataformas.
HTML.
De la sigla en inglés de Hipertexto Markup Language (lenguaje de marcas de hipertexto), hace referencia al «lenguaje de marcado» para la elaboración de páginas Web. Es un estándar que sirve de referencia del software que conecta con la elaboración de páginas web en sus diferentes versiones, define una estructura básica y un código (denominado código HTML) para la definición de contenido de una página web, como texto, imágenes, videos, juegos, entre otros.
Existen además otra gran cantidad de Lenguajes de Programación para aplicaciones especificas y de los cuales solo haremos mención, tales como PHP, LISP, ADA, RUBY, PHYTON y HASKELL.
Convirtiendo el Lenguaje de Maquina a Lenguajes de Alto Nivel.
Los Lenguajes de Programación que vimos anteriormente, son todos considerados Lenguajes de Alto Nivel, y como ya habíamos mencionado, las Computadoras, como equipos eléctricos al fin, solo entienden el elemental lenguaje, de más bajo nivel, de los ceros y los unos, como representación del paso o no de la corriente eléctrica por sus millones de circuitos.
Para convertir los Lenguajes de bajo nivel a Lenguajes de Alto Nivel, existen herramientas especificas de programación que hacen el trabajo. Hablemos algo acerca de ellas.
Lenguaje Ensamblador.
Lenguaje ensamblador no es más que una representación simbólica del código máquina, que también permite la designación simbólica de localizaciones de memoria. Por lo tanto, una instrucción para agregar el contenido de una ubicación de memoria a un registro interno del CPU, llamado el acumulador, puede ser agregar un número en lugar de una cadena de dígitos binarios (bits).
No importa cuán cerca este el lenguaje ensamblador al código de máquina, el equipo todavía no puede entenderlo. El programa de lenguaje ensamblador debe ser traducido a código máquina por un programa llamado ensamblador. El programa ensamblador reconoce las cadenas de caracteres que componen los nombres simbólicos de las diferentes operaciones de la máquina y sustituye el código máquina necesario para cada instrucción.
Al mismo tiempo, también calcula la dirección deseada, en la memoria, de cada nombre simbólico de dicha localización y sustituye las direcciones por los nombres. El resultado final es un programa de lenguaje de máquina que puede funcionar por sí mismo en cualquier momento.
Cuando llega a ese punto, el ensamblador y el programa de lenguaje ensamblador ya no son necesarios. Para ayudar a distinguir entre el «antes» y «después» de las versiones del programa, el programa original de lenguaje ensamblador también es conocido como el código fuente, mientras que el programa de lenguaje de máquina final se señala el código de objeto.
Si un programa de lenguaje ensamblador necesita ser cambiado o corregido, es necesario realizar los cambios en el código fuente y volver a montarlo para crear un programa objeto.
Lenguaje Compilador.
El Lenguaje compilador equivale al alto nivel del lenguaje ensamblador. Cada instrucción en el lenguaje compilador puede corresponder a muchas instrucciones de lenguaje de máquina. Una vez que el programa se ha escrito, se traduce al código máquina equivalente por un programa llamado compilador. Una vez que el programa ha sido compilado, el código máquina resultante se guarda por separado y se puede ejecutar por sí mismo en cualquier momento.
Al igual que sucede con los programas de lenguaje ensamblador, la actualización o corrección de un programa compilado requiere que el programa original o fuente, sea modificado apropiadamente y luego compilado para formar un nuevo programa de lenguaje de máquina u objeto.
Por lo general, el código compilado de la máquina es menos eficiente que el código producido cuando se utiliza lenguaje ensamblador. Esto significa que funciona un poco más lento y utiliza más memoria que la requerida para montar el programa ensamblador. Para compensar este inconveniente tenemos el hecho de que toma mucho menos tiempo desarrollar un programa de lenguaje compilador, que el requerido para un programa de lenguaje ensamblador.
Lenguaje Interpretador.
Un lenguaje interpretador, al igual que un lenguaje compilador, se considera de alto nivel. Sin embargo, funciona de una manera totalmente diferente a la de estos. El programa interpretador reside en la memoria y ejecuta directamente el programa de alto nivel sin previamente hacer la traducción a código máquina.
El usar un programa interpretador para ejecutar directamente el programa de usuario tiene ventajas y desventajas. La principal ventaja es que se puede ejecutar el programa para probar su funcionamiento, efectuar algunos cambios y ejecutar de nuevo de forma directa. Es decir, no hay necesidad de volver a compilar porque nunca se produce ningún nuevo código máquina. Esto puede acelerar enormemente el desarrollo y proceso de pruebas.
Como desventaja tenemos que esta disposición requiere que ambos, el interpretador y el programa de usuarios residan en la memoria al mismo tiempo. Además, debido a que el intérprete tiene que escanear solo una línea del programa de usuario a la vez, y además ejecutar partes internas de sí mismo en respuesta, la ejecución de un programa interpretado es mucho más lenta que la de un programa compilado.
Guardar