Mi piace pensarlo come un muro gigante di cassette di sicurezza numerate come in una banca e ogni scatola contiene un pezzo di carta con un numero sopra.
Funziona per descrivere molte circostanze. Come spieghi cosa sono i caratteri ASCII "A" e "B"? Tutti concordano sul fatto che un pezzo di carta con il numero 65 significa "A" e 66 significa "B". La stessa cosa vale per la codifica di foto / film.
Come immagazziniamo cose più grandi come la String "AB". Abbiamo bisogno di 2 scatole. Uno per memorizzare 65 e uno per memorizzare 66. Avrebbe senso che queste scatole fossero l'una accanto all'altra. Forse la 'A' viene memorizzata nel riquadro numero 1000 e poi 'B' viene memorizzato nella casella 1001. Come facciamo a sapere che la stringa ha solo 2 caratteri al suo interno? Forse memorizziamo il numero 0 nella casella 1002 per segnalare che è la fine della stringa e si scopre che in questo modo in realtà servono 3 caselle per memorizzare 2 caratteri.
Ci sono altri modi in cui posso memorizzare la stringa? Come faccio a sapere quanto è lunga la stringa [65, 66, 0]
? Devo iniziare alla casella 1000 e continuare ad aprire le caselle fino a quando ne ottengo una con 0 in essa. C'è un altro modo per memorizzare la mia stringa? Cosa succede se la prima scatola ha la lunghezza della mia stringa? Potrei memorizzare [2 65 66]
e quindi se ho bisogno di conoscere la lunghezza della mia stringa ho solo bisogno di aprire la prima casella. Fintanto che io e tutti gli altri sappiamo quale sistema sto usando non ha molta importanza in quale direzione scegliamo.
Come facciamo a sapere dove è la nostra stringa? In qualche modo abbiamo bisogno di sapere che inizia nel punto 1000. O lo abbiamo scritto nel nostro codice o in qualche modo abbiamo accesso ad un'altra casella (un puntatore) e all'interno di quella casella sul suo foglio di carta scriviamo 1000 in modo che sappiamo che la nostra stringa inizia a posizione 1000.
Forse pensi che sia stupido che 65 significhi "A". Potresti dire 1 = 'A' e 2 = 'B' ecc.
Quel sistema è perfetto anche se quando li condividi con altre persone quelle persone sanno qual è il tuo sistema.
Potremmo andare sempre più a fondo, ma alla fine dovremo renderci conto che il significato di ciò che è scritto sui pezzi di carta è qualsiasi cosa che noi umani decidiamo è il significato. Noi programmatori decidiamo se un numero in una casella è un numero intero, una frazione, un carattere, un puntatore in un'altra casella, un'istruzione per la macchina, un colore pixel per un'immagine.
Solo le persone che hanno scritto i numeri sulla carta possono capire se 65 significa 65, 'A', -99, Rosso, Infinito o un Secchio d'Arancio.
È come scrivere. Qual è il significato di una linea verticale? È un minuscolo L? È il numero 1? Fa parte di una sorta di disegno? Sta per una parola in un'altra lingua? È quella cosa sopra \
sulla mia tastiera? L'unico modo per sapere il significato della linea è se la persona che lo ha disegnato te lo dice.