7  Buenas prácticas en programación

Fecha: 03 de septiembre, 2026

Objetivos:

  1. Conocer las buenas prácticas
  2. Valorar la importancia del software libre y de código abierto
  3. Aplicar este conocimiento en la selección de sistemas operativos

Notas personales recabadas a partir de los tutoriales y ejemplos 😊. Espero que les funcione 💜

7.1 Un algoritmo nos permite resolver un problema ⭐

Un algoritmo es un conjunto de pasos lógicos y ordenados que describe cómo resolver un problema específico. Es una secuencia de instrucciones abstractas e independientes del lenguaje de programación.

Características:

  • Definido (Determinístico): Un algoritmo es definido si al seguirlo dos veces con los mismos datos de entrada, siempre se obtiene el mismo resultado. Es reproducible y predecible.
    • Implicaciones:
      • No hay ambigüedad en los pasos
      • No depende del azar o de factores externos
      • Cualquier persona que siga el algoritmo llegará al mismo resultado
  • Preciso (Orden Específico): implica el orden de realización de cada uno de los pasos. No puedes cambiar el orden arbitrariamente sin afectar el resultado.
    • Implicaciones:
      • Cada paso debe ejecutarse en el orden correcto
      • El orden es fundamental para obtener el resultado esperado
      • Las instrucciones deben ser claras y sin ambigüedad
  • Finito (Tiene un Fin): Tiene un numero determinado de pasos y siempre termina en algún momento. No puede ejecutarse indefinidamente.
    • Implicaciones:
      • Debe haber un punto de salida o conclusión

      • No puede entrar en bucles infinitos

      • Debe producir un resultado en tiempo finito

  • Algoritmo = La idea y el plan (abstracto)
  • Programa/Software = La implementación concreta (código ejecutable)

Imagen obtenida de sitio web de Allison Horst.
Importante

Los algoritmos son conceptuales y puede expresarse en lenguaje natural, pseudocódigo o diagramas de flujo.

7.2 🗣️ Lenguaje Natural

7.2.1 En el contexto de algoritmos y programación

  • Utiliza palabras comunes y cotidianas para describir procesos o instrucciones.
  • Es intuitivo y accesible, ideal para explicar algoritmos sin tecnicismos.
  • No requiere conocimientos previos de programación.
  • Puede ser ambiguo o impreciso, por lo que no siempre es adecuado para implementación directa.
  • Se usa frecuentemente como primer paso antes de escribir pseudocódigo o código real.
NotaEjemplo de Lenguaje natural

El programa solicita al usuario que ingrese su edad. Luego compara ese valor con 18. Si la edad es mayor o igual a 18, se muestra el mensaje “Eres mayor de edad”. Si no lo es, se muestra “Eres menor de edad”.

7.3 Pseudocódigo

  • El pseudocódigo permite escribir algoritmos con sintaxis relajada, sin seguir reglas estrictas de un lenguaje de programación.
  • Organiza los pasos lógicos necesarios para construir un algoritmo, sin detallar estructuras de datos complejas.
  • Usa un lenguaje sencillo y legible, accesible para personas sin experiencia técnica.
  • 🔄 Los pasos escritos en pseudocódigo pueden traducirse fácilmente a cualquier lenguaje de programación.
INICIO
  DEFINIR edad COMO ENTERO
  LEER edad
  SI edad >= 18 ENTONCES
    MOSTRAR "Eres mayor de edad"
  SINO
    MOSTRAR "Eres menor de edad"
FIN

7.4 Diagrama de Flujo

  • Representa visualmente un algoritmo mediante símbolos gráficos (óvalos, rectángulos, rombos, etc.).
  • Muestra el flujo lógico de decisiones, procesos y entradas/salidas.
  • Facilita la comprensión rápida de la estructura del algoritmo.
  • Ayuda a identificar errores o redundancias en la lógica.
  • Es útil tanto para documentación técnica como para enseñanza.

7.5 ¿Qué es un código?

Se refiere a los scripts, programas/software o fragmentos de instrucciones escritas en lenguajes de programación (como Python, R, Bash, entre otros) que le indica a una computadora qué tareas realizar.

Es la forma en que los humanos comunicamos con las máquinas para resolver problemas, procesar información y automatizar tareas.

Aplicaciones prácticas:

  • Procesar y analizar datos
  • Crear visualizaciones
  • Resolver problemas matemáticos
  • Crear herramientas y aplicaciones
  • Documentar procesos

Imagen obtenida de Allison Horst.

7.6 Para escribir un buen software necesitas:

Escribir código mantenible (maintainable code), usar control de versiones (version control) y rastreadores de problemas (issue trackers), revisiones de código (code reviews), pruebas unitarias (unit testing) y automatización de tareas (task automation).

Wilson, et al. 2014. PLOS Biology

Imagen creada con ChatGPT a partir del artículo de Wilson, et al. 2014. PLOS Biology.

7.7 Pasos para escribir un buen software

Imagen creada con ChatGPT.

7.7.1 Mini historia de los bugs

El término “bug” (insecto en inglés) para referirse a errores en programas tiene una historia curiosa y bien documentada que se remonta a los primeros días de la computación.

En los años 1940s, las computadoras eran máquinas enormes que ocupaban habitaciones completas, como la ENIAC (Electronic Numerical Integrator and Computer). Estos equipos utilizaban miles de tubos de vacío, relés y componentes electrónicos que generaban mucho calor.

El problema: Los insectos reales (polillas (moth), cucarachas y otros bichos) eran atraídos por el calor de las máquinas y se metían dentro de ellas, causando cortocircuitos y fallos en el funcionamiento. 🦗

Cuando los operadores encontraban estos insectos dentro de la máquina, decían que había un “bug” (bicho) en el sistema. Así nació el término de forma literal.

Nota¿Quién fue Grace Hopper?

Grace Brewster Murray Hopper (1906-1992) fue una matemática, física y pionera de la programación estadounidense que revolucionó la forma en que escribimos software.

Imagen creada con ChatGPT.
Nota¿Qué es “Admiral”?

Es un rango militar en la Marina de los Estados Unidos. Grace Hopper alcanzó el rango de contraalmirante (Rear Admiral), uno de los más altos para una mujer en esa época.

7.8 Lenguajes de programación Comunes

Lenguaje Uso Principal Ejemplo
Bash Automatización en sistemas Unix/Linux Scripts de sistema
Python Ciencia de datos, automatización, educación Análisis de datos, machine learning
R Análisis estadístico y visualización Gráficos científicos, estadística
JavaScript Desarrollo web, aplicaciones interactivas Sitios web dinámicos
Java Aplicaciones empresariales, sistemas grandes Software corporativo
C++ Sistemas de alto rendimiento Videojuegos, software de sistema
SQL Gestión de bases de datos Consultas de datos

7.8.1 Componentes Básicos

Componente Descripción
Variables Espacios de memoria que almacenan datos
Funciones Bloques de código reutilizables
Condicionales Decisiones lógicas (si/entonces)
Bucles Repetición de acciones
Operadores Símbolos para realizar operaciones
Comentarios Explicaciones para humanos

En este semestre veremos programación con Bash, Python y un poco de R. Aquí es donde entra lo que aprendimos con pseudocódigo, ya que nos permite comprender y trasladar ideas a través de los tres lenguajes.

Imagen relaciona con los componentes básicos en los lenguajes de programación que veremos, creada con ChatGPT.

7.9 Plantilla para la documentación de nuestro código

TipDocumentación de nuestro código
  • Título (opcional)

  • Autor (author): Su nombre

  • Dia (date): Fecha de creación

  • Paquetes (packages)

  • Directorio de trabajo (Working directory): En que carpeta se encuentra tu datos y programa.

  • Información descriptiva del programa (Description): ¿Para qué sirve el programa? Ej: El siguiente programa realiza la suma de dos numeros enteros a partir de la entrada del usuario y posteriormente la imprime en pantalla.

  • Usage ¿Cómo se utiliza?

  • Argumentos (Arguments)

    • Información de entrada (Data Inputs): Ej: Solo numeros enteros (sin decimales).

    • Información de salida (Outpus): Graficas, figuras, tablas, etc.

7.10 Puntos claves para buenas prácticas en informática ⭐

Imagen creada con ChatGPT.

7.11 Referencias