
1. Programación Secuencial
2. Programación Orientada a Objetos
2.1. Definición
2.1.1. Diseño de Software partiendo de "Clases y Objetos"
2.2. Ventajas y Desventajas
2.2.1. Ventajas
2.2.1.1. Permite crear sistemas complejos
2.2.1.2. Permite la reutilización de código
2.2.2. Desventajas
2.2.2.1. No existe una única solución a los problemas computacionales
2.2.2.2. Se requiere de documentación compleja para entenderla
2.3. Lenguajes de programación
2.3.1. JavaScript
2.3.2. C++
2.3.3. Python
3. Programación Concurrente
3.1. Definición
3.1.1. Es la ejecución simultánea de múltiples tareas interactivamente
3.2. Aplicaciones
3.2.1. Servidores Web distribuidos
3.2.2. Sistemas de bases de datos
3.2.3. Arquitecturas Cliente - Servidor
3.3. Lenguajes de programación
3.3.1. Haskell
3.3.2. Ada
3.3.3. Rust
3.3.4. Erlang
3.4. Ventajas y Desventajas
3.4.1. Ventajas
3.4.1.1. Rapidez en las tareas de ejecución
3.4.1.2. Rápida velocidad de respuesta
3.4.1.3. De fácil desarrollo
3.4.2. Desventajas
3.4.2.1. Se puede producir un interbloqueo
3.4.2.2. Limitaciones de recursos afectan el rendimiento
4. Aplicaciones
4.1. Permite estructurar el código de en forma de módulos que permiten la reutilización
5. Subtipos
5.1. Estructural
5.1.1. Acciones secuenciales
5.2. Modular
5.2.1. Se divide el programa en subprogramas
5.3. Procedimental
5.3.1. Secuencial y usando funciones
6. Aplicaciones
6.1. Procesamiento de datos
6.2. Procesamiento de números
6.3. Programa de único procesamiento
7. Definicion
7.1. Acciones que siguen en secuencia
8. Lenguajes de programacion
8.1. Java
8.2. C++
8.3. Python
8.4. C
9. Programación Paralela
9.1. Definición
9.1.1. Resolución de problemas pequeños de manera simultanea
9.2. Aplicaciones
9.2.1. Simulación de problemas científicos
9.2.2. Gráficas generadas por computadora
9.3. Lenguajes de programación
9.3.1. Julia
9.3.2. HPF
9.3.3. Linda
9.4. Ventajas y Desventajas
9.4.1. Ventajas
9.4.1.1. Ejecución de programas según orden y complejidad
9.4.1.2. Obtención de resultados en un menor tiempo
9.4.1.3. División de tarea en partes independientes
9.4.2. Desventajas
9.4.2.1. Tardanzas por comunicación entre tareas
9.4.2.2. Si los datos no se sincronizan se pueden corromper
9.4.2.3. Condiciones de carrera
9.5. Subtipos
9.5.1. A nivel de bit
9.5.2. A nivel de instrucción
9.5.3. De tareas
9.5.4. De datos
10. Ventajas & Desventajas
10.1. Ventajas
10.1.1. Legibilidad
10.1.2. Concisión
10.1.3. Reutilización
10.1.4. Idempotencia
10.2. Desventajas
10.2.1. Difícil comprensión
10.2.2. Estructura compleja
11. Ventajas y Desventajas
11.1. Ventajas
11.1.1. Reduccion de costos
11.1.2. Sencilles y Rapidez
11.1.3. Facilidad de depuracion
11.2. Desventajas
11.2.1. Mayor cantidad de código
11.2.2. Complejidad de adaptación
12. Definición
12.1. Trabajo con flujo de datos asíncronos
12.1.1. Finitos
12.1.2. Infinitos
13. Aplicaciones
13.1. Bases de datos
13.2. Plantillas
13.3. Gestión de Configuración
14. Lenguajes de Programación
14.1. Prolog
14.2. Lisp
14.3. Haskell
14.4. Miranda
14.5. SQL
15. Programación Declarativa
16. Subtipos
16.1. Programación Lógica
16.1.1. Basado en la lógica Matemática
16.2. Programación Funcional
16.2.1. Basado en el uso de funciones matemáticas
17. Programación Reactiva
17.1. Aplicaciones
17.1.1. Desarrollo Web
17.1.1.1. Superar limitaciones del lenguaje
17.1.2. Aplicaciones de escritorio
17.1.2.1. Mejorar Rendimiento
17.2. Lenguajes de programacion
17.2.1. Java
17.2.1.1. RxJava 2
17.2.1.2. Project Reactor
17.2.1.3. NgRx
17.3. Ventajas y Desventajas
17.3.1. Ventajas
17.3.1.1. Es responsiva
17.3.1.2. Basada en usabilidad
17.3.1.3. Facilidad para encontrar fallos en el programa
17.3.1.4. Puede funcionar de forma asincrónica
17.3.2. Desventajas
17.3.2.1. Mayor utilización de recursos
17.3.2.2. Curva de aprendizaje
17.3.2.3. Acumulación de delay
17.3.2.4. Difícil depuración