21 de abril de 2015 Ing. Rubén Darío García Guzmán Introducción a los lenguajes de...

23
18 de junio de 2022 Ing. Rubén Darío García Guzmán Introducción a los lenguajes de programación Universidad de Caldas Estructura de lenguajes

Transcript of 21 de abril de 2015 Ing. Rubén Darío García Guzmán Introducción a los lenguajes de...

Page 1: 21 de abril de 2015 Ing. Rubén Darío García Guzmán Introducción a los lenguajes de programación Universidad de Caldas Estructura de lenguajes.

21 de abril de 2023

Ing. Rubén Darío García Guzmán

Introducción a los lenguajes de programación

Universidad de Caldas

Estructura de lenguajes

Page 2: 21 de abril de 2015 Ing. Rubén Darío García Guzmán Introducción a los lenguajes de programación Universidad de Caldas Estructura de lenguajes.

2

¿Porqué estudiar lenguajes de programación?

• La pregunta es ¿cuál es la ventaja de estudiar una variedad de lenguajes diferentes que es poco probable que uno llegue a utilizar?:– Mejorar la habilidad para desarrollar algoritmos eficaces.– Mejorar el uso del lenguaje de programación disponible.– Acrecentar el propio vocabulario con construcciones útiles

sobre programación.– Hacer posible una mejor elección del lenguaje de

programación.– Facilitar el aprendizaje de un nuevo lenguaje.– Facilitar el diseño de un nuevo lenguaje.

Page 3: 21 de abril de 2015 Ing. Rubén Darío García Guzmán Introducción a los lenguajes de programación Universidad de Caldas Estructura de lenguajes.

21 de abril de 2023 Ing. Rubén Darío García Guzmán

Agenda

• ¿Qué es un lenguaje?• ¿Qué es un lenguaje de programación?• Clasificación de los lenguajes de programación• Propiedades de los lenguajes de programación• Paradigmas de lenguajes de programación• Dominios de aplicación de los lenguajes de

programación• Historia de los lenguajes de programación• Cualidades de los lenguajes de programación

Page 4: 21 de abril de 2015 Ing. Rubén Darío García Guzmán Introducción a los lenguajes de programación Universidad de Caldas Estructura de lenguajes.

21 de abril de 2023 Ing. Rubén Darío García Guzmán

¿Qué es un lenguaje?

• Conjunto de sonidos articulados con que los hombre manifiesta lo que piensa o siente. Según RAE

• Informático: Conjunto de signos y reglas que permite la comunicación con un ordenador. Según RAE

• Cualquier sistema de signos destinados a la comunicación entre seres humanos, entre hombres y máquinas, o entre máquinas, que se estructura sobre un conjunto definido de reglas, convenciones y representaciones gráficas y/o fonológicas. Según Universidad de la República Oriental del Uruguay

Page 5: 21 de abril de 2015 Ing. Rubén Darío García Guzmán Introducción a los lenguajes de programación Universidad de Caldas Estructura de lenguajes.

21 de abril de 2023 Ing. Rubén Darío García Guzmán

¿Qué es un lenguaje de programación?

• Conjunto de símbolos e instrucciones que permiten al hombre indicarle al computador como operar.

• Sistema de símbolos y reglas que permite la construcción de programas con los que la computadora puede operar así como resolver problemas de manera eficaz.

• Es una notación formal para describir algoritmos o funciones que serán ejecutadas por un ordenador. Cueva Lovello, Juan Manuel. Conceptos básicos de procesadores de lenguaje.

Page 6: 21 de abril de 2015 Ing. Rubén Darío García Guzmán Introducción a los lenguajes de programación Universidad de Caldas Estructura de lenguajes.

21 de abril de 2023 Ing. Rubén Darío García Guzmán

Clasificación de los lenguajes de programación

• Los lenguajes se pueden clasificar en muchas categorías:– Según el nivel de complejidad: Alto nivel, medio

nivel, bajo nivel– Según el tipo de ejecución: Compilados,

interpretados, mixtos– Según el tipo de aplicaciones que permiten:

Visuales, de script, web.– Según el Paradigma: Imperativos, orientados a

objetos, guiados por eventos, funcionales, lógicos, concurrentes, orientados a aspectos, multiparadigma.

Page 7: 21 de abril de 2015 Ing. Rubén Darío García Guzmán Introducción a los lenguajes de programación Universidad de Caldas Estructura de lenguajes.

21 de abril de 2023 Ing. Rubén Darío García Guzmán

Propiedades de los lenguajes de programación

• Sintaxis– Se refiere a lo que constituye un programa bien escrito. Lo componen la

gramática y el vocabulario de palabras y símbolos que son válidos en dicho lenguaje.

– La sintaxis se divide en dos grandes partes– La parte léxica que se refiere a los símbolos usados para la escritura del

programa, es decir que correspondan al alfabeto.– La parte léxica también se encarga de la ejecución de las reglas para

armar componentes léxicos, es decir las “palabras” del programa.– Los componentes léxicos característicos de un lenguaje de programación

son: identificadores (de usuario y reservados), literales (números, caracteres, cadenas, booleanos y otros como fechas), operadores (matemáticos, relacionales, lógicos, de asignación y otros como de concatenación), separadores, espacios en blanco y comentarios.

– La parte sintáctica propiamente dicha se refiere al orden de las “palabras” dentro de “frases” bien formadas que conforman el programa.

Page 8: 21 de abril de 2015 Ing. Rubén Darío García Guzmán Introducción a los lenguajes de programación Universidad de Caldas Estructura de lenguajes.

21 de abril de 2023 Ing. Rubén Darío García Guzmán

Propiedades de los lenguajes de programación

• Sistemas de tipos y semántica:– Se refiere a los tipos de valores que puede manipular un programa y

al significado (semántica) del mismo.

– Cuando se escribe un programa, es importante entender asuntos como el efecto exacto que tiene una asignación sobre el estado de la computación, el impacto de la ejecución de una secuencia de pasos y la definición de lo que significa ejecutar un bucle o una instrucción

condicional. • Gestión de memoria:

– Se centra en el conjunto de técnicas que ayudan a entender la correspondencia entre los valores, las estructuras de datos y las estructuras de los programas con la memoria en la que residen.

– Se requiere distinguir entre memoria estática y memoria dinámica, pilas y montículos (heap), los tiempos de vida de los tipos de objetos y según su alcance, las técnicas de reclamación y de detección de basura.

Page 9: 21 de abril de 2015 Ing. Rubén Darío García Guzmán Introducción a los lenguajes de programación Universidad de Caldas Estructura de lenguajes.

21 de abril de 2023 Ing. Rubén Darío García Guzmán

Propiedades de los lenguajes de programación

• Manipulación de excepciones:– Se refiere al manejo de los eventos erróneos que pueden suceder

en un programa en ejecución, de manera que afecten lo menos posible al resultado final.

– Como un error de entrada, una división por cero o un intento de crear un bloque de espacio en un montículo. Este tipo de eventos se conocen como excepciones y es necesario que los lenguajes de programación no solo capten sino que además respondan de forma adecuada a estas excepciones, sin que la computación en

su conjunto se vea comprometida.

Page 10: 21 de abril de 2015 Ing. Rubén Darío García Guzmán Introducción a los lenguajes de programación Universidad de Caldas Estructura de lenguajes.

21 de abril de 2023 Ing. Rubén Darío García Guzmán

Paradigmas de lenguajes de programación

• Por paradigma podemos entender las diversa tendencias o maneras de programar.

• Normalmente cada paradigma se especializa en un dominio de aplicación, aunque algunos lenguajes son aplicables a la solución de problemas de cualquier dominio.

• Algunos lenguajes no se pueden establecer claramente en un solo paradigma, así que los llamamos Multiparadigma. Ej Java – C# - Ruby

Page 11: 21 de abril de 2015 Ing. Rubén Darío García Guzmán Introducción a los lenguajes de programación Universidad de Caldas Estructura de lenguajes.

21 de abril de 2023 Ing. Rubén Darío García Guzmán

Paradigmas de lenguajes de programación

• Programación imperativa: – Los programas son estructurados y paso por paso.

– Cada paso realiza un cálculo específico, recupera una entrada o genera una salida.

– La abstracción procedimental es un bloque de creación esencial (Uso de procedimientos y funciones)

– Maneja sentencias condicionales, asignaciones, bucles o repeticiones y secuencias.

– Ejemplos principales: Cobol, Fortran, C, Basic, Pascal.

Page 12: 21 de abril de 2015 Ing. Rubén Darío García Guzmán Introducción a los lenguajes de programación Universidad de Caldas Estructura de lenguajes.

21 de abril de 2023 Ing. Rubén Darío García Guzmán

Paradigmas de lenguajes de programación

• Programación orientada a objetos:

– El programa es una colección de objetos que interactúan unos con otros trasladándose mensajes que transforman su estado.

– El modelado, la clasificación y la herencia de objetos son bloques de creación esenciales.

– Es la tendencia más popularizada que existe, gracias sobretodo a la gran difusión de lenguajes como java, C# o PHP, así como por los procesos de desarrollo de software por componentes.

– Los lenguajes orientados a objetos principales son: Smalltalk, java, C++ e Eiffel.

Page 13: 21 de abril de 2015 Ing. Rubén Darío García Guzmán Introducción a los lenguajes de programación Universidad de Caldas Estructura de lenguajes.

21 de abril de 2023 Ing. Rubén Darío García Guzmán

Paradigmas de lenguajes de programación

• Programación Funcional: – El programa es una colección de funciones matemáticas, cada

una de ellas con su entrada (dominio) y su resultado (intervalo).

– Las funciones interactúan y se combinan las unas con las otras utilizando condicionales, recursividad y composición funcional.

– Sus lenguajes aplican en el dominio de la computación científica así como la inteligencia artificial

– Los lenguajes de programación funcional principales son Lisp, Scheme, Haskell y ML.

Page 14: 21 de abril de 2015 Ing. Rubén Darío García Guzmán Introducción a los lenguajes de programación Universidad de Caldas Estructura de lenguajes.

21 de abril de 2023 Ing. Rubén Darío García Guzmán

Paradigmas de lenguajes de programación

• Programación Lógica: – El programa es una colección de declaraciones lógicas sobre

el resultado que debería conseguir una función, en vez de ¿cómo se debe obtener el resultado?

– La ejecución del programa aplica las declaraciones para obtener una serie de soluciones posibles a un problema.

– No determinismo, las soluciones a muchos problemas no son únicas, sino múltiples.

– El lenguaje de programación más importante es Prolog, aunque SQL también pertenece a este paradigma.

Page 15: 21 de abril de 2015 Ing. Rubén Darío García Guzmán Introducción a los lenguajes de programación Universidad de Caldas Estructura de lenguajes.

21 de abril de 2023 Ing. Rubén Darío García Guzmán

Paradigmas de lenguajes de programación

• Programación Guiada por eventos:

– El programa es un bucle continuo que responde a los eventos generados en un orden no predecible.

– Estos eventos se originan a partir de acciones del usuario en la pantalla (por ejemplo clics de ratón o pulsaciones de teclas) o de otras fuentes.

– Se puede pensar que es una tendencia o característica de programación, más que un verdadero paradigma.

– Los lenguajes de programación guiada por eventos más importantes incluyen los visuales como visual Basic o visual C++ y java.

Page 16: 21 de abril de 2015 Ing. Rubén Darío García Guzmán Introducción a los lenguajes de programación Universidad de Caldas Estructura de lenguajes.

21 de abril de 2023 Ing. Rubén Darío García Guzmán

Paradigmas de lenguajes de programación

• Programación Concurrente: – El programa es una colección de procesos

cooperativos, que comparten información unos con otros.

– Los procesos operan generalmente en forma asíncrona.

– También se puede producir el paralelismo en un solo proceso, como el caso de la ejecución en paralelo de las diversas iteraciones de un ciclo.

– Los lenguajes de programación concurrentes incluyen SR, Linda y Fortran de alto rendimiento.

Page 17: 21 de abril de 2015 Ing. Rubén Darío García Guzmán Introducción a los lenguajes de programación Universidad de Caldas Estructura de lenguajes.

21 de abril de 2023 Ing. Rubén Darío García Guzmán

Dominios de aplicación de los lenguajes de programación

• Entre los dominios de aplicación más comunes de los lenguajes de programación se tienen:– Científica– Sistemas de gestión de

información– Inteligencia artificial– Sistemas– Orientada a la web

Page 18: 21 de abril de 2015 Ing. Rubén Darío García Guzmán Introducción a los lenguajes de programación Universidad de Caldas Estructura de lenguajes.

Consideraciones para el estudio de los lenguajes

• Restricciones de arquitectura• Los lenguajes de programación están diseñados para los

computadores. • Un lenguaje bien diseñado e implementado puede mejorar mucho la

utilidad de un computador en un dominio de aplicación.• La mayoría de los diseños de computadores de las últimas décadas

han seguido el modelo «von Neumann».• Muchos lenguajes, como Fortran, Cobol y C, cuadran muy bien en

esta arquitectura; otros, como Lisp no.• Cuando se consideran las virtudes de las distintas opciones de

diseños de lenguajes, siempre hay una limitante por la necesidad de implementar dichos lenguajes de forma eficiente y efectiva dentro de las restricciones impuestas por las variantes actuales del modelo von Neumann.

• La idea de que un buen diseño de lenguaje puede conducir a una arquitectura de computadoras viable radicalmente nueva y comercial probablemente no sea una opción.

Page 19: 21 de abril de 2015 Ing. Rubén Darío García Guzmán Introducción a los lenguajes de programación Universidad de Caldas Estructura de lenguajes.

Consideraciones para el estudio de los lenguajes

• Restricciones contextúales• Los lenguajes no están diseñados sólo para cuadrar

dentro de las restricciones de una familia de arquitecturas determinada.

• También lo esta para satisfacer otras restricciones impuestas por el contexto en el que se van a utilizar.

• El área de aplicación, el sistema operativo, la red y las preferencias de la comunidad de programación.

• Algunos lenguajes tienen un diseño de propósito general más intencionado, optando por servir a los intereses. de un gran número de aplicaciones.

• Otros lenguajes han sido diseñados para tener una naturaleza mas de propósito especial.

• Algunos lenguajes de programación se implementan utilizando un proceso de compilación.

• Otros lenguajes se implementan utilizando un proceso interpretativo.

• Otros como Java, utilizan un modelo mixto, de compilación «Java byte code» e interpretación «Java Virtual Machine» o JVM.

• Un equipo virtual es cualquier modelo abstracto de una computadora que se implementa en software, pero no en hardware.

Page 20: 21 de abril de 2015 Ing. Rubén Darío García Guzmán Introducción a los lenguajes de programación Universidad de Caldas Estructura de lenguajes.

21 de abril de 2023 Ing. Rubén Darío García Guzmán

Cualidades de los lenguajes de programación

• Criterios para elegir un lenguaje o al momento de escribirlo.

• Simplicidad y claridad: – ¿Es fácil para un programador escribir un programa en el

lenguaje?, ¿Hasta qué punto es inteligible este programa para un lector promedio?, ¿Es fácil aprender y enseñar el lenguaje?.

• Uniones: – Un elemento del lenguaje se une a una propiedad en el

momento en que se define dicha propiedad para el. Ej, la unión de una variable con su tipo al declararla.

– Los principales momentos de unión de los electos con sus propiedades son:

Page 21: 21 de abril de 2015 Ing. Rubén Darío García Guzmán Introducción a los lenguajes de programación Universidad de Caldas Estructura de lenguajes.

21 de abril de 2023 Ing. Rubén Darío García Guzmán

Cualidades de un lenguaje de programación

• Uniones• Momento de definición del lenguaje: Al unir los tipos

básicos de datos con las palabras reservadas del lenguaje.

• Momento de Implementación del lenguaje: Al unir los valores numéricos con las representaciones del equipo, ej: que los valores enteros se representen en 16 bits.

• Momento de escritura del programa: Al unir los nombres de las variables con los tipos de datos y se unen durante todo el tiempo de vida de la variable.

• Momento de la compilación y carga del programa: Al unir las variables “estáticas” con las direcciones de memoria fijas.

• Momento de ejecución del programa: Cuando las variables se unen con los valores. ( x=3; )

Page 22: 21 de abril de 2015 Ing. Rubén Darío García Guzmán Introducción a los lenguajes de programación Universidad de Caldas Estructura de lenguajes.

21 de abril de 2023 Ing. Rubén Darío García Guzmán

Cualidades de un lenguaje de programación

• Ortogonalidad: – ¿Un símbolo o una palabra reservada tienen siempre el

mismo significado, independiente del contexto en el que se utilice?,

• Fiabilidad de los programas:– ¿El programa se comporta igual cada vez que se ejecuta con

los mismos datos de entrada?

• Aplicabilidad: – ¿El lenguaje proporciona un soporte adecuado para las

aplicaciones del dominio en el que se está usando?.

Page 23: 21 de abril de 2015 Ing. Rubén Darío García Guzmán Introducción a los lenguajes de programación Universidad de Caldas Estructura de lenguajes.

21 de abril de 2023 Ing. Rubén Darío García Guzmán

Cualidades de un lenguaje de programación

• Abstracción: – Es una característica fundamental para la reutilización de

código, el permitir crear y cargar bibliotecas y librerías agiliza el trabajo de los programadores. Por ejemplo, las librerías de lenguajes como C y Java.

• Implementación eficiente:– ¿Permite las construcciones y las características de un

lenguaje su implementación practica y eficiente en las plataformas coetáneas?