¿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 |
---|---|
Conceptos | Explicaciones detalladas de los temas clave. |
Ejemplos | Código ilustrativo para aplicar los conceptos. |
Ejercicios | Problemas para practicar lo aprendido. |
Soluciones | Respuestas y explicaciones de los ejercicios. |
Referencias | Recursos externos para profundizar. |
Ejemplos en otros lenguajes | Comparaciones 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
- Windows
- macOS
- Debian/Ubuntu
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
}
}
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í.
install_ninja() {
local quiet="$1"
echo "📦 Installing Ninja..."
if [[ "$quiet" == "quiet" ]]; then
brew install ninja &>/dev/null
else
brew install ninja
fi
if [[ $? -eq 0 ]]; then
echo "✅ Ninja installed successfully."
else
echo "❌ Failed to install Ninja." >&2
return 1
fi
}
install_ninja # Instalación normal
# install_ninja quiet # Instalación silenciosa
Se puede hacer en una sola línea como brew install ninja
? Claro.
Pero aporta más claridad y control? Sí.
install_ninja() {
local quiet="$1"
echo "📦 Installing Ninja..."
if [[ "$quiet" == "quiet" ]]; then
sudo apt install -y ninja-build &>/dev/null
else
sudo apt install -y ninja-build
fi
if [[ $? -eq 0 ]]; then
echo "✅ Ninja installed successfully."
else
echo "❌ Failed to install Ninja." >&2
return 1
fi
}
install_ninja # Instalación normal
# install_ninja quiet # Instalación silenciosa
Se puede hacer en una sola línea como sudo apt install -y ninja-build
? Claro.
Pero aporta más claridad y control? Sí.
✅ Ventajas de este enfoque
✅ Beneficio | 💬 Descripción |
---|---|
Legible | Muestra paso a paso qué está ocurriendo. |
Extensible | Puedes agregar logs, condiciones, validaciones o comandos adicionales. |
Automatizable | Ideal para scripts de instalación, entornos de desarrollo y CI/CD. |
Preparación | Sienta 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! 🚀