El documento describe los lenguajes de programación, incluyendo su definición, tipos principales como lenguajes de máquina, ensambladores y de alto nivel como BASIC, Pascal, FORTRAN, ALGOL y SIMULA. Explica que los lenguajes de bajo nivel como el código máquina y ensamblador están estrechamente ligados al hardware, mientras que los lenguajes de alto nivel como BASIC, Pascal y FORTRAN proporcionan mayores niveles de abstracción. También cubre conceptos como generaciones de lenguajes y caracter
1. LENGUAJES DE PROGRAMACIÓN
1. DEFINICIÓN:
Un lenguaje de programación al igual que el lenguaje común o natural; es un
convenio entre personas que puede definirse como el conjunto de reglas o
normas que permiten asociar a cada programa correcto un cálculo que será
llevado a cabo por un ordenador. 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 (de ser necesario) y se
mantiene el código fuente de un programa informático se le llama programación.
A la hora de establecer el origen del lenguaje de programación tenemos que
hacer referencia, sin lugar a dudas, a Ada Lovelace que está considerada como
la primera programadora de computadoras conocida en todo el mundo. De ahí,
curiosamente que se hablara en su honor del lenguaje de programación Ada. Y
es que dicha figura llevó a cabo no sólo la manipulación de una serie de símbolos
para una máquina sino también la consecución del establecimiento de las
instrucciones necesarias para que un computador pudiera realizar una serie de
cálculos iniciales.
Existen lenguajes informáticos que no son, en realidad, lenguajes de
programación, como es el caso del HTML (un lenguaje de marcas). .
El lenguaje de programación tiene la capacidad de especificar, de forma precisa,
cuáles son los datos que debe trabajar un equipo informático, de qué modo
deben ser conservados o transferidos dichos datos y qué instrucciones debe
poner en marcha la computadora ante ciertas circunstancias. Mientras que el
lenguaje informático solo abarca el tratamiento automático de la información
mediante un computador. Existen diversos lenguajes de programación, lo que ha
llevado al desarrollo de intérpretes (programas que adaptan las instrucciones
encontradas en otro lenguaje) y compiladores (aquellos programas que
traducen de un lenguaje a otro).
2. 2. TIPOS DE LENGUAJES DE PROGRAMACIÓN:
Antes de tratar detalladamente los lenguajes de programación hay q mencionar
que existe otra rama general que es el lenguaje natural, que es con el cual nos
comunicamos diariamente.
Respecto al lenguaje de programación, cada uno tiene sus instrucciones y
enunciados verbales que se combinan para formar los programas de cómputo.
Dichos lenguajes no son aplicaciones, sino herramientas que permiten construir
y adecuar aplicaciones.
Existen muchos lenguajes con características muy diferenciadas; éstas se
agrupan en dos grandes grupos:
a. Lenguajes máquina: o conocidos como lenguaje en código máquina. En
estos lenguajes, la codificación de estos lenguajes se hace utilizando un
lenguaje binario de ceros y unos que son los únicos símbolos que puede
entender cualquier computador. Cada sistema físico tiene su código
máquina distinta por lo que un programa escrito en un determinado código
máquina solo vale para un sistema físico.
A este tipo de lenguaje, le suceden los lenguajes simbólicos.
b. Lenguajes simbólicos: este tipo de lenguaje utiliza caracteres
naturales para escribir las instrucciones de los programas. Estos se
dividen en:
b.1. L.S. de bajo nivel: encontramos a los ensambladores
b.2. L.S. de alto nivel
Un lenguaje procedural es aquel lenguaje de programación en el
que hay que señalar tanto lo que se quiere hacer como el modo de
hacerlo. Los lenguajes de tercera generación son de tipo
procedural.
Un lenguaje relacional es un tipo de lenguaje de programación en
el que sólo hay que especificar lo que se quiere obtener, sin
necesidad de especificar a su vez el camino a seguir para obtener
3. los resultados deseados. Este tipo de lenguaje son de muy alta
productividad en desarrollo, pero muy ineficientes en ejecución.
La diferencia entre el lenguaje de alto y bajo nivel es que el primero exige
que se diga tanto lo que se quiere hacer como la forma en que hay que
hacerlo mientras que los relacionales sólo exigen que se diga lo que se
quiere hacer, pero no es necesario que se exprese el camino para
realizarlo. A medida que se va subiendo de nivel los lenguajes son más
sencillos y más productivos en desarrollo, pero en contra partida son
menos eficientes a la hora de su ejecución. Los programas escritos en
lenguajes simbólicos se denominan programas fuente y los programas no
son directamente ejecutables su ejecución implica su previa traducción a
código máquina para obtener los denominados programas objeto o
absolutos. Esta traducción se hace a través de los ensambladores,
compiladores o intérpretes, a los lenguajes que de forma genérica se les
denomina procesadores de lenguajes.
Generaciones en los lenguajes de programación
- Primera generación: son los lenguajes máquina
- Segunda generación: Los ensambladores de bajo nivel
- Tercera generación: Los simbólicos de alto nivel de tipo procedural. A la
tercera generación pertenecen lenguajes conocidos como el FORTRAN,
COBOL, RPG, BASIC, PL1, SIMULA, ALGOL, PASCAL, ADA, C, LISP,
PROGOL, etc. Estos lenguajes de tercera generación son de tipo
universal.
- Cuarta generación: son los relacionales. A diferencia de los lenguajes de
tercera generación, los de cuarta generación no son tan universales y van
asociados a determinados sistemas operativos y en muchos casos a
determinados sistemas de almacenamiento de información, lo que les
resta uno de los mayores intereses de los lenguajes de tercera generación.
La mayor ventaja de los lenguajes relacionados es que son muy
productivos en desarrollo a alcanzar niveles de productividad de hasta 6 y
8 veces superior a los que alcanzan los de tercera generación. Entre los
lenguajes de cuarta generación tenemos el CSP de IBM asociado al
4. sistema de gestión de base de datos DB2; el NATURAL de SOFTWARE
AG asociado al sistema de datos ADABAS; el SQL que es un lenguaje
convertido en estándar mundial como lenguaje de cuarta generación para
la consulta de bases relacionales; etc
Ejemplos de lenguaje:
- BASIC Begginer´s All Purpose Symbolic Instruction Code (código de
Instrucciones Simbólicas de Todo Propósito para Principiantes). Lenguaje
simbólico de programación de tercera generación desarrollado en la
década de los 60´s y destinado en sus inicios a la enseñanza de la
programación. Por su sencillez fue el lenguaje básico utilizado inicialmente
en los computadores personales. En general, y al contrario de lo que suele
suceder con los más importantes lenguajes simbólicos de programación,
en BASIC se suele trabajar en modo intérprete.
- El BASIC es un lenguaje poco estandarizado y hay diferencias bastantes
apreciables del que se utiliza en unos y otros sistemas. Aunque es un
lenguaje poco utilizado en la informática profesional, se ha empleado
mucho en los microcomputadores y mientras en los primeros años de los
80´s fue el lenguaje en el que se solían desarrollar las aplicaciones en
micros.
- PASCAL. El lenguaje de programación Pascal fue desarrollado
originalmente por Niklaus Wirth. El Profesor Niklaus Wirth desarrolló
Pascal para proporcionar rasgos que estaban faltando en otros idiomas en
ese entonces. Sus principales objetivos para Pascal eran para el lenguaje
eran ser eficiente para llevarse a cabo y correrse los programas, permita
bien el desarrollo de estructuras y también organizar programas, y para
servir como un vehículo para la enseñanza de los conceptos importantes
de programación de la computadora.
Pascal que se nombró gracias al matemático Blaise Pascal,. el original
idioma de Pascal apareció en 1971 con última revisión publicada en 1973.
Fue diseñado para enseñar las técnicas de programación y otros temas a
los estudiantes de la universidad y era el idioma de opción de los años 60
a los 80s.
5. Pascal es un lenguaje estructurado en bloques. Un programa en Pascal
está formado siempre por un solo bloque de programas principal, que
contiene dentro de él definiciones del subprograma usado. La parte más
innovadora del diseño descansa en el trato de los tipos de datos. Una gran
sección de diferentes tipos de datos se proporciona: enteros, reales,
carácter, enumeraciones, boolianos, arreglos, registros, archivos
cuenciales y una forma limitada de conjuntos. Pascal permite que se dé
por el programador la definición separada de un tipo de datos. Pascal
puede implementarse en forma eficiente sobre computadoras
convencionales. La traducción se hace en el código de máquina
ejecutable, a pesar de que algunas implementaciones en Pascal traducen
al código de máquina virtual, que interpreta y ejecuta un intérprete del
software.
- FORTRAN: En los años 50 se realizaron varios compiladores primitivos y
fue en 1957 cuando apareció el primer compilador de FORTRAN. El
compilador de FORTRAN (FORmula TRANslator) estaba diseñado para
traducir a lenguaje máquina expresiones y operaciones matemáticas, e
incluso permitía la manipulación de matrices. el lenguaje FORTRAN se ha
utilizado extensivamente desde que apareció hasta hoy en día, y puede
considerarse el lenguaje por excelencia para aplicaciones científicas.
Es el primer lenguaje de alto nivel con amplia difusión y amplia
disponibilidad de compiladores. La motivación de su diseño fue sustituir la
programación en ensamblador.
Conceptos introducidos en Fortran
Variables cuyo nombre sería de hasta 6 caracteres (2 inicialmente).
El nombre determina implícitamente el tipo, que solo podía ser
entero o de coma flotante.
Sentencia de asignación con expresiones infijas a la derecha
(incluyendo sub-expresiones entre paréntesis.
Vectores o arrays uni o bi-dimensionales.
6. Sentencias IF-GOTO con expresiones aritméticas, incluyendo
operadores aritméticos relacionales
Ejemplo de programa en Fortran Calcula el producto y la suma de los elem.
de un array, e imprime 0 (producto ≤ suma), o 1 (producto > suma)
- ALGOL:
Es el lenguaje que introduce lo que hoy conocemos como programación
estructurada. La motivación inicial era mejorar algunas limitaciones de
Fortran.
Definido por un comité internacional en varias reuniones entre 1958
y 1962.
Es el primer lenguaje descrito formalmente por BNFs
No fue apoyado por IBM, y se difundió poco, aunque se uso mucho
para comunicar algoritmos
Tuvo un impacto enorme en posteriores lenguajes: Pascal, Modula,
Ada, C, Simula
Conceptos introducidos en Algol
Declaración explícita de variables y parámetros, incluyendo su tipo.
Arrays multidimensionales, con posibilidad de fijar el rango de
índices.
Agrupación de sentencias en sentencias compuestas delimitadas
por las palabras clave begin-end (estructura de bloques).
Sentencia if-else, bucles definidos e indefinidos con posibilidad de
anidamiento arbitrario.
Variables de ámbito restringido a los bloques.
Paso de parámetros por valor y por nombre.
7. Ejemplo de (sub)programa en Algol (1/2) Subprograma de nombre ejemplo que
acepta dos parámetros enteros:
- SIMULA:
Es el lenguaje que introduce los conceptos esenciales de la programación
orientada a objetos.
Basado en Algol para todos los aspectos de la programación
estructurada.
Su diseño fue motivado por la necesidad de crear software de
simulación.
Fue diseñado e implementado en el Centro de Computación
Noruego de Oslo entre 1962 y 64, por Kristen Nygaard y Ole-Johan
Dahl.
No se ha usado mucho para software comercial, sí para comunicar
algoritmos.
Influencia decisiva en lenguajes OO: Smalltalk, Eiffel, C++, Java.
Conceptos introducidos en Simula
Definición de clases como variables de instancia más metodos para
acceder a ellas
Los objetos como variables instancias de una clase
Herencia o extensión de clases.
Métodos virtuales (polimorfismo de herencia).
Corutinas (es un concepto de la programación concurrente)
8. Ejemplo de programa en Simula (1) Clase de nombre rectángulo con dos
atributos reales (ancho y alto) y un método que devuelve un valor lógico
(escuadrado).
3. ¿QUÉ CARACTERÍSTICAS PARTICULARES MUESTRAN EL
3. ¿LENGUAJE DE MÁQUINA DE BAJO NIVEL Y ALTO NIVEL?
a. Lenguaje de bajo nivel
Un lenguaje de programación de características bajo nivel es aquel en el
que sus instrucciones ejercen un control directo sobre el hardware y están
condicionados por la estructura física de las computadoras que lo
soportan, es decir son lenguajes totalmente dependientes de la máquina,
ya que el programa que se realiza con este tipo de lenguajes no se puede
migrar o utilizar en otras(máquinas). El uso de la palabra bajo en su
denominación no implica que el lenguaje sea menos potente que
un lenguaje de alto nivel, sino que se refiere a la
reducida abstracción entre el lenguaje y el hardware. Por ejemplo, se
utiliza este tipo de lenguajes para programar tareas críticas de
los sistemas operativos, de aplicaciones en tiempo real o controladores
de dispositivos.
Complejidad vs Dificultad
Dicho lenguaje es muy simple o nada complicado, pero estructurar
programas a ese nivel es muy difícil. Dado que este lenguaje viene dado
por las especificaciones técnicas del hardware, no permite una
abstracción fuera de lo estipulado para el microprocesador de un
9. ordenador. Consecuentemente, es fácilmente trasladado a lenguaje de
máquina.
Son lenguajes totalmente dependientes de la máquina, es decir que el
programa que se realiza con este tipo de lenguajes no se pueden migrar
o utilizar en otras máquinas.
Al estar prácticamente diseñados a medida del hardware, aprovechan al
máximo las características del mismo.
Dentro de este grupo se encuentran:
El lenguaje ensamblador es un derivado del lenguaje máquina y está
formado por abreviaturas de letras y números llamadas mnemotécnicos.
Con la aparición de este lenguaje se crearon los programas traductores
para poder pasar los programas escritos en lenguaje ensamblador a
lenguaje máquina. Como ventaja con respecto al código máquina es que
los códigos fuentes eran más cortos y los programas creados ocupaban
menos memoria. Las desventajas de este lenguaje siguen siendo
prácticamente las mismas que las del lenguaje ensamblador, añadiendo
la dificultad de tener que aprender un nuevo lenguaje difícil de probar y
mantener.
b. Lenguaje de alto nivel
Un lenguaje de programación de alto nivel se caracteriza por expresar
el algoritmo de una manera adecuada a la capacidad cognitiva humana,
en lugar de la capacidad ejecutora de las máquinas.
En los primeros lenguajes, la limitación era que se orientaban a un área
específica y sus instrucciones requerían de una sintaxis predefinida. Se
clasifican como lenguajes procedimentales o lenguajes de bajo nivel. Otra
limitación de estos es que se requiere de ciertos conocimientos de
programación para realizar las secuencias de instrucciones lógicas. Los
lenguajes de alto nivel se crearon para que el usuario común pudiese
solucionar un problema de procesamiento de datos de una manera más
fácil y rápida.
10. Por esta razón, a finales de los años 1950 surgió un nuevo tipo de
lenguajes de programación que evitaba estos inconvenientes, a costa de
ceder un poco en las ventajas. Estos lenguajes se llaman de tercera
generación o de nivel alto, en contraposición a los de bajo nivel o de nivel
próximo a la máquina.
Características
Lenguaje de alto nivel se refiere al nivel más alto de abstracción de
lenguaje de máquina. En lugar de tratar con registros, direcciones de
memoria y las pilas de llamadas, lenguajes de alto nivel se refieren a las
variables, matrices, objetos, aritmética compleja o expresiones booleanas,
subrutinas y funciones, bucles, hilos, cierres y otros conceptos de
informática abstracta, con un enfoque en la facilidad de uso sobre la
eficiencia óptima del programa.
Ventajas
Genera un código más sencillo y comprensible.
Escribir un código válido para diversas máquinas o sistemas operativos.
Permite utilizar paradigmas de programación.
Permite crear programas complejos en relativamente menos líneas de
código.
Inconvenientes
Reducción de velocidad al ceder el trabajo de bajo nivel a la máquina.
Algunos requieren que la máquina cliente posea una determinada
plataforma.
11. 4. TRADUCTORES DEL LENGUAJE
Un traductor es un programa que recibe como entrada código escrito en un
cierto lenguaje y produce como salida código en otro lenguaje, generalmente
el lenguaje de entrada es de más alto nivel que el de salida.
Cuando programamos en algún lenguaje de alto nivel, lo que estamos
haciendo en realidad es el código fuente de ese programa, este código fuente
debe ser traducido a lenguaje binario para que las instrucciones que
contienen puedan ser entendidas y ejecutadas por la computadora.
Debido la complejidad de la programación del lenguaje de máquina, en
realidad son muy pocos los programas que se escriben con él. Sin embargo
el lenguaje de maquina es el único lenguaje capaz de dar instrucciones
directamente al CPU. Por lo tanto, toda instrucción de un programa de
lenguaje que no sea de maquina tiene que traducirse al lenguaje de maquina
antes de su ejecución. Esto se realiza mediante el software de sistemas que
se llama traductor de lenguaje. Un traductor de lenguaje convierte un código
fuente de un programador a su equivalente en lenguaje de máquina. El código
de programa de nivel alto se conoce como el código fuente, mientras que el
código de lenguaje de maquina se llama código objeto.
Los programas traductores son compiladores e intérpretes.
a. Compiladores:
Un compilador es un programa informático que traduce un programa
escrito en un lenguaje de programación a otro lenguaje de programación,
o también genera aplicaciones que sean directamente utilizables en un
ordenador o computadora. Un compilador lee el código fuente creado en
un determinado lenguaje de programación, lo interpreta, comprueba su
sintaxis y traduce a lenguaje o código máquina toda la serie de
instrucciones, generando el archivo ejecutable final.
12. Los programas escritos en lenguajes de alto nivel (en el editor del
lenguaje) se llaman programas fuente y el programa traducido programa
objeto o código objeto. El compilador traduce (sentencia a sentencia) el
programa fuente.
Se requiere un compilador para cada lenguaje de programación. Un
compilador efectúa la traducción, no ejecuta el programa, una vez
compilado el programa, el resultado en forma de programa objeto será
directamente ejecutable.
Lenguajes compiladores típicos son: PASCAL, COBOL.
La construcción de un compilador involucra la división del proceso en una
serie de fases que variará con su complejidad. Generalmente estas fases
se agrupan en dos tareas: el análisis del programa fuente y la síntesis del
programa objeto.
-Análisis: Se trata de la comprobación de la corrección del programa
fuente, e incluye las fases correspondientes al Análisis léxico (que
consiste en la descomposición del programa fuente en componentes
léxicos), análisis sintáctico (agrupación de los componentes léxicos en
frases gramaticales ) y análisis semántico(comprobación de la validez
semántica de las sentencias aceptadas en la fase de análisis sintáctico).
-Síntesis: Su objetivo es la generación de la salida expresada en
el lenguaje objeto y suele estar formado por una o varias combinaciones
de fases de generación de código (normalmente se trata de código
intermedio o de código objeto) y de optimización de código (en las que se
busca obtener un código lo más eficiente posible).
13. FASES DE LA COMPILACIÓN
b. Intérpretes
Es un programa que traduce un lenguaje de alto nivel al lenguaje de máquina
de una computadora, el programa siempre permanece en su forma original
y traduce cuando está en la fase de ejecución instrucción por instrucción.
Un programa intérprete, analiza directamente la descripción simbólica del
programa fuente y realiza las instrucciones dadas.
La interpretación es un proceso que consta de un paso, en donde tanto el
programa como la entrada le son dados al intérprete y se obtiene de una
salida.
El intérprete en los lenguajes de programación simula una máquina virtual,
donde el lenguaje de máquina es similar al lenguaje fuente. La ventaja del
proceso interprete es que no necesita de dos fases para ejecutar el
programa, sin embargo su inconveniente es que la velocidad de ejecución
14. es más lenta ya que debe analizar e interpretar las instrucciones contenidas
en el programa fuente.
Los intérpretes realizan la traducción y ejecución de forma simultánea, es
decir, un intérprete lee el código fuente y lo va ejecutando al mismo tiempo.
Un lenguaje que soporte un traductor de tipo intérprete se denomina
lenguaje interpretado. BASIC es el modelo por excelencia interpretado.
Los programas fuente en BASIC se escriben con ayuda de un programa
denominado editor que suele venir incorporado al programa intérprete.
5. EJEMPLOS DE USO
El lenguaje apropiado que se usa a menudo, depende del dominio de la
aplicación que resuelve el problema. El lenguaje adecuado que conviene usar
para diversos dominios de aplicación ha evolucionado a lo largos de los
últimos 30 años. A continuación, se muestra una tabla con algunos de los
lenguajes más importantes para diversos dominios de aplicación
15. - Los Lenguajes de Programaciónde BajoNivel:
Con este tipode lenguajesprogramanlaasignaciónyliberaciónde memoria,el usode
punteros,el poderusarpasopor valory por referencia,lacreaciónde tiposde datos,
etc.
- Los Lenguajes de programaciónde Altonivel:
COBOL: Es el lenguaje más usado en las aplicaciones de gestión, tiene gran
capacidad en el manejo de archivos, así como en la edición de informes
escritos
PI/1: Soportar la programación estructurada y el diseño modular
BASIC: Entre sus principales novedades están las de ser un lenguaje
interpretado y de uso conversacional, útil para aplicaciones técnicas y de
gestión. Estas características, unidas a la popularización de las
microcomputadoras y computadoras personales, ha hecho que su utilización se
haya extendido enormemente
PASCAL: Aunque en principio la idea del diseñador era proporcionar un
lenguaje adecuado para la enseñanza de los conceptos y técnicas de
programación, con el tiempo ha llegado a ser un lenguaje ampliamente utilizado
en todo tipo de aplicaciones, poseyendo grandes facilidades para la
programación de sistemas y diseño de gráficos.