sábado, 1 de febrero de 2020

Tipos

  Los tipos técnicas de programación son variados, los más conocidos son programación modular y programación estructurada.
 Programación estructurada (PE)
La componen un conjunto de técnicas en la que su evolución aumenta producción del programa, reduce el tiempo en que se depura y hace mantenimiento del mismo. este a su vez utiliza un número limitado de estructuras de control, reduciendo los errores. Esta técnica incorpora:
  • Diseño descendente (top-dow): el problema se descompone en etapas o estructuras jerárquicas 
  • Recursos abstractos (simplicidad): descomponer  las acciones completas en otras más simples capases de ser resueltas con mayor mayor facilidad.
  • Estructuras básicas: basado en  un famoso teorema desarrollado por Edsger Dijkstra, demostró que los programas se pueden escribir  con tres estructuras básicas:
 Estructuras secuenciales: cada acción sigue otra acción de forma secuencial. La salida de una acción es la entrada u otras.

 Estructuras selectivas: se evalúan las condiciones y en función del resultado de las mismas se realizan unas acciones u otras. Se utilizan expresiones lógicas.

 Estructuras repetitivas: son secuencias de instrucciones que se repiten un número determinado de veces


Programación modular
 Consta de varias secciones divididas  que interactúan a través  de llamadas a procedimientos, que integran el programa en subtotalidad y este, a traves de la historia, es una evolución de  la programación estructurada por la solución de problemas en programación más grandes y complejos de los que puede resolver. También, el programa principal, en este, coordina las llamadas a los módulos secundarios y pasa los datos necesarios  en  forma de parámetros. Este, a la vez, cada modulo puede contener sus propios datos y llamar a otros módulos o funciones.

 Programación orientada a objetos(POO)
  • Enfoque de programación  que combina datos y acciones asociadas a estructuras  lógicas
  • Paradigma de programación que utiliza objetos en sus interacciones para  diseñar aplicaciones y programaciones informáticas
  • Basada en varias técnicas entre ellas están: herencia, cohesión, abstracción, poliformismo, acoplamiento y encapsulamiento
  Programación concurrente
Ejecución simultanea de múltiples tareas interactivas. Estas tareas pueden ser un conjunto de procesos o hilos de ejecución creados por un único programa. Las tareas pueden ser ejecutadas en un UCP o multiprogramación, en  va ríos procesadores o en una red de computadores distribuidos. Este tipo de programación, esta relacionado con la programación paralela, pero enfatiza más la interacción entre tareas. A su vez, este tiene la  capacidad para realizar varias tareas al mismo tiempo en una sola PC  con un procesador o más.

Programación funcional
 paradigma de programación, un estilo de construir la estructura y elementos de programas computadores, que trata de las funciones matemáticas y evita el cambio de estado y mutar la estructura de datos. En este, el valor de la salida depende en los argumentos que son la entrada a la función.
También, tiene 5 conceptos importantes.
Funciones puras
 Tiene dos propiedades importantes
Inmutabilidad: Produce siempre  la misma salida con los mismos argumentos sin tener en cuenta otros factores.
Deterministas: Las funciones puras dan algún resultado o modifican  cualquier argumento o variable global, es decir, no tienen efectos secundarios.
Debido a que no tienen efectos secundarios o ELS ocultas, los programas  creados con programación funcional son fáciles de depurar. Estos facilitan la escritura de aplicaciones concurrentes. También,  cuando  el código  se escribe utilizando el estilo de programación funcional,   un compilador capaz puede:
  • Memoriza los resultados
  • Paralelo a las instrucciones
  • Espera a evaluar resultados
  • Recursividad 
En el paradigma de programación funcional, no hay bucles for y while. En cambio, los lenguajes de programación funcionales dependen de la recursividad para iteración. La recursión se implementa utilizando funciones recursivas, llamadas a si mismas de forma repetitiva hasta alcanzar el caso base.
Transparencia referencial
las  variables definidas  en  un lenguaje  de programación funcional, no pueden cambiar  el valor que tienen durante la ejecución del programa. Este para almacenar valores adicionales en un programa desarrollado mediante programación funcional, se deben definir nuevas variables. El estado de una variable en dicho  programa es constante.También, elimina la posibilidad de cualquier efecto no deseado debido al hecho de que cualquier variable puede ser reemplazado por su valor real durante cualquier punto de la ejecución del programa.
Las funciones primera clase, y pueden ser de orden superior
 Las funciones en estilo de programación funcional se tratan como variables. Las funciones de primera clase pueden pasarse  a otras  funciones o devolverse de funciones o almacenarse en estructuras de datos.  Una función de orden superior es una función que toma otras funciones como argumentos y/o devuelve funciones. Las funciones de primera clase pueden ser de orden superior en el lenguaje de programación funcional.
Variables son inmutables
Estas, no se  pueden, ni se permiten modificar las variables una vez inicializadas, pero, se pueden crear nuevas variables. Su naturaleza en un lenguaje de programación funcional se beneficia en la  forma de preservar el estado durante la ejecución de un programa.
 Programación lógica
estudia el uso de la lógica  para el planteamiento de problemas y el  control sobre las reglas de inferencia para alcanzar la solución automática. Este, en junta de la funcional forman la  programación declarativa, es decir, la programación es la que indica como resolver un problema mediante sentencias, indicando que hacer.

Programación paralela
 uso de múltiples recursos, operaciones o operadores que trabajan en conjunto para resolver o dar solución a un problema o una tarea en cuestión. A diferencia del tipo secuencial,  en este ocurre simultáneamente varias operaciones o recursos.

Conceptos claves
 Concepto acerca de tareas :
  Tarea: un problema se subdivide en una cantidad de trabajos que representan trabajo computacional. Una tarea esta compuesta por un conjunto de instrucciones, ejecutadas por un procesador

  Granularidad:  hace referencia al tamaño de cada tarea y a  la independencia de las demás tareas y se dividen en dos categorías
Gruesa: Cantidad grande de trabajo, alta independencia entre tareas y poca necesidad de sincronización
Fina: Cantidad pequeña de trabajo, poca independencia entre tareas,  y alta necesidad de sincronización

  Scheduling: proceso por el cual las tareas son asignados a los procesos o hilos dándoles un orden de ejecución. En  el  proceso de scheduling no todas las tareas son independientes, debido  a que otras pueden requerir datos producidos por otras tareas.

 Concepto acerca de hilos:
  Hilo:  es un proceso pesado que puede convertirse n procesos livianos. Cada uno de estos procesos se conoce como hilo. Estos se comunican entre ellos a través de la memoria global

  Sincronización:  Los programas en paralelo  necesitan la coordinación de procesos e hilos para que haya una ejecución correcta. Los métodos de coordinación y sincronización en la programación paralela están asociados en que los procesos o hilos intercambian información dependiendo de como este organizado la memoria en el hardware.

  Mapping:   es una asignación de procesos o hilos a unidades de procesamiento.

 Otros conceptos :
  Balanceo de carga: práctica para distribuir cantidades equitativas de trabajo entre las tareas

  Speedup: es un proceso para aumentar el rendimiento entre dos sistemas procesando el mismo problema. Mejora la velocidad de ejecución de tarea ejecutada en dos arquitecturas similares con diferentes recursos

  Overhead:  cantidad de tiempo requerido para coordinar tareas paralelas, en un lugar de hacer un trabajo útil. Incluye factores como:
  • Tiempo de inicio de la tarea
  • Sincronización
  • Comunicaciones de datos 
  • Sobrecarga, de software impuesta por lenguajes paralelos, bibliotecas, sistemas operativos, etc
  • Tiempo de terminación de la tarea
  Sección critica 
un proceso tiene un segmento de código, cuando este puede modificar o leer información de memoria compartida con otros procesos. Dos  procesos no pueden ejecutar su sección critica al mismo tiempo



No hay comentarios:

Publicar un comentario

Requerimientos

Ser creativo: Un buen programador debe ser capaz de pensar originalidad, para la construción de herramientas, funciones o aplicacionesque ...