Aprender a programar

Cómo aprender a programar desde cero

Una de las preguntas más difíciles de responder, entre las muchas que se repiten en cuenta de TikTok sobre programación, es cómo aprender a programar desde cero. La dificultad radica en que la respuesta es muy larga. Y en que no existe un forma de aprender que le sirva a todas las personas. Por lo que decidí escribir este artículo en forma de guía para quienes quieran iniciarse en el aprendizaje de la programación de computadoras. Desde luego, no debe interpretarse como el único camino o el mejor. Es tan solo una de muchas alternativas. Que se basa en lo que, personalmente creo, son los aspectos más importantes. Y tampoco es exhaustiva porque una vez que se adquiere cierto nivel de conocimientos se tienen ya las bases para seguir adelante sin necesidad de una guía.

Cuando llega el momento de aprender el concepto de código. Es ideal elegir un lenguaje de programación para incorporar los aspectos teóricos con ejemplos prácticos que correspondan siempre al mismo lenguaje. Y de esa forma aprovechar el tiempo de la mejora manera. Siempre habrá tiempo de aprender otros lenguajes en el futuro. Y no vale la pena distraerse con más de un lenguaje al principio.

Antes de siquiera leer los pasos para adentrarse en el fabuloso mundo de la programación es indispensable saber que no hay atajos. La siguiente guía presenta un orden determinado y se recomienda seguirlo. Cuán rápido se pasa de un ítem al siguiente depende en cierta medida de la profundidad que se aplique en el estudio del ítem. Es difícil explicar cuál es la profundidad recomendada. Una vez que honestamente se cree que se adquirió un concepto se puede avanzar. Siempre es posible (y hay que hacerlo) regresar a un ítem anterior si se hace evidente que hay una falta de entendimiento del tema.

Aprender conceptos fundamentales

  • Autómata
  • Algoritmo
  • Código
    • Entradas/salidas
    • Estructuras de control (Paradigma imperativo)
    • Variables
    • Estructuras de datos
    • Sintaxis
    • Funciones

Aprender estos conceptos sin intentar saltearse etapas es clave para convertirse es un programador robusto. El tiempo invertido aquí paga a futuro ahorrando sufrimiento. Muchas veces nos gana la ansiedad y queremos pasar a la parte más divertida. Al principio se hace difícil ver resultados concretos de lo que estamos aprendiendo. Lo ideal es buscar la forma de paliar esa situación encontrando herramientas que hagan más llevadero este proceso. Pero nunca dejar de lado la incorporación temprana de estos temas.

Herramientas de aprendizaje

  • SiDiLa es una mezcla de juego y lenguaje de programación basado en el español que permite aprender y entrenar los conceptos básicos de programación. Es gratuito y libre.
  • LightBot Es un juego en formato de aplicación móvil para aprender a programar con íconos. Es pago.
  • Gobstones es un lenguaje que expresa de manera óptima una secuencia didáctica específica para enseñar a programar a personas que no tienen experiencia previa en esta actividad.

Adquirir conocimientos sobre arquitectura de computadoras

Muchos de los conocimientos enumerados a continuación no serán completamente desconocidos al llegar aquí. Porque las prácticas que se hayan realizado en las secciones anteriores habrán aportado información indirecta sobre los mismos. Pero es necesario atacar formalmente estos ítems porque el detalle es importante. Y los conocimientos subyacentes aquí pueden, y usualmente lo hacen, ayudar a tomar mejores decisiones cuando se programa.

  • Computadora
    • CPU
    • Memoria (RAM)
    • Almacenamiento
    • Dispositivos de entrada y salida
  • Red
    • Hardware
    • Medios de transmisión
    • Topología
    • Protocolos

Herramientas de trabajo

A continuación listo en forma general las herramientas de trabajo que debemos conocer. Dependiendo del lenguaje elegido se habrá distintos nombres específicos.

  • Diagrama de flujo
  • Pseudocódigo
  • IDE (Integrated development environment)
  • Depurador (Debugger)
  • Control de versiones (Git)

Conceptos fundamentales más avanzados

  • Paradigmas de programación
  • Bibliotecas
  • Frameworks
  • Compilación versus interpretación
  • Sistemas operativos
  • Multitasking

Imagen de Gerd Altmann