Hola y bienvenidos.
Bien, para comenzar, vamos a ver que existen diferentes tipos de memoria para almacenar información.
Por ejemplo, por un lado tenemos la memoria RAM, pero también tenemos la memoria RAM, así que ambas
memorias sirven para almacenar información.
Sin embargo, la memoria RAM es una memoria de sólo lectura.
Por lo tanto, aquí únicamente se puede escribir información una vez cuando se crea esta memoria.
Pero una vez que se guardan allí los datos, ya no es posible volver a escribir aquí información.
Por lo tanto, este tipo de memoria no nos va a servir para almacenar la información de nuestros programas,
ya que la información de nuestros programas es cambiante a lo largo del tiempo y para ello entonces
tenemos la memoria RAM.
Esta memoria conocida como memoria de acceso aleatorio, entonces nos va a permitir almacenar la información
de nuestros programas, ya que como hemos comentado, los datos almacenados en la memoria RAM no se
pueden modificar y entonces vamos a tener que utilizar la memoria RAM, ya que esta memoria es de lectura
y escritura.
Por lo tanto, ese es el tipo de memoria que utilizaremos para almacenar la información de nuestros
programas.
Y en particular nos referimos a la información que almacenan nuestras variables.
Ahora.
Pero.
Cómo se almacena esta información en nuestra memoria RAM?
Vamos a ver a detalle el concepto de variables, pero ahora introduciendo el concepto de la memoria
RAM.
Así que por un lado, podemos crear una variable.
Esta variable tiene como identificador la letra A y se le está asignando la literal de test como el
valor asociado a esta variable.
Sin embargo, esta línea de código genera lo siguiente En nuestra memoria RAM vamos a ver que la memoria
RAM se divide en diferentes celdas y por ejemplo, estas celdas de la memoria RAM pueden almacenar información
en forma de bytes, por ejemplo valores numéricos reales de tipo lógico, caracteres, etc Así que toda
esta información se puede almacenar en las celdas y cada tipo de dato puede ocupar una o más celdas
de nuestra memoria RAM.
Esto no lo vamos a ver a detalle sino hasta que veamos lenguajes del mundo real, ya que no se especifica
a detalle cuánto va a utilizar cada uno de los tipos de datos.
Por ejemplo, un entero, un char, etcétera no nos dice cuánta información va a ocupar en la memoria
RAM, pero cuando trabajemos con lenguajes de programación del mundo real como C, C++, Java, etcétera,
entonces ya podremos especificar cuánta información ocupa cada tipo de dato.
Sin embargo, esta es una lección introductoria para que entendamos a detalle el concepto del manejo
de la memoria RAM.
Entonces, en la memoria RAM se crea nuestra variable y la literal A apunta a cierta dirección de memoria,
a cierta celda en nuestra memoria RAM.
Ahora, a cada una de las celdas de la memoria RAM se le asigna una referencia.
A esto se le conoce como dirección de memoria o referencia en la memoria RAM.
Así que vamos a tener asignada por cada una de las celdas una referencia.
Este va a ser un valor hexadecimal, ya que las computadoras recordemos que solamente manejan unos y
ceros.
Y para hacer más simple el manejo de unos y ceros.
Existen también diferentes tipos de sistemas de numeración.
Como puede ser además de la base dos o binario.
También existe el sistema de numeración octal, pero también existe el sistema de numeración hexadecimal.
Y entonces las computadoras utilizan el sistema de numeración hexadecimal para manejar la referencia
de memoria.
Por ello es que en este caso le puse 10X al inicio.
El cero al inicio significa que es otra base y la x significa que es una base hexadecimal.
En este punto no tiene caso que nos desviemos en el estudio de los sistemas numéricos, pero si quieren
profundizar en estos temas pueden revisar el tema de sistemas numéricos, en particular el sistema hexadecimal.
Bien, ahora, una vez que sabemos cómo es que se crean las variables, se reserva la memoria para almacenar
esta información y posteriormente hay un identificador que apunta a esta dirección de memoria.
Entonces sabemos que el identificador A está apuntando a una dirección de memoria, en este caso la
dirección de memoria 0X333, cuyo valor es el valor de diez.
Ahora, si creamos otra variable, por ejemplo, la variable b es exactamente el mismo proceso.
Se reserva un espacio de memoria para almacenar esta información en cierta celda de la memoria RAM.
Así que la variable b apunta a cierta celda.
Se asigna el valor, en este caso de 15, pero está siendo referenciado por una dirección de memoria.
Así que para conocer realmente el valor que almacena la variable B, tenemos que saber dónde se ubica
esta variable.
Así que para extraer el valor que tiene la variable b, todo va a ser a partir de la referencia o la
dirección de memoria que tenga esta variable.
Ahora, la ventaja de los lenguajes de programación es que no es necesario que en todo momento sepamos
la dirección de memoria.
Esto simplemente es un concepto que necesitamos saber, ya que posteriormente vamos a hablar de referencias.
Y cuando hablemos de referencias de memoria, necesitamos saber cómo se crean las variables y qué significa
una referencia asociado a cada variable.
Pero básicamente una referencia, como hemos comentado, es la forma de identificar de manera única
la celda donde se almacena cierta información que está siendo apuntada por una variable.
Así que con esto ya tenemos definidas las variables A y B.
Ahora si definimos una variable C, pero ahora le vamos a asignar el valor de la variable A y aquí viene
un detalle importante.
Sucede en este caso la variable c también se crea, se reserva espacio de memoria, pero se crea una
copia la copia almacenada en la celda donde está apuntando la variable A se copia hacia la celda de
la variable apuntada por C, así que podemos observar que se realiza una copia del valor diez y se asigna
en la celda apuntada por la variable C, así que en este caso se copia el valor de la variable a a la
variable c.
Y ahora si hacemos un cambio a la variable c, eso significa que vamos a ir directamente a la celda
donde está almacenada la variable C, y entonces, en lugar de tener el valor de then, se va a sobreescribir
por el valor de 20.
Pero podemos observar que el valor almacenado apuntado por la variable A no se ve afectado, a pesar
de que el valor de A se copió a la variable C simplemente fue una copia.
Podemos observar que son.
Dos variables por separado.
La variable A tiene el valor de then pero almacenado en la dirección de memoria 0X333.
En cambio, la variable c tiene el valor de 20 en otra dirección de memoria.
Así que en este caso sólo se modifica el valor de la variable c El valor de la variable A no se ve afectado
ya que solamente le pasó una copia es una copia por valor.
Y esto es así porque la variable C está almacenada en otra posición de memoria.
En este caso la dirección de memoria 0X355.
Por lo tanto, son dos variables completamente diferentes, cada una almacenando su propio valor.
Bien, ahora un detalle es que también nosotros podríamos acceder a los valores de la memoria RAM utilizando
las direcciones de memoria.
Sin embargo, esto sería bastante complicado e impráctico.
Al momento de programar, ya que tendríamos que trabajar en lugar de identificadores de variables,
tendríamos que utilizar, por ejemplo, en este caso las referencias o direcciones de memoria, por
ejemplo, En este caso, si quisiéramos modificar el valor de la variable C en lugar de utilizar el
identificador C, utilizaríamos la dirección de memoria 0X355 y le asignamos el valor de twenty.
Así que esto sería completamente impráctico, ya que nuestros programas al momento de tratar de leerlos
y entenderlos, no sabríamos de dónde salen estos números.
Y además también recordemos que la memoria RAM es una memoria dinámica.
Así que estas direcciones de memoria, al ser dinámicas, cambian con cada ejecución de nuestro programa.
No siempre se le va a asignar la misma dirección a una variable, ya que recordemos también que varios
programas se están ejecutando al mismo tiempo.
Por lo tanto, todos estos programas están requiriendo de reservar memoria y esta memoria RAM se comparte
para todos los programas.
Así que en este caso realizar programas utilizando las referencias de memoria sería completamente impráctico.
Por ello es que utilizamos el concepto de identificadores de las variables, pero ya sabemos a detalle
cómo funciona.
Ya sabemos que cuando utilizamos variables se crea por un lado el identificador que apunta a cierta
dirección de memoria y además se almacena un variable en la celda apuntada por dicho identificador,
y es por ello que los identificadores de las variables es un concepto que se vuelve bastante importante
en la programación, ya que de otra forma sería bastante complicado crear código y sobre todo después
entenderlo y darle mantenimiento.
Bien, vamos a detener hasta aquí.
Esta es una primera introducción al manejo de la memoria RAM.
Bien, eso es todo por este vídeo y nos vemos en el siguiente.
Saludos.