PDF de programación - Lenguajes de programación ¿por qué hay tantos y aparecen nuevos?

Imágen de pdf Lenguajes de programación ¿por qué hay tantos y aparecen nuevos?

Lenguajes de programación ¿por qué hay tantos y aparecen nuevos?gráfica de visualizaciones

Publicado el 11 de Mayo del 2021
314 visualizaciones desde el 11 de Mayo del 2021
118,2 KB
5 paginas
Creado hace 22a (08/03/2002)
LENGUAJES DE PROGRAMACIÓN

¿POR QUÉ HAY TANTOS Y APARECEN NUEVOS?

Por: Hanna Oktaba

La computadora, a diferencia de otras herramientas que en general apoyan el esfuerzo físico
de los humanos, fue inventada para facilitar el trabajo intelectual. Si el hombre tiene algún
problema, por ejemplo "sumar dos y dos", el diseñador define el algoritmo que resuelve el
problema, el programador lo codifica en un lenguaje de programación, el cual la
computadora es capaz de "entender", luego la computadora ejecuta el algorítmo expresado
como programa en el lenguaje de programación en cuestión, y listo. La máquina le entrega
al hombre la respuesta "4", sin que éste tuviera que esforzar sus neuronas.

¿Cuál es el papel del lenguaje de programación en este proceso? Es muy importante, el
lenguaje de programación es el medio de comunicación entre el hombre y la máquina. El
modelo general de las computadoras, desde que fue esbozado por von Neumann, no ha
cambiado mucho, mientras que la invención humana para proponerse nuevos problemas a
resolver, usando la computadora, parece no tener límites. En consecuencia, los lenguajes de
programación tienen que adaptarse a éstas crecientes necesidades y aumentar la
expresividad para poder resolver problemas muy diversos y cada vez más complejos.
Además, tienen que ofrecer cierta eficiencia en la ejecución. Es un logro difícil de alcanzar
y por lo tanto, se requiere una búsqueda constante de nuevos lenguajes para ello.

Permítanme exponer un breve panorama de los más importantes tipos de lenguajes de
programación.

Lenguajes Imperativos
Comenzaré por los llamados lenguajes imperativos. En este tipo de lenguajes, cuyo origen
está ligado a la propia arquitectura de von Neumann, la arquitectura consta de una
secuencia de celdas, llamadas memoria, en la cual se pueden guardar en forma codificada,
lo mismo datos que instrucciones; y de un procesador, el cual es capaz de ejecutar de
manera secuencial una serie de operaciones, principalmente aritméticas y booleanas,
llamadas comandos. En general, un lenguaje imperativo ofrece al programador conceptos
que se traducen de forma natural al modelo de la máquina.

Los lenguajes imperativos más destacados de la historia han sido: FORTRAN, Algol,
Pascal, C, Modula-2, Ada. Seguramente, los lectores conocen por lo menos uno de ellos.

El programador, al utilizar un lenguaje imperativo, por lo general tiene que traducir la
solución abstracta del problema a términos muy primitivos, cercanos a la máquina. La
distancia entre el nivel del razonamiento humano y lo expresable por los lenguajes
imperativos causa que sus programas sean más "comprensibles" para la máquina que para
el hombre. Esta desventaja para nosotros, reflejada en la dificultad que tenemos al construir
programas en un lenguaje imperativo, se vuelve una ventaja en el momento de la
generación del código. El programa está expresado en términos tan cercanos a la máquina,
que el código generado es relativamente parecido al programa original, lo que permite
cierta eficiencia en la ejecución.

Lenguajes Funcionales
Los matemáticos desde hace un buen tiempo están resolviendo problemas usando el
concepto de función. Una función convierte ciertos datos en resultados. Si supiéramos
cómo evaluar una función, usando la computadora, podríamos resolver automáticamente
muchos problemas. Así pensaron algunos matemáticos, que no le tenían miedo a la
máquina, e inventaron los lenguajes de programación funcionales. Además, aprovecharon
la posibilidad que tienen las funciones para manipular datos simbólicos, y no solamente
numéricos, y la propiedad de las funciones que les permite componer, creando de esta
manera, la oportunidad para resolver problemas complejos a partir de las soluciones a otros
más sencillos. También se incluyó la posibilidad de definir funciones recursivamente.

Un lenguaje funcional ofrece conceptos que son muy entendibles y relativamente fáciles de
manejar para todos los que no se durmieron en las clases de matemáticas. El lenguaje
funcional más antiguo, y seguramente el más popular hasta la fecha, es LISP, diseñado por
McCarthy [1] en la segunda mitad de los años 50. Su área de aplicación es principalmente
la Inteligencia Artificial. En la década de los 80 hubo una nueva ola de interés por los
lenguajes funcionales, añadiendo la tipificación y algunos conceptos modernos de
modularización y polimorfismo, como es el caso del lenguaje ML.

Programar en un lenguaje funcional significa construir funciones a partir de las ya
existentes. Por lo tanto es importante conocer y comprender bien las funciones que
conforman la base del lenguaje, así como las que ya fueron definidas previamente. De esta
manera se pueden ir construyendo aplicaciones cada vez más complejas. La desventaja de
este modelo es que resulta bastante alejado del modelo de la máquina de von Neumann y,
por lo tanto, la eficiencia de ejecución de los intérpretes de lenguajes funcionales no es
comparable con la ejecución de los programas imperativos precompilados. Para remediar la
deficiencia, se está buscando utilizar arquitecturas paralelas que mejoren el desempeño de
los programas funcionales, sin que hasta la fecha estos intentos tengan un impacto real
importante.

Lenguajes Lógicos
Otra forma de razonar para resolver problemas en matemáticas se fundamenta en la lógica
de primer orden. El conocimiento básico de las matemáticas se puede representar en la
lógica en forma de axiomas, a los cuales se añaden reglas formales para deducir cosas
verdaderas (teoremas) a partir de los axiomas. Gracias al trabajo de algunos matemáticos,
de finales de siglo pasado y principios de éste, se encontró la manera de automatizar
computacionalmente el razonamiento lógico --particularmente para un subconjunto
significativo de la lógica de primer orden-- que permitió que la lógica matemática diera
origen a otro tipo de lenguajes de programación, conocidos como lenguajes lógicos.
También se conoce a estos lenguajes, y a los funcionales, como lenguajes declarativos,
porque el programador, parar solucionar un problema, todo lo que tiene que hacer es
describirlo vía axiomas y reglas de deducción en el caso de la programación lógica y vía
funciones en el caso de la programación funcional.

En los lenguajes 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. Así se encuentran soluciones a problemas formulados
como preguntas. 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.

El PROLOG es el primer lenguaje lógico y el más conocido y utilizado. Sus orígenes se
remotan a los inicios de la década de los 70 con los trabajos del grupo de A. Colmerauer [2]
en Marsella, Francia. También en este caso, las aplicaciones a la Inteligencia Artificial
mantienen el lenguaje vivo y útil.

En el caso de la programación lógica, el trabajo del programador se restringe a la buena
descripción del problema en forma de hechos y reglas. A partir de ésta se pueden encontrar
muchas soluciones dependiendo de como se formulen las preguntas (metas), que tienen
sentido para el problema. Si el programa está bien definido, el sistema encuentra
automáticamente las respuestas a las preguntas formuladas. En este caso ya no es necesario
definir el algoritmo de solución, como en la programación imperativa, en cambio, lo
fundamental aquí es expresar bien el conocimiento sobre el problema mismo. En
programación lógica, al igual que en programación funcional, el programa, en este caso los
hechos y las reglas, están muy alejados del modelo von Neumann que posee la máquina en
la que tienen que ser interpretados; por lo tanto, la eficiencia de la ejecución no puede ser
comparable con la de un programa equivalente escrito en un lenguaje imperativo. Sin
embargo, para cierto tipo de problemas, la formulación del programa mismo puede ser
mucho más sencilla y natural (para un programador experimentado, por supuesto).

Lenguajes Orientados a Objetos
A mediados de los años 60 se empezó a vislumbrar el uso de las computadoras para la
simulación de problemas del mundo real. Pero el mundo real está lleno de objetos, en la
mayoría de los casos complejos, los cuales difícilmente se traducen a los tipos de datos
primitivos de los lenguajes imperativos. Así es que a dos noruegos, Dahl y Nygaard [3], se
les ocurrió el concepto de objeto y sus colecciones, llamadas clases de objetos, que
permitieron introducir abstracciones de datos a los lenguajes de programación. La
posibilidad de reutilización del código y sus indispensables modificaciones, se reflejaron en
la idea de las jerarquías de herencia de clases. A ellos también les debemos el concepto de
polimorfismo introducido vía procedimientos virtuales. Todos estos conceptos fueron
presentados en el lenguaje Simula 67, desde el año 1967. Aunque pensado como lenguaje
de propósito general, Simula tuvo su mayor éxito en las aplicaciones de simulación
discreta, gracias a la clase SIMULATION que facilitaba considerablemente la
programación.

La comunidad informática ha tardado demasiado en entender la utilidad de los conceptos
básicos de Simula 67, que hoy identificamos como conceptos del modelo de objetos.
Tuvimos que esperar hasta los años 80 para vivir una verdadera ola de propuestas de
lenguajes de programación con conceptos de objetos encabezada por Smalltalk, C++,
Eiffel,
  • Links de descarga
http://lwp-l.com/pdf19181

Comentarios de: Lenguajes de programación ¿por qué hay tantos y aparecen nuevos? (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad