Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Objetivo de la Unidad
Identificar las características básicas relacionadas al ámbito del desarrollo de aplicaciones
informáticas
Objetivos Específicos:
1. Diferenciar los paradigmas de programación que existen.
2. Clasificar los distintos lenguajes de programación según su uso.
3.
1
polimorfismo o la herencia, se permitió un avance significativo en el desarrollo de software a cualquier
escala de producción.
A medida que la tecnología de las computadoras fue evolucionando, también han ido
cambiando las formas o estilos de programar; se han propuesto varios p a r a d i g m a s
de programación cuyo objetivo principal es mejorar tanto el diseño de programas como su
mantenimiento.
Un programa diseñado con este estilo de programación, consta de instrucciones que describen la
solución del problema. Las técnicas fundamentales de Programación Estructurada son cuatro:
Lógica Estructurada, Documentación, Análisis Estructurado y Estructuras de Datos.
1. Secuenciación: Se obedece una orden tras otra, sin ninguna consideración adicional.
2. Selección: Se elige una entre dos o más alternativas posibles para obedecer.
3. Repetición: Se repiten una o varias órdenes, las veces que sea necesario.
A estas posibles acciones se les conoce como Estructuras Lógicas de Control, ya que indican
qué hacer en cada paso del algoritmo y cómo hacerlo. Las estructuras lógicas de control se dividen
en:
Secuenciación Seleccionar Caso
Fundamentales Si_ Entonces_Sino Derivadas Desde_Hasta
Mientras Hasta Que
2
En la Programación Declarativa, las sentencias que se utilizan describen el problema que se quiere
solucionar, pero no las sentencias necesarias para resolverlo. Dicho de otra manera, más que el
Cómo desarrollar un proceso, interesa el Qué se desea obtener a través del programa.
Este paradigma de programación, usa objetos y sus interacciones para diseñar programas
informáticos, los conceptos más representativos de este paradigma son:
Objeto: es una estructura de datos y conjunto de procedimientos que operan sobre dicha
estructura. Una definición más completa de objeto es: una entidad de programa que consiste en
datos y todos aquellos procedimientos que pueden manipular aquellos datos; el acceso a los datos
de un objeto es solamente a través de estos procedimientos, únicamente estos procedimientos
pueden manipular, referenciar y/o modificar estos datos.
Para poder describir todos los objetos de un programa, conviene agrupar éstos en clases. Una Clase
es una colección de objetos que poseen características y operaciones comunes. Una clase
contiene toda la información necesaria para crear nuevos objetos. Una clase es un tipo definido que
determina la estructura de datos y las operaciones asociadas a ese tipo. Se puede ver como una
plantilla que describe objetos que van a tener la misma estructura y el mismo comportamiento.
Este tipo de programación está basado en varias técnicas, entre ellas: Herencia, Abstracción,
Polimorfismo y Encapsulamiento. Son ejemplos de Lenguajes Orientados a Objetos (LOO): C # ,
C++, Java
El creador de un programa dirigido por eventos debe definir los eventos que manejarán su
programa y las acciones que se realizarán al producirse cada uno de ellos, lo que se conoce como
el Administrador del Evento. Los eventos soportados estarán determinados por el lenguaje de
programación utilizado, por el sistema operativo e incluso por eventos creados por el mismo
programador.
En la programación dirigida por eventos, al comenzar la ejecución del programa se llevarán a cabo
las inicializaciones y demás códigos iniciales y, a continuación, el programa quedará bloqueado
hasta que se produzca algún evento. Cuando alguno de los eventos esperados por el programa
tenga lugar, el programa pasará a ejecutar el código del correspondiente Administrador del Evento.
Por ejemplo, si el evento consiste en que el usuario ha hecho click en el botón de play de un
reproductor de películas, se ejecutará el código del Administrador del Evento, que será el que haga
que la película se muestre por pantalla.
Un ejemplo claro de este paradigma se tiene en los sistemas de programación Visual, en los que a
cada elemento del programa (objetos, controles, etc.) se le asignan una serie de eventos que
generará dicho elemento, como la pulsación de un botón del ratón sobre él o el redibujado del control
3
1.5 Otros tipos de programación
La Programación Lógica está basada en la definición de relaciones lógicas, está representada por
Prolog.
La Programación con Restricciones es similar a la lógica usando ecuaciones. Casi todos los
lenguajes son variantes del Prolog.
Se denomina Lenguaje Específico del Dominio o DSL, a los lenguajes desarrollados para resolver un
problema específico, pudiendo entrar dentro de cualquier grupo anterior. El más representativo sería
SQL para el manejo de las bases de datos, de tipo declarativo, pero los hay imperativos como el
Logo.
Los lenguajes imperativos de alto nivel usan variables y sentencias más complejas, pero aún siguen
el mismo paradigma. Las recetas y las listas de revisión de procesos, a pesar de no ser programas de
computadora, son también conceptos familiares similares en estilo a la programación imperativa;
donde cada paso es una instrucción. Son aquellos cuyos valores son atómicos y están formados por
elementos en un caso especial.
Los primeros lenguajes imperativos fueron los lenguajes de máquina de los computadores originales.
En estos lenguajes, las instrucciones fueron muy simples, lo cual hizo la implementación de hardware
fácil, pero obstruyendo la creación de programas complejos. Fortran, cuyo desarrollo fue iniciado en
1954 por John Backus en IBM, fue el primer gran lenguaje de programación en superar los obstáculos
presentados por el código de máquina en la creación de programas complejos.
4
transformaciones que describen el problema y detallan su solución. La solución es obtenida mediante
mecanismos internos de control, sin especificar exactamente cómo encontrarla (tan sólo se le indica a
la computadora qué es lo que se desea obtener o qué es lo que se está buscando). No existen
asignaciones destructivas, y las variables son utilizadas con Transparencia Referencial.
En la programación declarativa las sentencias que se utilizan lo que hacen es describir el problema
que se quiere solucionar. Se programa diciendo lo que se quiere resolver pero a nivel de usuario,
pero no las instrucciones necesarias para solucionarlo. Esto último se realizará mediante mecanismos
internos de inferencia de información a partir de la descripción realizada.
Existe una diversidad de clasificaciones en cuanto a los lenguajes de programación que se utilizan,
esta clasificación, está en concordancia con la el paradigma de programación que respalda, con el
nivel de acercamiento al lenguaje humano, etc.
Esta clasificación tiene su base en que tan dependiente o independiente sea un lenguaje de
programación respecto a la arquitectura o el hardware de la computadora y se clasifican como:
a) Bajo nivel: Utilizan vocablos directamente entendibles por el CPU de la computadora. Por
ejemplo: Lenguaje de máquina y lenguaje ensamblador.
b) Alto nivel: Utilizan lenguajes parecidos al lenguaje humano pero no entendible para el CPU, por
lo cual deben ser traducidos a un lenguaje computacional de bajo nivel. Por ejemplo: Basic, Pascal,
C, COBOL, FORTRAN, Java, etc.
La Programación Dinámica está definida como el proceso de romper problemas en partes pequeñas
para analizarlos y resolverlos de forma más óptima, busca resolver problemas en n pasos. Este
5
paradigma está más basado en el modo de realizar los algoritmos, por lo que se puede usar con
cualquier lenguaje imperativo.
2.3 Intérpretes
La computadora es una potente herramienta pero por sí sola no es capaz de efectuar ninguna tarea.
Es tan sólo una máquina compuesta por elementos físicos, que necesita recibir instrucciones por
parte de los humanos, para realizar alguna tarea; éstas órdenes o instrucciones se le deben
especificar de forma que la máquina las entienda; es decir, por medio de un lenguaje de
programación.
Se sabe que las computadoras no entienden otro lenguaje que no sea el lenguaje máquina por lo
que se hace n ecesario conocer el lenguaje de unos y ceros de la propia computadora. Este
lenguaje es demasiado complicado para los seres humanos aunque es directamente ejecutable por
la propia máquina.
Usando un intérprete, un solo archivo fuente puede producir resultados iguales incluso en sistemas
sumamente diferentes (ejemplo. una PC y una PlayStation 4). Usando un compilador, un solo archivo
fuente puede producir resultados iguales sólo si es compilado a distintos ejecutables específicos a
cada sistema.
Los programas interpretados suelen ser más lentos que los compilados debido a la necesidad de
traducir el programa mientras se ejecuta, pero a cambio son más flexibles como entornos de
programación y depuración (lo que se traduce, por ejemplo, en una mayor facilidad para reemplazar
partes enteras del programa o añadir módulos completamente nuevos). Permiten ofrecer al programa
interpretado un entorno no dependiente de la máquina donde se ejecuta el intérprete, sino del propio
intérprete (lo que se conoce comúnmente como Máquina Virtual).
En la actualidad, uno de los entornos más comunes de uso de los intérpretes es en los navegadores
web, debido a la posibilidad que estos tienen de ejecutarse independientemente de la plataforma.
2.4 Compilador
6
Un compilador es un programa informático que traduce un programa escrito en un lenguaje de
programación a otro lenguaje de programación. Usualmente el segundo lenguaje es lenguaje de
máquina, pero también puede ser un código intermedio (bytecode), o simplemente texto. Este
proceso de traducción se conoce como compilación.
La construcción de un compilador involucra la división del proceso en una serie de fases que variará
con su complejidad. Generalmente estas fases se agrupan en dos tareas: el análisis del programa
fuente y la síntesis del programa objeto.
Análisis: Se trata de la comprobación de la corrección del programa fuente, e incluye las fases
correspondientes al Análisis léxico (que consiste en la descomposición del programa fuente en
componentes léxicos), Análisis sintáctico (agrupación de los componentes léxicos en frases
gramaticales ) y Análisis semántico (comprobación de la validez semántica de las sentencias
aceptadas en la fase de Análisis Sintáctico).
Alternativamente, las fases descritas para las tareas de análisis y síntesis se pueden agrupar en
Front-end y Back-end:
Front-end: es la parte que analiza el código fuente, comprueba su validez, genera el árbol de
derivación y rellena los valores de la tabla de símbolos. Esta parte suele ser independiente de
la plataforma o sistema para el cual se vaya a compilar, y está compuesta por las fases
comprendidas entre el Análisis Léxico y la Generación de Código Intermedio.
Back-end: es la parte que genera el código máquina, específico de una plataforma, a partir de
los resultados de la fase de análisis, realizada por el Front End.
Esta división permite que el mismo Back End se utilice para generar el código máquina de varios
lenguajes de programación distintos y que el mismo Front End que sirve para analizar el código
fuente de un lenguaje de programación concreto sirva para generar código máquina en varias
plataformas distintas. Suele incluir la generación y optimización del código dependiente de la
máquina.
7
Tipos de Archivos Generados en el Proceso de Programar:
El p r o g r a m a escrito en u n l e n g u a j e de
programación se conoce como programa fuente y debe
ser traducido a lenguaje de máquina dando como
resultado un programa objeto.
Esquemáticamente: