DIRECCIÓN GENERAL DE CENTROS DE
FORMACIÓN PARA EL TRABAJO
CECATI 120
Curso Programación Orientada a Objetos con C++
Susana Elizabeth Ramírez Gómez
05/10/2017
DESCRIPCIÓN DE LAS CARACTERÍSTICAS
DISTINTIVAS
DE LOS
LENGUAJES DE PROGRAMACIÓN
Bajo nivel:
Sus instrucciones
ejercen un control directo sobre el hardware y están condicionados por la
estructura física de las computadoras que lo soportan. 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.
Alto nivel:
Un lenguaje de
programación de alto nivel se le caracteriza por expresar el algoritmo de una
manera adecuada a la capacidad cognitiva humana, en lugar de la capacidad que
se la ejecuta de las máquinas.
Generaciones de
lenguajes de programación
Primera generación: – 1GL:
Código máquina y
Ensambladores
La primera
generación de lenguajes de programación consistía enteramente de una secuencia
de 0s y 1s que los controles de la computadora interpretan como instrucciones,
eléctricamente.
Representan los
primeros lenguajes de programación que la computadora podía entender, son
conocidos como lenguaje máquina.
Segunda generación: – 2GL:
Primeros lenguajes
de alto nivel, no estructurados – Fortran, Cobol, Basic
La segunda
generación de lenguajes de programación consistía se identificaron como
lenguajes ensambladores. Un lenguaje ensamblador convierte las secuencias de 0s
y 1s a un lenguaje entendido por los seres humanos, como “añadir”, “sumar”,
etc.
El código escrito
en un lenguaje ensamblador se convierte en lenguaje de máquina (1GL).
Tercera generación: -3GL:
La tercera
generación de lenguajes de programación se conoce como lenguajes de alto nivel.
Un lenguaje de alto nivel tiene una gramática y sintaxis similar a las palabras
en una oración. Un compilador se encarga de traducir el lenguaje de alto nivel
a lenguaje ensamblador o código máquina.
Todos los
lenguajes de programación de software necesitan ser traducidos a código de
máquina para una computadora para utilizar las instrucciones que contienen.
Cuarta generación: -4GL
La cuarta
generación de lenguajes de programación avanza en la sintaxis utilizada.
Lenguajes 4GL se utilizan típicamente para acceder a bases de datos.
Lenguajes
Declarativos: SQL Generadores de aplicaciones, Herramientas CASE
Programación
Visual: Visual Basic, Visual C
Lenguajes
Orientados a Objeto C++, Java, Eiffel
Quinta generación (5GL)
Imitación de la
mente humana
La quinta
generación de lenguajes de programación es utilizada para redes neuronales. Una
red neuronal es una forma de inteligencia artificial que trata de imitar la
mente humana.
Imperativos
La programación en
este paradigma consiste en determinar qué datos son requeridos para el cálculo,
asociar a esos datos una dirección de memoria, y efectuar, paso a paso, una secuencia
de transformaciones en los datos almacenados, de forma que el estado final
represente el resultado correcto.
Orientados 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.
Funcionales.
Los lenguajes
funcionales suelen usarse mucho para Inteligencia Artificial. Para alguien que
está acostumbrado a programar en lenguajes imperativos u orientados a objetos,
la curva de aprendizaje es un poco más grande; cuesta un poco entender el
paradigma. Lo más chocante es que en general no existe la asignación de
variables, se trabaja en forma recursiva, con memoria dinámica, y, en algunos
lenguajes, cualquier programa se puede escribir en una sola línea (por ejemplo
en APL), lo que dificulta un poco su lectura.
Lógicos
Se utiliza el
formalismo de la lógica para representar el conocimiento sobre un problema y
para hacer preguntas que, si se demuestra que se pueden deducir a partir del
conocimiento dado en forma de axiomas y de las reglas de deducción estipuladas,
se vuelven teoremas.
Con base en la
información expresada dentro de la lógica de primer orden, se formulan las
preguntas sobre el dominio del problema y el intérprete del lenguaje lógico
trata de encontrar la respuesta automáticamente. El conocimiento sobre el
problema se expresa en forma de predicados (axiomas) que establecen relaciones
sobre los símbolos que representan los datos del dominio del problema
Concurrentes, paralelos y distribuidos.
La programación
concurrente está relacionada con la programación paralela, pero enfatiza más la
interacción entre tareas. Así, la correcta secuencia de interacciones o comunicaciones
entre los procesos y el acceso coordinado de recursos que se comparten por
todos los procesos o tareas son las claves de esta disciplina.
Los programas de
ordenador paralelos son más difíciles de escribir que los secuenciales porque
la concurrencia introduce nuevos tipos de errores de software, siendo las
condiciones de carrera los más comunes. La comunicación y la sincronización
entre las diferentes subtareas son típicamente las grandes barreras para
conseguir un buen rendimiento de los programas paralelos. El incremento de
velocidad que consigue un programa como resultado de la paralelización viene
dado por la ley de Amdahl.
La informática distribuida
o “en malla”, es un nuevo modelo para resolver problemas de computación masiva
utilizando un gran número de ordenadores organizadas en racimos incrustados en
una infraestructura de telecomunicaciones distribuida.