Anglès: el llenguatge de programació definitiu

  • Jordi Torras
  • Blog

Durant la major part de la història de l’enginyeria del programari, el progrés ha seguit un patró clar: l’abstracció substitueix la mecànica.

Vam començar programant les màquines de la manera més literal possible. Els primers desenvolupadors escrivien instruccions de màquina directament, manipulant registres i adreces de memòria. Era potent, però mentalment costós. Calia gestionar manualment cada detall.

El llenguatge ensamblador va abstraure el binari cru en instruccions simbòliques. No va eliminar la complexitat, però la va fer gestionable.

 mov eax, [price]
sub eax, [tax]
mov [net_amount], eax

Després van arribar els llenguatges d’alt nivell. Entre els primers hi havia Fortran i COBOL, cadascun representant un salt conceptual significatiu. Fortran permetia als enginyers expressar fórmules matemàtiques d’una manera més propera a com ja les raonaven. COBOL va intentar una cosa encara més ambiciosa: apropar la programació al llenguatge dels negocis.

Una instrucció típica de COBOL podria ser:

SUBTRACT TAX FROM PRICE GIVING NET-AMOUNT

En lloc de l’expressió més compacta que veuríem en molts llenguatges posteriors:

net_amount = price - tax;

Els creadors de COBOL creien que si els programes s’assemblaven a l’anglès, els usuaris de negocis podrien llegir-los i potser fins i tot escriure’ls més fàcilment. Va ser un primer intent de reduir la distància entre la intenció humana i l’execució de la màquina.

Però COBOL no era anglès. Era un llenguatge formal dissenyat per semblar anglès. Continuava sent rígid, determinista i lligat a la sintaxi. Els humans encara s’havien d’adaptar a l’estructura de la màquina. L’abstracció reduïa la càrrega cognitiva de la programació de baix nivell, però no eliminava la capa de traducció entre la intenció i la implementació.

Aquesta capa de traducció ha definit la professió d’enginyer de programari durant dècades.

Intenció Declarativa: El Cas de SQL

Hi va haver un altre moment important en aquesta evolució que sovint es passa per alt: l’arribada de SQL.

Structured Query Language (SQL) era diferent de la majoria de llenguatges de programació anteriors. Era declaratiu. En lloc de dir al sistema com recuperar les dades — quins índexs recórrer, quins bucles executar, quines unions calcular primer — el desenvolupador simplement descrivia quines dades necessitava.

 SELECT name, balance 
FROM accounts
WHERE balance > 1000;

Això va ser un canvi d’abstracció profund. L’enginyer expressava la intenció. El motor de la base de dades decidia el pla d’execució.

En aquest sentit, SQL era més proper al llenguatge natural que la majoria de llenguatges procedimentals. Es llegia gairebé com l’anglès. Es centrava a descriure el resultat desitjat en lloc de prescriure la seqüència d’operacions necessàries per aconseguir-lo.

I tot i així, malgrat la seva accessibilitat, SQL mai no es va convertir realment en un llenguatge per a usuaris de negocis. Va continuar sent tècnic. Escriure consultes correctes requeria entendre esquemes, relacions, implicacions de rendiment, normalització, indexació i comportament transaccional. L’abstracció simplificava l’execució, però no eliminava la necessitat d’expertesa.

SQL va ser una primera demostració que descriure què en lloc de com és poderós. Però la capa de traducció encara existia. Els humans encara havien de pensar en sintaxi estructurada i formal. El sistema optimitzava l’execució, però no interpretava la intenció ambigua.

La Capa de Traducció

Tradicionalment, construir programari ha requerit un procés de conversió:

  1. Un problema de negoci s’expressa en llenguatge natural.
  2. Un desenvolupador tradueix aquesta descripció en requisits estructurats.
  3. Aquests requisits es tradueixen en codi.
  4. La màquina executa aquest codi.

El valor fonamental del desenvolupador ha residit durant molt de temps en aquesta capacitat de traducció. El coneixement de la sintaxi, la familiaritat amb els frameworks i la memòria de funcions de llibreries formaven part de fer aquesta traducció eficient i precisa.

Tanmateix, l’arribada dels grans models de llenguatge ha començat a alterar aquesta dinàmica d’una manera fonamental.

Avui, és possible escriure alguna cosa com:

 Design a modular payment processing system with idempotent operations, 
audit logging, retry logic with exponential backoff,
and integration tests simulating network failures.
It must follow the existing application’s architecture and conventions,
including the same coding style, framework choices, database patterns
(ORM, migrations, transactions),logging/observability stack,
configuration approach, and deployment practices. Reuse existing
libraries and utilities wherever possible, and avoid introducing new
dependencies unless strictly necessary.

Això no és codi. És intenció estructurada.

I tot i així, un sistema d’IA capaç pot transformar aquesta intenció en bastides, casos de prova i fins i tot patrons arquitectònics en qüestió de segons.

Això no és simplement automatització de codi repetitiu. És automatització de la traducció.

El Canvi en l’Escassetat

Cada capa d’abstracció canvia què és escàs.

Quan els compiladors es van tornar fiables, memoritzar instruccions d’assemblador va deixar de ser valuós. Quan els frameworks van madurar, escriure codi d’infraestructura a mà va deixar de ser un diferenciador.

Ara, a mesura que els sistemes d’IA generen codi sintàcticament correcte i sovint estructuralment sòlid, l’escassetat es mou de nou.

Les habilitats valuoses cada cop més inclouen:

  • Articulació precisa dels requisits
  • Descomposició de sistemes complexos en components gestionables
  • Definició explícita de restriccions i casos límit
  • Raonament arquitectònic
  • Avaluació crítica del resultat generat
  • Disciplina de proves i validació

Memoritzar sintaxi o recordar detalls obscurs d’APIs esdevé menys central, perquè aquestes tasques són cada cop més automatitzades.

Això no elimina la necessitat de coneixement tècnic profund. Al contrari, amplifica la importància del criteri. Els enginyers encara han d’entendre les implicacions de rendiment, els compromisos de seguretat, els riscos de concurrència i els límits del sistema. Però l’acte mecànic d’escriure codi ja no és el coll d’ampolla principal.

La intenció esdevé l’actiu durador.

L’Anglès com a Capa de Programació

Dir que l’anglès esdevé una capa de programació no vol dir que els llenguatges formals desapareguin. Els compiladors, els entorns d’execució i els runtimes encara operen sobre codi estructurat.

Més aviat, l’anglès — o, més precisament, el llenguatge natural estructurat — esdevé la capa d’abstracció més alta per sobre dels llenguatges de programació tradicionals.

El flux cada cop més s’assembla a això:

 Intenció (llenguatge natural)
→ Generació estructurada (IA)
→ Codi formal
→ Execució per la màquina

En aquest model, el codi esdevé un artefacte intermedi. Es pot regenerar, refactoritzar i optimitzar automàticament. El que roman estable és la definició del problema i la claredat de les restriccions.

La qualitat del sistema final depèn menys de la capacitat del desenvolupador per recordar sintaxi i més de la seva capacitat per descriure què ha de fer el sistema, en quines condicions, amb quines garanties i davant de quins modes de fallada.

El llenguatge natural esdevé executable no perquè sigui inherentment precís, sinó perquè els sistemes d’IA s’han convertit en intèrprets capaços.

Qui Construirà Programari Ara?

Aquest canvi planteja una qüestió més profunda que com s’han de formar els enginyers. Planteja la qüestió de qui programarà.

Si els sistemes d’IA poden traduir intenció estructurada en programari executable, podran finalment els usuaris de negoci construir directament el que necessiten? Esdevindrà el llenguatge natural prou precís perquè els experts de domini puguin descriure sistemes sense intermediaris?

La història suggereix prudència. COBOL va intentar apropar la programació al llenguatge dels negocis. SQL va permetre als usuaris descriure quines dades volien en lloc de com recuperar-les. Tots dos van ser canvis d’abstracció significatius, però tots dos van continuar sent eines tècniques. La capa de traducció no va desaparèixer; simplement es va desplaçar.

Potser aquesta vegada és diferent. Potser els sistemes d’IA absorbiran prou complexitat per permetre als usuaris no tècnics operar amb seguretat a un nivell d’abstracció més alt.

O potser els professionals tècnics continuaran essent essencials — no com a mecanògrafs de sintaxi, sinó com a dissenyadors de restriccions, arquitectes de sistemes i guardians de la correcció.

Fins i tot si l’anglès — o qualsevol altre llenguatge natural, posats a dir — esdevé la capa d’abstracció més alta, en algun lloc per sota, COBOL continuarà processant transaccions, els compiladors continuaran optimitzant instruccions i el codi formal continuarà executant-se de manera determinista.

Les abstraccions evolucionen. La infraestructura persisteix. El valor es mou cap amunt.

Si la IA democratitza completament la programació o simplement eleva el paper dels enginyers a una capa superior, només el temps ho dirà.

Fes que l'IA treballi per a tu

Empodera la teva visió amb la nostra experiència. Jo i el meu equip estem especialitzats en convertir conceptes en realitat, oferint solucions a mida que redefineixen el que és possible. Desbloquegem el ple potencial de l'IA. Efectivament.

Contacta'ns