hola.py pas a pas, i descobreix com l'intèrpret llegeix, tradueix i executa el codi en temps real.
Què fa? L'intèrpret llegeix el teu fitxer caràcter per caràcter i el converteix en "tokens" (paraules reservades com print, parèntesis, cadenes).
🔹 Després, comprova que la gramàtica sigui correcta (sintaxi). Si et falta un parèntesi, aquí salta el famós SyntaxError. Si tot és correcte, genera un Arbre Sintàctic Abstracte (AST), que és una estructura de dades que representa la lògica del teu codi.
NAME('print'), STRING('Hola Mon'), LPAR, RPAR.Què fa? Python tradueix l'AST a un llenguatge intermedi anomenat Bytecode. Això NO és codi màquina (0 i 1 de CPU), sinó instruccions per a la Màquina Virtual de Python.
🔹 Aquest bytecode es guarda normalment als fitxers __pycache__/*.pyc per agilitzar futures execucions. Són instruccions de baix nivell com LOAD_NAME, LOAD_CONST o CALL_FUNCTION.
LOAD_NAME 'print' → LOAD_CONST 'Hola Mon' → CALL_FUNCTION → RETURN_VALUE.Què fa? La PVM (Python Virtual Machine) és un bucle infinit que llegeix el bytecode instrucció per instrucció i les "interpreta" (les tradueix en accions reals).
🔹 No hi ha un executable independent com en C. La PVM gestiona la memòria (pila i heap) i va executant les ordres. Quan llegeix CALL_FUNCTION, sap que ha de cridar una funció.
CALL_FUNCTION → busca la funció print → executa el seu codi intern.Què fa? Quan la PVM executa el codi intern de print, aquest acaba fent una crida al sistema operatiu (Syscall) per escriure a la sortida estàndard.
🔹 Internament, es fa una crida write(1, "Hola Mon", 8). El número 1 és el descriptor de fitxer de la sortida estàndard (stdout). El sistema operatiu agafa aquestes dades i les envia al teu terminal.
write(1, "Hola Mon", 8) → el 1 és l'STDOUT.Què fa? Quan el programa acaba d'executar totes les instruccions (o troba un sys.exit()), l'intèrpret retorna un codi numèric al sistema operatiu.
🔹 Per defecte, si no hi ha errors, Python retorna 0 (èxit). Si hi ha una excepció no capturada o forcem sys.exit(1), retorna 1 (error). El shell (terminal) rep aquest número i l'interpreta.
python3 hola.py → mostra "Hola Mon" i retorna 0 (èxit).🧠 Diferència clau: Compilador (C) vs Intèrpret (Python)
Tradueix TOT el codi a 0 i 1 de CPU abans d'executar. Genera un executable independent. L'execució és més ràpida, però la compilació és més lenta.
Llegeix, tradueix a bytecode i executa línia per línia en temps real. No genera un executable natiu; necessites l'intèrpret per executar-lo. Més flexible, però una mica més lent.
📌 Resum del "Hola Mon" en Python:
print("Hola Mon").