Conceptes generals de programació
La revisió el 10:21, 21 set 2012 per Enric (discussió | contribucions) (Es crea la pàgina amb «...intro... == Codi font i executable == Tipus de codi: * [http://en.wikipedia.org/wiki/Source_code Codi font]: conjunt d'arxius de text amb instruccions d'alt nivell, f…».)
...intro...
Contingut
Codi font i executable
Tipus de codi:
- Codi font: conjunt d'arxius de text amb instruccions d'alt nivell, fàcilment llegible per humans, no executable per la computadora. L'objectiu és facilitar la tasca als programadors.
- Codi màquina o executable: conjunt d'instruccions directament executables per un microprocessador o CPU. Alta complexitat. Instruccions molt específiques que realitzen tasques de molt baix nivell.
Característiques:
- El procés per generar codi executable a partir del codi font és la compilació.
- No és possible (o seria altíssimament complex) deduïr un codi font a partir d'un executable. D'aquí la importància del "codi lliure".
- Una sola instrucció de codi font pot produïr centenars o milers d'instruccions màquina.
- Una compilació és específica per una màquina i arquitectura. Els executables no són portables (tot i que sí es podrien executar amb un emulador).
Llenguatges compilats vs. interpretats
Distingirem entre:
- Llenguatges compilats. Utilitzen un compilador.
- Llenguatges interpretats. Utilitzen un intèrpret.
Llegiu els articles de la Wikipèdia al respecte.
Algunes notes addicionals:
- El llenguatge compilat revisa la correcció del tot el codi abans de generar l'executable.
- El llenguatge interpretat agafa una instrucció a cada moment i no comprova la totalitat, només el què està a punt d'executar.
- El compilador només tradueix un sol cop a codi màquina. A partir d'aquí l'execució del codi màquina (executable) és directa.
- Un intèrpret ha de traduïr de cou el programa cada cop que s'executa.
- Els llenguatges interpretats solen ser típicament 10 cops més lents que els executables.
- Els llenguatges compilats permeten la ocultació del codi font. Els interpretats no.
Avantatges de cadascun:
- Compilats = rendiment: uns 10 cops més ràpids.
- Interpretats = portabilitat: el mateix codi pot funcionar el diverses plataformes amb diferent hardware.
Compiladors i intèrprets
De fet, no son tan diferents. Consten de les següents parts, quasi totes comunes menys la darrera part.
- Preprocessador: expandeixen macros, substitueixen constants, etc.
- Anàlisi lèxica: separen els tokens (elements del llenguatge).
- Anàlisi sintàctica: comprovació dels tipus
- Anàlisi semàntica: (semàntica = significat) es decideix què fa la instrucció.
- Generació/execució:
- El compilador enllaça les llibreries (linker) i genera un arxiu executable.
- L'intèrpret executa directament les instruccions.
Codi intermig i màquines virtuals
Hi ha un seguit de llenguatges com Java que venen a ser híbrids. Java es compila però no sobre l'arquitectura