Llenguatges de programació¶
Un programa és un algorisme expressat de tal manera que un computador el pot entendre i executar. Hem insistit molt en el fet de que els computadors operen en llenguatge binari, i per a ells solament existeixen seqüències de 0 i 1. Per exemple, una operació bàsica com una suma es expressada per la màquina amb tres seqüències de ceros i uns: una seqüència per a cadascun dels operands i altra per a l’operador suma. Aquestos són els anomenats codis de màquina, escrits amb notació hexadecimal a l’exemple següent per ocupar menys espai.
ba 0c 01
b4 09
cd 21
b8 00 4c
cd 21
48 65 6c 6c 6f 2c
20 57 6f 72 6c 64
21 0d 0a 24
Aquesta manera de comunicar-se amb la màquina resulta molt complicada per als humans, ja que cal recordar el codi corresponent a cadascuna de les operacions que la CPU pot realitzar. Per aquest motiu es va desenvolupar un llenguatge que permetera substituir alguns codis màquina per símbols fàcils de recordar com ADD per a la suma: el llenguatge assemblador.
section .data
msg db "Hola món", 0x0a ;Missatge
len equ $ - msg ;Grandària del missatge
section .text
global _start ;Necessitem exportar '_start' a ld, para que ho reconega
;com el punt de entrada del programa.
_start:
;Escrivim el missatge a stdout.
mov eax, 4 ;Nombre de la crida al sistema (sys_write).
mov ebx, 1 ;Primer argument: file handle (stdout).
mov ecx, msg ;Segon argument: punter a la cadena a escriure.
mov edx, len ;Tercer argument: grandària de la cadena.
int 0x80 ;Crida al Kernel.
mov eax, 1 ;Nombre de la crida al sistema (sys_exit).
xor ebx, ebx ;Argument de la crida: còdi d'eixida (0: execució exitosa).
int 0x80 ;Crida al Kernel.
De tota manera, encara que el llenguatge assemblador simplifica la programació una mica, aquesta continua sent una tasca complicada, ja que cal dir-li a la CPU totes i cadascuna de les operacions que cal fer una per una. També hi ha un altre problema: el llenguatge assemblador és diferent per a cada arquitectura concreta de computador, per la qual cosa cal re-escriure els programes per a que funcionen en diferents models de processadors.
Per resoldre els problemes del llenguatge assemblador i facilitar la creació de programes aparegueren, a finals de la dècada de 1950, els llenguatges de programació d’alt nivell. Aquests llenguatges permetien escriure programes més simples i comprensibles, vàlids per diferents computadors i, en ocasions, per a diferents sistemes operatius.
El llenguatge de codis de màquina es considera un llenguatge de «baix nivell» per què és el que utilitza la màquina, mentre que el llenguatge assemblador és considerat un llenguatge de nivell intermedi, ja que s’acosta més al llenguatge dels humans. Els llenguatges de programació moderns més utilitzats es consideren de «alt nivell» ja que són similars al llenguatge natural dels humans.
El primer llenguatge d’alt nivell va ser FORTRAN, un llenguatge especialment adaptat per al càlcul numèric i la computació científica, però prompte aparegueren multitud de llenguatges com ADA, ALGOL, BASIC, C, COBOL, Java, Lisp, Pascal, Perl, PHP, Python, etcètera.
Cadascun d’aquests llenguatges era de propòsit general o bé estava especialment adaptat a la resolució d’un tipus particular de problema (per exemple LISP a la intel·ligència artificial). Molts d’aquests llenguatges han sigut abandonats, mentre que la importància d’altres ha augmentat. També han canviat els paradigmes de programació, passant de la programació estructurada a la més moderna programació orientada a objectes.
Els programes que apareixen un poc abans en aquest document serveixen per a mostrar un missatge semblant a «Hola món!» a la pantalla del computador. Pots veure exemples d’aquest programa escrits en diferents llenguatges a la pàgina Hola_món de la Viquipèdia.