SLIDE 1 / 6
1. Memoria, Identificadores y Valores
Toda variable o constante es una posición en la memoria RAM que guarda un valor bajo un nombre asignado (identificador).
Identificador: El nombre simbólico en tu código (ej. score).
Dirección: La ubicación física en RAM (ej. 0x7ffd9).
Valor: Los datos binarios almacenados internamente.
VISUALIZADOR DE RAM SIMULADO
0x7FFD01 score (int) 100
0x7FFD05 MAX_LIMIT (const) 999 🔒
0x7FFD09 user_name (string) "Facundo"
2. C: Tipado Estático y Asignación Directa
En C se declara el tipo exacto de dato antes de usar la variable. El compilador reserva un espacio en bytes fijo.
- int / float: Variables modificables en cualquier momento.
- const: Instrucción al compilador para prohibir reasignaciones.
main.c
#include <stdio.h>
int main() {
int contador = 0; // Variable mutable
const float PI = 3.14159f; // Constante inmutable
contador = 10; // OK: Cambia valor
// PI = 3.0; // Error de compilación GCC
return 0;
} 3. JavaScript: var, let, const & Referencias
JS usa tipado dinámico. const evita reasignar la variable, pero NO congela las propiedades de un objeto.
let: Variable con alcance de bloque.
const (Primitivo): Impedimento total de cambio.
const (Objeto): La referencia es fija, pero sus claves pueden mutar.
app.js
let edad = 25;
edad = 26; // OK
const config = { tema: 'oscuro' };
config.tema = 'claro'; // ¡Mutación permitida!
// config = {}; // TypeError en V8
Object.freeze(config); // Inmutabilidad real 4. Python: Nombres como Referencias a Objetos
En Python todo es un objeto. Las variables no contienen datos, sino etiquetas (referencias) a objetos en el Heap.
- Inmutables: int, float, str, tuple (create new object on change).
- Mutables: list, dict, set (modify in-place).
- typing.Final: Aviso para verificadores estáticos (Mypy).
script.py
from typing import Final
MAX_USERS: Final[int] = 500
numeros = [1, 2, 3]
numeros.append(4) # Mutación in-place en Heap
texto = "Hola"
# texto[0] = "h" # TypeError: str es inmutable 5. Java: Primitivos, Objetos y final
Java distingue estrictamente entre tipos primitivos (guardados por valor) y objetos (guardados por referencia en el Heap).
final: Evita reasignación de variable o puntero.
String: Clase inmutable por diseño (String Pool).
Main.java
public class Main {
public static void main(String[] args) {
final double IVA = 0.21;
// IVA = 0.15; // Error de compilador javac
final StringBuilder sb = new StringBuilder("Hi");
sb.append(" World"); // OK: Contenido muta
}
} 6. Simulador Interactivo de Mutación
Seleccioná un lenguaje e intentá forzar una mutación inválida:
C / GCC Compiler
const float PI = 3.14159f;
PI = 3.0f; // Intentando reasignar...
ERROR DE COMPILACIÓN
main.c:6:5: error: assignment of read-only variable 'PI'
Navegación: Flechas Izq / Der