Publicado el 5 de Julio del 2017
1.148 visualizaciones desde el 5 de Julio del 2017
149,9 KB
6 paginas
Creado hace 16a (22/11/2008)
Lenguajes de programación
Dos definiciones de lenguaje de programación podrían ser las siguientes:
Notación para describir algoritmos de forma precisa.
Conjunto de reglas, símbolos y palabras especiales usadas para construir un programa.
La utilidad de un lenguaje de programación es doble:
Especificar las acciones a ejecutar por el computador
Es una palanca que potencia la mente del programador facilitándole la resolución de cierto tipo de problemas y delimitando el
mundo pensable.
Esta segunda característica ha provocado cierta especialización de los lenguajes.
Un recorrido por la historia de los lenguajes nos mostrará
que han surgido como respuesta a diferentes tipos de necesidades,
que la limitación en la construcción de programas está en el lado humano,
que la misma persona puede realizar programas más complejos o más grandes
si el lenguaje exige la programación estructurada
si el lenguaje es más expresivo
si el lenguaje lo organiza todo con la orientación a objetos
PROGRAMACIÓN CABLEADA.
En la época de las primeras computadoras, cuando se deseaba ejecutar un algoritmo era necesario realizar un cableado que, una
vez hecho, equivalía a un programa que la máquina tuviera inscrito en su estructura.
Cuando entre dos contactos (elementos del programa) se situaba un insecto (bug) produciendo una alteración en la estructura de
las conexiones, el programa dejaba de realizar el trabajo que hasta entonces había hecho bien. Para corregir el programa, que
ahora era otro distinto había que eliminar el insecto (debug). De esta época deriva las palabras inglesas «debug» con el significado
de corregir un programa erróneo y «debuger» para nombrar al programa que ayuda en esta tarea de corrección de errores.
Naturalmente, esta forma de programar, por compleja, representaba un obstáculo para el desarrollo de máquinas y programas y,
por ello, dio lugar a la aparición de otros tipos de lenguajes en que expresar los algoritmos.
MÁQUINA 1ª Generación
En el lenguaje nativo ó lenguaje máquina las instrucciones están constituidas por tiras de “unos” y “ceros” de diferente longitud
donde una instrucción podría ser así:
10011 1000101110000100 1000011101110011
10011
operación
1000101110000100
1000011101110011
1º oper y resultado
2º operando
Los 4 primeros dígitos binarios, bits, podían representar la operación, por ejemplo una suma, los 10 siguientes la dirección de
memoria del primer sumando y del resultado y los últimos 10 la dirección de memoria del otro sumando. Esta se hubiera llamado
una máquina de dos direcciones.
NOTA. Hubo máquina de cuatro direcciones cuando la memoria principal era un tambor que giraba a gran velocidad. Las direcciones eran de los dos operandos, del
resultado y de la siguiente instrucción.
El lenguaje máquina es totalmente dependiente de esta, del diseño que tenga su unidad de control que, como sabemos, es la
encargada de descodificar y hacer que se ejecuten las instrucciones.
LENGUAJE MÁQUINA: la lengua que "entiende" la máqina.
Entre las ventajas del lenguaje máquina
http://arca.tic.udc.es/y/01Algor/06lenguajes.htm
no hay que traducirlo,
se ejecuta a mayor velocidad
ocupa poca memoria.
Entre los inconvenientes
codificación lenta y difícil,
largo periodo de puesta a punto del programa,
poca fiabilidad del código,
difícil verificación y
no portable: los programas escritos en él sólo se pueden ejecutar en la máquina de la que dependen o en las de la familia.
TRADUCCIÓN: Como la máquina solo entiende su lengua, los programas escritos en otro lenguaje hay que traducírselos
antes de que los ejecute.
ENSAMBLADORES 2ª Generación
Un primer intento de superar los inconvenientes que presentaba el lenguaje máquina fue la utilización del ensamblador que es un
lenguaje cercano a la máquina. Por ejemplo, la instrucción anterior en lenguaje máquina se escribe en un ensamblador hipotético
así
ADD A, B
donde ADD es el mnemónico que recuerda la suma (addition) y A y B son variables que simbolizan posiciones de memoria que
contendrán los sumandos y todavía no se ha decidido qué posiciones de memoria serán.
Las diferencias con el lenguaje máquina se pueden resumir en:
Uso de símbolos fáciles de recordar para representar la instrucción.
Uso de variables simbólicas en lugar de preocuparse por las direcciones de memoria.
Estas dos características hacen el código más legible, acortan los periodos de construcción de programas, ahorran esfuerzos en la
codificación y se gana fiabilidad.
Sin embargo, el programa fuente escrito en ensamblador debe traducirse a código máquina para ejecutarlo. El programa que
realiza la traducción y, eventualmente, convierte las variables simbólicas en direcciones de memoria reales se llama también
ensamblador .
En comparación con el lenguaje máquina, se mantienen la velocidad de ejecución, la total dependencia de la máquina y la dificultad
en la formación de programadores.
Actualmente, solo se emplea para programar cuestiones muy concretas como la capa más interna del sistema operativo, ciertas
rutinas en las que la velocidad es una variable crítica, control de dispositivos electrónicos etc.
NOTA. Mientras que para los primeros ensambladores la relación entre sus instrucciones y las de la máquina es 1:1. en la actualidad se dispone de
“macroensambladores” que son el resultado de la evolución de aquellos ganando en complejidad y potencia hasta tal punto que sus capacidades están muy cerca de las
de lenguajes de alto nivel cercanos a la máquina como el lenguaje C.
ALTO NIVEL 3ª Generación
Todos sabemos que cuanto mayor sea la potencia de una herramienta mayor es el productividad de quien la usa, tanto en cantidad
(produce más en el mismo tiempo) como en calidad (productos más complejos y elaborados).
Un lenguaje se puede ver como una herramienta cuyo diseño debería ayudar en la tarea de la programación. Para ello, debería
ser cercano al lenguaje natural para que el programador no tenga que usar fórmulas expresivas lejanas de las habituales.
incluir elementos del lenguaje matemático para hacerlo preciso.
La necesidad de acercar el lenguaje al programador dio como fruto la aparición de los lenguajes de alto nivel, es decir, más
cercanos a la persona que en un rápido y muy corto resumen en orden temporal fueron
FORTRAN, (FORmula TRANslation) cuya primera versión fue publicada por IBM en 1956,
LISP (List Processing) fue creado por McCarthy en 1958. El primero en dar recursión, recolección de basura, funciones de primera
clase y un lenguaje formal para su definición: el propio Lisp. Era ineficiente en sus primeras implantaciones y no tenía tipos.
ALGOL 60 (algorithmic language) 1958 es el fruto de una reunión que tuvo lugar ese año entre la americana ACM (Association for
Computing Machinery) y la europea GAMM (Gessellchaft für Angewante Mathematick und Mechanik)
COBOL, (Comon Business-oriented Language), desarrollado por el comité CODASYL (Conference on Data Systems Languages) que
se utilizó por primera vez en 1.960,
APL (A Programming Language) creado por Iverson a mitad de los 60 como un lenguaje matemático que después pasó a ser un
http://arca.tic.udc.es/y/01Algor/06lenguajes.htm
lenguaje de programación
ALGOL Wirth y Hoare reescriben el algol 60 en 1966 con algunos cambios. Es el antecesor directo de Pascal.
PASCAL, creado en 1968, revisado en 1972 y normalizado en 1.981. Hay dos normas estándar: el pascal básico y el ampliado.
C creado en 1972 por Dennis Ritchie como lenguaje para programar en Unix. En 1973 el propio Unix se reescribió en C. Es una
evolución del Algol 60 a través del CPL (Combined Programming Language) de Strachey 1966, BCPL de 1969 y B 1970.
CPL --> BCPL --> B --> C
PROLOG 1972 por Alain Colmerauer de la Universidad de Marsella.
MODULA 2, desarrollado en 1983 después del PASCAL por el mismo autor Niklaus Wirth, que se proponía demostrar que un
sistema operativo se puede escribir íntegramente en un lenguaje de alto nivel.
ADA, desarrollado a instancias del ministerio de defensa USA, cuya primera normalización data de 1983 por el ANSI.
C++ Stroustrup, 1986. Se le llama a veces «C con clases». Sus antecesores son C y Simula 67 en lo relativo a las clases.
Java, 1995, desarrollado por Sun Microsystems. Se parece a C++ pero tiene un modelo de objetos más sencillo.
Las ventajas de estos lenguajes con respecto a los anteriores
Proximidad al lenguaje humano (instrucciones como read, write, open, print),
menor tiempo de formación de programadores,
facilidad de puesta a punto y modificación de los programas
Portabilidad entre diferentes sistemas.
NOTA. Un programa es portable si se puede llevar a cualquier otra máquina, compilarlo sin ningún cambio y ejecutarlo en ella. Esta situación de portabilidad perfecta es
rara pero no lo es que se puedan portar programas con pocos cambios.
NOTA. El programa ejecutable no es portable en general salvo a ordenadores de la misma ‘familia’ que tengan el mismo juego de instrucciones o un superconjunto de
ellas.
Estos lenguajes no aprovechan tan eficientemente los recursos de la máquina como el ensamblador y máquina ya que gastan más
memoria y tiempo de cómputo.
CLASIFICACIÓN DE LOS LENGUAJES
Una clasificación: la que surge de la estructura interna del lenguaje. Esta los divide en imperativos, los declarativos y otros de difícil
encaje.
Imperativos
Los imperativos o procedimentales como Pascal, C, COBOL, FORTRAN...
Están influidos en su diseño por los detalles de la máquina.
Se basan en la idea de escribir las instrucciones a realizar por el ordenador como una receta de cocina, en ellos la unidad de
tr
Comentarios de: lenguajes de programación (0)
No hay comentarios