Sto cercando di capire la digitazione statica rispetto alla dinamica, ma sto davvero cercando di capire come tutto combaci.
Tutto inizia con i tipi di dati. Per quanto ho capito, i tipi di dati sono nozioni abbastanza astratte, che esistono nei compilatori 'in' per classificare i dati in modo che le operazioni su vari tipi di dati possano essere validate (cioè nel tentativo di interrompere l'aggiunta di una stringa a un intero ), e per generare il codice macchina corretto per l'interpretazione hardware del valore. Cioè diciamo di avere il seguente:
int myInt = 5;
char myChar = '5';
Console.WriteLine(myInt);
Console.WriteLine(myChar);
Entrambi alla fine scriveranno un cinque nella finestra della console, ma, poiché le rappresentazioni in memoria di numeri interi e caratteri sono differenti, il codice macchina che interpreta il valore nella posizione di memoria associata alla variabile myInt, che prende quel valore e lo visualizza sulla finestra della console, sarebbe diverso dal codice macchina per myChar. Anche se Console.WriteLine () "fa lo stesso lavoro", le diverse rappresentazioni di cinque richiedono un codice di basso livello diverso.
Quindi la mia domanda è questa: se i tipi di dati 'esistono solo nel compilatore' - cioè una volta che il programma è stato compilato nel codice macchina non si ha conoscenza di quale tipo di dati il valore in una particolare cella di memoria è (tutto è solo 1s e 0s) - allora come può essere eseguito un controllo dei tipi in fase di esecuzione? Sicuramente non esiste un concetto di tipi di dati in fase di esecuzione? Quindi sicuramente la digitazione dinamica non può avere nulla a che fare con il controllo dei tipi che si verifica in fase di esecuzione?
Dove la mia comprensione sta andando male, e qualcuno potrebbe spiegare la tipizzazione statica e dinamica rispetto all'argomento sopra riportato? Qual è il quadro generale di ciò che sta succedendo?
Sto cercando di capire questo per un saggio, quindi i riferimenti a libri o fonti online sarebbero utili :) Grazie.