chore(i18n): sync translations with latest source changes (chunk 1/1, 9 changes)

pull/1774/head
localizeflow[bot] 6 months ago
parent 8e7fd2c16e
commit f2f478e5c6

@ -1,7 +1,7 @@
{ {
"1-getting-started-lessons/1-intro-to-programming-languages/README.md": { "1-getting-started-lessons/1-intro-to-programming-languages/README.md": {
"original_hash": "bec5e35642176d9e483552bfc82996d8", "original_hash": "d5eeb6e975b5864d8da52d4a41941f8d",
"translation_date": "2026-03-06T11:35:13+00:00", "translation_date": "2026-03-27T17:53:28+00:00",
"source_file": "1-getting-started-lessons/1-intro-to-programming-languages/README.md", "source_file": "1-getting-started-lessons/1-intro-to-programming-languages/README.md",
"language_code": "en" "language_code": "en"
}, },
@ -487,7 +487,7 @@
}, },
"AGENTS.md": { "AGENTS.md": {
"original_hash": "a362efd06d64d4134a0cfe8515a86d34", "original_hash": "a362efd06d64d4134a0cfe8515a86d34",
"translation_date": "2025-10-03T11:11:50+00:00", "translation_date": "2026-03-27T18:09:20+00:00",
"source_file": "AGENTS.md", "source_file": "AGENTS.md",
"language_code": "en" "language_code": "en"
}, },

@ -293,7 +293,7 @@ const sum = 5 + 3;
- **Calculate** and store the result of a mathematical operation - **Calculate** and store the result of a mathematical operation
```javascript ```javascript
// Statements that interact with web pages // Instructions that interact with web pages
document.title = "My Awesome Website"; document.title = "My Awesome Website";
document.body.style.backgroundColor = "lightblue"; document.body.style.backgroundColor = "lightblue";
``` ```
@ -597,7 +597,7 @@ The command line is where developers go to feel like absolute wizards. You type
While graphical interfaces are great for many tasks, the command line excels at automation, precision, and speed. Many development tools work primarily through command line interfaces, and learning to use them efficiently can dramatically improve your productivity. While graphical interfaces are great for many tasks, the command line excels at automation, precision, and speed. Many development tools work primarily through command line interfaces, and learning to use them efficiently can dramatically improve your productivity.
```bash ```bash
# Step 1: Create and navigate to project directory # Step 1: Create and navigate to the project directory
mkdir my-awesome-website mkdir my-awesome-website
cd my-awesome-website cd my-awesome-website
``` ```
@ -650,7 +650,7 @@ npx vite
**Windows:** **Windows:**
- **[Windows Terminal](https://docs.microsoft.com/windows/terminal/?WT.mc_id=academic-77807-sagibbon)** - Modern, feature-rich terminal - **[Windows Terminal](https://docs.microsoft.com/windows/terminal/?WT.mc_id=academic-77807-sagibbon)** - Modern, feature-rich terminal
- **[PowerShell](https://docs.microsoft.com/powershell/?WT.mc_id=academic-77807-sagibbon)** 💻 - Powerful scripting environment - **[PowerShell](https://docs.microsoft.com/powershell/?WT.mc_id=academic-77807-sagibbon)** 💻 - Powerful scripting environment
- **[Command Prompt](https://docs.microsoft.com/windows-server/administration/windows-commands/?WT.mc_id=academic-77807-sagibbon)** 💻 - Traditional Windows command line - **[Command Prompt](https://learn.microsoft.com/windows-server/administration/windows-commands/windows-commands)** 💻 - Traditional Windows command line
**macOS:** **macOS:**
- **[Terminal](https://support.apple.com/guide/terminal/)** 💻 - Built-in terminal application - **[Terminal](https://support.apple.com/guide/terminal/)** 💻 - Built-in terminal application
@ -852,5 +852,5 @@ journey
<!-- CO-OP TRANSLATOR DISCLAIMER START --> <!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Disclaimer**: **Disclaimer**:
This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. This document has been translated using AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation.
<!-- CO-OP TRANSLATOR DISCLAIMER END --> <!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -2,27 +2,27 @@
## Project Overview ## Project Overview
This repository provides an educational curriculum designed to teach web development fundamentals to beginners. It is a comprehensive 12-week course created by Microsoft Cloud Advocates, featuring 24 hands-on lessons that cover JavaScript, CSS, and HTML. This is an educational curriculum repository for teaching web development fundamentals to beginners. The curriculum is a comprehensive 12-week course developed by Microsoft Cloud Advocates, featuring 24 hands-on lessons covering JavaScript, CSS, and HTML.
### Key Components ### Key Components
- **Educational Content**: 24 structured lessons organized into project-based modules - **Educational Content**: 24 structured lessons organized into project-based modules
- **Practical Projects**: Terrarium, Typing Game, Browser Extension, Space Game, Banking App, Code Editor, and AI Chat Assistant - **Practical Projects**: Terrarium, Typing Game, Browser Extension, Space Game, Banking App, Code Editor, and AI Chat Assistant
- **Interactive Quizzes**: 48 quizzes with 3 questions each (pre- and post-lesson assessments) - **Interactive Quizzes**: 48 quizzes with 3 questions each (pre/post-lesson assessments)
- **Multi-language Support**: Automated translations for over 50 languages via GitHub Actions - **Multi-language Support**: Automated translations for 50+ languages via GitHub Actions
- **Technologies**: HTML, CSS, JavaScript, Vue.js 3, Vite, Node.js, Express, Python (for AI projects) - **Technologies**: HTML, CSS, JavaScript, Vue.js 3, Vite, Node.js, Express, Python (for AI projects)
### Architecture ### Architecture
- Repository structured around lessons - Educational repository with lesson-based structure
- Each lesson folder includes a README, code examples, and solutions - Each lesson folder contains README, code examples, and solutions
- Standalone projects in separate directories (quiz-app, various lesson projects) - Standalone projects in separate directories (quiz-app, various lesson projects)
- Translation system powered by GitHub Actions (co-op-translator) - Translation system using GitHub Actions (co-op-translator)
- Documentation served via Docsify and available as PDF - Documentation served via Docsify and available as PDF
## Setup Commands ## Setup Commands
This repository is primarily intended for educational content consumption. For working with specific projects: This repository is primarily for educational content consumption. For working with specific projects:
### Main Repository Setup ### Main Repository Setup
@ -83,15 +83,15 @@ python api.py
1. **Fork the repository** to your GitHub account 1. **Fork the repository** to your GitHub account
2. **Clone your fork** locally 2. **Clone your fork** locally
3. **Create a new branch** for your changes 3. **Create a new branch** for your changes
4. Modify lesson content or code examples 4. Make changes to lesson content or code examples
5. Test any code changes in relevant project directories 5. Test any code changes in relevant project directories
6. Submit pull requests following contribution guidelines 6. Submit pull requests following contribution guidelines
### For Learners ### For Learners
1. Fork or clone the repository 1. Fork or clone the repository
2. Navigate through lesson directories sequentially 2. Navigate to lesson directories sequentially
3. Read the README files for each lesson 3. Read README files for each lesson
4. Complete pre-lesson quizzes at https://ff-quizzes.netlify.app/web/ 4. Complete pre-lesson quizzes at https://ff-quizzes.netlify.app/web/
5. Work through code examples in lesson folders 5. Work through code examples in lesson folders
6. Complete assignments and challenges 6. Complete assignments and challenges
@ -99,10 +99,10 @@ python api.py
### Live Development ### Live Development
- **Documentation**: Run `docsify serve` in the root directory (port 3000) - **Documentation**: Run `docsify serve` in root (port 3000)
- **Quiz App**: Run `npm run dev` in the quiz-app directory - **Quiz App**: Run `npm run dev` in quiz-app directory
- **Projects**: Use the VS Code Live Server extension for HTML projects - **Projects**: Use VS Code Live Server extension for HTML projects
- **API Projects**: Run `npm start` in the respective API directories - **API Projects**: Run `npm start` in respective API directories
## Testing Instructions ## Testing Instructions
@ -126,17 +126,17 @@ node server.js # Verify server starts without errors
- This is an educational repository without comprehensive automated tests - This is an educational repository without comprehensive automated tests
- Manual testing focuses on: - Manual testing focuses on:
- Ensuring code examples run without errors - Code examples run without errors
- Verifying links in documentation work correctly - Links in documentation work correctly
- Confirming project builds complete successfully - Project builds complete successfully
- Checking that examples follow best practices - Examples follow best practices
### Pre-submission Checks ### Pre-submission Checks
- Run `npm run lint` in directories with package.json - Run `npm run lint` in directories with package.json
- Verify markdown links are valid - Verify markdown links are valid
- Test code examples in a browser or Node.js - Test code examples in browser or Node.js
- Ensure translations maintain proper structure - Check that translations maintain proper structure
## Code Style Guidelines ## Code Style Guidelines
@ -150,37 +150,37 @@ node server.js # Verify server starts without errors
### HTML/CSS ### HTML/CSS
- Use semantic HTML5 elements - Semantic HTML5 elements
- Apply responsive design principles - Responsive design principles
- Follow clear class naming conventions - Clear class naming conventions
- Include comments explaining CSS techniques for learners - Comments explaining CSS techniques for learners
### Python ### Python
- Adhere to PEP 8 style guidelines - PEP 8 style guidelines
- Provide clear, educational code examples - Clear, educational code examples
- Use type hints where helpful for learning - Type hints where helpful for learning
### Markdown Documentation ### Markdown Documentation
- Maintain a clear heading hierarchy - Clear heading hierarchy
- Include code blocks with language specification - Code blocks with language specification
- Provide links to additional resources - Links to additional resources
- Store screenshots and images in `images/` directories - Screenshots and images in `images/` directories
- Add alt text for images to ensure accessibility - Alt text for images for accessibility
### File Organization ### File Organization
- Lessons are numbered sequentially (1-getting-started-lessons, 2-js-basics, etc.) - Lessons numbered sequentially (1-getting-started-lessons, 2-js-basics, etc.)
- Each project includes `solution/` and often `start/` or `your-work/` directories - Each project has `solution/` and often `start/` or `your-work/` directories
- Images are stored in lesson-specific `images/` folders - Images stored in lesson-specific `images/` folders
- Translations are organized in `translations/{language-code}/` directories - Translations in `translations/{language-code}/` structure
## Build and Deployment ## Build and Deployment
### Quiz App Deployment (Azure Static Web Apps) ### Quiz App Deployment (Azure Static Web Apps)
The quiz-app is configured for deployment on Azure Static Web Apps: The quiz-app is configured for Azure Static Web Apps deployment:
```bash ```bash
cd quiz-app cd quiz-app
@ -249,34 +249,34 @@ Before submitting a PR:
- Agree to Microsoft CLA (automated check on first PR) - Agree to Microsoft CLA (automated check on first PR)
- Follow the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/) - Follow the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/)
- See [CONTRIBUTING.md](./CONTRIBUTING.md) for detailed guidelines - See [CONTRIBUTING.md](./CONTRIBUTING.md) for detailed guidelines
- Reference issue numbers in PR descriptions if applicable - Reference issue numbers in PR description if applicable
### Review Process ### Review Process
- PRs are reviewed by maintainers and the community - PRs reviewed by maintainers and community
- Educational clarity is prioritized - Educational clarity is prioritized
- Code examples should follow current best practices - Code examples should follow current best practices
- Translations are reviewed for accuracy and cultural appropriateness - Translations reviewed for accuracy and cultural appropriateness
## Translation System ## Translation System
### Automated Translation ### Automated Translation
- Powered by GitHub Actions with the co-op-translator workflow - Uses GitHub Actions with co-op-translator workflow
- Automatically translates to over 50 languages - Translates to 50+ languages automatically
- Source files are located in main directories - Source files in main directories
- Translated files are stored in `translations/{language-code}/` directories - Translated files in `translations/{language-code}/` directories
### Adding Manual Translation Improvements ### Adding Manual Translation Improvements
1. Locate the file in `translations/{language-code}/` 1. Locate file in `translations/{language-code}/`
2. Make improvements while preserving the structure 2. Make improvements while preserving structure
3. Ensure code examples remain functional 3. Ensure code examples remain functional
4. Test any localized quiz content 4. Test any localized quiz content
### Translation Metadata ### Translation Metadata
Translated files include a metadata header: Translated files include metadata header:
```markdown ```markdown
<!-- <!--
CO_OP_TRANSLATOR_METADATA: CO_OP_TRANSLATOR_METADATA:
@ -295,49 +295,49 @@ CO_OP_TRANSLATOR_METADATA:
**Quiz app fails to start**: **Quiz app fails to start**:
- Check Node.js version (v14+ recommended) - Check Node.js version (v14+ recommended)
- Delete `node_modules` and `package-lock.json`, then run `npm install` again - Delete `node_modules` and `package-lock.json`, run `npm install` again
- Check for port conflicts (default: Vite uses port 5173) - Check for port conflicts (default: Vite uses port 5173)
**API server won't start**: **API server won't start**:
- Verify Node.js version meets the minimum requirement (node >=10) - Verify Node.js version meets minimum (node >=10)
- Check if the port is already in use - Check if port is already in use
- Ensure all dependencies are installed with `npm install` - Ensure all dependencies installed with `npm install`
**Browser extension won't load**: **Browser extension won't load**:
- Verify that manifest.json is properly formatted - Verify manifest.json is properly formatted
- Check the browser console for errors - Check browser console for errors
- Follow browser-specific extension installation instructions - Follow browser-specific extension installation instructions
**Python chat project issues**: **Python chat project issues**:
- Ensure the OpenAI package is installed: `pip install openai` - Ensure OpenAI package installed: `pip install openai`
- Verify the GITHUB_TOKEN environment variable is set - Verify GITHUB_TOKEN environment variable is set
- Check GitHub Models access permissions - Check GitHub Models access permissions
**Docsify not serving docs**: **Docsify not serving docs**:
- Install docsify-cli globally: `npm install -g docsify-cli` - Install docsify-cli globally: `npm install -g docsify-cli`
- Run from the repository root directory - Run from repository root directory
- Check that `docs/_sidebar.md` exists - Check that `docs/_sidebar.md` exists
### Development Environment Tips ### Development Environment Tips
- Use VS Code with the Live Server extension for HTML projects - Use VS Code with Live Server extension for HTML projects
- Install ESLint and Prettier extensions for consistent formatting - Install ESLint and Prettier extensions for consistent formatting
- Use browser DevTools for debugging JavaScript - Use browser DevTools for debugging JavaScript
- For Vue projects, install the Vue DevTools browser extension - For Vue projects, install Vue DevTools browser extension
### Performance Considerations ### Performance Considerations
- The large number of translated files (50+ languages) makes full clones sizable - Large number of translated files (50+ languages) means full clones are large
- Use shallow clone if only working on content: `git clone --depth 1` - Use shallow clone if only working on content: `git clone --depth 1`
- Exclude translations from searches when working on English content - Exclude translations from searches when working on English content
- Build processes may be slow on the first run (npm install, Vite build) - Build processes may be slow on first run (npm install, Vite build)
## Security Considerations ## Security Considerations
### Environment Variables ### Environment Variables
- API keys should never be committed to the repository - API keys should never be committed to repository
- Use `.env` files (already included in `.gitignore`) - Use `.env` files (already in `.gitignore`)
- Document required environment variables in project READMEs - Document required environment variables in project READMEs
### Python Projects ### Python Projects
@ -348,7 +348,7 @@ CO_OP_TRANSLATOR_METADATA:
### GitHub Models Access ### GitHub Models Access
- Personal Access Tokens (PAT) are required for GitHub Models - Personal Access Tokens (PAT) required for GitHub Models
- Tokens should be stored as environment variables - Tokens should be stored as environment variables
- Never commit tokens or credentials - Never commit tokens or credentials
@ -356,10 +356,10 @@ CO_OP_TRANSLATOR_METADATA:
### Target Audience ### Target Audience
- Complete beginners in web development - Complete beginners to web development
- Students and self-learners - Students and self-learners
- Teachers using the curriculum in classrooms - Teachers using the curriculum in classrooms
- Content is designed for accessibility and gradual skill-building - Content is designed for accessibility and gradual skill building
### Educational Philosophy ### Educational Philosophy
@ -398,9 +398,11 @@ While not a traditional monorepo, this repository contains multiple independent
- Each lesson is self-contained - Each lesson is self-contained
- Projects don't share dependencies - Projects don't share dependencies
- Work on individual projects without affecting others - Work on individual projects without affecting others
- Clone the entire repository for the full curriculum experience - Clone entire repo for the full curriculum experience
--- ---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Disclaimer**: **Disclaimer**:
This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may contain errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is recommended. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation. This document has been translated using AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -1,7 +1,7 @@
{ {
"1-getting-started-lessons/1-intro-to-programming-languages/README.md": { "1-getting-started-lessons/1-intro-to-programming-languages/README.md": {
"original_hash": "bec5e35642176d9e483552bfc82996d8", "original_hash": "d5eeb6e975b5864d8da52d4a41941f8d",
"translation_date": "2026-03-06T11:48:59+00:00", "translation_date": "2026-03-27T18:05:28+00:00",
"source_file": "1-getting-started-lessons/1-intro-to-programming-languages/README.md", "source_file": "1-getting-started-lessons/1-intro-to-programming-languages/README.md",
"language_code": "es" "language_code": "es"
}, },
@ -493,7 +493,7 @@
}, },
"AGENTS.md": { "AGENTS.md": {
"original_hash": "a362efd06d64d4134a0cfe8515a86d34", "original_hash": "a362efd06d64d4134a0cfe8515a86d34",
"translation_date": "2026-03-06T11:56:32+00:00", "translation_date": "2026-03-27T18:13:05+00:00",
"source_file": "AGENTS.md", "source_file": "AGENTS.md",
"language_code": "es" "language_code": "es"
}, },

@ -1,12 +1,12 @@
# Introducción a los Lenguajes de Programación y Herramientas Modernas para Desarrolladores # Introducción a los Lenguajes de Programación y Herramientas Modernas para Desarrolladores
¡Hola, futuro desarrollador! 👋 ¿Puedo contarte algo que todavía me pone los pelos de punta todos los días? ¡Estás a punto de descubrir que programar no es solo sobre computadoras, sino que es tener superpoderes reales para dar vida a tus ideas más locas! ¡Hola, futuro desarrollador! 👋 ¿Puedo contarte algo que todavía me pone los pelos de punta todos los días? ¡Estás a punto de descubrir que programar no es solo sobre computadoras, sino que es como tener superpoderes reales para hacer que tus ideas más salvajes cobren vida!
¿Conoces ese momento cuando usas tu app favorita y todo simplemente encaja a la perfección? Cuando tocas un botón y pasa algo absolutamente mágico que te hace decir "wow, ¿cómo lo HICIERON?" Bueno, alguien justo como tú probablemente sentado en su cafetería favorita a las 2 AM con su tercer espresso escribió el código que creó esa magia. Y aquí está lo que te volará la mente: al final de esta lección, no solo vas a entender cómo lo hicieron, sino que vas a estar deseando intentarlo tú mismo. ¿Conoces ese momento cuando estás usando tu aplicación favorita y todo simplemente encaja perfectamente? Cuando tocas un botón y pasa algo absolutamente mágico que te hace decir "wow, ¿cómo HICIERON eso?" Pues alguien como tú probablemente sentado en su cafetería favorita a las 2 AM con su tercer espresso escribió el código que creó esa magia. Y aquí viene lo que te va a volar la mente: al final de esta lección, no solo entenderás cómo lo hicieron, ¡sino que estarás deseando intentarlo tú mismo!
Mira, entiendo perfectamente si programar te parece intimidante ahora mismo. Cuando yo empecé, sinceramente pensaba que necesitabas ser una especie de genio de las matemáticas o haber estado programando desde que tenías cinco años. Pero esto fue lo que cambió por completo mi perspectiva: programar es exactamente como aprender a conversar en un idioma nuevo. Empiezas con "hola" y "gracias", luego pasas a pedir un café, y antes de que te des cuenta, ¡estás teniendo profundas conversaciones filosóficas! Excepto que en este caso, tienes conversaciones con computadoras, y ¿sabes qué? Son los compañeros de conversación más pacientes que vas a encontrar: nunca juzgan tus errores y siempre están entusiasmados por intentarlo de nuevo. Mira, entiendo perfectamente si ahora mismo la programación te parece intimidante. Cuando empecé, honestamente pensé que necesitabas ser un genio de las matemáticas o haber estado programando desde que tenías cinco años. Pero esto es lo que cambió completamente mi perspectiva: programar es exactamente como aprender a tener conversaciones en un nuevo idioma. Empiezas con "hola" y "gracias", luego avanzas a pedir un café, ¡y antes de que te des cuenta, estás teniendo profundas discusiones filosóficas! Excepto que en este caso, estás conversando con computadoras y, sinceramente, son las compañeras de conversación más pacientes del mundo: nunca juzgan tus errores y siempre están emocionadas de que lo intentes de nuevo.
Hoy, vamos a explorar las increíbles herramientas que hacen que el desarrollo web moderno no solo sea posible, sino seriamente adictivo. Hablo de los mismos editores, navegadores y flujos de trabajo que usan desarrolladores en Netflix, Spotify y tu estudio indie de apps favorito todos los días. Y aquí viene la parte que te hará bailar de alegría: la mayoría de estas herramientas profesionales, estándar de la industria, ¡son completamente gratuitas! Hoy, vamos a explorar las increíbles herramientas que hacen que el desarrollo web moderno no solo sea posible, sino seriamente adictivo. Estoy hablando de los mismos editores, navegadores y flujos de trabajo que usan los desarrolladores de Netflix, Spotify y tu estudio indie favorito todos los días. Y aquí está la parte que te hará bailar de alegría: ¡la mayoría de estas herramientas profesionales y estándar de la industria son completamente gratuitas!
![Intro Programming](../../../../translated_images/es/webdev101-programming.d6e3f98e61ac4bff.webp) ![Intro Programming](../../../../translated_images/es/webdev101-programming.d6e3f98e61ac4bff.webp)
> Sketchnote por [Tomomi Imura](https://twitter.com/girlie_mac) > Sketchnote por [Tomomi Imura](https://twitter.com/girlie_mac)
@ -17,68 +17,68 @@ journey
section Descubrir section Descubrir
Qué es la programación: 5: You Qué es la programación: 5: You
Lenguajes de programación: 4: You Lenguajes de programación: 4: You
Visión general de herramientas: 5: You Resumen de herramientas: 5: You
section Explorar section Explorar
Editores de código: 4: You Editores de código: 4: You
Navegadores y DevTools: 5: You Navegadores y herramientas de desarrollo: 5: You
Línea de comandos: 3: You Línea de comandos: 3: You
section Practicar section Practicar
Detective de lenguajes: 4: You Detective de lenguajes: 4: You
Exploración de herramientas: 5: You Exploración de herramientas: 5: You
Conexión con la comunidad: 5: You Conexión comunitaria: 5: You
``` ```
## ¡Veamos Qué Sabes Ya! ## ¡Veamos Qué Sabes Ya!
Antes de saltar a lo divertido, tengo curiosidad — ¿qué sabes ya sobre este mundo de la programación? Y escucha, si estás viendo estas preguntas y piensas "literalmente no tengo ni idea de nada de esto," no solo está bien, ¡es perfecto! Eso significa que estás en el lugar justo. Piensa en este quiz como un estiramiento antes de hacer ejercicio — ¡solo estamos calentando esos músculos cerebrales! Antes de saltar a lo divertido, tengo curiosidad ¿qué sabes ya sobre este mundo de la programación? Y oye, si al ver estas preguntas piensas "literalmente no sé nada de esto," ¡eso no solo está bien, es perfecto! Eso significa que estás en el lugar correcto. Piensa en este cuestionario como estiramiento antes de un entrenamiento solo estamos calentando esos músculos cerebrales.
[Haz el quiz previo a la lección](https://ff-quizzes.netlify.app/web/) [Realiza el cuestionario previo a la lección](https://ff-quizzes.netlify.app/web/)
## La Aventura Que Vamos a Emprender Juntos ## La Aventura en la que Vamos a Embarcarnos Juntos
¡Ok, realmente estoy emocionado por lo que vamos a explorar hoy! En serio, ¡ojalá pudiera ver tu cara cuando algunos de estos conceptos encajen! Aquí está el increíble viaje que vamos a hacer juntos: ¡Vale, estoy genuinamente emocionado por lo que vamos a explorar hoy! En serio, ojalá pudiera ver tu cara cuando algunos de estos conceptos encajen. Aquí está el increíble viaje que vamos a tomar juntos:
- **Qué es realmente la programación (¡y por qué es lo más genial que existe!)** Vamos a descubrir cómo el código es literalmente la magia invisible que impulsa todo a tu alrededor, desde esa alarma que de alguna manera sabe que es lunes por la mañana hasta el algoritmo que te recomienda justo lo que quieres en Netflix - **Qué es realmente la programación (¡y por qué es lo más genial que existe!)** Vamos a descubrir cómo el código es literalmente la magia invisible que impulsa todo a tu alrededor, desde esa alarma que de alguna manera sabe que es lunes por la mañana hasta el algoritmo que selecciona perfectamente tus recomendaciones en Netflix
- **Lenguajes de programación y sus increíbles personalidades** Imagina entrar a una fiesta donde cada persona tiene superpoderes diferentes y maneras propias de resolver problemas. Así es el mundo de los lenguajes de programación, y te va a encantar conocerlos - **Los lenguajes de programación y sus increíbles personalidades** Imagina entrar a una fiesta donde cada persona tiene superpoderes completamente diferentes y distintas formas de resolver problemas. Así es el mundo de los lenguajes de programación, ¡y te encantará conocerlos!
- **Los bloques fundamentales que hacen que la magia digital suceda** Piensa en estos como el set definitivo de LEGO creativo. Una vez entiendas cómo encajan estas piezas, te darás cuenta de que puedes literalmente construir cualquier cosa que tu imaginación sueñe - **Los bloques fundamentales que hacen posible la magia digital** Piensa en estos como el set definitivo de LEGO creativo. Una vez que entiendas cómo encajan estas piezas, te darás cuenta de que literalmente puedes construir lo que tu imaginación sueñe
- **Herramientas profesionales que te harán sentir como si te dieran una varita de mago** No estoy siendo dramático aquí estas herramientas realmente te harán sentir que tienes superpoderes, y la mejor parte: ¡son las mismas que usan los profesionales! - **Herramientas profesionales que te harán sentir como si te acabaran de entregar una varita mágica** No exagero aquí estas herramientas realmente te harán sentir que tienes superpoderes, ¿y lo mejor? ¡Son las mismas que usan los profesionales!
> 💡 **Esto es lo importante**: ¡Ni se te ocurra intentar memorizar todo hoy! Ahora mismo solo quiero que sientas esa chispa de emoción por lo que es posible. Los detalles se quedarán naturalmente mientras practicamos juntos así es como sucede el aprendizaje real. > 💡 **Esto es lo importante**: No pienses ni por un momento en memorizar todo hoy. Ahora mismo, solo quiero que sientas esa chispa de emoción por lo que es posible. Los detalles se quedarán de forma natural mientras practicamos juntos ¡así es el aprendizaje real!
> Puedes hacer esta lección en [Microsoft Learn](https://learn.microsoft.com/en-us/learn/modules/web-development-101/introduction-programming/?WT.mc_id=academic-77807-sagibbon)! > Puedes tomar esta lección en [Microsoft Learn](https://learn.microsoft.com/en-us/learn/modules/web-development-101/introduction-programming/?WT.mc_id=academic-77807-sagibbon)!
## Entonces, ¿Qué Es *Realmente* Programar? ## Entonces, ¿Qué Es Exactamente la Programación?
Bien, enfrentemos la pregunta del millón: ¿qué es realmente programar? Muy bien, abordemos la pregunta de un millón: ¿qué es realmente programar?
Te voy a contar una historia que cambió por completo cómo veo esto. La semana pasada, estaba tratando de explicarle a mi mamá cómo usar el control remoto nuevo de nuestro televisor inteligente. Me sorprendí diciéndole cosas como "Presiona el botón rojo, pero no el botón rojo grande, el botón rojo pequeño a la izquierda... no, tu otro izquierdo... ok, ahora mantén presionado dos segundos, no uno, no tres..." ¿Te suena? 😅 Te contaré una historia que cambió completamente cómo pienso sobre esto. La semana pasada, intentaba explicarle a mi mamá cómo usar nuestro nuevo control remoto inteligente para la TV. Me descubrí diciendo cosas como "Presiona el botón rojo, pero no el botón rojo grande, el botón rojo pequeño a la izquierda... no, tu otra izquierda... ok, ahora mantenlo presionado dos segundos, no uno, ni tres..." ¿Te suena familiar? 😅
¡Eso es programar! Es el arte de dar instrucciones súper detalladas y paso a paso a algo que es muy poderoso pero necesita que todo esté perfectamente especificado. Excepto que en lugar de explicarle a tu mamá (que puede preguntar "¿qué botón rojo?!"), le estás explicando a una computadora (que simplemente hace exactamente lo que dices, incluso si lo que dijiste no es exactamente lo que querías decir). ¡Eso es programar! Es el arte de dar instrucciones increíblemente detalladas paso a paso a algo que es muy poderoso, pero que necesita que todo se explique perfectamente. Excepto que en lugar de explicarle a tu mamá (que puede preguntar "¿qué botón rojo?!"), le estás explicando a una computadora (que simplemente hace exactamente lo que dices, aunque no sea exactamente lo que quisiste decir).
Esto fue lo que me voló la cabeza cuando lo aprendí: las computadoras son en realidad bastante simples en su núcleo. Literalmente solo entienden dos cosas 1 y 0, que básicamente es "sí" y "no" o "encendido" y "apagado". ¡Eso es todo! Pero aquí es donde se pone mágico no tenemos que hablar en 1s y 0s como si estuviéramos en Matrix. Ahí es donde los **lenguajes de programación** vienen al rescate. Son como tener el mejor traductor del mundo que toma tus pensamientos humanos perfectamente normales y los convierte en lenguaje de computadora. Esto es lo que me impresionó cuando aprendí esto: las computadoras en realidad son bastante simples en su núcleo. Literalmente solo entienden dos cosas 1 y 0, que básicamente es "sí" y "no" o "encendido" y "apagado." ¡Eso es todo! Pero aquí es donde empieza la magia no tenemos que hablar en 1s y 0s como si estuviéramos en Matrix. Ahí es donde vienen al rescate los **lenguajes de programación**. Son como tener al mejor traductor del mundo que toma tus pensamientos humanos normales y los convierte en lenguaje de computadora.
Y esto es lo que todavía me da escalofríos cada mañana que me despierto: literalmente *todo* lo digital en tu vida comenzó con alguien justo como tú, probablemente en pijama con una taza de café, escribiendo código en su laptop. ¿Ese filtro de Instagram que te hace ver impecable? Alguien codificó eso. ¿La recomendación que te llevó a tu nueva canción favorita? Un desarrollador creó ese algoritmo. ¿La app que te ayuda a dividir la cuenta en la cena con amigos? Sí, alguien pensó "esto es molesto, apuesto que puedo arreglarlo" y entonces... ¡lo hizo! Y aquí está lo que todavía me da escalofríos cada mañana al despertar: literalmente *todo* lo digital en tu vida comenzó con alguien como tú, probablemente en pijama con una taza de café, escribiendo código en su portátil. ¿Ese filtro de Instagram que te hace ver impecable? Alguien programó eso. ¿La recomendación que te llevó a tu nueva canción favorita? Un desarrollador creó ese algoritmo. ¿La app que te ayuda a dividir la cuenta de la cena con amigos? Sí, alguien pensó "esto es molesto, seguro que puedo arreglarlo" y luego... ¡lo hizo!
Cuando aprendes a programar, no solo estás adquiriendo una nueva habilidad te estás convirtiendo en parte de esta increíble comunidad de solucionadores de problemas que pasan sus días pensando: "¿Y si pudiera construir algo que mejore un poco el día de alguien?" Honestamente, ¿hay algo más genial que eso? Cuando aprendes a programar, no solo estás adquiriendo una nueva habilidad estás formando parte de esta increíble comunidad de solucionadores de problemas que pasan sus días pensando, "¿Qué pasaría si pudiera construir algo que haga el día de alguien un poquito mejor?" Honestamente, ¿hay algo más genial que eso?
**Dato curioso para investigar**: Esto es algo súper genial para buscar cuando tengas un momento libre ¿quién crees que fue el primer programador del mundo? Te doy una pista: ¡no es quien esperarías! La historia de esta persona es absolutamente fascinante y muestra que programar siempre ha sido sobre resolver problemas creativamente y pensar fuera de la caja. **Búsqueda de dato curioso**: Aquí tienes algo súper interesante para buscar cuando tengas un momento libre ¿quién crees que fue el primer programador del mundo? Te doy una pista: ¡podría no ser quien esperas! La historia detrás de esta persona es absolutamente fascinante y muestra que la programación siempre ha sido sobre resolver problemas con creatividad y pensar fuera de la caja.
### 🧠 **Momento de Reflexión: ¿Cómo Te Sientes?** ### 🧠 **Momento de reflexión: ¿Cómo te sientes?**
**Tómate un momento para pensar:** **Tómate un momento para reflexionar:**
- ¿Tiene sentido ahora la idea de "dar instrucciones a computadoras"? - ¿Tiene sentido para ti ahora la idea de "dar instrucciones a las computadoras"?
- ¿Puedes pensar en una tarea diaria que te gustaría automatizar con programación? - ¿Puedes pensar en una tarea diaria que te gustaría automatizar con programación?
- ¿Qué preguntas te están surgiendo sobre todo este tema de la programación? - ¿Qué preguntas te están surgiendo en la cabeza sobre todo este asunto de la programación?
> **Recuerda**: Es totalmente normal que algunos conceptos estén confusos ahora. Aprender a programar es como aprender un idioma nuevo tu cerebro necesita tiempo para construir esas conexiones neuronales. ¡Lo estás haciendo genial! > **Recuerda**: Es totalmente normal que algunos conceptos se sientan confusos ahora mismo. Aprender a programar es como aprender un nuevo idioma tu cerebro necesita tiempo para construir esas conexiones neuronales. ¡Lo estás haciendo genial!
## Los Lenguajes de Programación Son Como Diferentes Sabores de Magia ## Los Lenguajes de Programación Son Como Diferentes Sabores de Magia
Esto va a sonar raro, pero quédate conmigo los lenguajes de programación son muy parecidos a diferentes tipos de música. Piénsalo: tienes jazz, que es suave e improvisado; rock que es potente y directo; clásico que es elegante y estructurado, y hip-hop que es creativo y expresivo. Cada estilo tiene su propia vibra, su propia comunidad de fans apasionados, y cada uno es perfecto para diferentes estados de ánimo y ocasiones. Vale, esto va a sonar raro, pero quédate conmigo los lenguajes de programación son como diferentes tipos de música. Piensa en esto: tienes jazz, que es suave e improvisado; rock, que es poderoso y directo; clásico, que es elegante y estructurado; y hip-hop, que es creativo y expresivo. Cada estilo tiene su propia vibra, su propia comunidad de fans apasionados, y cada uno es perfecto para diferentes estados de ánimo y ocasiones.
¡Los lenguajes de programación funcionan exactamente igual! No usarías el mismo lenguaje para construir un juego móvil divertido que para procesar enormes cantidades de datos climáticos, igual que no pondrías death metal en una clase de yoga (bueno, la mayoría de las clases de yoga no, al menos 😄). ¡Los lenguajes de programación funcionan exactamente igual! No usarías el mismo lenguaje para crear un juego móvil divertido que para procesar enormes cantidades de datos climáticos, igual que no pondrías death metal en una clase de yoga (bueno, en la mayoría de clases de yoga, ¡jeje!).
Pero lo que me impresiona cada vez que lo pienso es esto: estos lenguajes son como tener al intérprete más paciente y brillante del mundo sentado a tu lado. Puedes expresar tus ideas de una manera que se siente natural para tu cerebro humano, y ellos se encargan de todo el trabajo increíblemente complejo de traducir eso a los 1s y 0s que las computadoras realmente entienden. Es como tener un amigo que habla perfectamente tanto "creatividad humana" como "lógica de computadora" ¡y nunca se cansa, nunca necesita pausas para café y nunca te juzga por hacer la misma pregunta dos veces! Pero esto es lo que cada vez que lo pienso me impresiona completamente: estos lenguajes son como tener al intérprete más paciente y brillante del mundo sentado a tu lado. Puedes expresar tus ideas de una manera que se siente natural para tu cerebro humano, y ellos se encargan de todo el trabajo increíblemente complejo de traducir eso a 1s y 0s que las computadoras realmente entienden. Es como tener un amigo que es perfectamente fluido tanto en "creatividad humana" como en "lógica de computadora" ¡y nunca se cansa, nunca necesita pausas para café, y nunca te juzga por hacer la misma pregunta dos veces!
### Lenguajes de Programación Populares y Sus Usos ### Lenguajes de Programación Populares y Sus Usos
@ -87,12 +87,12 @@ mindmap
root((Lenguajes de Programación)) root((Lenguajes de Programación))
Desarrollo Web Desarrollo Web
JavaScript JavaScript
Magia del Frontend Magia Frontend
Sitios Web Interactivos Sitios Web Interactivos
TypeScript TypeScript
JavaScript + Tipos JavaScript + Tipos
Apps Empresariales Apps Empresariales
Datos e IA Datos y IA
Python Python
Ciencia de Datos Ciencia de Datos
Aprendizaje Automático Aprendizaje Automático
@ -121,41 +121,41 @@ mindmap
Servicios en la Nube Servicios en la Nube
Backend Escalable Backend Escalable
``` ```
| Lenguaje | Mejor Para | Por qué es Popular | | Lenguaje | Mejor Para | Por Qué Es Popular |
|----------|------------|--------------------| |----------|------------|--------------------|
| **JavaScript** | Desarrollo web, interfaces de usuario | Funciona en navegadores y potencia sitios interactivos | | **JavaScript** | Desarrollo web, interfaces de usuario | Funciona en navegadores y potencia sitios web interactivos |
| **Python** | Ciencia de datos, automatización, IA | Fácil de leer y aprender, bibliotecas poderosas | | **Python** | Ciencia de datos, automatización, IA | Fácil de leer y aprender, librerías potentes |
| **Java** | Aplicaciones empresariales, apps Android | Independiente de plataforma, robusto para sistemas grandes | | **Java** | Aplicaciones empresariales, apps Android | Independiente de plataforma, robusto para sistemas grandes |
| **C#** | Aplicaciones Windows, desarrollo de juegos | Fuerte soporte en el ecosistema Microsoft | | **C#** | Aplicaciones Windows, desarrollo de juegos | Fuerte soporte del ecosistema Microsoft |
| **Go** | Servicios en la nube, sistemas backend | Rápido, simple, diseñado para computación moderna | | **Go** | Servicios en la nube, sistemas backend | Rápido, simple, diseñado para computación moderna |
### Lenguajes de Alto Nivel vs. Bajo Nivel ### Lenguajes de Alto Nivel vs. Bajo Nivel
Ok, honestamente este fue el concepto que me rompió el cerebro cuando empecé a aprender, así que voy a compartir la analogía que finalmente me hizo click — ¡y espero que también te ayude! Bien, honestamente este fue el concepto que me voló la cabeza cuando empecé a aprender, así que voy a compartir la analogía que finalmente me hizo entender ¡y espero que también te ayude!
Imagina que visitas un país donde no hablas el idioma, y necesitas desesperadamente encontrar el baño más cercano (a todos nos ha pasado, ¿verdad? 😅): Imagina que estás visitando un país donde no hablas el idioma y necesitas urgentemente encontrar el baño más cercano (a todos nos ha pasado, ¿verdad? 😅):
- **Programación de bajo nivel** es como aprender el dialecto local tan bien que puedes conversar con la abuela que vende fruta en la esquina usando referencias culturales, jerga local y bromas internas que solo alguien que creció allí entendería. Súper impresionante e increíblemente eficiente... si hablas el idioma fluidamente. Pero bastante abrumador cuando solo buscas un baño. - **Programación de bajo nivel** es como aprender tan bien el dialecto local que puedes charlar con la abuela que vende fruta en la esquina usando referencias culturales, jerga local y bromas internas que sólo alguien que creció allí entendería. Súper impresionante e increíblemente eficiente... ¡si acaso eres fluido! Pero bastante abrumador cuando solo tratas de encontrar el baño.
- **Programación de alto nivel** es como tener ese increíble amigo local que simplemente te entiende. Puedes decir "Realmente necesito encontrar un baño" en inglés simple, y él se encarga de toda la traducción cultural y te da indicaciones que tu cerebro no local entiende perfectamente. - **Programación de alto nivel** es como tener ese amigo local increíble que simplemente te entiende. Puedes decir "Realmente necesito encontrar un baño" en inglés simple, y ellos manejan toda la traducción cultural y te dan instrucciones que tienen perfecto sentido para tu cerebro no local.
En términos de programación: En términos de programación:
- **Lenguajes de bajo nivel** (como Assembly o C) te permiten tener conversaciones muy detalladas con el hardware real de la computadora, pero tienes que pensar como una máquina, lo cual... bueno, digamos que es un gran cambio mental. - Los **lenguajes de bajo nivel** (como Assembly o C) te permiten tener conversaciones sumamente detalladas con el hardware real de la computadora, pero necesitas pensar como una máquina, lo cual... bueno, digamos que es un cambio mental bastante grande.
- **Lenguajes de alto nivel** (como JavaScript, Python o C#) te permiten pensar como humano mientras ellos manejan todo el idioma máquina detrás de escena. Además, tienen comunidades increíblemente acogedoras llenas de gente que recuerda lo que es ser nuevo y realmente quiere ayudar. - Los **lenguajes de alto nivel** (como JavaScript, Python o C#) te permiten pensar como un humano mientras ellos gestionan todo el lenguaje máquina detrás de escenas. Además, tienen comunidades increíblemente acogedoras llenas de gente que recuerda lo que es ser nuevo y que realmente quiere ayudar.
¿Adivina con cuáles te sugiero empezar? 😉 Los lenguajes de alto nivel son como usar ruedas de entrenamiento que en realidad nunca querrás quitarte porque hacen que toda la experiencia sea mucho más disfrutable. ¿Adivina con cuáles voy a sugerirte que empieces? 😉 Los lenguajes de alto nivel son como tener rueditas de entrenamiento que en realidad nunca quieres quitar porque hacen toda la experiencia mucho más agradable.
```mermaid ```mermaid
flowchart TB flowchart TB
A["👤 Pensamiento Humano:<br/>'Quiero calcular números de Fibonacci'"] --> B{Elegir nivel de lenguaje} A["👤 Pensamiento Humano:<br/>'Quiero calcular números de Fibonacci'"] --> B{Elegir nivel de lenguaje}
B -->|Alto nivel| C["🌟 JavaScript/Python<br/>Fácil de leer y escribir"] B -->|Nivel alto| C["🌟 JavaScript/Python<br/>Fácil de leer y escribir"]
B -->|Bajo nivel| D["⚙️ Ensamblador/C<br/>Control directo del hardware"] B -->|Nivel bajo| D["⚙️ Assembly/C<br/>Control directo del hardware"]
C --> E["📝 Escribir: fibonacci(10)"] C --> E["📝 Escribir: fibonacci(10)"]
D --> F["📝 Escribir: mov r0,#00<br/>sub r0,r0,#01"] D --> F["📝 Escribir: mov r0,#00<br/>sub r0,r0,#01"]
E --> G["🤖 Entendimiento de la computadora:<br/>El traductor maneja la complejidad"] E --> G["🤖 Entendimiento del ordenador:<br/>El traductor maneja la complejidad"]
F --> G F --> G
G --> H["💻 Mismo resultado:<br/>0, 1, 1, 2, 3, 5, 8, 13..."] G --> H["💻 Mismo resultado:<br/>0, 1, 1, 2, 3, 5, 8, 13..."]
@ -166,9 +166,9 @@ flowchart TB
``` ```
### Déjame Mostrarte Por Qué Los Lenguajes de Alto Nivel Son Mucho Más Amigables ### Déjame Mostrarte Por Qué Los Lenguajes de Alto Nivel Son Mucho Más Amigables
Bien, estoy a punto de mostrarte algo que demuestra perfectamente por qué me enamoré de los lenguajes de alto nivel, pero primero necesito que me prometas algo. Cuando veas ese primer ejemplo de código, ¡no te asustes! Se supone que debe parecer intimidante. ¡Ese es exactamente el punto que quiero hacer! Muy bien, estoy a punto de mostrarte algo que demuestra perfectamente por qué me enamoré de los lenguajes de alto nivel, pero primero necesito que me hagas una promesa. Cuando veas ese primer ejemplo de código, no entres en pánico. Se supone que debe parecer intimidante. ¡Ese es exactamente el punto que quiero hacer!
Vamos a ver la misma tarea escrita en dos estilos completamente diferentes. Ambos crean lo que se llama la secuencia de Fibonacci es un hermoso patrón matemático donde cada número es la suma de los dos anteriores: 0, 1, 1, 2, 3, 5, 8, 13... (Dato curioso: encontrarás este patrón literalmente en todas partes en la naturaleza las espirales de las semillas de girasol, los patrones de piñas, ¡incluso la forma en que se forman las galaxias!) Vamos a ver la misma tarea escrita en dos estilos completamente diferentes. Ambas crean lo que se llama la secuencia de Fibonacci es un hermoso patrón matemático donde cada número es la suma de los dos anteriores: 0, 1, 1, 2, 3, 5, 8, 13... (Dato curioso: encontrarás este patrón literalmente en todas partes en la naturaleza espirales de semillas de girasol, patrones de piñas, ¡incluso la forma en que se forman las galaxias!)
¿Listo para ver la diferencia? ¡Vamos! ¿Listo para ver la diferencia? ¡Vamos!
@ -185,9 +185,9 @@ console.log('Fibonacci sequence:');
**Esto es lo que hace este código:** **Esto es lo que hace este código:**
- **Declarar** una constante para especificar cuántos números de Fibonacci queremos generar - **Declarar** una constante para especificar cuántos números de Fibonacci queremos generar
- **Inicializar** dos variables para seguir los números actuales y siguientes en la secuencia - **Inicializar** dos variables para seguir el número actual y el siguiente en la secuencia
- **Configurar** los valores iniciales (0 y 1) que definen el patrón Fibonacci - **Establecer** los valores iniciales (0 y 1) que definen el patrón de Fibonacci
- **Mostrar** un mensaje encabezado para identificar nuestra salida - **Mostrar** un mensaje de encabezado para identificar nuestra salida
```javascript ```javascript
// Paso 2: Generar la secuencia con un bucle // Paso 2: Generar la secuencia con un bucle
@ -202,10 +202,10 @@ for (let i = 0; i < fibonacciCount; i++) {
``` ```
**Desglosando lo que pasa aquí:** **Desglosando lo que pasa aquí:**
- **Recorrer** cada posición en nuestra secuencia usando un bucle `for` - **Recorrer** cada posición en la secuencia usando un bucle `for`
- **Mostrar** cada número con su posición utilizando formato de plantilla literal - **Mostrar** cada número con su posición usando formato de plantilla literal
- **Calcular** el siguiente número de Fibonacci sumando los valores actual y siguiente - **Calcular** el siguiente número de Fibonacci sumando los valores actual y siguiente
- **Actualizar** nuestras variables para avanzar a la siguiente iteración - **Actualizar** nuestras variables para pasar a la siguiente iteración
```javascript ```javascript
// Paso 3: Enfoque funcional moderno // Paso 3: Enfoque funcional moderno
@ -225,10 +225,10 @@ console.log(fibSequence);
``` ```
**En lo anterior, hemos:** **En lo anterior, hemos:**
- **Creado** una función reutilizable usando la sintaxis moderna de funciones flecha - **Creado** una función reutilizable usando sintaxis moderna de funciones flecha
- **Construido** un arreglo para almacenar la secuencia completa en lugar de mostrar número por número - **Construido** un arreglo para almacenar la secuencia completa en lugar de mostrar número por número
- **Usado** índices del arreglo para calcular cada nuevo número a partir de valores previos - **Usado** indexación de arreglos para calcular cada nuevo número a partir de valores previos
- **Retornado** la secuencia completa para usarla de forma flexible en otras partes del programa - **Retornado** la secuencia completa para uso flexible en otras partes de nuestro programa
**Lenguaje de bajo nivel (ARM Assembly) Amigable para computadoras:** **Lenguaje de bajo nivel (ARM Assembly) Amigable para computadoras:**
@ -257,40 +257,40 @@ back add r0,r1
end end
``` ```
Fíjate cómo la versión en JavaScript se lee casi como instrucciones en inglés, mientras que la versión en Assembly usa comandos crípticos que controlan directamente el procesador de la computadora. Ambas logran la misma tarea, pero el lenguaje de alto nivel es mucho más fácil para los humanos de entender, escribir y mantener. Fíjate cómo la versión en JavaScript se lee casi como instrucciones en inglés, mientras que la versión en Assembly usa comandos crípticos que controlan directamente el procesador de la computadora. Ambas logran la misma tarea, pero el lenguaje de alto nivel es mucho más fácil para que los humanos entiendan, escriban y mantengan.
**Diferencias clave que notarás:** **Diferencias clave que notarás:**
- **Legibilidad**: JavaScript usa nombres descriptivos como `fibonacciCount` mientras que Assembly usa etiquetas crípticas como `r0`, `r1` - **Legibilidad**: JavaScript usa nombres descriptivos como `fibonacciCount` mientras que Assembly usa etiquetas crípticas como `r0`, `r1`
- **Comentarios**: Los lenguajes de alto nivel fomentan comentarios explicativos que hacen que el código sea autodocumentado - **Comentarios**: Los lenguajes de alto nivel fomentan comentarios explicativos que hacen que el código se documente por sí mismo
- **Estructura**: El flujo lógico de JavaScript coincide con cómo los humanos piensan sobre los problemas paso a paso - **Estructura**: El flujo lógico de JavaScript coincide con la forma en que los humanos pensamos sobre problemas paso a paso
- **Mantenimiento**: Actualizar la versión de JavaScript para diferentes requisitos es sencillo y claro - **Mantenimiento**: Actualizar la versión de JavaScript para diferentes requerimientos es sencillo y claro
**Sobre la secuencia de Fibonacci**: ¡Este patrón numérico absolutamente maravilloso (donde cada número es la suma de los dos anteriores: 0, 1, 1, 2, 3, 5, 8...) aparece literalmente *en todas partes* en la naturaleza! Lo encontrarás en las espirales de los girasoles, los patrones de las piñas, la forma en que se curvan los caparazones de nautilus e incluso en cómo crecen las ramas de los árboles. ¡Es realmente asombroso cómo las matemáticas y el código pueden ayudarnos a entender y recrear los patrones que la naturaleza usa para crear belleza! **Acerca de la secuencia de Fibonacci**: Este patrón de números absolutamente hermoso (donde cada número es igual a la suma de los dos anteriores: 0, 1, 1, 2, 3, 5, 8...) ¡aparece literalmente *en todas partes* en la naturaleza! Lo encontrarás en las espirales de los girasoles, los patrones de las piñas, la curva de las conchas de nautilus e incluso en cómo crecen las ramas de los árboles. ¡Es realmente asombroso cómo las matemáticas y el código pueden ayudarnos a entender y recrear los patrones que la naturaleza usa para crear belleza!
## Los Bloques de Construcción Que Hacen Que La Magia Ocurra ## Los Bloques Fundamentales Que Hacen Que la Magia Suceda
Muy bien, ahora que has visto cómo lucen los lenguajes de programación en acción, vamos a desglosar las piezas fundamentales que componen literalmente todos los programas jamas escritos. Piensa en estas como los ingredientes esenciales en tu receta favorita: una vez que entiendes lo que hace cada uno, ¡podrás leer y escribir código en prácticamente cualquier lenguaje! Bien, ahora que has visto cómo lucen los lenguajes de programación en acción, vamos a desglosar las piezas fundamentales que conforman literalmente todos los programas escritos. Piensa en estos como los ingredientes esenciales en tu receta favorita una vez que entiendas qué hace cada uno, ¡podrás leer y escribir código en prácticamente cualquier lenguaje!
Esto es algo parecido a aprender la gramática de la programación. ¿Recuerdas cuando en la escuela aprendiste sobre sustantivos, verbos y cómo armar oraciones? La programación tiene su propia versión de gramática, y sinceramente, es mucho más lógica y permisiva que la gramática del inglés alguna vez fue! 😄 Esto es algo así como aprender la gramática de la programación. ¿Recuerdas en la escuela cuando aprendiste sobre sustantivos, verbos y cómo armar oraciones? La programación tiene su propia versión de gramática, y honestamente, ¡es mucho más lógica y tolerante que la gramática inglesa! 😄
### Sentencias: Las Instrucciones Paso a Paso ### Sentencias: Las Instrucciones Paso a Paso
Empecemos con las **sentencias** son como oraciones individuales en una conversación con tu computadora. Cada sentencia le dice a la computadora que haga una cosa específica, algo parecido a dar direcciones: "Gira a la izquierda aquí," "Detente en el semáforo en rojo," "Estaciona en ese lugar." Comencemos con las **sentencias** son como oraciones individuales en una conversación con tu computadora. Cada sentencia le dice a la computadora que haga algo específico, como dar indicaciones: "Gira a la izquierda aquí", "Detente en el semáforo rojo", "Estaciona en ese lugar".
Lo que me encanta de las sentencias es lo legibles que suelen ser. Mira esto: Lo que me encanta de las sentencias es lo legibles que suelen ser. Mira esto:
```javascript ```javascript
// Sentencias básicas que realizan acciones únicas // Declaraciones básicas que realizan acciones individuales
const userName = "Alex"; const userName = "Alex";
console.log("Hello, world!"); console.log("Hello, world!");
const sum = 5 + 3; const sum = 5 + 3;
``` ```
**Esto es lo que hace este código:** **Esto es lo que hace este código:**
- **Declarar** una variable constante para almacenar el nombre de un usuario - **Declarar** una variable constante para guardar el nombre de un usuario
- **Mostrar** un mensaje de saludo en la salida de la consola - **Mostrar** un mensaje de saludo en la consola de salida
- **Calcular** y guardar el resultado de una operación matemática - **Calcular** y almacenar el resultado de una operación matemática
```javascript ```javascript
// Declaraciones que interactúan con páginas web // Declaraciones que interactúan con páginas web
@ -304,13 +304,13 @@ document.body.style.backgroundColor = "lightblue";
### Variables: El Sistema de Memoria de Tu Programa ### Variables: El Sistema de Memoria de Tu Programa
Bueno, las **variables** son honestamente uno de mis conceptos favoritos para enseñar porque son muy parecidas a cosas que ya usas todos los días. Bien, las **variables** son honestamente uno de mis conceptos favoritos para enseñar porque son muy parecidas a cosas que ya usas todos los días.
Piensa en la lista de contactos de tu teléfono por un momento. No memorizas el número de teléfono de todos, sino que guardas "Mamá," "Mejor Amigo" o "Pizzería que entrega hasta las 2 AM" y dejas que tu teléfono recuerde los números reales. ¡Las variables funcionan exactamente igual! Son como contenedores con etiquetas donde tu programa puede almacenar información y recuperarla más tarde usando un nombre que realmente tenga sentido. Piensa en la lista de contactos de tu teléfono por un segundo. No memorizas el número de teléfono de todos — en su lugar, guardas “Mamá”, “Mejor Amigo” o “Pizzería Que Reparte Hasta Las 2 AM” y dejas que tu teléfono recuerde los números reales. ¡Las variables funcionan exactamente igual! Son como contenedores etiquetados donde tu programa puede almacenar información y recuperarla después usando un nombre que realmente tenga sentido.
Lo que es realmente genial: las variables pueden cambiar mientras tu programa se ejecuta (por eso se llaman "variables" ¿ves qué hicieron ahí?). Así como podrías actualizar el contacto de esa pizzería cuando descubres un lugar aún mejor, las variables pueden actualizarse a medida que tu programa aprende información nueva o cambian las situaciones. Lo realmente genial: las variables pueden cambiar mientras tu programa se ejecuta (de ahí viene el nombre "variable" — ¿ves qué hicieron ahí?). Así como puedes actualizar ese contacto de la pizzería cuando descubres un lugar aún mejor, las variables pueden actualizarse a medida que tu programa aprende nueva información o cambian las situaciones.
Déjame mostrarte lo simple y lindo que esto puede ser: Déjame mostrarte cómo puede ser esto de maravillosamente simple:
```javascript ```javascript
// Paso 1: Creando variables básicas // Paso 1: Creando variables básicas
@ -322,9 +322,9 @@ let isRaining = false;
**Entendiendo estos conceptos:** **Entendiendo estos conceptos:**
- **Guardar** valores inmutables en variables `const` (como el nombre del sitio) - **Guardar** valores inmutables en variables `const` (como el nombre del sitio)
- **Usar** `let` para valores que pueden cambiar durante la ejecución del programa - **Usar** `let` para valores que pueden cambiar durante tu programa
- **Asignar** distintos tipos de datos: cadenas (texto), números y booleanos (true/false) - **Asignar** diferentes tipos de datos: cadenas (texto), números y booleanos (true/false)
- **Elegir** nombres descriptivos que expliquen qué contiene cada variable - **Elegir** nombres descriptivos que expliquen lo que cada variable contiene
```javascript ```javascript
// Paso 2: Trabajando con objetos para agrupar datos relacionados // Paso 2: Trabajando con objetos para agrupar datos relacionados
@ -336,8 +336,8 @@ const weatherData = {
``` ```
**En el ejemplo anterior, hemos:** **En el ejemplo anterior, hemos:**
- **Creado** un objeto para agrupar información meteorológica relacionada - **Creado** un objeto para agrupar información del clima relacionada
- **Organizado** múltiples datos bajo un nombre de variable - **Organizado** múltiples datos bajo un solo nombre de variable
- **Usado** pares clave-valor para etiquetar claramente cada dato - **Usado** pares clave-valor para etiquetar claramente cada dato
```javascript ```javascript
@ -350,9 +350,9 @@ currentWeather = "cloudy";
temperature = 68; temperature = 68;
``` ```
**Entendamos cada parte:** **Vamos a entender cada parte:**
- **Mostrar** información usando literales de plantilla con la sintaxis `${}` - **Mostrar** información usando literales de plantilla con la sintaxis `${}`
- **Acceder** a propiedades del objeto usando notación de puntos (`weatherData.windSpeed`) - **Acceder** a propiedades de un objeto usando notación de punto (`weatherData.windSpeed`)
- **Actualizar** variables declaradas con `let` para reflejar condiciones cambiantes - **Actualizar** variables declaradas con `let` para reflejar condiciones cambiantes
- **Combinar** múltiples variables para crear mensajes significativos - **Combinar** múltiples variables para crear mensajes significativos
@ -363,19 +363,19 @@ console.log(`${location} humidity: ${humidity}%`);
``` ```
**Lo que necesitas saber:** **Lo que necesitas saber:**
- **Extraer** propiedades específicas de objetos usando asignación por desestructuración - **Extraer** propiedades específicas de objetos usando asignación por destructuración
- **Crear** nuevas variables automáticamente con los mismos nombres que las claves del objeto - **Crear** nuevas variables automáticamente con los mismos nombres que las claves del objeto
- **Simplificar** el código evitando notación de puntos repetitiva - **Simplificar** código evitando la repetición de notación de punto
### Flujo de Control: Enseñando a Tu Programa a Pensar ### Flujo de Control: Enseñándole a Tu Programa a Pensar
Bueno, aquí es donde la programación se vuelve realmente asombrosa. El **flujo de control** es básicamente enseñar a tu programa a tomar decisiones inteligentes, exactamente como tú haces todos los días sin siquiera pensarlo. Muy bien, aquí es donde la programación se vuelve absolutamente asombrosa. El **flujo de control** es básicamente enseñarle a tu programa a tomar decisiones inteligentes, exactamente como tú haces todos los días sin ni siquiera pensarlo.
Imagina esto: esta mañana probablemente hiciste algo así como "Si está lloviendo, llevo paraguas. Si hace frío, me pongo una chaqueta. Si voy tarde, me salto el desayuno y tomo café en el camino." ¡Tu cerebro sigue esta lógica if-then docenas de veces cada día! Imagina esto: esta mañana probablemente hiciste algo como “Si está lloviendo, agarro un paraguas. Si hace frío, me pongo una chaqueta. Si voy tarde, me salto el desayuno y tomo café camino al trabajo”. ¡Tu cerebro sigue naturalmente esta lógica if-then docenas de veces cada día!
Esto es lo que hace que los programas parezcan inteligentes y vivos en lugar de sólo seguir un guion aburrido y predecible. Pueden observar una situación, evaluar qué pasa y reaccionar apropiadamente. ¡Es como darle a tu programa un cerebro que puede adaptarse y tomar decisiones! Esto es lo que hace que los programas se sientan inteligentes y vivos en vez de solo seguir un guion aburrido y predecible. Pueden realmente mirar una situación, evaluar qué está pasando y responder adecuadamente. Es como darle a tu programa un cerebro que puede adaptarse y tomar decisiones.
¿Quieres ver qué tan bonito funciona? Déjame mostrarte: ¿Quieres ver lo maravillosamente que funciona? Déjame mostrarte:
```javascript ```javascript
// Paso 1: Lógica condicional básica // Paso 1: Lógica condicional básica
@ -390,10 +390,10 @@ if (userAge >= 18) {
``` ```
**Esto es lo que hace este código:** **Esto es lo que hace este código:**
- **Verifica** si la edad del usuario cumple con el requisito para votar - **Verificar** si la edad del usuario cumple con el requisito para votar
- **Ejecuta** diferentes bloques de código según el resultado de la condición - **Ejecutar** diferentes bloques de código según el resultado de la condición
- **Calcula** y muestra cuánto falta para ser elegible para votar si es menor de 18 - **Calcular** y mostrar cuánto falta para que pueda votar si es menor de 18
- **Da** retroalimentación específica y útil para cada caso - **Proveer** retroalimentación específica y útil para cada escenario
```javascript ```javascript
// Paso 2: Múltiples condiciones con operadores lógicos // Paso 2: Múltiples condiciones con operadores lógicos
@ -409,11 +409,11 @@ if (userAge >= 18 && hasPermission) {
} }
``` ```
**Desglose de lo que sucede aquí:** **Desglosando lo que sucede aquí:**
- **Combina** múltiples condiciones usando el operador `&&` (y) - **Combinar** múltiples condiciones usando el operador `&&` (y)
- **Crea** una jerarquía de condiciones con `else if` para múltiples escenarios - **Crear** una jerarquía de condiciones con `else if` para múltiples escenarios
- **Maneja** todos los casos posibles con una sentencia final `else` - **Manejar** todos los casos posibles con una sentencia final `else`
- **Provee** retroalimentación clara y accionable para cada situación diferente - **Proveer** retroalimentación clara y accionable para cada situación diferente
```javascript ```javascript
// Paso 3: Condicional conciso con operador ternario // Paso 3: Condicional conciso con operador ternario
@ -422,9 +422,9 @@ console.log(`Status: ${votingStatus}`);
``` ```
**Lo que debes recordar:** **Lo que debes recordar:**
- **Usa** el operador ternario (`? :`) para condiciones simples de dos opciones - **Usar** el operador ternario (`? :`) para condiciones simples de dos opciones
- **Escribe** la condición primero, seguida de `?`, luego el resultado verdadero, después `:`, y finalmente el resultado falso - **Escribir** la condición primero, seguida de `?`, luego resultado si es verdadero, después `:`, y finalmente resultado si es falso
- **Aplica** este patrón cuando necesites asignar valores basados en condiciones - **Aplicar** este patrón cuando necesites asignar valores sen condiciones
```javascript ```javascript
// Paso 4: Manejo de múltiples casos específicos // Paso 4: Manejo de múltiples casos específicos
@ -448,53 +448,53 @@ switch (dayOfWeek) {
``` ```
**Este código logra lo siguiente:** **Este código logra lo siguiente:**
- **Compara** el valor de una variable con múltiples casos específicos - **Comparar** el valor de una variable con múltiples casos específicos
- **Agrupa** casos similares juntos (días de semana vs fines de semana) - **Agrupar** casos similares (días laborables vs fines de semana)
- **Ejecuta** el bloque de código adecuado cuando encuentra coincidencia - **Ejecutar** el bloque de código apropiado cuando se encuentra una coincidencia
- **Incluye** un caso `default` para manejar valores inesperados - **Incluir** un caso `default` para manejar valores inesperados
- **Usa** sentencias `break` para evitar que el código continúe al siguiente caso - **Usar** sentencias `break` para evitar que el código continúe al siguiente caso
> 💡 **Analogía del mundo real**: Piensa en el flujo de control como tener el GPS más paciente del mundo dándote direcciones. Puede decir "Si hay tráfico en la Calle Principal, toma la autopista. Si hay construcción bloqueando la autopista, intenta la ruta escénica." Los programas usan este mismo tipo de lógica condicional para responder inteligentemente a diferentes situaciones y siempre dar a los usuarios la mejor experiencia posible. > 💡 **Analogía del mundo real**: Piensa en el flujo de control como tener el GPS más paciente del mundo dándote indicaciones. Puede decir: "Si hay tráfico en la Calle Principal, toma la autopista. Si la autopista está en construcción, prueba la ruta panorámica". Los programas usan exactamente el mismo tipo de lógica condicional para responder inteligentemente a diferentes situaciones y siempre brindar a los usuarios la mejor experiencia posible.
### 🎯 **Chequeo de Conceptos: Dominio de los Bloques de Construcción** ### 🎯 **Chequeo de Conceptos: Dominio de los Bloques Fundamentales**
**Veamos cómo vas con lo fundamental:** **Veamos cómo vas con los fundamentos:**
- ¿Puedes explicar la diferencia entre una variable y una sentencia con tus propias palabras? - ¿Puedes explicar la diferencia entre una variable y una sentencia con tus propias palabras?
- Piensa en un escenario real donde usarías una decisión if-then (como nuestro ejemplo de votación) - Piensa en un escenario del mundo real donde usarías una decisión if-then (como nuestro ejemplo de votar)
- ¿Qué es algo sobre la lógica de programación que te sorprendió? - ¿Qué fue algo sobre la lógica de la programación que te sorprendió?
**Un rápido refuerzo de confianza:** **Un refuerzo rápido de confianza:**
```mermaid ```mermaid
flowchart LR flowchart LR
A["📝 Sentencias<br/>(Instrucciones)"] --> B["📦 Variables<br/>(Almacenamiento)"] --> C["🔀 Flujo de Control<br/>(Decisiones)"] --> D["🎉 ¡Programa Funcional!"] A["📝 Sentencias<br/>(Instrucciones)"] --> B["📦 Variables<br/>(Almacenamiento)"] --> C["🔀 Control de Flujo<br/>(Decisiones)"] --> D["🎉 ¡Programa Funcional!"]
style A fill:#ffeb3b style A fill:#ffeb3b
style B fill:#4caf50 style B fill:#4caf50
style C fill:#2196f3 style C fill:#2196f3
style D fill:#ff4081 style D fill:#ff4081
``` ```
**Lo que viene a continuación**: ¡Nos vamos a divertir muchísimo profundizando en estos conceptos mientras continuamos este increíble viaje juntos! Por ahora, concéntrate en sentir esa emoción por todas las increíbles posibilidades que tienes por delante. Las habilidades y técnicas específicas se te pegarán de forma natural a medida que practiquemos juntos ¡te prometo que será mucho más divertido de lo que esperas! **Lo que viene ahora**: ¡Vamos a divertirnos muchísimo profundizando en estos conceptos mientras continuamos este increíble viaje juntos! Por ahora, solo céntrate en sentir esa emoción sobre todas las increíbles posibilidades que te esperan. Las habilidades y técnicas específicas se pegarán naturalmente a medida que practiquemos juntos ¡te prometo que será mucho más divertido de lo que esperas!
## Herramientas del Oficio ## Herramientas del Oficio
Muy bien, en serio, aquí es donde me emociono tanto que apenas me aguanto! 🚀 Estamos a punto de hablar de las increíbles herramientas que te harán sentir como si acabaras de recibir las llaves de una nave espacial digital. Bien, honestamente aquí es donde me emociono tanto que apenas me puedo contener! 🚀 Estamos a punto de hablar de las increíbles herramientas que te harán sentir como si te acabaran de entregar las llaves de una nave espacial digital.
¿Sabes cómo un chef tiene esos cuchillos perfectamente equilibrados que se sienten como extensiones de sus manos? ¿O cómo un músico tiene esa guitarra que parece cantar en el momento en que la toca? Bueno, los desarrolladores tenemos nuestra propia versión de estas herramientas mágicas, y esto es lo que va a dejarte completamente alucinado ¡la mayoría de ellas son completamente gratuitas! ¿Sabes cómo un chef tiene esos cuchillos perfectamente balanceados que se sienten como extensiones de sus manos? ¿O cómo un músico tiene esa guitarra que parece cantar en cuanto la toca? Bueno, los desarrolladores tenemos nuestra propia versión de estas herramientas mágicas, y aquí está lo que te va a dejar maravillado ¡la mayoría son completamente gratuitas!
Estoy casi saltando en mi silla pensando en compartir esto contigo porque han revolucionado completamente cómo construimos software. Hablamos de asistentes de codificación impulsados por IA que pueden ayudarte a escribir tu código (¡no estoy bromeando!), entornos en la nube donde puedes construir aplicaciones completas desde literalmente cualquier lugar con Wi-Fi, y herramientas de depuración tan sofisticadas que son como tener visión de rayos X para tus programas. Prácticamente salto en mi silla pensando en compartirlas contigo porque han revolucionado completamente cómo construimos software. Estamos hablando de asistentes de código impulsados por IA que pueden ayudarte a escribir código (¡no bromeo!), entornos en la nube donde puedes construir aplicaciones enteras desde literalmente cualquier lugar con Wi-Fi, y herramientas de depuración tan sofisticadas que son como tener visión de rayos X para tus programas.
Y aquí viene la parte que aún me pone la piel de gallina: estas no son "herramientas para principiantes" que vas a dejar atrás. Son las mismas herramientas profesionales que usan desarrolladores en Google, Netflix y ese estudio indie de apps que adoras, ahora mismo. ¡Vas a sentirte como un profesional usándolas! Y aquí viene la parte que todavía me pone la piel de gallina: estas no son "herramientas para principiantes" que vas a dejar atrás. ¡Estas son las mismas herramientas profesionales que usan desarrolladores en Google, Netflix y ese estudio indie de apps que tanto te gusta justo en este momento! Usarlas te hará sentir como todo un profesional.
```mermaid ```mermaid
graph TD graph TD
A["💡 Tu Idea"] --> B["⌨️ Editor de Código<br/>(VS Code)"] A["💡 Tu Idea"] --> B["⌨️ Editor de Código<br/>(VS Code)"]
B --> C["🌐 Herramientas para Desarrolladores del Navegador<br/>(Pruebas y Depuración)"] B --> C["🌐 Herramientas DevTools del Navegador<br/>(Pruebas y Depuración)"]
C --> D["⚡ Línea de Comandos<br/>(Automatización y Herramientas)"] C --> D["⚡ Línea de Comandos<br/>(Automatización y Herramientas)"]
D --> E["📚 Documentación<br/>(Aprendizaje y Referencia)"] D --> E["📚 Documentación<br/>(Aprendizaje y Referencia)"]
E --> F["🚀 ¡Aplicación Web Asombrosa!"] E --> F["🚀 ¡Aplicación Web Asombrosa!"]
B -.-> G["🤖 Asistente de IA<br/>(GitHub Copilot)"] B -.-> G["🤖 Asistente de IA<br/>(GitHub Copilot)"]
C -.-> H["📱 Pruebas en Dispositivos<br/>(Diseño Responsive)"] C -.-> H["📱 Pruebas en Dispositivos<br/>(Diseño Responsivo)"]
D -.-> I["📦 Gestores de Paquetes<br/>(npm, yarn)"] D -.-> I["📦 Gestores de Paquetes<br/>(npm, yarn)"]
E -.-> J["👥 Comunidad<br/>(Stack Overflow)"] E -.-> J["👥 Comunidad<br/>(Stack Overflow)"]
@ -507,32 +507,32 @@ graph TD
``` ```
### Editores de Código e IDEs: Tus Nuevos Mejores Amigos Digitales ### Editores de Código e IDEs: Tus Nuevos Mejores Amigos Digitales
Hablemos de editores de código ¡estos están a punto de convertirse en tus nuevos lugares favoritos para pasar el rato! Piénsalos como tu santuario personal de codificación donde pasarás la mayor parte de tu tiempo creando y perfeccionando tus creaciones digitales. Hablemos de los editores de código estos están a punto de convertirse seriamente en tus lugares favoritos para pasar el rato. Piensa en ellos como tu santuario personal de codificación donde pasarás la mayor parte del tiempo creando y perfeccionando tus obras digitales.
Pero aquí está lo realmente mágico de los editores modernos: no son simples editores de texto lujosos. Son como tener al mentor de codificación más brillante y alentador sentado justo a tu lado 24/7. Detectan tus errores tipográficos antes siquiera de que te des cuenta, sugieren mejoras que te hacen parecer un genio, te ayudan a entender qué hace cada pieza del código, y algunos incluso pueden predecir lo que vas a escribir y ofrecerte terminar tus ideas. Pero aquí está lo absolutamente mágico de los editores modernos: no son solo editores de texto bonitos. Son como tener al mentor de codificación más brillante y solidario sentado justo a tu lado 24/7. Detectan tus errores tipográficos antes de que siquiera los notes, sugieren mejoras que te hacen parecer un genio, te ayudan a entender qué hace cada fragmento de código, ¡y algunos incluso pueden predecir lo que estás por escribir y ofrecer terminar tus ideas!
Recuerdo la primera vez que descubrí la autocompletación literalmente sentí que estaba viviendo en el futuro. Empiezas a escribir algo, y tu editor dice: "Oye, ¿estabas pensando en esta función que hace exactamente lo que necesitas?" ¡Es como tener un lector de mentes como compañero de codificación! Recuerdo cuando descubrí la autocompletación — literalmente sentí que estaba viviendo en el futuro. Empiezas a escribir algo, y tu editor te dice, "Oye, ¿pensabas en esta función que hace exactamente lo que necesitas?" Es como tener un lector de mentes como compañero de codificación.
**¿Qué hace que estos editores sean tan increíbles?** **¿Qué hace que estos editores sean tan increíbles?**
Los editores modernos ofrecen una impresionante variedad de características diseñadas para aumentar tu productividad: Los editores de código modernos ofrecen una impresionante variedad de características diseñadas para aumentar tu productividad:
| Característica | Qué hace | Por qué ayuda | | Característica | Qué Hace | Por qué Ayuda |
|---------|--------------|--------------| |---------------|----------|--------------|
| **Resaltado de Sintaxis** | Colorea diferentes partes de tu código | Hace que el código sea más fácil de leer y detectar errores | | **Resaltado de Sintaxis** | Colorea diferentes partes de tu código | Facilita la lectura y detectar errores |
| **Autocompletado** | Sugiere código mientras escribes | Acelera la codificación y reduce errores tipográficos | | **Autocompletado** | Sugiere código mientras escribes | Acelera la codificación y reduce errores tipográficos |
| **Herramientas de Depuración** | Te ayuda a encontrar y corregir errores | Ahorra horas de tiempo de solución de problemas | | **Herramientas de Depuración** | Te ayuda a encontrar y corregir errores | Ahorra horas solucionando problemas |
| **Extensiones** | Añaden funciones especializadas | Personaliza tu editor para cualquier tecnología | | **Extensiones** | Agrega funciones especializadas | Personaliza tu editor para cualquier tecnología |
| **Asistentes de IA** | Sugieren código y explicaciones | Acelera el aprendizaje y la productividad | | **Asistentes de IA** | Sugiere código y explicaciones | Acelera el aprendizaje y la productividad |
> 🎥 **Recurso en Video**: ¿Quieres ver estas herramientas en acción? Mira este [video Herramientas del Oficio](https://youtube.com/watch?v=69WJeXGBdxg) para una visión completa. > 🎥 **Recurso en video**: ¿Quieres ver estas herramientas en acción? Mira este [video Herramientas del Oficio](https://youtube.com/watch?v=69WJeXGBdxg) para una visión completa.
#### Editores recomendados para desarrollo web #### Editores Recomendados para Desarrollo Web
**[Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-77807-sagibbon)** (Gratis) **[Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-77807-sagibbon)** (Gratis)
- El más popular entre desarrolladores web - El más popular entre desarrolladores web
- Excelente ecosistema de extensiones - Excelente ecosistema de extensiones
- Terminal incorporado e integración con Git - Terminal integrado e integración con Git
- **Extensiones imprescindibles**: - **Extensiones imprescindibles**:
- [GitHub Copilot](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot) - Sugerencias de código impulsadas por IA - [GitHub Copilot](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot) - Sugerencias de código impulsadas por IA
- [Live Share](https://marketplace.visualstudio.com/items?itemName=MS-vsliveshare.vsliveshare) - Colaboración en tiempo real - [Live Share](https://marketplace.visualstudio.com/items?itemName=MS-vsliveshare.vsliveshare) - Colaboración en tiempo real
@ -541,60 +541,60 @@ Los editores modernos ofrecen una impresionante variedad de características dis
**[JetBrains WebStorm](https://www.jetbrains.com/webstorm/)** (De pago, gratis para estudiantes) **[JetBrains WebStorm](https://www.jetbrains.com/webstorm/)** (De pago, gratis para estudiantes)
- Herramientas avanzadas de depuración y pruebas - Herramientas avanzadas de depuración y pruebas
- Autocompletado de código inteligente - Autocompletado inteligente de código
- Control de versiones integrado - Control de versiones integrado
**IDEs basados en la nube** (Precios varios) **IDEs Basados en la Nube** (Diversos precios)
- [GitHub Codespaces](https://github.com/features/codespaces) - VS Code completo en tu navegador - [GitHub Codespaces](https://github.com/features/codespaces) - VS Code completo en tu navegador
- [Replit](https://replit.com/) - Excelente para aprender y compartir código - [Replit](https://replit.com/) - Genial para aprender y compartir código
- [StackBlitz](https://stackblitz.com/) - Desarrollo web full-stack instantáneo - [StackBlitz](https://stackblitz.com/) - Desarrollo web full-stack instantáneo
> 💡 **Consejo para empezar**: Comienza con Visual Studio Code es gratis, muy usado en la industria, y tiene una enorme comunidad creando tutoriales y extensiones útiles. > 💡 **Consejo para comenzar**: Empieza con Visual Studio Code es gratis, muy usado en la industria y tiene una comunidad enorme creando tutoriales útiles y extensiones.
### Navegadores Web: Tu Laboratorio Secreto de Desarrollo ### Navegadores Web: Tu Laboratorio Secreto de Desarrollo
Prepárate para que te explote la mente completamente. ¿Sabías que has estado usando navegadores para desplazarte por redes sociales y ver videos? Pues resulta que han estado escondiendo este increíble laboratorio secreto para desarrolladores todo este tiempo, ¡esperando a que lo descubras! Bien, prepárate para que te explote la mente por completo. ¿Sabes cómo has estado usando los navegadores para ver redes sociales y videos? ¡Bueno, resulta que han estado ocultando este increíble laboratorio secreto para desarrolladores todo este tiempo, esperando que lo descubras!
Cada vez que haces clic derecho sobre una página web y seleccionas "Inspeccionar elemento," estás abriendo un mundo oculto de herramientas para desarrolladores que honestamente son más poderosas que algunos programas caros por los que solía pagar cientos de dólares. ¡Es como descubrir que tu cocina común y corriente ha estado ocultando un laboratorio de chef profesional detrás de un panel secreto! Cada vez que clickeas derecho en una página web y seleccionas "Inspeccionar elemento", estás abriendo un mundo oculto de herramientas para desarrolladores que honestamente son más poderosas que algunos softwares caros por los que solía pagar cientos de dólares. ¡Es como descubrir que tu cocina común y corriente ha estado ocultando un laboratorio profesional de chef detrás de un panel secreto!
La primera vez que alguien me mostró las DevTools del navegador, pasé como tres horas simplemente haciendo clic por todos lados y diciendo "¿¡ESPERA, ¿TAMBIÉN PUEDE HACER ESO?!". Literalmente puedes editar cualquier sitio web en tiempo real, ver exactamente qué tan rápido se carga todo, probar cómo se ve tu sitio en diferentes dispositivos e incluso depurar JavaScript como un profesional total. ¡Es absolutamente alucinante! La primera vez que alguien me mostró las herramientas de desarrollo del navegador, pasé como tres horas simplemente haciendo clic por todas partes y diciendo "¡ESPERA, ¿ESO TAMBIÉN PUEDE HACERLO?!" Literalmente puedes editar cualquier sitio web en tiempo real, ver exactamente qué tan rápido carga todo, probar cómo se ve tu sitio en diferentes dispositivos e incluso depurar JavaScript como un profesional total. ¡Es absolutamente impresionante!
**Aquí está la razón por la que los navegadores son tu arma secreta:** **Aquí está la razón por la que los navegadores son tu arma secreta:**
Cuando creas un sitio web o una aplicación web, necesitas ver cómo se ve y se comporta en el mundo real. Los navegadores no solo muestran tu trabajo, sino que también proporcionan retroalimentación detallada sobre rendimiento, accesibilidad y posibles problemas. Cuando creas un sitio web o una aplicación web, necesitas ver cómo se ve y se comporta en el mundo real. Los navegadores no solo muestran tu trabajo, sino que también proporcionan retroalimentación detallada sobre rendimiento, accesibilidad y posibles problemas.
#### Herramientas de Desarrollo del Navegador (DevTools) #### Herramientas para desarrolladores del navegador (DevTools)
Los navegadores modernos incluyen suites completas de desarrollo: Los navegadores modernos incluyen suites completas de desarrollo:
| Categoría de Herramienta | Qué Hace | Caso de Uso Ejemplo | | Categoría de herramienta | Qué hace | Ejemplo de uso |
|--------------------------|----------|---------------------| |--------------------------|----------|----------------|
| **Inspector de Elementos** | Ver y editar HTML/CSS en tiempo real | Ajustar el estilo para ver resultados inmediatos | | **Inspector de elementos** | Ver y editar HTML/CSS en tiempo real | Ajustar estilos para ver resultados inmediatos |
| **Consola** | Ver mensajes de error y probar JavaScript | Depurar problemas y experimentar con código | | **Consola** | Ver mensajes de error y probar JavaScript | Depurar problemas y experimentar con código |
| **Monitor de Red** | Rastrear cómo se cargan los recursos | Optimizar el rendimiento y tiempos de carga | | **Monitor de red** | Rastrear cómo se cargan los recursos | Optimizar el rendimiento y los tiempos de carga |
| **Verificador de Accesibilidad** | Probar diseño inclusivo | Asegurar que tu sitio funcione para todos los usuarios | | **Verificador de accesibilidad** | Probar diseño inclusivo | Asegurar que tu sitio funcione para todos los usuarios |
| **Simulador de Dispositivos** | Previsualizar en diferentes tamaños de pantalla | Probar diseño responsivo sin múltiples dispositivos | | **Simulador de dispositivos** | Previsualizar en diferentes tamaños de pantalla | Probar diseño responsivo sin múltiples dispositivos |
#### Navegadores Recomendados para Desarrollo #### Navegadores recomendados para desarrollo
- **[Chrome](https://developers.google.com/web/tools/chrome-devtools/)** - DevTools estándar de la industria con documentación extensa - **[Chrome](https://developers.google.com/web/tools/chrome-devtools/)** - DevTools estándar de la industria con documentación extensa
- **[Firefox](https://developer.mozilla.org/docs/Tools)** - Excelentes herramientas para CSS Grid y accesibilidad - **[Firefox](https://developer.mozilla.org/docs/Tools)** - Excelentes herramientas para CSS Grid y accesibilidad
- **[Edge](https://docs.microsoft.com/microsoft-edge/devtools-guide-chromium/?WT.mc_id=academic-77807-sagibbon)** - Basado en Chromium con recursos para desarrolladores de Microsoft - **[Edge](https://docs.microsoft.com/microsoft-edge/devtools-guide-chromium/?WT.mc_id=academic-77807-sagibbon)** - Construido sobre Chromium con recursos para desarrolladores de Microsoft
> ⚠️ **Consejo Importante para Pruebas**: ¡Siempre prueba tus sitios web en múltiples navegadores! Lo que funciona perfectamente en Chrome puede verse diferente en Safari o Firefox. Los desarrolladores profesionales prueban en todos los navegadores principales para asegurar experiencias consistentes para los usuarios. > ⚠️ **Consejo importante para pruebas**: ¡Siempre prueba tus sitios web en múltiples navegadores! Lo que funciona perfectamente en Chrome puede verse diferente en Safari o Firefox. Los desarrolladores profesionales prueban en todos los navegadores principales para asegurar experiencias de usuario consistentes.
### Herramientas de Línea de Comandos: Tu Entrada a Súper Poderes de Desarrollador ### Herramientas de línea de comandos: Tu puerta a superpoderes de desarrollador
Bien, tengamos un momento completamente honesto sobre la línea de comandos, porque quiero que escuches esto de alguien que realmente lo entiende. La primera vez que la vi, solo esa pantalla negra aterradora con texto parpadeante, literalmente pensé: "¡No, absolutamente no! Esto parece algo de una película de hackers de los años 80, ¡y definitivamente no soy lo suficientemente inteligente para esto!" 😅 Muy bien, tengamos un momento completamente honesto aquí sobre la línea de comandos, porque quiero que lo escuches de alguien que realmente lo entiende. La primera vez que la vi esa pantalla negra y aterradora con texto parpadeante literalmente pensé, "No, absolutamente no. ¡Esto parece algo de una película de hackers de los años 80 y definitivamente no soy lo suficientemente inteligente para esto!" 😅
Pero aquí está lo que desearía que alguien me hubiera dicho en ese entonces, y lo que te estoy diciendo ahora: la línea de comandos no da miedo; en realidad es como tener una conversación directa con tu computadora. Piensa en ello como la diferencia entre pedir comida a través de una aplicación elegante con fotos y menús (que es agradable y fácil) versus entrar a tu restaurante local favorito donde el chef sabe exactamente qué te gusta y puede preparar algo perfecto solo porque dices "sorpréndeme con algo increíble". Pero aquí está lo que desearía que alguien me hubiera dicho entonces, y lo que te digo ahora: la línea de comandos no da miedo, en realidad es como tener una conversación directa con tu computadora. Piensa en la diferencia entre pedir comida a través de una aplicación elegante con fotos y menús (lo cual es agradable y fácil) versus entrar a tu restaurante local favorito donde el chef sabe exactamente lo que te gusta y puede preparar algo perfecto solo con que digas "sorpréndeme con algo increíble."
La línea de comandos es donde los desarrolladores se sienten como magos absolutos. Escribes algunas palabras aparentemente mágicas (bueno, son comandos, pero se sienten mágicos), presionas enter y ¡BUM! — has creado estructuras enteras de proyectos, instalado herramientas poderosas de todo el mundo o desplegado tu app en Internet para que millones la vean. ¡Una vez que pruebas ese poder, honestamente es bastante adictivo! La línea de comandos es donde los desarrolladores se sienten como magos absolutos. Tecleas unas pocas palabras que parecen mágicas (bueno, son solo comandos, pero se sienten mágicos), presionas enter y ¡BANG! — has creado estructuras de proyectos enteros, instalado herramientas poderosas de todo el mundo o desplegado tu aplicación en internet para que millones de personas la vean. Una vez que pruebas ese poder, honestamente es bastante adictivo.
**Por qué la línea de comandos se convertirá en tu herramienta favorita:** **Por qué la línea de comandos se convertirá en tu herramienta favorita:**
Aunque las interfaces gráficas son geniales para muchas tareas, la línea de comandos destaca en automatización, precisión y velocidad. Muchas herramientas de desarrollo funcionan principalmente a través de interfaces de línea de comandos, y aprender a usarlas eficientemente puede mejorar tu productividad dramáticamente. Aunque las interfaces gráficas son geniales para muchas tareas, la línea de comandos sobresale en automatización, precisión y velocidad. Muchas herramientas de desarrollo funcionan principalmente a través de interfaces de línea de comandos, y aprender a usarlas eficientemente puede mejorar drásticamente tu productividad.
```bash ```bash
# Paso 1: Crear y navegar al directorio del proyecto # Paso 1: Crear y navegar al directorio del proyecto
@ -604,7 +604,7 @@ cd my-awesome-website
**Esto es lo que hace este código:** **Esto es lo que hace este código:**
- **Crear** un nuevo directorio llamado "my-awesome-website" para tu proyecto - **Crear** un nuevo directorio llamado "my-awesome-website" para tu proyecto
- **Navegar** hacia el directorio recién creado para comenzar a trabajar - **Navegar** dentro del directorio recién creado para empezar a trabajar
```bash ```bash
# Paso 2: Inicializar el proyecto con package.json # Paso 2: Inicializar el proyecto con package.json
@ -615,11 +615,11 @@ npm install --save-dev vite prettier eslint
npm install --save-dev @eslint/js npm install --save-dev @eslint/js
``` ```
**Paso a paso, esto es lo que sucede:** **Paso a paso, esto es lo que está pasando:**
- **Inicializar** un nuevo proyecto Node.js con configuraciones por defecto usando `npm init -y` - **Inicializar** un nuevo proyecto Node.js con configuraciones predeterminadas usando `npm init -y`
- **Instalar** Vite como una herramienta moderna de construcción para desarrollo rápido y compilaciones de producción - **Instalar** Vite como herramienta moderna de construcción para desarrollos y compilaciones rápidas
- **Agregar** Prettier para formateo automático de código y ESLint para verificación de calidad de código - **Agregar** Prettier para formateo automático de código y ESLint para revisiones de calidad de código
- **Usar** la bandera `--save-dev` para marcar estas como dependencias solo para desarrollo - **Usar** la bandera `--save-dev` para marcar estas dependencias solo para desarrollo
```bash ```bash
# Paso 3: Crear la estructura del proyecto y los archivos # Paso 3: Crear la estructura del proyecto y los archivos
@ -632,103 +632,103 @@ npx vite
**En lo anterior, hemos:** **En lo anterior, hemos:**
- **Organizado** nuestro proyecto creando carpetas separadas para código fuente y recursos - **Organizado** nuestro proyecto creando carpetas separadas para código fuente y recursos
- **Generado** un archivo HTML básico con la estructura correcta del documento - **Generado** un archivo HTML básico con estructura adecuada del documento
- **Iniciado** el servidor de desarrollo Vite para recarga en vivo y reemplazo en caliente de módulos - **Iniciado** el servidor de desarrollo de Vite para recarga en vivo y reemplazo en caliente de módulos
#### Herramientas Esenciales de Línea de Comandos para Desarrollo Web #### Herramientas esenciales de línea de comandos para desarrollo web
| Herramienta | Propósito | Por qué la Necesitas | | Herramienta | Propósito | Por qué la necesitas |
|-------------|-----------|----------------------| |-------------|-----------|---------------------|
| **[Git](https://git-scm.com/)** | Control de versiones | Rastrear cambios, colaborar con otros, respaldar tu trabajo | | **[Git](https://git-scm.com/)** | Control de versiones | Rastrear cambios, colaborar y respaldar tu trabajo |
| **[Node.js & npm](https://nodejs.org/)** | Entorno de ejecución JavaScript y gestor de paquetes | Ejecutar JavaScript fuera de navegadores, instalar herramientas modernas de desarrollo | | **[Node.js & npm](https://nodejs.org/)** | Entorno de ejecución JavaScript y gestión de paquetes | Ejecutar JavaScript fuera del navegador e instalar herramientas modernas |
| **[Vite](https://vitejs.dev/)** | Herramienta de construcción y servidor de desarrollo | Desarrollo ultrarrápido con reemplazo en caliente de módulos | | **[Vite](https://vitejs.dev/)** | Herramienta de compilación y servidor de desarrollo | Desarrollo súper rápido con reemplazo en caliente de módulos |
| **[ESLint](https://eslint.org/)** | Calidad de código | Encontrar y corregir problemas automáticamente en tu JavaScript | | **[ESLint](https://eslint.org/)** | Calidad de código | Encontrar y corregir automáticamente problemas en tu JavaScript |
| **[Prettier](https://prettier.io/)** | Formateo de código | Mantener tu código consistentemente formateado y legible | | **[Prettier](https://prettier.io/)** | Formateo del código | Mantener tu código con formato consistente y legible |
#### Opciones Específicas por Plataforma #### Opciones específicas por plataforma
**Windows:** **Windows:**
- **[Windows Terminal](https://docs.microsoft.com/windows/terminal/?WT.mc_id=academic-77807-sagibbon)** - Terminal moderno con muchas funciones - **[Windows Terminal](https://docs.microsoft.com/windows/terminal/?WT.mc_id=academic-77807-sagibbon)** - Terminal moderno y con muchas funciones
- **[PowerShell](https://docs.microsoft.com/powershell/?WT.mc_id=academic-77807-sagibbon)** 💻 - Entorno potente para scripting - **[PowerShell](https://docs.microsoft.com/powershell/?WT.mc_id=academic-77807-sagibbon)** 💻 - Entorno potente de scripting
- **[Command Prompt](https://docs.microsoft.com/windows-server/administration/windows-commands/?WT.mc_id=academic-77807-sagibbon)** 💻 - Línea de comandos tradicional de Windows - **[Command Prompt](https://learn.microsoft.com/windows-server/administration/windows-commands/windows-commands)** 💻 - Línea de comandos tradicional de Windows
**macOS:** **macOS:**
- **[Terminal](https://support.apple.com/guide/terminal/)** 💻 - Aplicación de terminal integrada - **[Terminal](https://support.apple.com/guide/terminal/)** 💻 - Aplicación de terminal integrada
- **[iTerm2](https://iterm2.com/)** - Terminal mejorado con funciones avanzadas - **[iTerm2](https://iterm2.com/)** - Terminal mejorado con funciones avanzadas
**Linux:** **Linux:**
- **[Bash](https://www.gnu.org/software/bash/)** 💻 - Shell estándar en Linux - **[Bash](https://www.gnu.org/software/bash/)** 💻 - Shell estándar de Linux
- **[KDE Konsole](https://docs.kde.org/trunk5/en/konsole/konsole/index.html)** - Emulador de terminal avanzado - **[KDE Konsole](https://docs.kde.org/trunk5/en/konsole/konsole/index.html)** - Emulador de terminal avanzado
> 💻 = Preinstalado en el sistema operativo > 💻 = Preinstalado en el sistema operativo
> 🎯 **Ruta de Aprendizaje**: Comienza con comandos básicos como `cd` (cambiar directorio), `ls` o `dir` (listar archivos) y `mkdir` (crear carpeta). Practica con comandos modernos de flujo de trabajo como `npm install`, `git status` y `code .` (abre el directorio actual en VS Code). Conforme te sientas más cómodo, naturalmente aprenderás comandos más avanzados y técnicas de automatización. > 🎯 **Camino de aprendizaje**: Comienza con comandos básicos como `cd` (cambiar directorio), `ls` o `dir` (listar archivos), y `mkdir` (crear carpeta). Practica con comandos modernos de flujo de trabajo como `npm install`, `git status`, y `code .` (abre el directorio actual en VS Code). A medida que te sientas más cómodo, naturalmente aprenderás comandos más avanzados y técnicas de automatización.
### Documentación: Tu Mentor de Aprendizaje Siempre Disponible ### Documentación: Tu mentor de aprendizaje siempre disponible
Ok, déjame compartir un pequeño secreto que te hará sentir mucho mejor sobre ser un principiante: incluso los desarrolladores más experimentados pasan gran parte de su tiempo leyendo documentación. ¡Y no es porque no sepan lo que hacen, sino que es una señal de sabiduría! Bien, déjame compartirte un pequeño secreto que te hará sentir mucho mejor por ser principiante: incluso los desarrolladores más experimentados pasan gran parte de su tiempo leyendo documentación. Y no es porque no sepan lo que están haciendo; ¡es en realidad un signo de sabiduría!
Piensa en la documentación como tener acceso a los profesores más pacientes y expertos del mundo, disponibles las 24 horas del día, los 7 días de la semana. ¿Atascado en un problema a las 2 a.m.? La documentación está allí con un cálido abrazo virtual y exactamente la respuesta que necesitas. ¿Quieres aprender sobre alguna característica nueva genial de la que todos hablan? La documentación te respalda con ejemplos paso a paso. ¿Intentas entender por qué algo funciona de cierta manera? Exacto, la documentación está lista para explicártelo de una forma que finalmente lo haga clic en tu cabeza. Piensa en la documentación como tener acceso a los maestros más pacientes y conocedores del mundo, disponibles 24/7. ¿Atascado con un problema a las 2 AM? La documentación está ahí con un cálido abrazo virtual y justo la respuesta que necesitas. ¿Quieres aprender sobre alguna función genial de la que todos hablan? La documentación te respalda con ejemplos paso a paso. ¿Intentas entender por qué algo funciona de una manera determinada? Lo adivinaste: la documentación está lista para explicártelo de una forma que finalmente tenga sentido.
Aquí hay algo que cambió por completo mi perspectiva: el mundo del desarrollo web se mueve increíblemente rápido, y nadie (y digo absolutamente nadie) tiene todo memorizado. He visto a desarrolladores seniors con más de 15 años de experiencia buscar sintaxis básica, y ¿sabes qué? Eso no es vergonzoso, ¡es inteligente! No se trata de tener una memoria perfecta; se trata de saber dónde encontrar respuestas confiables rápidamente y entender cómo aplicarlas. Aquí hay algo que realmente cambió mi perspectiva: el mundo del desarrollo web se mueve increíblemente rápido y nadie (¡absolutamente nadie!) recuerda todo de memoria. He visto a desarrolladores sénior con más de 15 años de experiencia buscar sintaxis básica, ¿y sabes qué? Eso no es vergonzoso, ¡es inteligente! No se trata de tener memoria perfecta, sino de saber dónde encontrar respuestas confiables rápidamente y cómo aplicarlas.
**Aquí es donde sucede la verdadera magia:** **Aquí es donde ocurre la verdadera magia:**
Los desarrolladores profesionales pasan una parte significativa de su tiempo leyendo documentación, no porque no sepan lo que hacen, sino porque el panorama del desarrollo web evoluciona tan rápido que mantenerse al día requiere aprendizaje continuo. La buena documentación te ayuda a entender no solo *cómo* usar algo, sino *por qué* y *cuándo* usarlo. Los desarrolladores profesionales dedican una parte significativa de su tiempo a leer documentación, no porque no sepan lo que hacen, sino porque el desarrollo web evoluciona tan rápido que mantenerse actualizado requiere aprendizaje continuo. La buena documentación te ayuda a entender no solo *cómo* usar algo, sino *por qué* y *cuándo* usarlo.
#### Recursos Esenciales de Documentación #### Recursos esenciales de documentación
**[Mozilla Developer Network (MDN)](https://developer.mozilla.org/docs/Web)** **[Mozilla Developer Network (MDN)](https://developer.mozilla.org/docs/Web)**
- El estándar de oro para documentación de tecnologías web - El estándar de oro para documentación de tecnologías web
- Guías completas para HTML, CSS y JavaScript - Guías completas para HTML, CSS y JavaScript
- Incluye información sobre compatibilidad entre navegadores - Incluye información de compatibilidad entre navegadores
- Cuenta con ejemplos prácticos y demostraciones interactivas - Presenta ejemplos prácticos y demos interactivas
**[Web.dev](https://web.dev)** (por Google) **[Web.dev](https://web.dev)** (por Google)
- Mejores prácticas modernas para desarrollo web - Mejores prácticas modernas de desarrollo web
- Guías de optimización de rendimiento - Guías de optimización de rendimiento
- Principios de accesibilidad y diseño inclusivo - Principios de accesibilidad y diseño inclusivo
- Estudios de caso de proyectos del mundo real - Estudios de caso de proyectos reales
**[Microsoft Developer Documentation](https://docs.microsoft.com/microsoft-edge/#microsoft-edge-for-developers)** **[Documentación para desarrolladores de Microsoft](https://docs.microsoft.com/microsoft-edge/#microsoft-edge-for-developers)**
- Recursos de desarrollo para el navegador Edge - Recursos para desarrollo en el navegador Edge
- Guías para Progressive Web Apps - Guías para Progressive Web Apps
- Información para desarrollo multiplataforma - Perspectivas de desarrollo multiplataforma
**[Frontend Masters Learning Paths](https://frontendmasters.com/learn/)** **[Rutas de aprendizaje Frontend Masters](https://frontendmasters.com/learn/)**
- Currículos estructurados de aprendizaje - Currículos estructurados de aprendizaje
- Cursos en video de expertos de la industria - Cursos en video de expertos de la industria
- Ejercicios prácticos de codificación - Ejercicios prácticos de codificación
> 📚 **Estrategia de Estudio**: No intentes memorizar la documentación; en su lugar, aprende a navegarla eficientemente. Marca referencias que uses frecuentemente y practica usar las funciones de búsqueda para encontrar información específica rápidamente. > 📚 **Estrategia de estudio**: No trates de memorizar la documentación, en cambio, aprende a navegarla eficientemente. Marca como favoritos las referencias que uses frecuentemente y practica usar las funciones de búsqueda para encontrar información específica rápido.
### 🔧 **Chequeo de Dominio de Herramientas: ¿Qué Resuena Contigo?** ### 🔧 **Chequeo de dominio de herramientas: ¿Qué te resuena?**
**Tómate un momento para considerar:** **Tómate un momento para considerar:**
- ¿Con qué herramienta estás más emocionado de probar primero? (¡No hay respuesta equivocada!) - ¿Cuál herramienta te emociona más probar primero? (¡No hay respuesta incorrecta!)
- ¿La línea de comandos todavía te intimida o te da curiosidad? - ¿La línea de comandos todavía te intimida o te da curiosidad?
- ¿Puedes imaginar usar las DevTools del navegador para echar un vistazo tras el telón de tus sitios web favoritos? - ¿Puedes imaginar usar las DevTools del navegador para asomarte detrás del telón de tus sitios web favoritos?
```mermaid ```mermaid
pie title "Tiempo de Desarrollador Pasado con Herramientas" pie title "Tiempo que los desarrolladores pasan con las herramientas"
"Editor de Código" : 40 "Editor de código" : 40
"Pruebas en Navegador" : 25 "Pruebas en navegador" : 25
"Línea de Comandos" : 15 "Línea de comandos" : 15
"Lectura de Documentación" : 15 "Leyendo documentación" : 15
"Depuración" : 5 "Depuración" : 5
``` ```
> **Dato divertido**: La mayoría de los desarrolladores pasan aproximadamente el 40% de su tiempo en su editor de código, pero observa cuánto tiempo se va en pruebas, aprendizaje y resolución de problemas. Programar no es solo escribir código — es crear experiencias. > **Dato divertido**: La mayoría de los desarrolladores pasan cerca del 40% de su tiempo en el editor de código, pero nota cuánto tiempo va a pruebas, aprendizaje y resolución de problemas. Programar no es solo escribir código, ¡es crear experiencias!
**Tema para reflexionar**: Aquí hay algo interesante para pensar ¿cómo crees que las herramientas para construir sitios web (desarrollo) podrían ser diferentes de las herramientas para diseñar cómo se ven (diseño)? Es como la diferencia entre ser un arquitecto que diseña una casa hermosa y el contratista que realmente la construye. ¡Ambos son cruciales, pero necesitan diferentes cajas de herramientas! Este tipo de pensamiento te ayudará a ver el panorama completo de cómo los sitios web cobran vida. **Para reflexionar**: Aquí tienes algo interesante para pensar: ¿cómo crees que las herramientas para construir sitios web (desarrollo) pueden ser diferentes de las herramientas para diseñar cómo se ven (diseño)? Es como la diferencia entre ser un arquitecto que diseña una casa hermosa y el contratista que realmente la construye. ¡Ambos son cruciales, pero necesitan cajas de herramientas diferentes! Este tipo de pensamiento te ayudará a ver el panorama completo de cómo cobran vida los sitios web.
## Desafío del Agente GitHub Copilot 🚀 ## Desafío GitHub Copilot Agent 🚀
Usa el modo Agente para completar el siguiente desafío: Usa el modo Agente para completar el siguiente desafío:
**Descripción:** Explora las características de un editor de código moderno o IDE y demuestra cómo puede mejorar tu flujo de trabajo como desarrollador web. **Descripción:** Explora las características de un editor de código moderno o IDE y demuestra cómo puede mejorar tu flujo de trabajo como desarrollador web.
**Prompt:** Elige un editor de código o IDE (como Visual Studio Code, WebStorm, o un IDE basado en la nube). Enumera tres características o extensiones que te ayuden a escribir, depurar o mantener código de forma más eficiente. Para cada una, proporciona una breve explicación de cómo beneficia tu flujo de trabajo. **Instrucción:** Elige un editor de código o IDE (como Visual Studio Code, WebStorm o un IDE basado en la nube). Enumera tres características o extensiones que te ayuden a escribir, depurar o mantener código de manera más eficiente. Para cada una, proporciona una breve explicación de cómo beneficia tu flujo de trabajo.
--- ---
@ -736,121 +736,121 @@ Usa el modo Agente para completar el siguiente desafío:
**Muy bien, detective, ¿listo para tu primer caso?** **Muy bien, detective, ¿listo para tu primer caso?**
Ahora que tienes esta base increíble, tengo una aventura que te ayudará a ver lo increíblemente diverso y fascinante que es realmente el mundo de la programación. Y escucha esto no es sobre escribir código todavía, ¡así que no hay presión! Piensa en ti mismo como un detective de lenguajes de programación en tu primer caso emocionante. Ahora que tienes esta base increíble, tengo una aventura que te ayudará a ver cuán increíblemente diverso y fascinante es el mundo de la programación. Y escucha, esto no es aún para escribir código, ¡así que sin presiones! Piensa en ti mismo como un detective de lenguajes de programación en tu primer emocionante caso.
**Tu misión, si decides aceptarla:** **Tu misión, si decides aceptarla:**
1. **Conviértete en explorador de lenguajes**: Elige tres lenguajes de programación de universos completamente distintos tal vez uno que construya sitios web, otro que cree apps móviles y otro que analice datos para científicos. Busca ejemplos de la misma tarea sencilla escrita en cada lenguaje. ¡Te prometo que te vas a sorprender de lo diferentes que pueden verse mientras hacen exactamente lo mismo! 1. **Conviértete en explorador de lenguajes**: Escoge tres lenguajes de programación de universos completamente diferentes — tal vez uno que construya sitios web, otro que cree apps móviles y otro que procese datos para científicos. Busca ejemplos de una misma tarea simple escrita en cada lenguaje. ¡Te prometo que te asombrarás de lo diferentes que pueden verse mientras hacen exactamente lo mismo!
2. **Descubre sus historias de origen**: ¿Qué hace especial a cada lenguaje? Aquí hay un dato genial: cada lenguaje de programación fue creado porque alguien dijo, "¿Sabes qué? Tiene que haber una mejor manera de resolver este problema específico." ¿Puedes descubrir cuáles fueron esos problemas? ¡Algunas de esas historias son genuinamente fascinantes! 2. **Descubre sus historias de origen**: ¿Qué hace especial a cada lenguaje? Aquí un dato genial: cada lenguaje de programación fue creado porque alguien pensó, "¿Sabes qué? Tiene que haber una mejor forma de resolver este problema específico." ¿Puedes descubrir cuáles fueron esos problemas? Algunas de estas historias son genuinamente fascinantes.
3. **Conoce las comunidades**: Observa qué tan acogedora y apasionada es la comunidad de cada lenguaje. Algunas tienen millones de desarrolladores compartiendo conocimiento y ayudándose mutuamente, otras son más pequeñas pero increíblemente unidas y solidarias. ¡Te encantará ver las diferentes personalidades que tienen estas comunidades! 3. **Conoce las comunidades**: Explora cuán acogedora y apasionada es la comunidad de cada lenguaje. Algunas tienen millones de desarrolladores compartiendo conocimientos y ayudándose mutuamente, otras son más pequeñas pero increíblemente unidas y solidarias. ¡Te encantará ver las diferentes personalidades de estas comunidades!
4. **Sigue tu instinto**: ¿Qué lenguaje te parece más accesible ahora mismo? No te estreses por tomar la elección "perfecta" — simplemente escucha a tus instintos. Honestamente, no hay respuesta incorrecta aquí, y siempre puedes explorar otros después. 4. **Sigue tu instinto**: ¿Cuál lenguaje te parece más accesible ahora mismo? No te estreses por elegir el "perfecto" — solo escucha tus corazonadas. Honestamente, no hay respuesta incorrecta y siempre puedes explorar otros después.
**Trabajo extra de detective**: Trata de descubrir qué sitios web o apps importantes están construidas con cada lenguaje. ¡Te garantizo que te sorprenderá saber qué impulsa Instagram, Netflix o ese juego móvil que no puedes dejar de jugar! **Trabajo extra de detective**: Intenta descubrir qué sitios web o apps importantes están construidos con cada lenguaje. Te garantizo que te sorprenderás al saber qué impulsa Instagram, Netflix o ese juego móvil al que no puedes dejar de jugar.
> 💡 **Recuerda**: No estás tratando de volverte un experto en ninguno de estos lenguajes hoy. Solo estás conociendo el vecindario antes de decidir dónde quieres establecerte. Tómate tu tiempo, diviértete y deja que tu curiosidad te guíe. > 💡 **Recuerda**: No estás tratando de volverte experto en ninguno de estos lenguajes hoy. Solo estás conociendo el vecindario antes de decidir dónde quieres establecerte. Tómate tu tiempo, diviértete y deja que tu curiosidad te guíe.
## ¡Celebremos lo que has descubierto! ## ¡Celebremos lo que has descubierto!
¡Santo cielo, has absorbido tanta información increíble hoy! Estoy genuinamente emocionado de ver cuánto de este asombroso viaje se ha quedado contigo. Y recuerda esto no es un examen donde necesites hacerlo todo perfecto. Es más como una celebración de todas las cosas geniales que has aprendido sobre este fascinante mundo en el que estás a punto de sumergirte. ¡Santo cielo, has absorbido tanta información increíble hoy! Estoy genuinamente emocionado de ver cuánto de este increíble viaje se ha quedado contigo. Y recuerda — esto no es un examen donde necesitas hacerlo todo perfecto. Es más como una celebración de todas las cosas geniales que has aprendido sobre este fascinante mundo en el que estás a punto de sumergirte.
[Toma el quiz posterior a la lección](https://ff-quizzes.netlify.app/web/) [Realiza el quiz post-lección](https://ff-quizzes.netlify.app/web/)
## Repaso & Autoestudio ## Revisión y autoestudio
**Tómate tu tiempo para explorar y divertirte con ello!** **Tómate tu tiempo para explorar y divertirte con ello!**
Has recorrido mucho camino hoy, ¡y eso es algo de lo que estar orgulloso! Ahora viene la parte divertida: explorar los temas que despertaron tu curiosidad. Recuerda, esto no es tarea ¡es una aventura! Has avanzado mucho hoy, ¡y eso es algo de lo que estar orgulloso! Ahora viene la parte divertida: explorar los temas que despertaron tu curiosidad. Recuerda, esto no es tarea ¡es una aventura!
**Profundiza en lo que te entusiasma:** **Profundiza en lo que te entusiasma:**
**Manos a la obra con los lenguajes de programación:** **Ponte manos a la obra con los lenguajes de programación:**
- Visita los sitios oficiales de 2-3 lenguajes que llamaron tu atención. ¡Cada uno tiene su propia personalidad e historia! - Visita los sitios web oficiales de 2-3 lenguajes que llamaron tu atención. ¡Cada uno tiene su propia personalidad e historia!
- Prueba algunos entornos de programación en línea como [CodePen](https://codepen.io/), [JSFiddle](https://jsfiddle.net/), o [Replit](https://replit.com/). No temas experimentar ¡no puedes romper nada! - Prueba algunos entornos de codificación en línea como [CodePen](https://codepen.io/), [JSFiddle](https://jsfiddle.net/), o [Replit](https://replit.com/). No tengas miedo de experimentar ¡no puedes romper nada!
- Lee sobre cómo surgió tu lenguaje favorito. En serio, algunas de estas historias de origen son fascinantes y te ayudarán a entender por qué los lenguajes funcionan de la manera en que lo hacen. - Lee sobre cómo surgió tu lenguaje favorito. En serio, algunas de estas historias de origen son fascinantes y te ayudarán a entender por qué los lenguajes funcionan como lo hacen.
**Familiarízate con tus nuevas herramientas:** **Familiarízate con tus nuevas herramientas:**
- Descarga Visual Studio Code si aún no lo has hecho ¡es gratis y te va a encantar! - Descarga Visual Studio Code si aún no lo has hecho ¡es gratis y te encantará!
- Dedica unos minutos a navegar por el mercado de Extensiones. ¡Es como una tienda de apps para tu editor de código! - Dedica unos minutos a explorar el mercado de Extensiones. ¡Es como una tienda de apps para tu editor de código!
- Abre las Herramientas de Desarrollo de tu navegador y simplemente haz clic por ahí. No te preocupes por entenderlo todo solo familiarízate con lo que hay. - Abre las Herramientas de Desarrollo de tu navegador y simplemente haz clic por ahí. No te preocupes por entender todo solo familiarízate con lo que hay.
**Únete a la comunidad:** **Únete a la comunidad:**
- Sigue algunas comunidades de desarrolladores en [Dev.to](https://dev.to/), [Stack Overflow](https://stackoverflow.com/), o [GitHub](https://github.com/). ¡La comunidad de programación es increíblemente acogedora con los principiantes! - Sigue algunas comunidades de desarrolladores en [Dev.to](https://dev.to/), [Stack Overflow](https://stackoverflow.com/), o [GitHub](https://github.com/). ¡La comunidad de programación es increíblemente acogedora con los recién llegados!
- Mira algunos videos de programación para principiantes en YouTube. Hay muchos creadores geniales que recuerdan cómo es empezar desde cero. - Mira algunos videos para principiantes en YouTube. Hay muchos creadores excelentes que recuerdan lo que es estar empezando.
- Considera unirte a encuentros locales o comunidades en línea. Créeme, a los desarrolladores les encanta ayudar a los que están empezando. - Considera unirte a encuentros locales o comunidades en línea. Confía en mí, ¡a los desarrolladores les encanta ayudar a los recién llegados!
> 🎯 **Escucha, esto es lo que quiero que recuerdes**: No se espera que te conviertas en un mago de la programación de la noche a la mañana. Ahora mismo, solo estás conociendo este increíble nuevo mundo del que vas a formar parte. Tómate tu tiempo, disfruta el camino y recuerda cada desarrollador que admiras alguna vez estuvo exactamente donde tú estás ahora, emocionado y tal vez un poco abrumado. Eso es totalmente normal y significa que lo estás haciendo bien. > 🎯 **Escucha, esto es lo que quiero que recuerdes**: ¡No se espera que te conviertas en un mago de la programación de la noche a la mañana! Ahora mismo solo estás conociendo este increíble nuevo mundo del que vas a formar parte. Tómate tu tiempo, disfruta el viaje y recuerda todos los desarrolladores que admiras alguna vez estuvieron sentados exactamente donde tú estás ahora, sintiéndose emocionados y tal vez un poco abrumados. Eso es totalmente normal, y significa que lo estás haciendo bien.
## Tarea ## Assignment
[Reading the Docs](assignment.md) [Reading the Docs](assignment.md)
> 💡 **Un pequeño empujón para tu tarea**: ¡Me encantaría que exploraras algunas herramientas que no hemos cubierto todavía! Olvídate de los editores, navegadores y herramientas de línea de comandos que ya mencionamos hay todo un universo increíble de herramientas de desarrollo esperando a ser descubierto. Busca aquellas que estén activamente mantenidas y tengan comunidades vibrantes y colaborativas (normalmente estas tienen los mejores tutoriales y las personas más amables cuando inevitablemente te atasques y necesites un mano amiga). > 💡 **Un pequeño empujón para tu tarea**: ¡Me encantaría que explorases algunas herramientas que aún no hemos cubierto! Salta los editores, navegadores y herramientas de línea de comandos de los que ya hablamos hay todo un universo increíble de herramientas de desarrollo esperando a ser descubiertas. Busca aquellas que estén activamente mantenidas y tengan comunidades vibrantes y solidarias (estas suelen tener los mejores tutoriales y la gente más amable cuando inevitablemente te atasques y necesites una mano amiga).
--- ---
## 🚀 Tu cronograma de viaje en la programación ## 🚀 Tu línea de tiempo para el viaje de programación
### ⚡ **Qué puedes hacer en los próximos 5 minutos** ### ⚡ **Lo que puedes hacer en los próximos 5 minutos**
- [ ] Marcar en favoritos 2-3 sitios web de lenguajes de programación que llamaron tu atención - [ ] Anotar en favoritos 2-3 sitios web de lenguajes de programación que llamaron tu atención
- [ ] Descargar Visual Studio Code si aún no lo has hecho - [ ] Descargar Visual Studio Code si aún no lo has hecho
- [ ] Abrir las DevTools del navegador (F12) y hacer clic alrededor de cualquier sitio web - [ ] Abrir las DevTools del navegador (F12) y hacer clic por cualquier sitio web
- [ ] Unirte a una comunidad de programación (Dev.to, Reddit r/webdev, o Stack Overflow) - [ ] Unirte a una comunidad de programadores (Dev.to, Reddit r/webdev o Stack Overflow)
### ⏰ **Qué puedes lograr esta hora** ### ⏰ **Lo que puedes lograr en esta hora**
- [ ] Completar el cuestionario posterior a la lección y reflexionar sobre tus respuestas - [ ] Completar el cuestionario posterior a la lección y reflexionar sobre tus respuestas
- [ ] Configurar VS Code con la extensión GitHub Copilot - [ ] Configurar VS Code con la extensión GitHub Copilot
- [ ] Probar un ejemplo de "Hello World" en 2 lenguajes de programación diferentes en línea - [ ] Probar un ejemplo de "Hello World" en 2 lenguajes de programación diferentes en línea
- [ ] Ver un video "Un día en la vida de un desarrollador" en YouTube - [ ] Ver un video de "Un día en la vida de un desarrollador" en YouTube
- [ ] Comenzar tu investigación detective sobre lenguajes de programación (del reto) - [ ] Comenzar tu investigación de detective de lenguajes de programación (del reto)
### 📅 **Tu aventura de una semana** ### 📅 **Tu aventura de una semana**
- [ ] Completar la tarea y explorar 3 nuevas herramientas de desarrollo - [ ] Completar la tarea y explorar 3 nuevas herramientas de desarrollo
- [ ] Seguir a 5 desarrolladores o cuentas de programación en redes sociales - [ ] Seguir a 5 desarrolladores o cuentas de programación en redes sociales
- [ ] Intentar construir algo pequeño en CodePen o Replit (¡incluso solo un "Hola, [Tu Nombre]!") - [ ] Intentar construir algo pequeño en CodePen o Replit (incluso solo "¡Hola, [Tu Nombre]!")
- [ ] Leer un post en un blog de desarrolladores acerca del recorrido de alguien más en programación - [ ] Leer una entrada de blog de un desarrollador sobre su experiencia programando
- [ ] Unirte a un encuentro virtual o ver una charla sobre programación - [ ] Unirte a un meetup virtual o ver una charla sobre programación
- [ ] Comenzar a aprender tu lenguaje elegido con tutoriales en línea - [ ] Comenzar a aprender el lenguaje que elegiste con tutoriales en línea
### 🗓️ **Tu transformación de un mes** ### 🗓️ **Tu transformación de un mes**
- [ ] Construir tu primer proyecto pequeño (¡incluso una página web simple cuenta!) - [ ] Construir tu primer proyecto pequeño (¡incluso una página web simple cuenta!)
- [ ] Contribuir a un proyecto de código abierto (empieza con correcciones de documentación) - [ ] Contribuir a un proyecto de código abierto (comienza con correcciones en la documentación)
- [ ] Guiar a alguien que apenas está empezando su viaje en la programación - [ ] Ser mentor de alguien que esté empezando su viaje en la programación
- [ ] Crear tu sitio web portafolio de desarrollador - [ ] Crear tu sitio web portafolio de desarrollador
- [ ] Conectarte con comunidades locales de desarrolladores o grupos de estudio - [ ] Conectarte con comunidades locales de desarrolladores o grupos de estudio
- [ ] Comenzar a planear tu siguiente meta de aprendizaje - [ ] Comenzar a planificar tu próximo hito de aprendizaje
### 🎯 **Reflexión final** ### 🎯 **Chequeo final de reflexión**
**Antes de seguir, tómate un momento para celebrar:** **Antes de avanzar, tómate un momento para celebrar:**
- ¿Qué fue lo que más te entusiasmó hoy sobre la programación? - ¿Qué es algo de la programación que te emocionó hoy?
- ¿Qué herramienta o concepto quieres explorar primero? - ¿Qué herramienta o concepto quieres explorar primero?
- ¿Cómo te sientes al comenzar este viaje en la programación? - ¿Cómo te sientes acerca de empezar este viaje en programación?
- ¿Qué pregunta te gustaría hacerle a un desarrollador ahora mismo? - ¿Qué pregunta te gustaría hacerle a un desarrollador ahora mismo?
```mermaid ```mermaid
journey journey
title Tu Viaje de Construcción de Confianza title Tu viaje para construir confianza
section Hoy section Hoy
Curious: 3: You Curious: 3: You
Overwhelmed: 4: You Overwhelmed: 4: You
Excited: 5: You Excited: 5: You
section Esta Semana section Esta semana
Exploring: 4: You Exploring: 4: You
Learning: 5: You Learning: 5: You
Connecting: 4: You Connecting: 4: You
section Próximo Mes section Próximo mes
Building: 5: You Building: 5: You
Confident: 5: You Confident: 5: You
Helping Others: 5: You Helping Others: 5: You
``` ```
> 🌟 **Recuerda**: Todo experto fue alguna vez un principiante. Todo desarrollador senior se sintió alguna vez como tú te sientes ahora emocionado, quizá un poco abrumado, y definitivamente curioso sobre lo que es posible. Estás en una compañía increíble y este viaje va a ser increíble. ¡Bienvenido al maravilloso mundo de la programación! 🎉 > 🌟 **Recuerda**: Todo experto fue una vez un principiante. Todo desarrollador senior alguna vez se sintió exactamente como tú ahora emocionado, quizás un poco abrumado, y definitivamente curioso sobre lo que es posible. Estás en una compañía increíble, y este viaje va a ser increíble. ¡Bienvenido al maravilloso mundo de la programación! 🎉
--- ---
<!-- CO-OP TRANSLATOR DISCLAIMER START --> <!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Descargo de responsabilidad**: **Descargo de responsabilidad**:
Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos responsabilizamos por malentendidos o interpretaciones erróneas derivadas del uso de esta traducción. Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que resulten del uso de esta traducción.
<!-- CO-OP TRANSLATOR DISCLAIMER END --> <!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -2,15 +2,15 @@
## Descripción del Proyecto ## Descripción del Proyecto
Este es un repositorio de currículo educativo para enseñar los fundamentos del desarrollo web a principiantes. El currículo es un curso integral de 12 semanas desarrollado por Microsoft Cloud Advocates, que incluye 24 lecciones prácticas que abarcan JavaScript, CSS y HTML. Este es un repositorio curricular educativo para enseñar los fundamentos del desarrollo web a principiantes. El plan de estudios es un curso completo de 12 semanas desarrollado por Microsoft Cloud Advocates, que incluye 24 lecciones prácticas sobre JavaScript, CSS y HTML.
### Componentes Clave ### Componentes Clave
- **Contenido Educativo**: 24 lecciones estructuradas organizadas en módulos basados en proyectos - **Contenido Educativo**: 24 lecciones estructuradas organizadas en módulos basados en proyectos
- **Proyectos Prácticos**: Terrarium, Juego de Escritura, Extensión de Navegador, Juego Espacial, App Bancaria, Editor de Código y Asistente de Chat AI - **Proyectos Prácticos**: Terrario, Juego de mecanografía, Extensión de navegador, Juego espacial, Aplicación bancaria, Editor de código y Asistente de chat con IA
- **Cuestionarios Interactivos**: 48 cuestionarios con 3 preguntas cada uno (evaluaciones pre/post-lección) - **Cuestionarios Interactivos**: 48 cuestionarios con 3 preguntas cada uno (evaluaciones pre/post lección)
- **Soporte Multilenguaje**: Traducciones automatizadas para más de 50 idiomas mediante GitHub Actions - **Soporte Multilingüe**: Traducciones automatizadas en más de 50 idiomas mediante GitHub Actions
- **Tecnologías**: HTML, CSS, JavaScript, Vue.js 3, Vite, Node.js, Express, Python (para proyectos AI) - **Tecnologías**: HTML, CSS, JavaScript, Vue.js 3, Vite, Node.js, Express, Python (para proyectos de IA)
### Arquitectura ### Arquitectura
@ -18,7 +18,7 @@ Este es un repositorio de currículo educativo para enseñar los fundamentos del
- Cada carpeta de lección contiene README, ejemplos de código y soluciones - Cada carpeta de lección contiene README, ejemplos de código y soluciones
- Proyectos independientes en directorios separados (quiz-app, varios proyectos de lecciones) - Proyectos independientes en directorios separados (quiz-app, varios proyectos de lecciones)
- Sistema de traducción usando GitHub Actions (co-op-translator) - Sistema de traducción usando GitHub Actions (co-op-translator)
- Documentación servida vía Docsify y disponible como PDF - Documentación servida mediante Docsify y disponible en PDF
## Comandos de Configuración ## Comandos de Configuración
@ -31,7 +31,7 @@ git clone https://github.com/microsoft/Web-Dev-For-Beginners.git
cd Web-Dev-For-Beginners cd Web-Dev-For-Beginners
``` ```
### Configuración de Quiz App (Vue 3 + Vite) ### Configuración de la Aplicación de Cuestionarios (Vue 3 + Vite)
```bash ```bash
cd quiz-app cd quiz-app
@ -51,7 +51,7 @@ npm run lint # Ejecutar ESLint
npm run format # Formatear con Prettier npm run format # Formatear con Prettier
``` ```
### Proyectos de Extensiones de Navegador ### Proyectos de Extensión de Navegador
```bash ```bash
cd 5-browser-extension/solution cd 5-browser-extension/solution
@ -59,7 +59,7 @@ npm install
# Siga las instrucciones específicas del navegador para cargar extensiones # Siga las instrucciones específicas del navegador para cargar extensiones
``` ```
### Proyectos de Juego Espacial ### Proyectos del Juego Espacial
```bash ```bash
cd 6-space-game/solution cd 6-space-game/solution
@ -78,74 +78,74 @@ python api.py
## Flujo de Trabajo de Desarrollo ## Flujo de Trabajo de Desarrollo
### Para Contribuidores de Contenido ### Para Contribuyentes de Contenido
1. **Haz un fork del repositorio** en tu cuenta de GitHub 1. **Haz fork del repositorio** a tu cuenta de GitHub
2. **Clona tu fork** localmente 2. **Clona tu fork** localmente
3. **Crea una nueva rama** para tus cambios 3. **Crea una rama nueva** para tus cambios
4. Realiza cambios en contenido de lecciones o ejemplos de código 4. Realiza cambios en el contenido de las lecciones o ejemplos de código
5. Prueba cualquier cambio de código en directorios de proyectos relevantes 5. Prueba los cambios de código en los directorios de proyectos correspondientes
6. Envía pull requests siguiendo las directrices de contribución 6. Envía pull requests siguiendo las pautas de contribución
### Para Estudiantes ### Para Estudiantes
1. Haz fork o clona el repositorio 1. Haz fork o clona el repositorio
2. Navega por los directorios de lecciones secuencialmente 2. Navega por los directorios de las lecciones en orden secuencial
3. Lee los archivos README de cada lección 3. Lee los archivos README de cada lección
4. Completa los cuestionarios pre-lección en https://ff-quizzes.netlify.app/web/ 4. Completa los cuestionarios previos en https://ff-quizzes.netlify.app/web/
5. Trabaja con los ejemplos de código en las carpetas de lecciones 5. Trabaja con los ejemplos de código en las carpetas de las lecciones
6. Completa asignaciones y desafíos 6. Completa las tareas y desafíos
7. Realiza los cuestionarios post-lección 7. Realiza los cuestionarios posteriores a las lecciones
### Desarrollo en Vivo ### Desarrollo en Vivo
- **Documentación**: Ejecuta `docsify serve` en la raíz (puerto 3000) - **Documentación**: Ejecuta `docsify serve` en la raíz (puerto 3000)
- **Quiz App**: Ejecuta `npm run dev` en el directorio quiz-app - **Aplicación de Cuestionarios**: Ejecuta `npm run dev` en el directorio quiz-app
- **Proyectos**: Usa la extensión Live Server de VS Code para proyectos HTML - **Proyectos**: Usa la extensión Live Server de VS Code para proyectos HTML
- **Proyectos API**: Ejecuta `npm start` en los directorios API respectivos - **Proyectos API**: Ejecuta `npm start` en los directorios API correspondientes
## Instrucciones de Pruebas ## Instrucciones para Pruebas
### Pruebas del Quiz App ### Pruebas de la Aplicación de Cuestionarios
```bash ```bash
cd quiz-app cd quiz-app
npm run lint # Verificar problemas de estilo de código npm run lint # Verificar problemas de estilo de código
npm run build # Verificar que la compilación tenga éxito npm run build # Verificar que la compilación sea exitosa
``` ```
### Pruebas del API Bancaria ### Pruebas API Bancaria
```bash ```bash
cd 7-bank-project/api cd 7-bank-project/api
npm run lint # Verificar problemas de estilo de código npm run lint # Comprobar problemas de estilo de código
node server.js # Verificar que el servidor inicie sin errores node server.js # Verificar que el servidor arranque sin errores
``` ```
### Enfoque General de Pruebas ### Enfoque General para Pruebas
- Este es un repositorio educativo sin pruebas automatizadas completas - Este es un repositorio educativo sin pruebas automatizadas exhaustivas
- Las pruebas manuales se enfocan en: - Las pruebas manuales se enfocan en:
- Ejecución de ejemplos de código sin errores - Los ejemplos de código funcionan sin errores
- Que los enlaces en la documentación funcionen correctamente - Los enlaces en la documentación funcionan correctamente
- Que las compilaciones de proyectos se completen con éxito - Las compilaciones de proyectos terminan sin errores
- Que los ejemplos sigan buenas prácticas - Los ejemplos siguen las mejores prácticas
### Verificaciones Pre-envío ### Revisiones Previas a la Envío
- Ejecutar `npm run lint` en directorios con package.json - Ejecutar `npm run lint` en los directorios con package.json
- Verificar que los enlaces markdown sean válidos - Verificar que los enlaces markdown sean válidos
- Probar los ejemplos de código en navegador o Node.js - Probar ejemplos de código en navegador o Node.js
- Comprobar que las traducciones mantienen la estructura adecuada - Comprobar que las traducciones mantengan la estructura adecuada
## Guías de Estilo de Código ## Pautas de Estilo de Código
### JavaScript ### JavaScript
- Utilizar sintaxis moderna ES6+ - Usar sintaxis moderna ES6+
- Seguir configuraciones estándar de ESLint proporcionadas en los proyectos - Seguir configuraciones estándar de ESLint proporcionadas en los proyectos
- Usar nombres significativos para variables y funciones para mayor claridad educativa - Usar nombres significativos en variables y funciones para claridad educativa
- Añadir comentarios explicativos sobre conceptos para los estudiantes - Añadir comentarios explicativos para los conceptos
- Formatear con Prettier donde esté configurado - Formatear con Prettier donde esté configurado
### HTML/CSS ### HTML/CSS
@ -153,34 +153,34 @@ node server.js # Verificar que el servidor inicie sin errores
- Elementos semánticos HTML5 - Elementos semánticos HTML5
- Principios de diseño responsivo - Principios de diseño responsivo
- Convenciones claras para nombres de clases - Convenciones claras para nombres de clases
- Comentarios explicando técnicas CSS para aprendizaje - Comentarios que expliquen técnicas CSS para estudiantes
### Python ### Python
- Guía de estilo PEP 8 - Guías de estilo PEP 8
- Ejemplos de código claros y educativos - Ejemplos de código claros y educativos
- Uso de hints de tipos donde sea útil para el aprendizaje - Anotaciones de tipos cuando sean útiles para el aprendizaje
### Documentación Markdown ### Documentación en Markdown
- Jerarquía clara de encabezados - Jerarquía clara en encabezados
- Bloques de código con especificación de lenguaje - Bloques de código con especificación de lenguaje
- Enlaces a recursos adicionales - Enlaces a recursos adicionales
- Capturas de pantalla e imágenes en directorios `images/` - Capturas de pantalla e imágenes en `images/` directorios
- Texto alternativo para imágenes por accesibilidad - Texto alternativo en imágenes para accesibilidad
### Organización de Archivos ### Organización de Archivos
- Lecciones numeradas secuencialmente (1-getting-started-lessons, 2-js-basics, etc.) - Lecciones numeradas secuencialmente (1-getting-started-lessons, 2-js-basics, etc.)
- Cada proyecto tiene directorios `solution/` y normalmente `start/` o `your-work/` - Cada proyecto tiene carpetas `solution/` y a menudo `start/` o `your-work/`
- Imágenes almacenadas en carpetas `images/` específicas de las lecciones - Imágenes almacenadas en carpetas `images/` específicas de la lección
- Traducciones en estructura `translations/{language-code}/` - Traducciones en estructura `translations/{language-code}/`
## Construcción y Despliegue ## Construcción y Despliegue
### Despliegue de Quiz App (Azure Static Web Apps) ### Despliegue de la Aplicación de Cuestionarios (Azure Static Web Apps)
La quiz-app está configurada para despliegue en Azure Static Web Apps: La aplicación quiz-app está configurada para despliegue en Azure Static Web Apps:
```bash ```bash
cd quiz-app cd quiz-app
@ -193,7 +193,7 @@ Configuración de Azure Static Web Apps:
- **Ubicación de salida**: `dist` - **Ubicación de salida**: `dist`
- **Flujo de trabajo**: `.github/workflows/azure-static-web-apps-ashy-river-0debb7803.yml` - **Flujo de trabajo**: `.github/workflows/azure-static-web-apps-ashy-river-0debb7803.yml`
### Generación de PDF de Documentación ### Generación de PDF de la Documentación
```bash ```bash
npm install # Instalar docsify-to-pdf npm install # Instalar docsify-to-pdf
@ -207,76 +207,76 @@ npm install -g docsify-cli # Instalar Docsify globalmente
docsify serve # Servir en localhost:3000 docsify serve # Servir en localhost:3000
``` ```
### Construcciones Específicas por Proyecto ### Construcciones Específicas de Proyectos
Cada directorio de proyecto puede tener su propio proceso de construcción: Cada directorio de proyecto puede tener su propio proceso de construcción:
- Proyectos Vue: `npm run build` crea paquetes para producción - Proyectos Vue: `npm run build` crea paquetes para producción
- Proyectos estáticos: Sin paso de construcción, servir archivos directamente - Proyectos estáticos: No tienen paso de construcción, se sirven archivos directamente
## Guías para Pull Requests ## Pautas para Pull Requests
### Formato de Título ### Formato de Título
Usar títulos claros y descriptivos indicando el área de cambio: Usar títulos claros y descriptivos que indiquen el área de cambio:
- `[Quiz-app] Añadir nuevo cuestionario para la lección X` - `[Quiz-app] Añadir nuevo cuestionario para la lección X`
- `[Lesson-3] Corregir error tipográfico en proyecto terrarium` - `[Lesson-3] Corregir error tipográfico en proyecto terrario`
- `[Translation] Añadir traducción al español para la lección 5` - `[Translation] Añadir traducción al español para la lección 5`
- `[Docs] Actualizar instrucciones de configuración` - `[Docs] Actualizar instrucciones de configuración`
### Verificaciones Requeridas ### Requisitos para Revisiones
Antes de enviar un PR: Antes de enviar un PR:
1. **Calidad del código**: 1. **Calidad del Código**:
- Ejecutar `npm run lint` en los directorios de proyecto afectados - Ejecutar `npm run lint` en los directorios afectados de proyectos
- Corregir todos los errores y advertencias de lint - Corregir todos los errores y advertencias de linting
2. **Verificación de compilación**: 2. **Verificación de Construcción**:
- Ejecutar `npm run build` si aplica - Ejecutar `npm run build` si aplica
- Asegurar que no haya errores de compilación - Asegurar que no haya errores de construcción
3. **Validación de enlaces**: 3. **Validación de Enlaces**:
- Probar todos los enlaces markdown - Probar todos los enlaces markdown
- Verificar que las referencias a imágenes funcionen - Verificar que las referencias de imágenes funcionen
4. **Revisión de contenido**: 4. **Revisión de Contenido**:
- Revisar ortografía y gramática - Revisar ortografía y gramática
- Confirmar que los ejemplos de código sean correctos y educativos - Asegurar que los ejemplos de código sean correctos y educativos
- Verificar que las traducciones mantengan el significado original - Verificar que las traducciones mantengan el significado original
### Requisitos de Contribución ### Requisitos para Contribuciones
- Aceptar el CLA de Microsoft (verificación automática en primer PR) - Aceptar el CLA de Microsoft (verificación automática en el primer PR)
- Seguir el [Código de Conducta de Código Abierto de Microsoft](https://opensource.microsoft.com/codeofconduct/) - Seguir el [Código de Conducta de Código Abierto de Microsoft](https://opensource.microsoft.com/codeofconduct/)
- Consultar [CONTRIBUTING.md](./CONTRIBUTING.md) para directrices detalladas - Consultar [CONTRIBUTING.md](./CONTRIBUTING.md) para pautas detalladas
- Referenciar números de issue en la descripción del PR si aplica - Referenciar números de issues en la descripción del PR si aplica
### Proceso de Revisión ### Proceso de Revisión
- Los PRs son revisados por mantenedores y comunidad - Los PR son revisados por mantenedores y comunidad
- Se prioriza la claridad educativa - Se prioriza la claridad educativa
- Los ejemplos de código deben seguir las mejores prácticas actuales - Los ejemplos de código deben seguir buenas prácticas actuales
- Las traducciones se revisan para precisión y adecuación cultural - Las traducciones se revisan por precisión y adecuación cultural
## Sistema de Traducción ## Sistema de Traducción
### Traducción Automática ### Traducción Automatizada
- Utiliza GitHub Actions con flujo de trabajo co-op-translator - Usa GitHub Actions con el flujo de trabajo co-op-translator
- Traduce automáticamente a más de 50 idiomas - Traduce automáticamente a más de 50 idiomas
- Archivos fuente en directorios principales - Archivos fuente en directorios principales
- Archivos traducidos en directorios `translations/{language-code}/` - Archivos traducidos en `translations/{language-code}/`
### Agregar Mejoras Manuales de Traducción ### Añadiendo Mejoras en Traducción Manual
1. Localizar archivo en `translations/{language-code}/` 1. Ubica el archivo en `translations/{language-code}/`
2. Hacer mejoras preservando la estructura 2. Realiza mejoras preservando la estructura
3. Asegurar que los ejemplos de código sigan funcionando 3. Asegúrate que los ejemplos de código funcionen correctamente
4. Probar cualquier contenido de quiz localizado 4. Prueba contenido localizado de cuestionarios si aplica
### Metadatos de Traducción ### Metadatos de Traducción
Los archivos traducidos incluyen cabecera de metadatos: Los archivos traducidos incluyen encabezado de metadatos:
```markdown ```markdown
<!-- <!--
CO_OP_TRANSLATOR_METADATA: CO_OP_TRANSLATOR_METADATA:
@ -293,64 +293,64 @@ CO_OP_TRANSLATOR_METADATA:
### Problemas Comunes ### Problemas Comunes
**La aplicación de quiz no inicia**: **La aplicación de cuestionarios no inicia**:
- Verificar versión de Node.js (recomendado v14+) - Verificar la versión de Node.js (recomendado v14+)
- Eliminar `node_modules` y `package-lock.json`, luego ejecutar `npm install` - Borrar `node_modules` y `package-lock.json`, ejecutar `npm install` nuevamente
- Comprobar conflictos de puerto (por defecto: Vite usa puerto 5173) - Comprobar conflictos en el puerto (por defecto: Vite usa puerto 5173)
**El servidor API no inicia**: **El servidor API no inicia**:
- Verificar que la versión de Node.js cumple el mínimo (node >=10) - Verificar que la versión de Node.js sea al menos (node >=10)
- Revisar si el puerto ya está en uso - Revisar si el puerto ya está en uso
- Asegurar que todas las dependencias están instaladas con `npm install` - Asegurarse de que todas las dependencias estén instaladas con `npm install`
**La extensión del navegador no carga**: **La extensión de navegador no carga**:
- Verificar que manifest.json está correctamente formado - Verificar que manifest.json esté correctamente formateado
- Revisar la consola del navegador para errores - Revisar consola del navegador por errores
- Seguir las instrucciones específicas para instalación de extensiones en el navegador - Seguir instrucciones específicas para instalación de extensiones sen navegador
**Problemas con el proyecto de chat en Python**: **Problemas con el proyecto chat en Python**:
- Asegurar que el paquete OpenAI está instalado: `pip install openai` - Asegurar que el paquete OpenAI esté instalado: `pip install openai`
- Verificar que la variable de entorno GITHUB_TOKEN está configurada - Verificar que la variable de entorno GITHUB_TOKEN esté configurada
- Comprobar permisos de acceso a GitHub Models - Comprobar permisos de acceso a GitHub Models
**Docsify no sirve la documentación**: **Docsify no sirve la documentación**:
- Instalar docsify-cli globalmente: `npm install -g docsify-cli` - Instalar docsify-cli globalmente: `npm install -g docsify-cli`
- Ejecutar desde el directorio raíz del repositorio - Ejecutar desde el directorio raíz del repositorio
- Comprobar que `docs/_sidebar.md` existe - Comprobar que `docs/_sidebar.md` exista
### Consejos para el Entorno de Desarrollo ### Consejos para el Entorno de Desarrollo
- Usar VS Code con extensión Live Server para proyectos HTML - Usar VS Code con extensión Live Server para proyectos HTML
- Instalar extensiones ESLint y Prettier para formato consistente - Instalar extensiones ESLint y Prettier para formato consistente
- Usar DevTools del navegador para depurar JavaScript - Usar herramientas de desarrollador del navegador para depurar JavaScript
- Para proyectos Vue, instalar extensión de navegador Vue DevTools - Para proyectos Vue, instalar extensión Vue DevTools para navegador
### Consideraciones de Rendimiento ### Consideraciones de Rendimiento
- Gran número de archivos traducidos (más de 50 idiomas) implica clones completos grandes - Gran número de archivos traducidos (50+ idiomas) hace que los clones completos sean pesados
- Usar clonación superficial si solo se trabaja con contenido: `git clone --depth 1` - Usar clonación superficial si solo se trabaja con contenido: `git clone --depth 1`
- Excluir traducciones de búsquedas cuando se trabaje en contenido en inglés - Excluir traducciones de búsquedas cuando se trabaja en contenido en inglés
- Los procesos de construcción pueden ser lentos en la primera ejecución (npm install, compilación Vite) - Procesos de construcción pueden ser lentos en ejecución inicial (npm install, construcción Vite)
## Consideraciones de Seguridad ## Consideraciones de Seguridad
### Variables de Entorno ### Variables de Entorno
- Las claves API nunca deben ser comprometidas en el repositorio - Las claves API nunca deben incluirse en el repositorio
- Usar archivos `.env` (ya en `.gitignore`) - Usar archivos `.env` (ya incluidos en `.gitignore`)
- Documentar variables de entorno requeridas en los READMEs de proyectos - Documentar las variables de entorno requeridas en los README de los proyectos
### Proyectos en Python ### Proyectos en Python
- Usar entornos virtuales: `python -m venv venv` - Usar entornos virtuales: `python -m venv venv`
- Mantener las dependencias actualizadas - Mantener dependencias actualizadas
- Los tokens de GitHub deben tener permisos mínimos necesarios - Los tokens de GitHub deben tener permisos mínimos necesarios
### Acceso a GitHub Models ### Acceso a GitHub Models
- Se requieren Tokens de Acceso Personal (PAT) para GitHub Models - Se requieren Tokens de Acceso Personal (PAT) para GitHub Models
- Los tokens deben almacenarse como variables de entorno - Los tokens se deben guardar como variables de entorno
- Nunca comprometer tokens o credenciales - Nunca se deben subir tokens ni credenciales al repositorio
## Notas Adicionales ## Notas Adicionales
@ -358,51 +358,51 @@ CO_OP_TRANSLATOR_METADATA:
- Principiantes completos en desarrollo web - Principiantes completos en desarrollo web
- Estudiantes y autoaprendices - Estudiantes y autoaprendices
- Profesores que usan el currículo en aulas - Profesores usando el plan de estudios en aulas
- Contenido diseñado para accesibilidad y construcción gradual de habilidades - Contenido diseñado para accesibilidad y construcción gradual de habilidades
### Filosofía Educativa ### Filosofía Educativa
- Enfoque de aprendizaje basado en proyectos - Enfoque basado en aprendizaje por proyectos
- Controles frecuentes de conocimiento (cuestionarios) - Evaluaciones frecuentes de conocimiento (cuestionarios)
- Ejercicios prácticos de codificación - Ejercicios prácticos de codificación
- Ejemplos de aplicación en el mundo real - Ejemplos aplicados del mundo real
- Enfoque en fundamentos antes que frameworks - Enfoque en fundamentos antes que en frameworks
### Mantenimiento del Repositorio ### Mantenimiento del Repositorio
- Comunidad activa de aprendices y colaboradores - Comunidad activa de aprendices y colaboradores
- Actualizaciones regulares de dependencias y contenido - Actualizaciones regulares de dependencias y contenido
- Issues y discusiones monitoreadas por mantenedores - Issues y discusiones monitoreadas por mantenedores
- Actualizaciones de traducción automatizadas vía GitHub Actions - Actualizaciones de traducción automatizadas con GitHub Actions
### Recursos Relacionados ### Recursos Relacionados
- [Módulos Microsoft Learn](https://docs.microsoft.com/learn/) - [Módulos de Microsoft Learn](https://docs.microsoft.com/learn/)
- [Recursos Student Hub](https://docs.microsoft.com/learn/student-hub/) - [Recursos de Student Hub](https://docs.microsoft.com/learn/student-hub/)
- [GitHub Copilot](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot) recomendado para estudiantes - [GitHub Copilot](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot) recomendado para estudiantes
- Cursos adicionales: IA Generativa, Ciencia de Datos, ML, currículos IoT disponibles - Cursos adicionales: IA generativa, Ciencia de Datos, ML, IoT disponibles
### Trabajar con Proyectos Específicos ### Trabajando con Proyectos Específicos
Para instrucciones detalladas sobre proyectos individuales, consultar los archivos README en: Para instrucciones detalladas sobre proyectos individuales, consulte los archivos README en:
- `quiz-app/README.md` - Aplicación de cuestionarios con Vue 3 - `quiz-app/README.md` - Aplicación de cuestionarios en Vue 3
- `7-bank-project/README.md` - Aplicación bancaria con autenticación - `7-bank-project/README.md` - Aplicación bancaria con autenticación
- `5-browser-extension/README.md` - Desarrollo de extensión de navegador - `5-browser-extension/README.md` - Desarrollo de extensión de navegador
- `6-space-game/README.md` - Desarrollo de juego con Canvas - `6-space-game/README.md` - Desarrollo de juego con Canvas
- `9-chat-project/README.md` - Proyecto asistente de chat AI - `9-chat-project/README.md` - Proyecto asistente de chat con IA
### Estructura Monorepo ### Estructura Monorepo
Aunque no es un monorepo tradicional, este repositorio contiene múltiples proyectos independientes: Aunque no es un monorepo tradicional, este repositorio contiene múltiples proyectos independientes:
- Cada lección es autónoma - Cada lección es autónoma
- Los proyectos no comparten dependencias - Los proyectos no comparten dependencias
- Se puede trabajar en proyectos individuales sin afectar a otros - Se puede trabajar en proyectos individuales sin afectar otros
- Clonar el repo completo para la experiencia completa del currículo - Clonar el repositorio completo para la experiencia completa del plan de estudios
--- ---
<!-- CO-OP TRANSLATOR DISCLAIMER START --> <!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Aviso Legal**: **Aviso legal**:
Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas derivados del uso de esta traducción. Este documento ha sido traducido utilizando el servicio de traducción AI [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de ningún malentendido o mala interpretación derivada del uso de esta traducción.
<!-- CO-OP TRANSLATOR DISCLAIMER END --> <!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -1,7 +1,7 @@
{ {
"1-getting-started-lessons/1-intro-to-programming-languages/README.md": { "1-getting-started-lessons/1-intro-to-programming-languages/README.md": {
"original_hash": "bec5e35642176d9e483552bfc82996d8", "original_hash": "d5eeb6e975b5864d8da52d4a41941f8d",
"translation_date": "2026-03-06T11:43:31+00:00", "translation_date": "2026-03-27T17:59:03+00:00",
"source_file": "1-getting-started-lessons/1-intro-to-programming-languages/README.md", "source_file": "1-getting-started-lessons/1-intro-to-programming-languages/README.md",
"language_code": "fr" "language_code": "fr"
}, },
@ -493,7 +493,7 @@
}, },
"AGENTS.md": { "AGENTS.md": {
"original_hash": "a362efd06d64d4134a0cfe8515a86d34", "original_hash": "a362efd06d64d4134a0cfe8515a86d34",
"translation_date": "2026-03-06T11:55:33+00:00", "translation_date": "2026-03-27T18:11:27+00:00",
"source_file": "AGENTS.md", "source_file": "AGENTS.md",
"language_code": "fr" "language_code": "fr"
}, },

@ -1,28 +1,28 @@
# AGENTS.md # AGENTS.md
## Aperçu du projet ## Vue d'ensemble du projet
Il s'agit d'un référentiel de programme éducatif pour enseigner les fondamentaux du développement web aux débutants. Le programme est un cours complet de 12 semaines développé par Microsoft Cloud Advocates, comprenant 24 leçons pratiques couvrant JavaScript, CSS et HTML. Il s'agit d'un référentiel de programme éducatif pour enseigner les fondamentaux du développement web aux débutants. Le programme est un cours complet de 12 semaines développé par Microsoft Cloud Advocates, comprenant 24 leçons pratiques couvrant JavaScript, CSS et HTML.
### Composants clés ### Composants clés
- **Contenu éducatif** : 24 leçons structurées organisées en modules basés sur des projets - **Contenu éducatif** : 24 leçons structurées organisées en modules basés sur des projets
- **Projets pratiques** : Terrarium, Jeu de dactylographie, Extension de navigateur, Jeu spatial, Application bancaire, Éditeur de code et Assistant de chat IA - **Projets pratiques** : Terrarium, Jeu de frappe, Extension de navigateur, Jeu spatial, Application bancaire, Éditeur de code et Assistant de chat IA
- **Quiz interactifs** : 48 quiz avec 3 questions chacun (évaluations avant/après leçon) - **Quiz interactifs** : 48 quiz avec 3 questions chacun (évaluations pré/post-lesson)
- **Support multilingue** : Traductions automatisées pour plus de 50 langues via GitHub Actions - **Support multilingue** : Traductions automatisées pour plus de 50 langues via GitHub Actions
- **Technologies** : HTML, CSS, JavaScript, Vue.js 3, Vite, Node.js, Express, Python (pour les projets IA) - **Technologies** : HTML, CSS, JavaScript, Vue.js 3, Vite, Node.js, Express, Python (pour les projets IA)
### Architecture ### Architecture
- Référentiel éducatif structuré par leçon - Référentiel éducatif avec structure basée sur les leçons
- Chaque dossier de leçon contient README, exemples de code et solutions - Chaque dossier de leçon contient un README, des exemples de code, et des solutions
- Projets autonomes dans des répertoires séparés (quiz-app, divers projets de leçons) - Projets autonomes dans des répertoires séparés (quiz-app, divers projets de leçon)
- Système de traduction utilisant GitHub Actions (co-op-translator) - Système de traduction utilisant GitHub Actions (co-op-translator)
- Documentation servie via Docsify et disponible en PDF - Documentation servie via Docsify et disponible en PDF
## Commandes d'installation ## Commandes d'installation
Ce référentiel est principalement destiné à la consommation de contenu éducatif. Pour travailler sur des projets spécifiques : Ce référentiel est principalement destiné à la consommation de contenu éducatif. Pour travailler avec des projets spécifiques :
### Installation du référentiel principal ### Installation du référentiel principal
@ -37,7 +37,7 @@ cd Web-Dev-For-Beginners
cd quiz-app cd quiz-app
npm install npm install
npm run dev # Démarrer le serveur de développement npm run dev # Démarrer le serveur de développement
npm run build # Compiler pour la production npm run build # Construire pour la production
npm run lint # Exécuter ESLint npm run lint # Exécuter ESLint
``` ```
@ -56,7 +56,7 @@ npm run format # Formater avec Prettier
```bash ```bash
cd 5-browser-extension/solution cd 5-browser-extension/solution
npm install npm install
# Suivez les instructions spécifiques au navigateur pour le chargement de l'extension # Suivez les instructions spécifiques au navigateur pour le chargement des extensions
``` ```
### Projets de jeu spatial ### Projets de jeu spatial
@ -67,7 +67,7 @@ npm install
# Ouvrez index.html dans le navigateur ou utilisez Live Server # Ouvrez index.html dans le navigateur ou utilisez Live Server
``` ```
### Projet de chat (Backend Python) ### Projet de chat (backend Python)
```bash ```bash
cd 9-chat-project/solution/backend/python cd 9-chat-project/solution/backend/python
@ -83,38 +83,38 @@ python api.py
1. **Forkez le référentiel** sur votre compte GitHub 1. **Forkez le référentiel** sur votre compte GitHub
2. **Clonez votre fork** localement 2. **Clonez votre fork** localement
3. **Créez une nouvelle branche** pour vos modifications 3. **Créez une nouvelle branche** pour vos modifications
4. Modifiez le contenu des leçons ou les exemples de code 4. Effectuez des changements dans le contenu des leçons ou les exemples de code
5. Testez les modifications de code dans les répertoires de projets concernés 5. Testez toute modification de code dans les répertoires de projets concernés
6. Soumettez des pull requests en suivant les directives de contribution 6. Soumettez des pull requests en suivant les directives de contribution
### Pour les apprenants ### Pour les apprenants
1. Forkez ou clonez le référentiel 1. Forkez ou clonez le référentiel
2. Naviguez dans les répertoires des leçons dans lordre 2. Naviguez séquentiellement dans les répertoires des leçons
3. Lisez les fichiers README de chaque leçon 3. Lisez les fichiers README de chaque leçon
4. Complétez les quiz pré-lesson sur https://ff-quizzes.netlify.app/web/ 4. Complétez les quiz pré-lesson sur https://ff-quizzes.netlify.app/web/
5. Travaillez sur les exemples de code dans les dossiers des leçons 5. Travaillez les exemples de code dans les dossiers de leçon
6. Terminez les devoirs et les défis 6. Réalisez les devoirs et défis
7. Passez les quiz post-lesson 7. Passez les quiz post-lesson
### Développement en direct ### Développement en direct
- **Documentation** : Exécutez `docsify serve` à la racine (port 3000) - **Documentation** : Lancez `docsify serve` à la racine (port 3000)
- **Application Quiz** : Exécutez `npm run dev` dans le répertoire quiz-app - **Application Quiz** : Lancez `npm run dev` dans le répertoire quiz-app
- **Projets** : Utilisez lextension Live Server de VS Code pour les projets HTML - **Projets** : Utilisez l'extension VS Code Live Server pour les projets HTML
- **Projets API** : Exécutez `npm start` dans les répertoires API respectifs - **Projets API** : Lancez `npm start` dans les répertoires API correspondants
## Instructions de test ## Instructions de test
### Test de l'application Quiz ### Tests de l'application Quiz
```bash ```bash
cd quiz-app cd quiz-app
npm run lint # Vérifier les problèmes de style de code npm run lint # Vérifier les problèmes de style de code
npm run build # Vérifier la réussite de la compilation npm run build # Vérifier que la compilation réussit
``` ```
### Test de l'API bancaire ### Tests de l'API bancaire
```bash ```bash
cd 7-bank-project/api cd 7-bank-project/api
@ -124,76 +124,76 @@ node server.js # Vérifier que le serveur démarre sans erreurs
### Approche générale des tests ### Approche générale des tests
- Il s'agit d'un référentiel éducatif sans tests automatisés complets - Ce référentiel éducatif ne dispose pas de tests automatisés complets
- Les tests manuels se concentrent sur : - Les tests manuels portent sur :
- Exécution des exemples de code sans erreurs - L'exécution des exemples de code sans erreurs
- Fonctionnement correct des liens dans la documentation - Le bon fonctionnement des liens dans la documentation
- Bon déroulement des builds des projets - Le succès des compilations des projets
- Respect des bonnes pratiques dans les exemples - Le respect des bonnes pratiques dans les exemples
### Vérifications avant soumission ### Vérifications avant soumission
- Exécutez `npm run lint` dans les dossiers contenant package.json - Lancez `npm run lint` dans les répertoires contenant package.json
- Vérifiez la validité des liens markdown - Vérifiez la validité des liens markdown
- Testez les exemples de code dans le navigateur ou Node.js - Testez les exemples de code dans le navigateur ou Node.js
- Vérifiez que les traductions conservent la structure correcte - Vérifiez que les traductions conservent la bonne structure
## Directives de style de code ## Guide de style de code
### JavaScript ### JavaScript
- Utilisez la syntaxe moderne ES6+ - Utilisez la syntaxe moderne ES6+
- Respectez les configurations ESLint standard fournies dans les projets - Suivez les configurations ESLint standard fournies dans les projets
- Utilisez des noms de variables et fonctions significatifs pour la clarté pédagogique - Utilisez des noms de variables et de fonctions significatifs pour la clarté pédagogique
- Ajoutez des commentaires expliquant les concepts pour les apprenants - Ajoutez des commentaires expliquant les concepts pour les apprenants
- Formatez avec Prettier là où configuré - Formatez avec Prettier lorsqu'il est configuré
### HTML/CSS ### HTML/CSS
- Éléments HTML5 sémantiques - Éléments HTML5 sémantiques
- Principes de design responsive - Principes de design responsive
- Conventions claires de nommage des classes - Conventions claires de nommage de classes
- Commentaires expliquant les techniques CSS pour les apprenants - Commentaires expliquant les techniques CSS pour les apprenants
### Python ### Python
- Respect des directives de style PEP 8 - Respect des directives de style PEP 8
- Exemples de code clairs et pédagogiques - Exemples de code clairs et pédagogiques
- Indications de types lorsque cela aide à lapprentissage - Indications de type là où c'est utile pour l'apprentissage
### Documentation Markdown ### Documentation Markdown
- Hiérarchie claire des titres - Hiérarchie claire des titres
- Blocs de code avec spécification du langage - Blocs de code avec spécification du langage
- Liens vers des ressources supplémentaires - Liens vers des ressources additionnelles
- Captures décran et images dans les dossiers `images/` - Captures d'écran et images dans les dossiers `images/`
- Texte alternatif pour les images pour laccessibilité - Texte alternatif pour les images pour l'accessibilité
### Organisation des fichiers ### Organisation des fichiers
- Leçons numérotées séquentiellement (1-getting-started-lessons, 2-js-basics, etc.) - Leçons numérotées séquentiellement (1-getting-started-lessons, 2-js-basics, etc.)
- Chaque projet dispose de répertoires `solution/` et souvent `start/` ou `your-work/` - Chaque projet possède des répertoires `solution/` et souvent `start/` ou `your-work/`
- Images stockées dans des dossiers `images/` spécifiques à chaque leçon - Images stockées dans des dossiers `images/` spécifiques à chaque leçon
- Traductions dans la structure `translations/{code-langue}/` - Traductions dans la structure `translations/{language-code}/`
## Compilation et déploiement ## Compilation et déploiement
### Déploiement de l'application Quiz (Azure Static Web Apps) ### Déploiement de l'application Quiz (Azure Static Web Apps)
Lapplication quiz-app est configurée pour le déploiement Azure Static Web Apps : L'application quiz-app est configurée pour le déploiement sur Azure Static Web Apps :
```bash ```bash
cd quiz-app cd quiz-app
npm run build # Crée le dossier dist/ npm run build # Crée le dossier dist/
# Déploie via le workflow GitHub Actions lors d'un push sur main # Déploie via le workflow GitHub Actions lors d'une poussée sur main
``` ```
Configuration Azure Static Web Apps : Configuration Azure Static Web Apps :
- **Emplacement de lapplication** : `/quiz-app` - **Emplacement de l'application** : `/quiz-app`
- **Emplacement de sortie** : `dist` - **Emplacement de sortie** : `dist`
- **Workflow** : `.github/workflows/azure-static-web-apps-ashy-river-0debb7803.yml` - **Workflow** : `.github/workflows/azure-static-web-apps-ashy-river-0debb7803.yml`
### Génération PDF de la documentation ### Génération de PDF de la documentation
```bash ```bash
npm install # Installer docsify-to-pdf npm install # Installer docsify-to-pdf
@ -209,74 +209,74 @@ docsify serve # Servir sur localhost:3000
### Builds spécifiques aux projets ### Builds spécifiques aux projets
Chaque répertoire de projet peut avoir un processus de build propre : Chaque répertoire de projet peut avoir son propre processus de build :
- Projets Vue : `npm run build` crée des bundles de production - Projets Vue : `npm run build` crée des bundles de production
- Projets statiques : Pas détape de build, fichiers servis directement - Projets statiques : pas d'étape de build, les fichiers sont servis directement
## Directives pour les Pull Requests ## Directives pour les pull requests
### Format des titres ### Format du titre
Utilisez des titres clairs et descriptifs indiquant la zone de changement : Utilisez des titres clairs et descriptifs indiquant la zone de changement :
- `[Quiz-app] Ajouter un nouveau quiz pour la leçon X` - `[Quiz-app] Ajouter un nouveau quiz pour la leçon X`
- `[Lesson-3] Corriger une faute de frappe dans le projet terrarium` - `[Lesson-3] Correction de faute dans le projet terrarium`
- `[Translation] Ajouter la traduction espagnole pour la leçon 5` - `[Translation] Ajouter la traduction espagnole pour la leçon 5`
- `[Docs] Mettre à jour les instructions dinstallation` - `[Docs] Mise à jour des instructions d'installation`
### Vérifications requises ### Vérifications requises
Avant de soumettre une PR : Avant de soumettre une PR :
1. **Qualité du code** : 1. **Qualité du code** :
- Exécutez `npm run lint` dans les répertoires de projets concernés - Exécutez `npm run lint` dans les répertoires de projet affectés
- Corrigez toutes les erreurs et avertissements de lint - Corrigez toutes les erreurs et avertissements de linting
2. **Vérification du build** : 2. **Vérification de la build** :
- Exécutez `npm run build` si applicable - Exécutez `npm run build` si applicable
- Assurez-vous qu'aucune erreur de build ne survient - Assurez-vous qu'il n'y ait pas d'erreurs de build
3. **Validation des liens** : 3. **Validation des liens** :
- Testez tous les liens markdown - Testez tous les liens markdown
- Vérifiez que les références aux images fonctionnent - Vérifiez le fonctionnement des références d'images
4. **Relecture du contenu** : 4. **Relecture du contenu** :
- Corrigez lorthographe et la grammaire - Corrigez l'orthographe et la grammaire
- Assurez-vous que les exemples de code sont corrects et pédagogiques - Assurez-vous que les exemples de code sont corrects et pédagogiques
- Vérifiez que les traductions conservent le sens original - Vérifiez que les traductions conservent leur sens original
### Exigences de contribution ### Exigences de contribution
- Accepter le CLA Microsoft (vérification automatisée lors de la première PR) - Acceptez la CLA Microsoft (vérification automatique lors de la première PR)
- Respecter le [Code de Conduite Open Source Microsoft](https://opensource.microsoft.com/codeofconduct/) - Suivez le [Code de conduite Open Source Microsoft](https://opensource.microsoft.com/codeofconduct/)
- Voir [CONTRIBUTING.md](./CONTRIBUTING.md) pour les directives détaillées - Consultez [CONTRIBUTING.md](./CONTRIBUTING.md) pour les directives détaillées
- Référencer les numéros dissues dans la description de la PR si applicable - Mentionnez les numéros dissues dans la description de la PR le cas échéant
### Processus de revue ### Processus de revue
- PRs examinées par les mainteneurs et la communauté - Les PR sont examinées par les mainteneurs et la communauté
- Priorité donnée à la clarté pédagogique - La clarté pédagogique est priorisée
- Les exemples de code doivent suivre les meilleures pratiques actuelles - Les exemples de code doivent suivre les meilleures pratiques actuelles
- Les traductions sont vérifiées pour leur exactitude et pertinence culturelle - Les traductions sont revues pour précision et adéquation culturelle
## Système de traduction ## Système de traduction
### Traduction automatisée ### Traduction automatisée
- Utilise GitHub Actions avec le workflow co-op-translator - Utilise GitHub Actions avec le workflow co-op-translator
- Traduction automatique vers plus de 50 langues - Traduit automatiquement en plus de 50 langues
- Fichiers source dans les répertoires principaux - Fichiers sources dans les répertoires principaux
- Fichiers traduits dans `translations/{code-langue}/` - Fichiers traduits dans les répertoires `translations/{language-code}/`
### Ajout daméliorations manuelles de traduction ### Ajout d'améliorations manuelles de traduction
1. Localisez le fichier dans `translations/{code-langue}/` 1. Localisez le fichier dans `translations/{language-code}/`
2. Apportez des améliorations tout en conservant la structure 2. Apportez des améliorations tout en préservant la structure
3. Assurez-vous que les exemples de code restent fonctionnels 3. Assurez-vous que les exemples de code restent fonctionnels
4. Testez tout contenu de quiz localisé 4. Testez tout contenu localisé de quiz
### Métadonnées de traduction ### Métadonnées de traduction
Les fichiers traduits contiennent un en-tête de métadonnées : Les fichiers traduits incluent un en-tête de métadonnées :
```markdown ```markdown
<!-- <!--
CO_OP_TRANSLATOR_METADATA: CO_OP_TRANSLATOR_METADATA:
@ -293,85 +293,85 @@ CO_OP_TRANSLATOR_METADATA:
### Problèmes courants ### Problèmes courants
**Lapplication Quiz ne démarre pas** : **L'application quiz ne démarre pas** :
- Vérifiez la version de Node.js (v14+ recommandé) - Vérifiez la version de Node.js (v14+ recommandée)
- Supprimez `node_modules` et `package-lock.json`, lancez `npm install` de nouveau - Supprimez `node_modules` et `package-lock.json`, relancez `npm install`
- Vérifiez les conflits de port (par défaut : Vite utilise le port 5173) - Vérifiez s'il y a des conflits de ports (par défaut : Vite utilise le port 5173)
**Le serveur API ne démarre pas** : **Le serveur API ne démarre pas** :
- Vérifiez que la version de Node.js est suffisante (node >=10) - Vérifiez que la version de Node.js est suffisante (node >=10)
- Vérifiez si le port est déjà utilisé - Vérifiez si le port est déjà utilisé
- Assurez-vous que toutes les dépendances sont installées avec `npm install` - Assurez-vous que toutes les dépendances sont installées avec `npm install`
**Lextension de navigateur ne se charge pas** : **L'extension de navigateur ne se charge pas** :
- Vérifiez que manifest.json est bien formaté - Vérifiez que manifest.json est bien formaté
- Contrôlez la console du navigateur pour les erreurs - Consultez la console du navigateur pour les erreurs
- Suivez les instructions spécifiques au navigateur pour linstallation dextensions - Suivez les instructions d'installation spécifiques au navigateur
**Problèmes avec le projet de chat Python** : **Problèmes avec le projet chat Python** :
- Assurez-vous que le package OpenAI est installé : `pip install openai` - Assurez-vous que le package OpenAI est installé : `pip install openai`
- Vérifiez que la variable denvironnement GITHUB_TOKEN est définie - Vérifiez que la variable d'environnement GITHUB_TOKEN est définie
- Vérifiez les permissions daccès aux modèles GitHub - Contrôlez les permissions d'accès aux modèles GitHub
**Docsify ne sert pas la documentation** : **Docsify ne sert pas la documentation** :
- Installez docsify-cli globalement : `npm install -g docsify-cli` - Installez docsify-cli globalement : `npm install -g docsify-cli`
- Lancez depuis le répertoire racine du référentiel - Lancez depuis le répertoire racine du référentiel
- Vérifiez que `docs/_sidebar.md` existe - Vérifiez que `docs/_sidebar.md` existe
### Conseils pour lenvironnement de développement ### Conseils pour l'environnement de développement
- Utilisez VS Code avec lextension Live Server pour les projets HTML - Utilisez VS Code avec l'extension Live Server pour les projets HTML
- Installez les extensions ESLint et Prettier pour un formatage cohérent - Installez les extensions ESLint et Prettier pour un formatage cohérent
- Utilisez les outils de développement du navigateur pour déboguer JavaScript - Utilisez les DevTools du navigateur pour déboguer JavaScript
- Pour les projets Vue, installez lextension Vue DevTools du navigateur - Pour les projets Vue, installez l'extension Vue DevTools pour navigateur
### Considérations de performance ### Considérations de performance
- Le grand nombre de fichiers traduits (plus de 50 langues) fait que les clones complets sont volumineux - Le grand nombre de fichiers traduits (50+ langues) rend les clones complets volumineux
- Utilisez un clone superficiel si vous travaillez uniquement sur le contenu : `git clone --depth 1` - Utilisez un clone superficiel si vous travaillez seulement sur le contenu : `git clone --depth 1`
- Excluez les traductions des recherches lorsque vous travaillez sur le contenu anglais - Excluez les traductions des recherches lors du travail sur le contenu anglais
- Les processus de build peuvent être lents au premier lancement (npm install, build Vite) - Les processus de build peuvent être lents au premier lancement (npm install, build Vite)
## Considérations de sécurité ## Considérations de sécurité
### Variables denvironnement ### Variables d'environnement
- Les clés API ne doivent jamais être commises dans le référentiel - Les clés API ne doivent jamais être commies dans le référentiel
- Utilisez les fichiers `.env` (déjà inclus dans `.gitignore`) - Utilisez les fichiers `.env` (déjà dans `.gitignore`)
- Documentez les variables denvironnement requises dans les README des projets - Documentez les variables d'environnement requises dans les README des projets
### Projets Python ### Projets Python
- Utilisez des environnements virtuels : `python -m venv venv` - Utilisez des environnements virtuels : `python -m venv venv`
- Maintenez les dépendances à jour - Maintenez les dépendances à jour
- Les tokens GitHub doivent avoir des permissions minimales requises - Les tokens GitHub doivent avoir les permissions minimales requises
### Accès aux modèles GitHub ### Accès aux modèles GitHub
- Les jetons daccès personnel (PAT) sont nécessaires pour les modèles GitHub - Les Personal Access Tokens (PAT) sont nécessaires pour les modèles GitHub
- Les jetons doivent être stockés comme variables denvironnement - Les tokens doivent être stockés en variables d'environnement
- Ne jamais commettre de jetons ou de credentials - Ne commitez jamais de tokens ou de credentials
## Notes supplémentaires ## Notes supplémentaires
### Public cible ### Public cible
- Débutants complets en développement web - Débutants complets en développement web
- Étudiants et autodidactes - Étudiants et auto-apprenants
- Enseignants utilisant le programme en classe - Enseignants utilisant le programme en classe
- Contenu conçu pour laccessibilité et lacquisition progressive des compétences - Le contenu est conçu pour l'accessibilité et la montée en compétences progressive
### Philosophie éducative ### Philosophie éducative
- Approche dapprentissage basée sur les projets - Approche d'apprentissage par projet
- Vérifications fréquentes des connaissances (quiz) - Vérifications fréquentes des connaissances (quiz)
- Exercices de codage pratiques - Exercices de codage pratiques
- Exemples dapplications réelles - Exemples d'applications réelles
- Accent sur les fondamentaux avant les frameworks - Accent sur les fondamentaux avant les frameworks
### Maintenance du référentiel ### Maintenance du référentiel
- Communauté active dapprenants et de contributeurs - Communauté active d'apprenants et de contributeurs
- Mises à jour régulières des dépendances et du contenu - Mises à jour régulières des dépendances et du contenu
- Suivi des issues et discussions par les mainteneurs - Suivi des issues et discussions par les mainteneurs
- Mises à jour des traductions automatisées via GitHub Actions - Mises à jour des traductions automatisées via GitHub Actions
@ -381,28 +381,28 @@ CO_OP_TRANSLATOR_METADATA:
- [Modules Microsoft Learn](https://docs.microsoft.com/learn/) - [Modules Microsoft Learn](https://docs.microsoft.com/learn/)
- [Ressources Student Hub](https://docs.microsoft.com/learn/student-hub/) - [Ressources Student Hub](https://docs.microsoft.com/learn/student-hub/)
- [GitHub Copilot](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot) recommandé pour les apprenants - [GitHub Copilot](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot) recommandé pour les apprenants
- Cours additionnels : IA générative, Data Science, ML, IoT disponibles - Cours supplémentaires : IA générative, Data Science, ML, cursus IoT disponibles
### Travail avec des projets spécifiques ### Travailler avec des projets spécifiques
Pour des instructions détaillées sur les projets individuels, consultez les fichiers README dans : Pour des instructions détaillées sur les projets individuels, consultez les fichiers README dans :
- `quiz-app/README.md` - Application quiz Vue 3 - `quiz-app/README.md` - Application quiz Vue 3
- `7-bank-project/README.md` - Application bancaire avec authentification - `7-bank-project/README.md` - Application bancaire avec authentification
- `5-browser-extension/README.md` - Développement dextension de navigateur - `5-browser-extension/README.md` - Développement d'extension de navigateur
- `6-space-game/README.md` - Développement de jeu Canvas - `6-space-game/README.md` - Développement de jeu sur Canvas
- `9-chat-project/README.md` - Projet dassistant de chat IA - `9-chat-project/README.md` - Projet d'assistant de chat IA
### Structure Monorepo ### Structure du monorepo
Bien que ce ne soit pas un monorepo traditionnel, ce référentiel contient plusieurs projets indépendants : Bien que ce ne soit pas un monorepo traditionnel, ce référentiel contient plusieurs projets indépendants :
- Chaque leçon est autonome - Chaque leçon est autonome
- Les projets ne partagent pas leurs dépendances - Les projets ne partagent pas leurs dépendances
- Travaillez sur des projets individuels sans affecter les autres - Travaillez sur des projets individuels sans impacter les autres
- Clonez lensemble du repo pour une expérience complète du programme - Clonez le référentiel complet pour une expérience complète du programme
--- ---
<!-- CO-OP TRANSLATOR DISCLAIMER START --> <!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Avertissement** : **Avertissement** :
Ce document a été traduit à laide du service de traduction automatisée [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions dassurer lexactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue dorigine doit être considéré comme la source faisant foi. Pour les informations sensibles, il est recommandé de recourir à une traduction professionnelle humaine. Nous nassumons aucune responsabilité en cas de malentendus ou dinterprétations erronées résultant de lutilisation de cette traduction. Ce document a été traduit à l'aide du service de traduction IA [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant foi. Pour les informations critiques, une traduction professionnelle humaine est recommandée. Nous ne sommes pas responsables des malentendus ou mauvaises interprétations résultant de l'utilisation de cette traduction.
<!-- CO-OP TRANSLATOR DISCLAIMER END --> <!-- CO-OP TRANSLATOR DISCLAIMER END -->
Loading…
Cancel
Save