Está en la página 1de 14

1 Paradigmas de programación y el desarrollo de la

programación imperativa

Daniel Agredo Cerón


Juan Carlos Mesa
James Felipe Silva
José David Diaz

Septiembre 2020.

Universidad del Cauca.


Facultad de ingeniería Electrónica.
Estructura de Lenguajes
ii
Introducción

En aras de abastecernos de información de la creación y desarrollo de software, existen

muchas herramientas con la que el “desarrollador” se pueda desenvolver para desarrollar este, sin

embargo, existen diferentes técnicas, estilos, que se preestablecieron y/o descubrieron para

generar un estándar en todo el desarrollo.

En este escrito se describirán la mayoría de las técnicas estilos y algunos ejemplos, entre

ellos se hará énfasis en lo que se denomina programación imperativa explicando sus orígenes, su

propósito y el desempeño comparado con otros estilos más nuevos o viejos con respecto al

tiempo de creación de estos, cabe resaltar que todas las herramientas mencionadas en este escrito

son imprescindibles que el desarrollador tenga conocimiento y algún uso de estos para tener un

amplio espectro en el uso de estos instrumentos de desarrollo para poder consolidar un buen

diseño de software.
Capítulo 1

Lenguajes y paradigmas de programación

¿Una alta legibilidad humana de un lenguaje de programación puede afectar la

legibilidad de máquina?

Para poder resolver esta cuestión es necesario aclarar que “el nivel de lenguaje de

alto nivel realmente tiene poco que ver con el nivel del lenguaje máquina en la manera en

que el idioma de alto nivel se traduce. El compilador traduce el código fuente a las

instrucciones reales de la máquina, a veces denominadas lenguaje de máquina o código

de máquina. Los lenguajes de alto nivel "atienden" al programador al proporcionar un

cierto conjunto de lenguaje presumiblemente bien pensado construcciones y tipos de

datos. Los lenguajes de máquina se ven "hacia abajo" en la jerarquía, y así atender las

necesidades de los aspectos de nivel inferior del diseño de la máquina.”( Miles J.

Murdoch y  Vincent Heuring,1999).

En otras palabras, si tenemos un lenguaje de programación que tenga una alta

legibilidad humana esto implicaría que se necesitaría un proceso de traducción que sea

capaz de convertir dicha sintaxis y semántica al lenguaje que sea comprendido por la

máquina, repercutiendo en gran medida en que cada máquina necesite un compilador

propio para dicha traducción. Dependiendo en gran medida del sistema operativo de la

máquina.
¿Una alta legibilidad de máquina de un lenguaje de programación puede afectar la
legibilidad humana?

Los lenguajes de bajo nivel, tienden a ser más estructurados lo cual facilita la

lectura de los datos por parte de la máquina. “El término legible por máquina, cuando se

usa con respecto a los datos, significa datos en un formato que puede ser fácilmente

procesado por una computadora sin intervención humana, garantizando al mismo tiempo

que no se pierde ningún significado semántico.” (Congress of the United States of

America,2017).

Estos lenguajes no poseen abstracciones que sean comprendidas de manera simple

por los humanos, este tipo de lenguaje se usa cuando se desea gestionar los datos a nivel

de memoria., ya que una representación de forma binaria de los datos generalmente

ocupa menos bytes de almacenamiento reflejándose en eficiencia de acceso. Podemos

afirmar entonces que la legibilidad en un lenguaje de programación varía dependiendo de

las operaciones computacionales que se requieran.


Cuadro comparativo entre los paradigmas de programación imperativa, lógica y

funcional

Tabla 1. Características de la programación imperativa, lógica y funcional

Programación Imperativa Programación Lógica Programación Funcional

-En la programación -Hace parte de la -En el paradigma


imperativa es la programación declarativa funcional, los elementos
programación natural para basada en la lógica de pueden entenderse como
las CPUs que se basan en primer orden. Es decir. funciones y el código
el lenguaje a bajo nivel. Algoritmo= lógica + puede ejecutarse mediante
control. llamadas de función
-Según (R. secuenciales.
-Define la programación en
términos del estado del Kowalski,1979) "Lógica" -La característica
programa y sentencias que representa un programa fundamental del paradigma
cambian los estados. lógico y "Control" es que no existe la
representa diferentes asignación, ni el cambio de
estrategias de estado en un programa. Las
-permite la modificación demostración de variables son
de los estados del teoremas. identificadores de valores
hardware. -La filosofía principal de de características estáticas
este paradigma es el en el proceso de la

-permite la modificación modelado de problemas a evaluación.


de los estados del través de abstracciones. -Posee un alto nivel de
hardware. -La filosofía principal de abstracción que permite
este paradigma es el desligarse de la
modelado de problemas a programación al detalle de
través de abstracciones. las funciones y de los
estados del hardware.
Capítulo 2

Programación imperativa

¿Qué es la programación imperativa?

La programación imperativa, del latín “imperate” (ordenar) es un paradigma que

consiste en una secuencia claramente definida de instrucciones para un ordenador.

El código fuente encadena instrucciones, una detrás de otra de manera secuencial

determinando lo que el ordenador debe hacer.

Los lenguajes de programación imperativa trabajan cerca del sistema, por lo tanto,

el código es fácilmente comprensible por la máquina, pero también requiere de muchas

líneas de código, y se requiere integrar estructuras de control como bucles o estructuras

anidadas

Los distintos lenguajes de programación imperativa pueden clasificarse a su vez

en tres estilos distintos de programación subordinados: el estructurado, el procedimental

y el modular.

El estilo estructurado de programación se centra en las estructuras de control:

secuencias, selección e iteración. tratando de evitar por completo las instrucciones de

salto que añaden una complejidad innecesaria al código imperativo.

El enfoque procedimental divide las tareas de las que se debe ocupar un programa

en tareas parciales más pequeñas que se describen en el código por separado. De esta
forma, se crean principios básicos de programación que también se pueden reutilizar en

otros programas.

En el modelo de programación modular, cada uno de los componentes del

programa se diseñan, desarrollan y prueban con total independencia los unos de los otros.

No es hasta el final del proceso cuando los módulos se combinan para conformar el

software real.

Diferencias entre programación imperativa y declarativa

Los lenguajes de programación imperativa y declarativa se distinguen en que la

programación imperativa se centra en el “cómo”, y la declarativa, en el “que”.

Los lenguajes de programación imperativa describen como hacer una cosa, como

una receta paso a paso del cómo hacer algo. En cambio, en la programación declarativa

se describe el producto final, como una foto del resultado de la receta

‘Fortran’, ‘Basic’ y ‘C’ 3 de los primeros lenguajes de programación imperativa

Descripción de Fortran:

- Se caracteriza por su potencia en los cálculos matemáticos, pero está limitado en

las aplicaciones de gestión, manejo de archivos, tratamiento de cadenas de

caracteres y edición de informes.

- Es un lenguaje notorio, por la facilidad con que permite expresar una ecuación. 
- FORTRAN fue diseñado teniendo en cuenta el uso de la Tarjeta perforada de 80

columnas, por lo que el orden de las instrucciones debía ser secuencial, es decir la

programación de los algoritmos era lineal, para producir cualquier alteración del

orden de la lógica, se introduce la instrucción Goto.

- Debido al desarrollo de los métodos de programación el FORTRAN también fue

evolucionado de versión en versión, se le han incorporado nuevas funciones,

Estructuras de control y Asignación dinámica de memoria, posee comandos

breves para efectuar operaciones matemáticas con matrices y dispone de tipos,

estas mejoras aportan información útil al Compilador. 

- Por estas razones FORTRAN no es muy usado fuera de los campos de la

informática y el análisis numérico, pero permanece como el lenguaje a escoger

para desempeñar tareas de computación numérica de alto rendimiento

Descripción de Basic:

- Fácil de usar para los principiantes.

- Lenguaje de propósito general (no orientado).

- Permite a los expertos añadir características avanzadas, conservando simple

- el lenguaje para los principiantes.

- Es interactivo en todos los casos.

- Provee mensajes de errores claros y amigables.

- Responde rápido en los programas pequeños en general.

- No requiere un conocimiento del hardware de la computadora.


- Protege al usuario del sistema operativo.

Descripción de C:

- Un núcleo del lenguaje simple, con funcionalidades añadidas importantes, como

funciones matemáticas y de manejo de archivos, proporcionadas por bibliotecas.

- Es un lenguaje muy flexible que permite programar con múltiples estilos.

- Un sistema de tipos que impide operaciones sin sentido.

- Usa un lenguaje de preprocesador, el preprocesador de C, para tareas como definir

macros e incluir múltiples archivos de código fuente.

- Acceso a memoria de bajo nivel mediante el uso de punteros.

- Interrupciones al procesador con uniones.

- Un conjunto reducido de palabras clave.

- Por defecto, el paso de parámetros a una función se realiza por valor. El paso por

referencia se consigue pasando explícitamente a las funciones las direcciones de

memoria de dichos parámetros.

- Punteros a funciones y variables estáticas, que permiten una forma rudimentaria

de encapsulado y polimorfismo.

- Tipos de datos agregados (struct) que permiten que datos relacionados se

combinen y se manipulen como un todo.


Evolución de la programación imperativa

La publicación de Dijkstra, Edsger W.: Letters to the editor: Go To Statement

Considered Harmful. In: Commun. ACM 11 (1968), Nr. 3, 147–148. Introduce y

cuestiona el tema de que tan compleja puede llegar a ser la sentencia ‘go to’ en los

lenguajes de programación, dando sus puntos de vista del porque esta sentencia limita la

visión y el pensamiento del programador a un desarrollo estático y poco dinámico,

opinando que la sentencia ‘go to’ debería poder ejecutarse solo el lenguajes de

programación de bajo nivel y excluirse en los lenguajes de alto nivel, la sugerencia y los

puntos de vista que plantea el autor, hace alusión que estos lenguajes de bajo nivel se

limitan a enfocarse a un paradigma imperativo donde el desarrollador hará uso de todas

estas herramientas paso a paso teniendo un control más preciso de la maquina pero aun

así limitándose a que esta programación sea más dinámica

Estilos de programación

Existen muchos tipos o técnicas de programación. En la mayoría de los casos, las

técnicas se centran en programación modular y programación estructurada, pero existen

otros tipos de programación. Los explicaremos a continuación


Programación Programació Programació Programación Programación
no n procedural n modular orientada a
estructurada estructurada objetos

utiliza saltos *Puede ser Está Una


no usada tantas compuesto computadora Es un conjunto
estructurados veces sea por no necesita de objetos que
Características

a etiquetas o necesaria segmentos de una versión interactúan


direcciones de *Proporciona códigos desglosada del entre sí y que
instrucción una código para están
funcionalida poder organizados en
d concreta ejecutarlo clases

los algoritmos Los *Reducción *Programació Fomenta la


Ventajas

completos de procedimient de los costos n reutilización y


Turing os facilitan el de independiente extensión del
desarrollo mantenimien del proyecto código.
Código se obtiene un *Excesivamen No todos los
Desventajas

ilegible único bloque te orientada a programas


(Spaguetti) de programa, objetos pueden ser
que cuando *Módulos modelados con
se hace demasiados exactitud por

JOSS  C++ ALGOL ADA.


FOCAL  C#   Pascal C++
Ejemplos

JAVA
TELCOMP  Sharp.  PL/I y Ada  Objective C.
lenguajes StarBasic. Java.
ensambladores
Figura 1. Cuadro comparativo de los estilos de programación.
Explica los conceptos de tipo de datos y chequeo de tipos.

Tipos de datos: Los tipos de datos en programación se refiere a un atributo que le

indica al ordenador/programador sobre la clase de datos que se van a usar, esto incluye

poner restricciones sobre los datos, es decir, que valores se le pueden asignar y que

operaciones ejecutar.

Los tipos de datos comunes son: números enteros, números con signo (negativos),

números de coma flotante (decimales), cadenas alfanuméricas, estados (booleano), etc.

Chequeo de tipos: El chequeo de tipificación es un proceso que se encarga de

verificar e imponer los límites impuestos por los tipos de datos, esto dependiendo de la

comprobación puede ocurrir de diferentes formas, es decir, en la comprobación estática

este chequeo será durante la compilación y en la comprobación dinámica este será

durante la ejecución.

Si un lenguaje pone fuertemente las reglas de tipificación, es decir que solo

permite las conversiones de tipo automático que no pierde la información, podemos decir

que este es fuertemente tipado.

 
Lista de referencias

Miles J. Murdocca, Vincent Heuring,1999 Principios de arquitectura de computadoras


(Principles of Computer Architecture)

Text for H.R.4174 - 115th Congress (2017-2018): Foundations for Evidence-


Based Policymaking Act of 2018.

R.A. Kowalski (July 1979). "Algorithm=Logic + Control". Communications of the


ACM. 22 (7edicion): 424–436.

Ambler, A.; Burnett, M. y Zimmerman, B. (1992): "Operational Versus


Definitional: A Perspective on Programming Paradigms", Computer,
septiembre

Dijkstra, Edsger W.: Letters to the editor: Go To Statement Considered Harmful. In:
Commun. ACM 11 (1968), Nr. 3, 147–148.
Bibliografía

http://academicos.azc.uam.mx/oan/lac/Murdocca_en.pdf

https://stratml.us/references/HR4174.htm#Agency_Responsibilities

https://prezi.com/dyv0ntzh6pja/paradigma-de-programacion-imperativa/

https://medium.com/@Loopa/paradigmas-de-programaci%C3%B3n-programaci
%C3%B3n-imperativa-y-programaci%C3%B3n-declarativa-4c4a4182fd87

https://ferestrepoca.github.io/paradigmas-de-
programacion/proglogica/logica_teoria/lang.html

https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/programacion-
funcional/

http://www.dccia.ua.es/dccia/inf/asignaturas/LPP/2010-2011/teoria/tema3.html

https://bandageek.com/2016/04/programacion-funcional-vs-programacion-
imperativa/#:~:text=Los%20lenguajes%20funcionales%20se%20basan,dar
%20%C3%B3rdenes%20a%20la%20maquina.

https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/programacion-
imperativa/

https://es.qwe.wiki/wiki/Non-
structured_programming#Features_and_typical_concepts
http://www.atc.uniovi.es/telematica/2ac/Transparencias/T02-Programacion-
Procedural.pdf

https://entrenamiento-python-
basico.readthedocs.io/es/latest/leccion5/programacion_estructurada.html

https://aprendiendoarduino.wordpress.com/2017/10/14/tipos-de-datos-
4/#:~:text=En%20programaci%C3%B3n%2C%20un%20tipo%20de,qu
%C3%A9%20operaciones%20se%20pueden%20realizar.

https://es.wikipedia.org/wiki/Sistema_de_tipos#Chequeo_de_tipificaci%C3%B3n

También podría gustarte