1. Evolución de la Programación
La programación ha experimentado una evolución significativa desde sus inicios en la década de 1940. Inicialmente, los programas se escribían en lenguaje máquina, utilizando código binario (ceros y unos), lo que requería un conocimiento profundo del hardware y resultaba propenso a errores.
Posteriormente, surgieron los lenguajes ensambladores, que introdujeron mnemónicos en lugar de números binarios, mejorando la legibilidad del código. Sin embargo, estos seguían siendo altamente dependientes del hardware.
El gran avance llegó con los lenguajes de alto nivel, como FORTRAN (1957), diseñado para cálculos científicos, y COBOL (1959), orientado a la gestión empresarial. Estos permitieron a los programadores centrarse en la lógica del problema en lugar de los detalles de bajo nivel, gracias al uso de compiladores que traducían el código a lenguaje máquina.
Durante las siguientes décadas, la programación continuó evolucionando:
- Años 70: La programación estructurada eliminó prácticas caóticas como el uso indiscriminado del «goto», promoviendo código más claro y organizado.
- Años 80: La programación orientada a objetos (OOP) revolucionó el desarrollo con conceptos como clases y objetos, facilitando la escalabilidad y reutilización del código.
- Actualidad: La programación sigue avanzando con tendencias como la inteligencia artificial, la computación en la nube y la computación cuántica, adaptándose a las demandas de un mundo digitalizado.
2. Paradigmas de la Programación
Un paradigma de programación es un enfoque o modelo conceptual que define cómo se estructuran y resuelven los problemas mediante código.
2.1 Programación Estructurada
Surgió como respuesta a los problemas de legibilidad y mantenibilidad del código no estructurado. Se basa en tres estructuras de control fundamentales:
✔️ Secuencia: Ejecución lineal de instrucciones.
✔️ Selección: Uso de estructuras condicionales (if-else
).
✔️ Iteración: Uso de bucles (while
, for
).
Este paradigma elimina el uso indiscriminado de saltos («goto»), favoreciendo un código más claro y fácil de depurar.
🔹 Aplicación en SAS: Ideal para sistemas administrativos como gestión de turnos y registros médicos.
2.2 Programación Orientada a Objetos (OOP)
Basada en la representación de problemas mediante objetos, que son instancias de clases que encapsulan datos (atributos) y comportamientos (métodos). Sus principios fundamentales son:
✔️ Encapsulación: Oculta detalles internos y expone solo lo necesario.
✔️ Herencia: Permite la reutilización de código al derivar nuevas clases de existentes.
✔️ Polimorfismo: Un mismo método puede comportarse de forma diferente según el objeto.
✔️ Abstracción: Simplifica problemas complejos, enfocándose en los aspectos esenciales.
🔹 Aplicación en SAS: Modelado de pacientes, citas médicas y gestión de historiales clínicos en sistemas como Diraya.
2.3 Programación Orientada a Eventos
Usada en interfaces gráficas de usuario (GUI), este paradigma define manejadores de eventos que responden a acciones del usuario (clics, pulsaciones de teclas, etc.).
🔹 Aplicación en SAS: Utilizado en cuadros de mando interactivos y sistemas de telemedicina.
2.4 Programación Orientada a Aspectos (AOP)
Separación de preocupaciones transversales (como seguridad o auditoría) del código principal.
🔹 Aplicación en SAS: Gestión de logs, auditorías y seguridad informática.
3. Técnicas y Metodologías Específicas
3.1 Programación Visual
Permite desarrollar software mediante interfaces gráficas, reduciendo la necesidad de escribir código manualmente.
🔹 Aplicación en SAS: Creación de prototipos de interfaces de usuario y formación en programación.
3.2 Generación Automática de Código
Uso de herramientas que generan código a partir de modelos de alto nivel (UML, BPMN).
🔹 Aplicación en SAS: Automatización de procesos administrativos como generación de formularios.
3.3 Modularidad y Reutilización de Componentes
✔️ Modularidad: Divide el programa en módulos independientes para facilitar el mantenimiento.
✔️ Reutilización: Permite reutilizar componentes en distintos proyectos, optimizando recursos.
🔹 Aplicación en SAS: Compartición de componentes comunes entre módulos en sistemas como Diraya.
3.4 Desarrollo Orientado a Pruebas (TDD)
En Test-Driven Development (TDD), las pruebas unitarias se escriben antes de la implementación del código.
🔹 Aplicación en SAS: Garantía de calidad en sistemas de gestión de historias clínicas.
4. Nuevas Tendencias en Programación
4.1 Programación Funcional
✔️ Basada en funciones puras y datos inmutables, favoreciendo el procesamiento concurrente.
🔹 Aplicación en SAS: Análisis de datos sanitarios mediante lenguajes como Scala y Haskell.
4.2 DevOps y Automatización
✔️ Integra desarrollo (Dev) y operaciones (Ops) para acelerar el despliegue de software.
🔹 Aplicación en SAS: Optimización de actualizaciones de software en telemedicina.
4.3 Inteligencia Artificial y Machine Learning
✔️ Aplicación de algoritmos de IA para optimizar procesos.
🔹 Aplicación en SAS: Diagnóstico médico asistido y análisis predictivo de listas de espera.
4.4 Programación Cuántica
✔️ Uso de Qubits y algoritmos cuánticos para procesamiento masivo de datos.
🔹 Aplicación en SAS: Simulaciones avanzadas en investigación médica.
Conclusión
La evolución de la programación ha llevado al desarrollo de múltiples paradigmas y metodologías que facilitan la creación de software eficiente y escalable. En el contexto del Servicio Andaluz de Salud (SAS), la adopción de estos enfoques permite optimizar la gestión de datos, mejorar la calidad del software y proporcionar soluciones avanzadas en un entorno digitalizado.
Cuestionario de 20 preguntas :
1. ¿Cuál fue el primer tipo de lenguaje de programación utilizado en la informática?
A) Lenguaje ensamblador
B) Lenguaje máquina
C) Lenguaje de alto nivel
D) Lenguaje orientado a objetos
✅ Respuesta correcta: B) Lenguaje máquina
💡 Explicación: El primer lenguaje de programación fue el lenguaje máquina, compuesto por instrucciones en código binario (0s y 1s) directamente interpretadas por la CPU.
❌ Otras opciones incorrectas:
- A) El ensamblador fue un avance posterior al lenguaje máquina.
- C) Los lenguajes de alto nivel surgieron más tarde con FORTRAN y COBOL.
- D) La programación orientada a objetos apareció en los años 80.
2. ¿Cuál fue el primer lenguaje de alto nivel creado?
A) COBOL
B) Python
C) FORTRAN
D) C++
✅ Respuesta correcta: C) FORTRAN
💡 Explicación: FORTRAN (1957) fue el primer lenguaje de alto nivel, diseñado para cálculos científicos y matemáticos.
3. ¿Cuál de los siguientes NO es un paradigma de programación?
A) Programación estructurada
B) Programación funcional
C) Programación gráfica
D) Programación orientada a objetos
✅ Respuesta correcta: C) Programación gráfica
💡 Explicación: La programación gráfica no es un paradigma, sino una técnica utilizada en entornos de desarrollo visuales como Scratch o Visual Basic.
4. ¿Cuál es el propósito principal de la programación estructurada?
A) Permitir la reutilización de código con clases y objetos
B) Evitar el uso de instrucciones «goto» y mejorar la legibilidad del código
C) Basar el flujo del programa en eventos de usuario
D) Aplicar inteligencia artificial en la programación
✅ Respuesta correcta: B) Evitar el uso de instrucciones «goto» y mejorar la legibilidad del código
💡 Explicación: La programación estructurada se basa en el uso de secuencias, selección (if-else) e iteración (bucles), eliminando el uso de goto, lo que hace el código más legible y mantenible.
5. ¿Cuál es una característica clave de la programación orientada a objetos (OOP)?
A) Uso de funciones puras sin efectos secundarios
B) Creación de objetos que encapsulan datos y comportamientos
C) Uso exclusivo en interfaces gráficas
D) Programación basada en reglas y lógica difusa
✅ Respuesta correcta: B) Creación de objetos que encapsulan datos y comportamientos
💡 Explicación: En OOP, los objetos son instancias de clases que encapsulan datos (atributos) y métodos (comportamientos), promoviendo la reutilización de código.
6. ¿Cuál de las siguientes es una ventaja de la programación orientada a objetos?
A) Hace que los programas sean más eficientes en términos de memoria
B) Facilita la reutilización y mantenimiento del código mediante la encapsulación
C) Reemplaza completamente la programación estructurada
D) No requiere compilación para ejecutarse
✅ Respuesta correcta: B) Facilita la reutilización y mantenimiento del código mediante la encapsulación
💡 Explicación: La encapsulación permite ocultar detalles internos y exponer solo lo necesario, reduciendo la complejidad del software.
7. ¿Cuál de los siguientes lenguajes sigue principalmente el paradigma de programación funcional?
A) Java
B) Haskell
C) COBOL
D) SQL
✅ Respuesta correcta: B) Haskell
💡 Explicación: Haskell es un lenguaje puramente funcional, basado en funciones sin efectos secundarios y datos inmutables.
8. En la programación orientada a eventos, ¿qué activa el flujo del programa?
A) Instrucciones secuenciales
B) Eventos generados por el usuario o el sistema
C) La ejecución de un bucle infinito
D) La llamada recursiva a una función
✅ Respuesta correcta: B) Eventos generados por el usuario o el sistema
💡 Explicación: En este paradigma, los programas responden a eventos como clics, pulsaciones de teclado o mensajes del sistema.
9. ¿Cuál de los siguientes paradigmas separa las preocupaciones transversales del código principal?
A) Programación estructurada
B) Programación orientada a aspectos (AOP)
C) Programación imperativa
D) Programación reactiva
✅ Respuesta correcta: B) Programación orientada a aspectos (AOP)
💡 Explicación: AOP separa preocupaciones transversales (como seguridad o logs) para mejorar la modularidad del código.
10. ¿Qué técnica de programación enfatiza escribir pruebas antes del código funcional?
A) Programación funcional
B) Desarrollo orientado a pruebas (TDD)
C) Programación reactiva
D) Programación en cascada
✅ Respuesta correcta: B) Desarrollo orientado a pruebas (TDD)
💡 Explicación: En TDD, primero se escriben las pruebas unitarias, luego se implementa el código mínimo para pasarlas, y finalmente se optimiza el código.
11. ¿Cuál es la principal ventaja de la modularidad en programación?
A) Reduce el tamaño del código fuente.
B) Permite dividir el código en unidades independientes y reutilizables.
C) Hace que el software sea más rápido sin importar el hardware.
D) Elimina la necesidad de documentación en el desarrollo de software.
✅ Respuesta correcta: B) Permite dividir el código en unidades independientes y reutilizables.
💡 Explicación: La modularidad permite dividir un programa en módulos independientes, lo que facilita la mantenibilidad y reutilización del código.
❌ Opciones incorrectas:
- A) Aunque puede reducir código redundante, su propósito principal no es reducir el tamaño del código fuente.
- C) La modularidad no mejora automáticamente el rendimiento del software.
- D) La documentación sigue siendo esencial para comprender cómo funcionan los módulos.
12. ¿Cuál de las siguientes opciones describe mejor el concepto de encapsulación en la programación orientada a objetos?
A) Ocultar los detalles internos de un objeto y exponer solo lo necesario.
B) Permitir el acceso sin restricciones a todos los atributos de un objeto.
C) Usar solo variables globales en un programa.
D) Escribir código sin definir clases ni objetos.
✅ Respuesta correcta: A) Ocultar los detalles internos de un objeto y exponer solo lo necesario.
💡 Explicación: La encapsulación en OOP restringe el acceso directo a los atributos de un objeto, permitiendo su manipulación solo a través de métodos definidos.
13. ¿Cuál es una diferencia clave entre programación orientada a objetos (OOP) y programación funcional?
A) OOP se basa en objetos y estados mutables, mientras que la programación funcional usa funciones puras e inmutabilidad.
B) OOP utiliza funciones sin efectos secundarios.
C) La programación funcional requiere el uso exclusivo de Python.
D) OOP se basa en el paradigma declarativo.
✅ Respuesta correcta: A) OOP se basa en objetos y estados mutables, mientras que la programación funcional usa funciones puras e inmutabilidad.
💡 Explicación: La OOP gestiona estados y objetos que pueden cambiar, mientras que la programación funcional evita cambios de estado y usa funciones puras (sin efectos secundarios).
14. ¿Cuál es un ejemplo de un lenguaje de programación funcional?
A) Java
B) Haskell
C) C++
D) SQL
✅ Respuesta correcta: B) Haskell
💡 Explicación: Haskell es un lenguaje puramente funcional, basado en funciones sin estado mutable y estructuras inmutables.
15. ¿Cuál es un beneficio clave del desarrollo orientado a pruebas (TDD)?
A) Permite escribir menos pruebas y enfocarse solo en el código.
B) Mejora la calidad del software al detectar errores antes de la implementación.
C) Hace que el software sea más rápido en ejecución.
D) Reduce la cantidad de código necesario sin afectar la funcionalidad.
✅ Respuesta correcta: B) Mejora la calidad del software al detectar errores antes de la implementación.
💡 Explicación: TDD (Test-Driven Development) asegura que el código se escriba con pruebas previas, reduciendo defectos y mejorando su calidad.
16. ¿Cuál de las siguientes tecnologías forma parte del enfoque DevOps?
A) Docker
B) HTML
C) Excel
D) Microsoft Word
✅ Respuesta correcta: A) Docker
💡 Explicación: Docker es una herramienta clave en DevOps, utilizada para la contenedorización y despliegue eficiente de aplicaciones.
17. ¿Cuál de los siguientes conceptos es fundamental en DevOps?
A) Separación estricta entre desarrollo y operaciones.
B) Integración y entrega continua (CI/CD).
C) Evitar la automatización de procesos.
D) Uso exclusivo de bases de datos relacionales.
✅ Respuesta correcta: B) Integración y entrega continua (CI/CD).
💡 Explicación: DevOps promueve CI/CD (Continuous Integration / Continuous Deployment) para automatizar pruebas y despliegues.
18. ¿Qué permite la inteligencia artificial en el desarrollo de software?
A) Sustituir completamente a los programadores.
B) Aplicar algoritmos para optimizar procesos y tomar decisiones basadas en datos.
C) Eliminar la necesidad de bases de datos.
D) Convertir automáticamente código en múltiples lenguajes de programación.
✅ Respuesta correcta: B) Aplicar algoritmos para optimizar procesos y tomar decisiones basadas en datos.
💡 Explicación: La IA en programación permite automatizar tareas, mejorar la toma de decisiones y optimizar procesos mediante machine learning y análisis de datos.
19. ¿Cuál es el propósito de la computación cuántica en la programación?
A) Sustituir las computadoras clásicas en todas las aplicaciones.
B) Resolver problemas complejos con cálculos basados en qubits en lugar de bits.
C) Ejecutar software más rápido en cualquier hardware.
D) Crear exclusivamente videojuegos avanzados.
✅ Respuesta correcta: B) Resolver problemas complejos con cálculos basados en qubits en lugar de bits.
💡 Explicación: La computación cuántica utiliza qubits, que pueden representar múltiples estados simultáneamente, optimizando cálculos complejos.
20. ¿Cuál es el impacto de la programación funcional en la concurrencia y el paralelismo?
A) Reduce la capacidad de ejecutar procesos en paralelo.
B) Mejora la concurrencia al evitar estados compartidos y mutables.
C) Solo se usa en la inteligencia artificial.
D) No tiene impacto en el procesamiento paralelo.
✅ Respuesta correcta: B) Mejora la concurrencia al evitar estados compartidos y mutables.
💡 Explicación: La programación funcional evita mutaciones de estado y facilita la ejecución concurrente y paralela sin conflictos.