1. Definición general: Conjunto de prácticas, teoria, metodos y saberes que definen una disciplina científica. Ejemplos: Patrón o modelo.
2. Paradigmas de Programación
2.1. Definición general: Conjunto de reglas y conceptos lo cual definen la estructura y escritura de un programa.
2.2. Tipos de Paradigmas
2.2.1. Imperativa: Se enfoca en el "cómo" se debe hacer.
2.2.1.1. Características: Control preciso sobre el flujo, uso de variables.
2.2.1.1.1. Ejemplos: Python, C, Java...
2.2.1.2. Tipos
2.2.1.2.1. Estructurada: Basada en secuencia, selección, iteración (Teorema de Böhm y Jacopini).
2.2.1.2.2. Modular: Basada en funciones que se comunican entre sí (Metodología del divide y vencerás).
2.2.1.2.3. Orientada a Eventos: Basada en eventos que determinan el flujo de control.
2.2.1.2.4. Orientada a Objetos (Poo): Basada en clases y objetos. Los pilares de Poo son: Encapsulación, herencia y polimorfismo.
2.2.1.3. Ventajas y Desventajas
2.2.1.3.1. Ventajas: fácil de aprender, mayor control, mayor rendimiento, amplio soporte y fácil depuración.
2.2.1.3.2. desventajas: complejidad en programas grandes, propenso a errores y dificultad en la comprensión del código.
2.2.2. Declarativa: Se enfoca en el "qué" se debe hacer.
2.2.2.1. Características: Siempre se describe el resultado final deseado, en lugar de mostrar todos los pasos de trabajo.
2.2.2.1.1. Ejemplo: Miranda, Erlang, SQL...
2.2.2.2. Tipos
2.2.2.2.1. Funcional: Su enfoque en funciones puras. Estas funciones son deterministas, es decir, para el mismo conjunto de entradas, producirán el mismo conjunto de salidas y no tendrán efectos secundarios.
2.2.2.2.2. Lógica: Basada en reglas y hechos para describir problemas, dejando que el sistema determine las soluciones mediante inferencia automática.
2.2.2.3. Ventajas y Desventajas
2.2.2.3.1. Ventajas: codigo mas conciso y mas corto, mayor nivel de atracción, menos errores, automatización automática y mejor adecuado a problemas específicos.
2.2.2.3.2. Desventajas: difícil de aprender, menos control del rendimiento, soporte reducido, rendimiento variable y dificultad en la depuración.
2.3. evoluvión de la computación
2.3.1. 1940 - 1950 Programación Imperativa Primeras Computadoras
2.3.1.1. 1960 Programación Estructurada
2.3.1.1.1. 1960 Programación Modular