Como introducción a esta sección de teoría,
quiero empezar con una muy chula
y una visión general de muy alto nivel sobre el lenguaje JavaScript.
Solo para que tengas una primera visión general
de la mayoría de las cosas que necesitamos aprender
para eventualmente dominar JavaScript.
Y esto va a ser una conferencia larga,
así que prepárate para un viaje loco.
Y quiero empezar volviendo a esa primera definición
que te di en JavaScript,
donde te dije que JavaScript
es un programa de alto nivel, orientado a objetos,
Lenguaje de programación multiparadigma.
Ahora bien, esto es, por supuesto, 100% correcto,
pero también es realmente solo la superficie,
la punta del iceberg.
Entonces, ¿qué pasa con esta definición?
JavaScript es un programa de alto nivel, basado en prototipos,
orientado a objetos, multiparadigma,
interpretado o compilado justo a tiempo,
dinámico, de un solo subproceso,
lenguaje de programación recolectado de basura
con funciones de primera clase
y un modelo de concurrencia de bucle de eventos sin bloqueo.
¿Esperar lo?
¿Es esto algún tipo de broma?
Bueno, sí, en realidad es un poco,
Acabo de empaquetar la mayor cantidad de información posible.
sobre JavaScript en una oración ilegible, solo por diversión,
pero además de diversión,
esto también nos da una gran oportunidad
para desempaquetar todo esto con el fin de obtener un primer vistazo
en todo lo que vamos a aprender sobre JavaScript
A lo largo del curso.
Y esto no es para intimidarte. Realmente no lo es.
Solo quiero que tengas una idea general
antes de empezar realmente
y también introducir algunos temas
que es bueno saber,
porque tener una visión general antes de profundizar
es, en mi opinión, una técnica de aprendizaje asombrosa.
Entonces, dicho esto, analicemos esto ahora un poco.
Estos son los nueve temas de JavaScript
que vamos a hablar brevemente en esta conferencia,
ligeramente reordenado.
Y comenzando con la parte de alto nivel,
como ya sabrás,
todos los programas que se ejecutan en su computadora
necesita algunos recursos de hardware,
como la memoria y la CPU para hacer su trabajo.
Ahora, hay lenguajes de bajo nivel, como C,
donde tienes que gestionar manualmente estos recursos.
Por ejemplo,
pidiéndole a la computadora memoria para crear una nueva variable.
Por otro lado,
tienes lenguajes de alto nivel como JavaScript y Python,
donde no tenemos que administrar los recursos en absoluto
porque estos lenguajes tienen las llamadas abstracciones
que nos quitan todo ese trabajo.
Esto hace que el idioma sea más fácil de aprender y usar,
pero la desventaja es que los programas nunca serán tan rápidos
o tan optimizado como por ejemplo, los programas en C.
Ahora, una de las poderosas herramientas
eso nos quita la gestión de la memoria a los desarrolladores
es la recolección de basura,
que es básicamente un algoritmo
dentro del motor JavaScript,
que elimina automáticamente los objetos viejos y sin usar
de la memoria de la computadora
para no obstruirlo con cosas innecesarias.
Así que es un poco como si JavaScript tuviera un tipo de limpieza
quien limpia nuestra memoria de vez en cuando
para que no tengamos que hacerlo manualmente en nuestro código.
A continuación, JavaScript es un interpretado
o lenguaje compilado justo a tiempo.
Y nuevamente, aprenderemos más sobre esto en esta sección,
pero lo que necesitas saber por ahora
es que el procesador de la computadora
solo entiende ceros y unos, así es.
En última instancia, cada programa debe escribirse
en ceros y unos, que también se llama código máquina.
Y dado que eso no es realmente práctico de escribir, ¿verdad?
Simplemente escribimos código JavaScript legible por humanos,
que es una abstracción sobre código máquina,
pero este código eventualmente necesita ser traducido
al código máquina.
Y ese paso puede ser compilar
o interpretando.
Este paso es necesario en todos los lenguajes de programación.
porque nadie escribe código de máquina manualmente.
En el caso de JavaScript,
esto sucede dentro del motor de JavaScript.
Ahora, una de las cosas que hace que JavaScript sea tan popular
es el hecho de que es un lenguaje multiparadigma.
En programación, un paradigma es un enfoque
y una mentalidad general de estructurar nuestro código,
que en última instancia dirigirá el estilo y la técnica de codificación
en un proyecto que utiliza un determinado paradigma.
Y esta definición todavía suena un poco abstracta,
pero no te preocupes,
se volverá más claro a medida que avancemos.
Ahora, tres paradigmas populares son;
procedimental, orientado a objetos,
y programación funcional.
Así que la programación procedimental es lo que hemos estado haciendo hasta ahora,
que es básicamente solo organizar el código
de una manera muy lineal,
y luego con algunas funciones intermedias.
Ahora sobre la programación orientada a objetos
y programación funcional,
Hablaré de ellos en un segundo.
Además, podemos clasificar los paradigmas como imperativos.
o como declarativo, pero nuevamente, más sobre eso más adelante.
Ahora, muchos lenguajes son solo procedimentales
o solo orientado a objetos
o solo funcional,
pero JavaScript lo hace todo.
Así que es realmente flexible y versátil.
Y entonces podemos hacer realmente lo que queramos con él.
Es nuestra elección. Podemos usar cualquier paradigma que queramos.
Y en este curso, te mostraré cómo usarlos todos.
Entonces, sobre la naturaleza orientada a objetos de JavaScript,
es un enfoque basado en prototipos y orientado a objetos.
Ahora, ¿qué significa eso?
Bueno, primero, casi todo en JavaScript es un objeto,
a excepción de los valores primitivos
como números, cadenas, etcétera.
Pero las matrices, por ejemplo, son solo objetos.
Y eso ya lo vimos en la práctica, ¿no?
Ahora, ¿alguna vez te has preguntado por qué podemos crear una matriz
y luego usar el método push en él, por ejemplo?
Bueno, es por la herencia prototípica.
Básicamente, creamos matrices a partir de un modelo de matriz,
que es como una plantilla y esto se llama el prototipo.
Este prototipo contiene todos los métodos de matriz.
y las matrices que creamos en nuestro código
luego heredar los métodos del modelo
para que podamos usarlos en las matrices.
Y esto, lo que te acabo de explicar
es en realidad una gran simplificación,
lo que aún puede sonar confuso.
Y esa es la razón por la que hay una sección completa
sobre programación orientada a objetos con JavaScript
más adelante en el curso.
Pero dado que esta es una gran conferencia general,
Primero quería presentar este tema aquí.
A continuación, JavaScript es un lenguaje
con funciones de primera clase,
lo que simplemente significa que funciona
se tratan como variables regulares.
Entonces, podemos pasar funciones a otras funciones.
e incluso podemos devolver funciones desde funciones.
Y esto es extremadamente poderoso.
porque nos permite usar muchas técnicas poderosas
y también permite la programación funcional,
que es uno de los paradigmas
que acabamos de hablar antes.
Y de hecho,
ya hemos usado el poder de las funciones de primera clase
sin saber que se llaman funciones de primera clase.
Así que recuerda este fragmento de código que escribimos
para cerrar la ventana modal que construimos antes.
Así que aquí, pasamos la función closeModal
en la función addEventListener
como si fuera solo una variable regular, ¿no?
Y en realidad no todos los lenguajes tienen funciones de primera clase,
pero JavaScript tiene, y es increíble.
Créeme, es muy, muy útil.
A continuación, dije que JavaScript es un lenguaje dinámico.
y dinámico en realidad significa tipado dinámicamente.
Entonces, como ya hemos visto,
en JavaScript, no asignamos tipos de datos a las variables.
En cambio, solo se dieron a conocer
cuando el motor JavaScript ejecuta nuestro código.
Además, el tipo de variables se puede cambiar fácilmente.
a medida que reasignamos variables.
Y esto es básicamente lo que significa dinámicamente tipado.
Ahora hay mucha controversia si esto es bueno o malo,
pero así es como funciona.
Ahora, lo mismo no es cierto.
para la mayoría de los otros lenguajes de programación,
donde tenemos que asignar tipos manualmente a las variables.
Y esto generalmente evita que ocurran errores,
que es la razón por la que mucha gente dice que JavaScript
también debe ser un lenguaje fuertemente tipado.
Y si usted mismo quiere usar JavaScript con tipos,
entonces siempre puedes buscar en TypeScript.
Pero de todos modos, ahora hablemos finalmente sobre el hilo único
y el modelo de concurrencia de bucle de eventos sin bloqueo.
Ahora bien, este es un tema realmente complejo.
y probablemente el más complejo de todo el curso,
por eso es como al final del curso.
Y por lo tanto,
No voy a entrar en detalles aquí todavía,
pero en lugar de eso solo definiré algunas cosas aquí.
Primero, ¿qué es realmente un modelo de concurrencia?
Bueno, es solo un término elegante.
eso significa cómo el motor de JavaScript maneja múltiples tareas
sucediendo al mismo tiempo.
No, está bien. Eso es genial.
Pero, ¿por qué necesitamos eso?
Bueno, debido a que JavaScript se ejecuta en un único subproceso,
lo que significa que solo puede hacer una cosa a la vez
y por lo tanto necesitamos una forma de manejar
varias cosas sucediendo al mismo tiempo.
Y por cierto, en computación,
un hilo es como un conjunto de instrucciones
que se ejecuta en la CPU de la computadora.
Básicamente, el hilo es donde nuestro código
se ejecuta realmente en el procesador de una máquina.
Está bien. Pero, ¿y si hay una tarea de larga duración,
como obtener datos de un servidor remoto?
Bueno, parece que eso bloquearía el hilo único.
donde se ejecuta el código, ¿verdad?
Pero por supuesto que no queremos eso.
Lo que queremos es el llamado comportamiento sin bloqueo
y ¿cómo logramos eso?
Bueno, usando el llamado bucle de eventos.
El bucle de eventos requiere tareas de larga duración,
los ejecuta en segundo plano
y luego los vuelve a poner en el hilo principal
una vez que hayan terminado.
Y esto es, en pocas palabras,
Modelo de concurrencia de bucle de eventos sin bloqueo de JavaScript
con un solo hilo.
Suena como un bocado seguro
pero al final,
realmente solo se comprime a esto.
Sólo tenga en cuenta que, de nuevo,
esta es una gran simplificación a la que volveremos.
Está bien.
Y esto en realidad completa esta conferencia general.
Sé que había un montón de cosas para asimilar,
pero espero que todavía hayas aprendido una o dos cosas aquí.