Skip to main content

¿Cómo usar este apunte?

⏱ Dedicación recomendada: 0 minutos
Esto considera el contenido visible y relevante, e ignora texto colapsado o marcado como opcional.


Este apunte es una guía de referencia rápida y un complemento a las clases, diseñada para ayudarte a profundizar en los temas cuando lo necesites. Aquí encontrarás explicaciones detalladas, casos ilustrativos y problemas prácticos que facilitarán tu aprendizaje. Aunque las clases (slides) suelen ser suficientes para comprender los conceptos, este apunte ofrece una mirada más profunda para reforzar y aplicar lo aprendido.

📚 Estructura de los apuntes

Cada apunte está organizado en lecciones que cubren un tema específico. Las secciones de cada lección pueden incluir:

📌 Sección📖 Contenido
ConceptosExplicaciones detalladas de los temas clave.
EjemplosCódigo ilustrativo para aplicar los conceptos.
EjerciciosProblemas para practicar lo aprendido.
SolucionesRespuestas y explicaciones de los ejercicios.
ReferenciasRecursos externos para profundizar.
Ejemplos en otros lenguajesComparaciones con diferentes lenguajes.

📦 cajita == opcional

Todo lo que esté en una caja como la siguiente:

es opcional

Soy una cajita opcional, gracias por leerme c:

🗺️ Cómo navegar los apuntes

Utiliza el menú de la izquierda para explorar las lecciones. Si buscas algo específico, puedes usar la barra de búsqueda en la parte superior de la página.

🤔 ¿Por qué algunas funciones son tan largas?

A lo largo de los apuntes encontrarás funciones que podrían parecer demasiado largas o detalladas para tareas simples, como instalar una herramienta o crear un archivo. Esto es intencional y didáctico.

Hay varias razones importantes para este enfoque, especialmente si estás aprendiendo a desarrollar bibliotecas de software:

🎯 1. Claridad antes que concisión

Aunque muchas tareas podrían resolverse en una línea, escribirlas como funciones permite:

  • Mostrar cada paso de forma explícita.
  • Agregar validaciones y mensajes claros.
  • Hacer el comportamiento reproducible y predecible.

💡 En el desarrollo de bibliotecas, la claridad del flujo y el control de errores son más importantes que la brevedad.

🔄 2. Automatización y reutilización

Encapsular comandos en funciones facilita:

  • Automatizar entornos de desarrollo.
  • Reutilizar la lógica en scripts más grandes.
  • Parametrizar comportamientos (por ejemplo, permitir una instalación "silenciosa").

⚙️ 3. Prepararse para el siguiente paso: build systems

Este tipo de funciones reflejan una práctica fundamental: automatizar tareas repetitivas de forma controlada.
Más adelante en el curso preferiremos usar un sistema de construcción (build system) como uv, CMake, Gradle o sbt para definir estas tareas de forma declarativa, portable y escalable.

🧠 Aprender a encapsular operaciones en funciones te prepara para delegarlas a herramientas más poderosas y multiplataforma.

🧪 Ejemplos comparativos

En PowerShell o como script
function Install-Ninja {
param (
[switch]$Quiet
)

Write-Host "📦 Installing Ninja..." -ForegroundColor Cyan

$installCommand = { scoop install ninja }

if ($Quiet) {
& $installCommand *>&1 | Out-Null
} else {
& $installCommand
}

if ($LASTEXITCODE -eq 0) {
Write-Host "✅ Ninja installed successfully." -ForegroundColor Green
} else {
Write-Error "❌ Failed to install Ninja."
exit 1
}
}
Uso
Install-Ninja          # Instalación normal
# Install-Ninja -Quiet # Instalación silenciosa

Se puede hacer en una sola línea como scoop install ninja? Claro.
Pero aporta más claridad y control? Sí.

✅ Ventajas de este enfoque

✅ Beneficio💬 Descripción
LegibleMuestra paso a paso qué está ocurriendo.
ExtensiblePuedes agregar logs, condiciones, validaciones o comandos adicionales.
AutomatizableIdeal para scripts de instalación, entornos de desarrollo y CI/CD.
PreparaciónSienta las bases para tareas declarativas en sistemas de construcción como Meson o Gradle.

🎓 El objetivo no es optimizar caracteres, sino claridad, flexibilidad y preparación para construir bibliotecas robustas.

🔍 Estrategia de lectura

Te sugerimos emplear la técnica de lectura diagonal para obtener una visión rápida del contenido sin leer cada palabra. Con esta técnica, tus ojos se mueven de manera diagonal por la página, identificando palabras clave, frases importantes, títulos y cualquier elemento resaltado, como negritas o listas.

El objetivo es captar la esencia del texto, entender su contenido y decidir si es necesario profundizar en alguna sección. Esta es una forma eficiente de revisar material extenso cuando estás buscando información clave o simplemente quieres un vistazo general.

⚡ Cómo aplicar la lectura diagonal

✔️ 1. Lee los títulos y subtítulos – Te darán una idea general del contenido.
✔️ 2. Revisa los primeros párrafos – Para captar el mensaje principal de cada sección.
✔️ 3. Escanea elementos destacados – Como listas, palabras en negrita y código.
✔️ 4. Ve a la conclusión primero – Para saber qué esperar de la lección.

🎯 Consejos de estudio

Aquí te dejamos algunas recomendaciones para estudiar de forma efectiva:

  • Estudio espaciado: Es mejor estudiar en sesiones cortas distribuidas en el tiempo que en largas sesiones únicas. Dedicar 30 minutos al día es más efectivo que estudiar tres horas de golpe.
  • Práctica activa: Realiza ejercicios y resuelve problemas. La práctica activa es mucho más eficaz que simplemente leer los conceptos.
  • Enseña lo aprendido: Explicar lo que has aprendido a otra persona refuerza tu comprensión.
  • Toma descansos: Haz pausas entre las sesiones de estudio para permitir que tu cerebro procese la información.

⏳ Planificación del tiempo

Cada lección incluye una estimación de tiempo recomendada para ayudarte a organizar tu estudio. Sin embargo, ten en cuenta que el tiempo necesario puede variar dependiendo de tu nivel de experiencia y conocimientos previos. No te preocupes si tardas más de lo previsto, lo importante es que comprendas los conceptos y los puedas aplicar correctamente. La mayoría de los tiempos están calculados para que sean más amplios de lo necesario, por lo que es probable que termines antes de lo estimado.

💡 ¿Tienes ideas para mejorar estos apuntes?

Nos encantaría tu ayuda. Puedes:

🔹 Reportar errores en GitHub.
🔹 Sugerir mejoras mediante un pull request o un issue.
🔹 Compartirlos con otrxs que puedan beneficiarse de ellos.

🎉 ¡Gracias por ser parte de esta comunidad de aprendizaje! 🚀