1. Programació creativa

1.4. Llenguatges de programació

Al cor d’un ordinador, el processador, hi conviuen milions de petits transistors (podem pensar en aquests com a interruptors) que són els encarregats de fer els càlculs dels nostres algorismes. Aquests transistors operen amb una lògica binària, per la qual cosa només es poden apagar o encendre, adoptar el valor d’1 o 0. Combinant molts d’aquests valors binaris podem representar tot tipus de valors i operacions, per exemple, el número 500 el podem representar en valors binaris com 111110100. A les albors de la programació, els programes es podien emmagatzemar en targetes perforades (perforació = 0, no perforació = 1). Per sort per a nosaltres, els temps d’haver de programar en llenguatge binari (llenguatge màquina) han quedat enrere i ara disposem de diferents llenguatges de programació amb els quals podem escriure el nostre codi en un llenguatge més «natural» que més tard serà «traduït» perquè l’entengui l’ordinador. La primera categorització dins dels llenguatges de programació seria llavors la que diferencia entre els llenguatges de baix nivell (que depenen de cada màquina) i els d’alt nivell, que més tard es tradueixen a llenguatge màquina.

La manera en la qual es produeix aquesta traducció marca una altra de les principals diferències entre diferents llenguatges de programació. Aquests poden ser compilats o interpretats. Abans d’executar un programa escrit en un llenguatge compilat (C, C++, Swift, etc.), es necessita un pas previ, la compilació, que converteix el programa a llenguatge màquina. No obstant això, en els llenguatges interpretats (JavaScript, Python, Ruby, etc.), la traducció a llenguatge màquina es fa a mesura que s’executa el programa. També hi ha altres casos, com el de Java o C#, en els quals el codi es tradueix primer a un llenguatge intermedi que després és interpretat.

De manera molt general, podríem dir que els llenguatges compilats estan més optimitzats i són més ràpids en l’execució, amb la contrapartida de ser més complexos, mentre que els interpretats faciliten la tasca del programador, però no aconsegueixen el rendiment dels compilats. Igualment, la bretxa entre els uns i els altres en els últims anys s’està estrenyent.