Esta presentación sintetiza los fundamentos de los lenguajes de programación. Espero los sea de mucha utilidad para comprender la importancia de estos programación.
4. ¿Qué es un lenguaje de programación?
Un lenguaje de
programación es
un idioma
artificial diseñado para
expresar
computaciones que
pueden ser llevadas a
cabo por máquinas
como
las computadoras.
5. Historia
Al comienzo sólo existía el código máquina. Al
principio de la historia de los computadores no
existían los lenguajes de programación. Los
computadores se programaban en el lenguaje
que entendía la unidad de procesamiento: el
código máquina.
6.
7. Por nivel
- Lenguajes de bajo nivel
- Lenguajes de alto nivel
Por
generación
-Primera generación
-Segunda
generación
-Tercera generación
-Cuarta generación
-Quinta generación
Por Paradigma
Paradigma imperativo
Procedimental
Paradigma declarativo
Funcional
Lógico
Paradigma híbrido
Orientado a objetos
8. Por Área
De
Aplicación
1. Enseñanza – Basic, Logo, Pascal
y Python
2. Aplicaciones científicas –
Fortran, Algol, Matlab, R
3. Aplicaciones comerciales –
Cobol, RPG, SQL
4. Aplicaciones con interfaces
gráficas – Visual Basic, C#
5. Inteligencia artificial y sistemas
expertos – Lisp, Prolog, OPS5
6. Programación de sistemas – C,
C++
7. Aplicaciones web – JavaScript,
PHP.
9. Tipos de lenguaje de maquina
Lenguajes de programación de bajo nivel: Son
mucho mas fáciles de utilizar que el lenguaje
máquina, pero dependen mucho de la máquina o
computadora como sucedía con el lenguaje
máquina.
Lenguajes de programación de alto nivel: Este tipo de
lenguajes de programación son independientes de la
máquina, lo podemos usar en cualquier computador con muy
pocas modificaciones o sin ellas, son muy similares al
lenguaje humano, pero precisan de un programa interprete o
compilador que traduzca este lenguaje de programación de
alto nivel a uno de bajo nivel como el lenguaje de máquina
que la computadora pueda entender. Los siguientes lenguaje
de programación de alto nivel son:
• Lenguajes de programación imperativos: entre ellos tenemos
el Cobol, Pascal, C y Ada.
• Lenguajes de programación declarativos: el Lisp y el Prolog.
• Lenguajes de programación orientados a objetos: el Smalltalk
y el C++.
• Lenguajes de programación orientados al problema: son
aquellos lenguajes específicos para gestión.
• Lenguajes de programación naturales: son los nuevos
lenguajes que pretender aproximar el diseño y la
construcción de programas al lenguaje de las personas.
Lenguajes de programación de primera generación: el
lenguaje máquina y el ensamblador.
Lenguajes de programación de segunda generación:
los primeros lenguajes de programación de alto
nivel imperativo (FROTRAN, COBOL).
Lenguajes de programación de tercera generación: son
lenguajes de programación de alto nivel imperativo
pero mucho más utilizados y vigentes en la
actualidad (ALGOL 8, PL/I, PASCAL, MODULA).
Lenguajes de programación de cuarta
generación: usados en aplicaciones de gestión y
manejo de bases de dados (NATURAL, SQL).
Lenguajes de programación de quinta
generación: creados para la inteligencia artificial y
para el procesamiento de lenguajes naturales (LISP,
PROLOG).
10. Intérpretes y
Compiladores
Existen dos tipos principales de traductores de los
lenguajes de programación de alto nivel:
Compilador, que analiza el programa fuente y lo traduce
a otro equivalente escrito en otro lenguaje (por ejemplo,
en el lenguaje de la máquina). Su acción equivale a la de
un traductor humano, que toma un libro y produce otro
equivalente escrito en otra lengua.
Intérprete, que analiza el programa fuente y lo ejecuta
directamente, sin generar ningún código equivalente. Su
acción equivale a la de un intérprete humano, que traduce
las frases que oye sobre la marcha, sin producir ningún
escrito permanente.
11. Intérpretes y Compiladores
Intérpretes y compiladores tienen diversas ventajas e inconvenientes que los hacen
complementarios:
Un intérprete facilita la búsqueda
de errores, pues la ejecución de
un programa puede interrumpirse
en cualquier momento para
estudiar el entorno (valores de las
variables, etc.). Además, el
programa puede modificarse sobre
la marcha, sin necesidad de volver
a comenzar la ejecución.
Un compilador suele generar programas
más rápidos y eficientes, ya que el
análisis del lenguaje fuente se hace una
sola vez, durante la generación del
programa equivalente. En cambio, un
intérprete se ve obligado generalmente a
analizar cada instrucción tantas veces
como se ejecute (incluso miles o millones
de veces).
Un intérprete permite utilizar
funciones y operadores más potentes,
como por ejemplo ejecutar código
contenido en una variable en forma de
cadenas de caracteres. Usualmente,
este tipo de instrucciones es imposible
de tratar por medio de compiladores.
Los lenguajes que incluyen este tipo de
operadores y que, por tanto, exigen un
intérprete, se llaman interpretativos.
Los lenguajes compilativos, que
permiten el uso de un compilador,
prescinden de este tipo de operadores.
12. PARADIGMAS DE LA PROGRAMACION
Concepto de Paradigma
Caso, modelo, patrón, regla que se cita para ilustrar o autorizar un
aserto, doctrina o posición.
En computación un paradigma procura establecer fronteras entre
los fundamentos matemáticos necesarios para cualquier área de la
computación y la matemática real y pretende definir nuevas
referencias epistemológicas (doctrina que trata de los fundamentos
y métodos del conocimiento científico) para la definición de
parámetros matemáticos para los cursos del área de informática
donde se formarán los profesionales.
En ciencias de la computación existen un cierto número de
paradigmas que se adaptan a la diversidad de problemas con los que
nos enfrentamos, cada paradigma está orientado a resolver un
problema determinado, han aparecido distingos paradigmas que
ofrecen distintos tipos de funcionalidades y generalmente una
filosofía de programación novedosa.
Así pues, los paradigmas se clasifican según su grado de abstracción.
En esta clasificación, se suele hacer dos grupos, el paradigma
declarativo, también conocido por "lenguajes declarativos" y el
paradigma imperativo o "lenguajes imperativos".
13.
14. La primera categoría de lenguajes declarativos
corresponde a los llamados lenguajes funcionales o
paradigma funcional. Los programas bajo el
paradigma funcional se basan en funciones, las que
son llamadas desde otras funciones. Es importante
recordar que cuando se quiere resolver un problema
con un lenguaje funcional, no se tiene que construir
un algoritmo que exprese cómo se tiene que resolver
el problema, sino que describir los elementos
(funciones) que van a servir par resolverlo.
15. Un programa bajo el paradigma funcional puede expresarse de la siguiente
manera:
Programa = Funciones + Estructuras de Datos
Las características de estos lenguajes son:
• Su base es la recursividad, puesto que las funciones se definen de forma
recursiva.
• Las funciones son los elementos principales de los programas.
• Son lenguajes interpretativos: necesitan de un proceso de interpretación
(traducción) para que sea comprensible a la computadora.
• Son lenguajes deterministas: en el sentido de que se tienen siempre los
mismos resultados del programa para las mismas entradas.
Al ser lenguajes con una componente matemática alta su mejor campo de
aplicación es el científico, y por su facilidad de búsqueda es el más usado en
Inteligencia Artificial. Por tanto, su aceptación y utilización es
principalmente en entornos de investigación y docencia. Los lenguajes más
representativos dentro de este grupo son: Lisp, FP, Camel, ML, Miranda,
Hope, etc.
16. La segunda categoría de lenguajes declarativos
corresponde a los llamados lenguajes lógicos o
paradigma lógico. Los lenguajes bajo este paradigma
están basados en reglas y asertos (afirmaciones).
Para obtener resultados de un programa, se hacen
preguntas a la computadora, y está, en función de las
reglas y afirmaciones que tiene almacenadas,
responde. La "inteligencia" de la computadora reside
en la manera que tiene de interpretar y encadenar
las conclusiones de las reglas. Esto se hace con lo
que se denomina motor de inferencia.
17. Un programa bajo el paradigma lógico puede expresarse de la siguiente
manera:
Programa = Reglas+ Asertos + Estructuras de Datos + Control
El control lo proporciona el motor de inferencia, que es el que realmente
"razona", y obtiene resultados a partir de las reglas y asertos existentes.
Las características de estos lenguajes:
Se describe qué problema ha de resolverse, no cómo resolverlo.
Son lenguajes conversacionales, es decir, es como si la computadora
fuera un persona a la que se le pregunta de acuerdo a un lenguaje de
interrogación definido y responde con las conclusiones que obtiene.
Son lenguajes recursivos, la definición de las reglas generalmente se
realiza, al igual que en los lenguajes funcionales, de forma recursiva.
Este tipo de lenguajes son muy utilizados en áreas como la Inteligencia
Artificial, puesto que tratan de simular la forma de razonamiento
18. Los lenguajes declarativos, especialmente los
modernos, han sido desarrollados principalmente con el
fin de ser usados en el proceso de representar el
conocimiento humano y reproducir sus capacidades
deductivas y cognitivas, de acuerdo al desafío
emprendido en el campo de la Inteligencia Artificial.
Además, estos lenguajes son especialmente útiles para
representar problemas de modelación y simulación en
las distintas áreas de la Ingeniería.
19. PARADIGMA IMPERATIVO
El paradigma imperativo es el más antiguo y del que más lenguajes existen. Los lenguajes imperativos son los más
difundidos y son adecuados para resolver aquellos problemas que tienen soluciones expresables en un algoritmo.
Se caracterizan por estar orientados, o permiten la facilidad, de orientar al uso de procedimientos. Además, estos
lenguajes permiten manejar explícitamente el flujo de ejecución de las instrucciones del programa.
Para este tipo de lenguajes un programa se puede expresar como sigue:
Programa = Algoritmo + Estructuras de Datos
Es decir, está compuesto de un algoritmo que representa o describe cómo hay que resolver el problema y las
estructuras de datos necesarias para almacenar la información.
Las características de estos tipos de lenguajes son las siguientes:
• Procedimentales: En el sentido de que describen cómo se ha de resolver el problema y no qué problema es.
• Deterministas: En el sentido de que se tienen siempre los mismos resultados del programa para las mismas
entradas.
• Necesitan de la existencia de un proceso que traduzca el código al lenguaje de máquina.
• Algorítmicos: Expresan cómo resolver el problema mediante un algoritmo.
Ejemplos de lenguajes imperativos van desde el lenguaje de máquina hasta lenguajes de mayor nivel de
abstracción, tales como FORTRAN, COBOL, BASIC, PASCAL, C, ADA, etc.
20. PARADIGMA HIBRIDO
Debido a algunos inconvenientes producidos por la falta de control de flujo de los lenguajes
declarativos, se ha producido híbridos, los que tienen parte de los lenguajes declarativos y parte
de los imperativos. La corriente más fuerte al respecto, y siendo una de las formas más usadas
en la representación del conocimiento humano, son los lenguajes "ORIENTADOS AL OBJETO".
La programación orientada al objeto constituye otra forma de pensar cómo resolver algunos
problemas planteados. En ella se examina el universo del problema en términos de "entidades" y
de relaciones entre esas "entidades". Estas entidades se eligen porque tienen algún límite físico
o conceptual que los separa del resto del problema. Las entidades son representadas como
objetos del programa. El objetivo es tener una correspondencia entre entidades en el problema
físico y objetos en el programa. Dentro de cada objeto está almacenada toda la información
representativa del objeto (variables) y todas las operaciones que se pueden realizar con ese
objeto (métodos o funciones). A esta particularidad se le denomina encapsulamiento de datos y
funciones dentro de un objeto. La última característica importante dentro de estos lenguajes es
la "herencia", concepto análogo al de la Biología, de esta manera se define una jerarquía de
herencias que ayudan a describir los problemas.
Un fuerte atractivo de los lenguajes orientados a objetos es que ofrecen una mayor reutilización.
Se facilita la modificación y reutilización de un programa después de haber sido construido y
utilizado.
21. Por tanto, un programa de este tipo puede expresarse como sigue:
Programa = Objetos + Mensajes
Las características de estos lenguajes son:
Están orientados a reutilizar el software que desarrollan, con e l fin de resultar
más sencilla la modificación de los programas y sobre todo que sean útiles para
ser utilizados completa o parcialmente "a posteriori".
Son compilativos, es decir, precisan de un proceso de compilación para poder ser
ejecutados.
Son objetuales no procedimentales, es decir, se basan en los objetos y no en los
procedimientos (algoritmos). A diferencia de los lenguajes imperativos en los que
se trataba de encontrar un método (procedimiento o algoritmo) para resolver el
problema, aquí se trata de encontrar los objetos necesarios para modelar el
problema.
Algunos ejemplos de estos lenguajes son Simula 67, Smalltalk, Object Pascal,
C++, Flavours, etc.