Evolución de paradigmas y lenguajes de Programación orientado a la máquina imperativo/procedural estructurado basado en objetos orientado a objetos centrado en redes/web funcional/lógico
Programación orientada a la máquina período: 50-60 un lenguaje por tipo de máquina lenguaje de máquina insts y datos en binario lenguaje ensamblador (assembler) insts y datos simbólicos (ej: ADD B) necesidad de ensamblador (compilador) macro-instrucciones (ej: ADD A,B,C)
Programación imperativa período: 60-70 orientación: personas lenguajes de alto nivel independientes de la máquina orientados a personas orientados a aplicaciones científicas o comerciales fundamento: programación basada en asignación, IF y GOTO
Lenguajes de alto nivel
Programación estructurada período: 70-8x orientación: programadores motivación: problemas con programación laberíntica (spaghetti) fundamento: programación en base a 3 estructuras de control (1 entrada y 1 salida) secuencia (instrucciones consecutivas) selección (if-else) iteración/repetición (while)
Lenguajes estructurados
Lenguajes tradicionales
Programación basada en objetos período: 7x-8x orientación: programadores motivación: problemas con programación estructurada (no basta estructurar insts) fundamento: programación con objetos/datos que ocultan representación y ofrecen operaciones
Lenguajes basados en objetos
Programación orientada a objetos período: desde 8x orientación: problemas (aplicaciones) motivación: costos hardware v/s software fundamentos: simulación del “mundo real” reutilización de código (“chips” de software) programación usando herencia y polimorfismo
Lenguajes orientados a objetos
Lenguajes anteriores
Programación orientada a redes y web desde 9x orientación: Internet/web fundamentos: concurrencia distribución (modelo cliente-servidor) excepciones eventos programas incrustados en páginas web
Lenguajes orientados a redes/web
Java: paradigmas programación estructurado (if, switch, while, for, break) basado en objetos (clases) orientado a objetos (herencia) centrado en redes/web concurrencia (threads) y distribución (sockets) exceptions eventos (en interfaz con usuario) applets
Programación funcional/lógica fundamento: concepto matemático de función lenguajes: LISP (McCarthy, 63) y derivados programación lógica fundamento: cálculo de predicados, relaciones lenguaje: PROLOG (70) aplicación: sistemas inteligentes
Metodologías de análisis y diseño
Resumen Evolución Paradigmas