El documento describe las diferentes generaciones de lenguajes de programación, incluyendo lenguajes de bajo nivel como el lenguaje de máquina y el lenguaje ensamblador, y lenguajes de alto nivel como C, C++ y lenguajes orientados a objetos. También discute las características y diferencias entre lenguajes como C y C++.
1. REPÚBLICA BOLIVARIANA DE VENEZUELA
MINISTERIO DEL PODER POPULAR PARA LA EDUCACIÓN
UNIVERSITARIA, CIENCIA Y TEGNOLOGÍA
UNIVERSIDAD ALEJANDRO DE HUMBOLDT
MATERIA: PROGRAMACION I
SEDE: LOS DOS CAMINOS
2. Generaciones de lenguajes
Lenguajes de Bajo Nivel
El lenguaje maquina
El lenguaje ensamblador
El lenguaje ensamblador
Lenguaje intermedio
Los lenguajes de alto nivel
Ejemplos de lenguajes de programación de alto nivel
Lenguaje C
Características
Ventajas
Lenguaje C ++
Diferencias entre C vs C++
Lenguajes de programación orientada a objetos
3. Generaciones
La evolución de los lenguajes de programación se puede dividir en 5 etapas o generaciones.
•Primera generación: Lenguaje máquina.
•Segunda generación: Se crearon los primeros lenguajes ensambladores.
•Tercera generación: Se crean los primeros lenguajes de alto nivel. Ej. C, Pascal, Cobol…
•Cuarta generación. Son los lenguajes capaces de generar código por si solos, son los
llamados RAD, con lo cuales se pueden realizar aplicaciones sin ser un experto en el lenguaje.
Aquí también se encuentran los lenguajes orientados a objetos, haciendo posible la
reutilización d partes del código para otros programas. Ej. Visual, Natural Adabes…
•Quinta generación: Aquí se encuentran los lenguajes orientados a la inteligencia artificial.
Estos lenguajes todavía están poco desarrollados.
4. Lenguajes de Bajo Nivel
Son mas fáciles de utilizar que los lenguajes máquina, pero, al igual que ellos,
dependen de la máquina en particular. El lenguaje de bajo nivel por excelencia es el
ensamblador. Las instrucciones en lenguaje ensamblador son instrucciones conocidas como
nemotécnicos. Por ejemplo, nemotécnicos típicos de operaciones aritméticas son: en inglés,
ADD, SUB, DIV, etc.; en español, SUM,RES,DIV,etc. Una instrucción típica de suma sería:
ADD M, N, P
Esta instrucción podría significar “sumar el número contenido en la posición de
memoria M al número almacenado en la posición de memoria N y situar el resultado en la
posición de memoria P”. Evidentemente es mucho más sencillo recordar la instrucción anterior
con un nemotécnico que su equivalente en código máquina”.
0110 1001 1010 1011
Un programa escrito en lenguaje ensamblador no puede ser ejecutado directamente por la
computadora en esto se diferencia esencialmente del lenguaje máquina, sino que requiere una
fase de traducción al lenguaje máquina.
5. El lenguaje maquina
Un lenguaje de máquina es aquel con el que trabaja el microprocesador; da
ordenes a la máquina, que son las operaciones fundamentales para su funcionamiento.
para reaccionar y efectuar la operación que se desea, necesita de una secuencia de
señales eléctricas almacenadas como "unos" y "ceros" en las posiciones de la memoria.
Una y solo una secuencia de señales concreta, realiza una determinada operación.
Identificaremos a partir de ahora la existencia de señal con un "1" y la ausencia con un
"0".
Este lenguaje es mucho más rápido que los lenguajes de alto nivel.
La desventaja es que son bastantes difíciles de manejar y usar, además de tener códigos
fuente enormes donde encontrar un fallo es casi imposible.
6. •Ventajas del lenguaje ensamblador.
Los lenguajes ensambladores presentan la ventaja frente a los lenguajes máquina de su
mayor facilidad de codificación y, en general, su velocidad de cálculo.
•Desventajas del lenguaje ensamblador.
Los inconvenientes más notables de los lenguajes ensambladores son:
•Dependencia total de la máquina lo que impide la transportabilidad de los programas.
El lenguaje ensamblador del PC es distinto del lenguaje ensamblador del Apple
Macintosh.
•La formación de los programadores es más compleja que la correspondiente a los
programadores de alto nivel, ya que no sólo las técnicas de programación, sino también
el conocimiento del interior de la máquina.
El lenguaje ensamblador
Es un derivado del lenguaje maquina y esta formado por abreviaturas de letras y
números.
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, es que los códigos fuentes eran más cortos y los programas creados
ocupaban menos memoria.
En este tipo de lenguajes se trabaja a nivel de instrucciones, es decir, su programación es al
más fino detalle, además, está completamente orientado a la máquina.
7. El lenguaje ensamblador
Características:
•Adaptación : Máxima entre programación y aprovechamiento del recurso de la máquina.
•Velocidad : Máxima al contar con un acceso directo a los recursos, sin capas intermedias.
•Portabilidad : Mínima por estar restringido a las especificaciones del fabricante.
•Abstracción : Mínima por depender completamente de la técnica del hardware.
•Uso : Requiere de la máxima atención y de una organización estructurada en base a los
planos del hardware y del objetivo del software.
8. Lenguaje intermedio
Es el lenguaje de una máquina abstracta diseñada para ayudar a realizar el análisis de
un programa informático. El término proviene de su uso en compiladores, donde el código
fuente de un programa es traducido a un modo más apropiado para transformaciones de
mejora de código antes de generar el código objeto o código máquina para una máquina
determinada. El diseño del lenguaje intermedio difiere típicamente del lenguaje de
máquina de tres maneras fundamentales:
•Cada instrucción representa exactamente una operación fundamental; por ejemplo,
los modos de direccionamiento "shift-add" (desplazar y añadir) comunes
en microprocesadores no están presentes.
•La información de la estructura de control puede no estar incluida en el juego de
instrucciones.
•El número de registros disponibles puede ser grande, incluso ilimitado.
9. Los lenguajes de alto nivel
También denominados lenguajes evolucionados, surgen con posterioridad a
los anteriores, con los siguientes objetivos, entre otros:
•Lograr independencia de la máquina, pudiendo utilizar un mismo programa en
diferentes equipos con la única condición de disponer de un programa traductor o
compilador, que lo suministra el fabricante, para obtener el programa ejecutable
en lenguaje binario de la máquina que se trate. Además, no se necesita conocer el
hardware específico de dicha máquina.
•Incluir rutinas de uso frecuente como son las de entrada/salida, funciones
matemáticas, manejo de tablas, etc, que figuran en una especie de librería del
lenguaje, de tal manera que se pueden utilizar siempre que se quieran sin
necesidad de programarlas cada vez.
Estos lenguajes permiten al programador olvidarse por completo del funcionamiento
interno de la maquina/s para la que están diseñando el programa. Tan solo necesitan
un traductor que entiendan el código fuente como las características de la maquina.
10. Los lenguajes de alto nivel
Ventajas
- Resultan en un código fuente más fácil de leer, escribir y mantener por los
humanos. En general, permite emplear menos líneas de código en comparación
con lenguaje máquina.
- Permiten escribir un código válido ejecutable en distintos tipos de máquinas y
sistemas operativos.
- Emplean paradigmas de programación.
Desventajas
- Son más lentos de ejecutar, siendo el código máquina más eficiente. De todas
maneras esto depende del diseño del compilador para lenguajes de alto nivel:
un buen diseño produce más eficiencia.
- En algunos casos el programa resultante requiere una determinada
plataforma para ejecutarse.
11. Ejemplos de lenguajes de programación de alto nivel
Los primeros lenguajes de programación de alto nivel fueron diseñados en los 50. Actualmente
existen cientos de lenguajes de este tipo como:
- BASIC
- C (algunos lo consideran de nivel medio)
- C++ (algunos lo consideran de nivel medio)
- Delphi
- FORTRAN
- Java
- LISP
- Modula-2
- Pascal
- Perl
- php
- Prolog
- Python
- Visual Basic .NET
12. Lenguaje C
Es un lenguaje de programación de propósito general asociado, de modo
universal, al sistema operativo UNIX. Sin embargo, la popularidad, eficacia y potencia
de C se ha producido porque este lenguaje no está prácticamente asociado a
ningún sistema operativo, ni a ninguna máquina en especial.
Esta es la razón fundamental por la que C es conocido como el lenguaje de
programación de sistemas por excelencia.
13. Es un lenguaje de alto nivel, que permite programar con instrucciones de lenguaje de
propósito general.
También C se define como un lenguaje de programación estructurado de propósito
general; aunque en su diseño también primó el hecho de fuera especificado como:
•Un lenguaje de programación de sistemas, lo que proporciona una enorme cantidad de
potencia y flexibilidad.
•Asignación de estructuras (registros) y enumeraciones.
• Preprocesador más sofisticado.
•En la actualidad, el lenguaje C sigue siendo uno de los más utilizados en la industria del
software, así como en institutos tecnológicos, escuelas de ingeniería y universidades.
Prácticamente todos los fabricantes de sistemas operativos (tomando en cuenta a: UNIX,
Linux, MacOS, Solaris, Windows, entre otros.), soportan diferentes tipos de compiladores
de lenguaje C.
Características
14. Ventajas del lenguaje C
El lenguaje C tiene una gran cantidad de ventajas sobre otros lenguajes y
constituyen precisamente la razón fundamental de que después de casi dos décadas de
uso C siga siendo uno de los lenguajes más populares, utilizados en empresas, organizaciones
y fábricas de software de todo el mundo.
C se caracteriza por su velocidad de ejecución. En los primeros días de la informática los
problemas de tiempo de ejecución se resolvían escribiendo todo o parte de una aplicación
en lenguaje ensamblador (muy al lenguaje de máquina).
Debido a que existen muchos programas escritos en el lenguaje C, se han creado
numerosas bibliotecas C para programadores profesionales que soportan gran variedad de
aplicaciones.
15. ++ es un lenguaje de programación diseñado a mediados de los años 1980
por BjarneStroustrup. La intención de su creación fue el extender al exitoso lenguaje
de programación C con mecanismos que permitan la manipulación de objetos. En ese
sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un
lenguaje híbrido.
Posteriormente se añadieron facilidades de programación genérica, que se
sumó a los otros dos paradigmas que ya estaban admitidos (programación
estructurada y la programación orientada a objetos). Por esto se suele decir que el
C++ es un lenguaje de programación multiparadigma. Actualmente existe un
estándar, denominado ISO C++,
C# es un lenguaje propietario de Microsoft que mezcla las características básicas de
C++ (no las avanzadas) simplificándolas al estilo Java y ofreciendo un framework. C#
forma parte de la plataforma .NET
Lenguaje C ++
16. {} entre llaves
Las llaves sirven para definir el principio y el final de un bloque de instrucciones. Se utilizan para los
bloques de programación
Una llave de apertura “{“ siempre debe ir seguida de una llave de cierre “}”, si no es así el
compilador dará errores.
; punto y coma
El punto y coma “;” se utiliza para separar instrucciones en el lenguaje de programación de
Arduino. También se utiliza para separar elementos en una instrucción de tipo “bucle for”.
Nota: Si olvidáis poner fin a una línea con un punto y coma se producirá en un error de
compilación.
/*… */ bloque de comentarios
Los bloques de comentarios, o comentarios multi-línea son áreas de texto ignorados por el
programa que se utilizan para las descripciones del código o comentarios que ayudan a comprender
el programa.
// línea de comentarios
Una línea de comentario empieza con / / y terminan con la siguiente línea de código. Al igual que
los comentarios de bloque, los de línea son ignoradas por el programa y no ocupan espacio en la
memoria.
Algunas sintaxis
17. Diferencias entre C vs C++
Estos lenguajes derivan uno de otro, pero tienen diferencias muy claras.
•C es un lenguaje creado por Dennis Ritchie a principios de la década de 1970 y basado en el
paradigma de programación estructurada. Pretende ser un lenguaje de propósito general que
dé al programador control total sobre sus programas, permitiendo la programación de bajo
nivel (es decir, permitiendo controlar directamente cosas como el acceso a memoria y otros
recursos), pero a la vez proporcionando estructuras de alto nivel que hagan la programación
de sistemas grandes más fácil.
•C++ fue creado por BjarneStroustrup durante la primera mitad de los años 1980 con el fin
de dotar C de mecanismos que permitieran usar el paradigma de programación orientada a
objetos. Su nombre inicial era C withClasses, lo que muestra claramente ese propósito,
aunque finalmente hizo un juego con el operador incremento (++) de C. C++ podría leerse,
pues, como incremento de C o C incrementado, aunque la forma habitual de leer su nombre
es C más más (o C plus plus, manteniendo el nombre inglés). Inicialmente, C++ era
totalmente compatible con C; es decir, cualquier programa escrito en C era un programa
válido también en C++, aunque el contrario no era cierto.
•C# fue creado por AndersHejlsberg en torno al año 2000 como una versión mejorada de
C++ (el # del nombre se puede interpretar como cuatro crucecitas; es decir, C++++) para la
programación de alto nivel. El nombre del lenguaje también juega con el de C (en inglés, C es
la nota musical Do, mientras que C# es la siguiente nota, Do Sostenido). La idea era que las
capacidades de bajo nivel de C y C++ eran innecesarias para muchos programadores, para
quienes las dificultades y riesgos del manejo directo de la memoria y otros recursos no
ofrecían compensación.
18. Lenguajes de programación orientada a objetos
Los lenguajes de programación orientados a objetos tratan a los programas
como conjuntos de objetos que se ayudan entre ellos para realizar acciones. Entendiendo
como objeto al entidades que contienen datos. Permitiendo que los programas sean más
fáciles de escribir, mantener y reutilizar.
Los objetos tienen toda la información (atributos) que los diferencia de otros
pertenecientes a otra clase. Por medio de unos métodos se comunican los objetos de una
misma o diferente clase produciendo el cambio de estado de los objetos. Esto hace que a
los objetos se les trate como unidades indivisibles en las que no se separan la información
ni los métodos usados en su tratamiento.
Los lenguajes de programación orientadas a objetos son lenguajes dinámicos
en los que estos objetos se pueden crear y modificar sobre la marcha. Esta programación
orientada a objetos (POO) tomo auge a mediados de los años ochenta debido a la
propagación de las interfaces gráficas de usuarios, para lo que los lenguajes de
programación orientados a objetos están especialmente dotados.
19. Cómo se piensa en objetos
Pensar en términos de objetos es muy parecido a cómo lo haríamos en la vida
real. Por ejemplo vamos a pensar en un coche para tratar de modelizarlo en un esquema de
POO. Diríamos que el coche es el elemento principal que tiene una serie de características,
como podrían ser el color, el modelo o la marca. Además tiene una serie de funcionalidades
asociadas, como pueden ser ponerse en marcha, parar o aparcar.
Pues en un esquema POO el coche sería el objeto, las propiedades serían las características
como el color o el modelo y los métodos serían las funcionalidades asociadas como ponerse
en marcha o parar.