Sembra esserci molto disaccordo su ciò che costituisce il potere linguistico. È terseness, leggibilità, adattabilità o semplice completezza di Turing? Penso che tutti questi fattori entrino in gioco, quindi forse il modo migliore per osservarlo è in termini di punti stat. Sì, sto parlando di giochi di ruolo con carta e penna, qui.
L'idea è che ogni lingua abbia (approssimativamente) lo stesso numero di "punti", che possono essere distribuiti arbitrariamente in un numero di categorie. Ai fini della discussione, diciamo che gli unici fattori sono la brevità, la leggibilità e la flessibilità. Una lingua quindi potrebbe essere estremamente concisa e flessibile, ma di conseguenza molto difficile da leggere; o molto leggibile e flessibile, ma estremamente dettagliato.
(Probabilmente, il numero di punti che un linguaggio deve distribuire è definito dall'abilità del progettista e dell'attore, ma facciamo finta che tutti i progettisti del linguaggio siano ugualmente bravi in quello che fanno.)
Quando un designer di lingue decide di aumentare la forza di una lingua in una categoria, logicamente toglie una frazione di quella forza potenziale da ogni altra categoria. Questo è il motivo per cui si dice così spesso che la progettazione del linguaggio di programmazione si basa su compromessi. Da questo punto di vista, il potere complessivo di una lingua non è ancora definibile e dobbiamo tornare al metodo provato e vero di classificare le lingue in base ai loro punti di forza relativi. Non soddisfacente? Peccato.
Puoi argomentare in due modi: che un linguaggio potente è uno con una distribuzione relativamente uniforme dei punti (jack di tutti i mestieri, padrone di nessuno) o con il maggior numero di punti possibile in un'area senza lasciare gli altri incustoditi (specialista). Non esiste un linguaggio da "uomo del Rinascimento", con perfetta padronanza in numerosi campi. E se questa è la tua definizione del linguaggio più potente possibile, allora sei semplicemente sfortunato.
Per ulteriori letture, questo articolo (per coincidenza anche di Paul Graham, che sembra avere opinioni contrastanti) tocca l'idea che, sebbene possa essere difficile determinare come , i linguaggi di programmazione variano effettivamente in termini di potenza. Sostiene piuttosto persuasivamente che è molto facile vedere come una lingua sia meno potente della tua preferita - manca la funzione X - ma è molto difficile vedere come sia effettivamente una lingua veramente più potente - è sostanzialmente equivalente alla lingua X, ma con un mucchio di altre cose gettate dentro. Vi lascio con una citazione da quel giornale:
Per induzione, gli unici programmatori in grado di vedere tutte le differenze di potere tra le varie lingue sono quelli che comprendono il più potente. (Questo è probabilmente ciò che Eric Raymond intendeva sul fatto che Lisp ti rendesse un programmatore migliore.) Non puoi fidarti delle opinioni degli altri, a causa del paradosso di Blub: sono soddisfatti di qualunque linguaggio si capisca, perché detta il come pensano ai programmi.