Conceptes generals de programació

De Cacauet Wiki
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…».)
(dif) ← Versió més antiga | Versió actual (dif) | Versió més nova → (dif)
Salta a la navegació Salta a la cerca

...intro...

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:

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