Episode Details

Back to Episodes
La Sintesi è Potere // Succinctness is Power

La Sintesi è Potere // Succinctness is Power

Published 2 years, 10 months ago
Description

Traduzione in italiano di Domenico Pastore dall’essay originale di Paul Graham "Succinctness is Power" [Maggio 2002].

"La quantità di significato compressa in un piccolo spazio dai segni algebrici è un'altra circostanza che facilita i ragionamenti che siamo abituati a portare avanti con il loro aiuto".

- Charles Babbage, citato nella conferenza del Premio Turing di Iverson. 

Nella discussione sui problemi sollevati da Revenge of the Nerds sulla mailing list LL1, Paul Prescod ha scritto qualcosa che mi è rimasto in mente.

    L'obiettivo di Python è la regolarità e la leggibilità, non la sinteticità. 

A prima vista, questa sembra un'affermazione piuttosto negativa per un linguaggio di programmazione. Per quanto ne so, sinteticità = potenza. Se così fosse, con le opportune sostituzioni, otterremmo

    L'obiettivo di Python è la regolarità e la leggibilità, non la potenza. 

E questo non sembra un compromesso (se di compromesso si tratta) che si voglia fare. Non è lontano dal dire che l'obiettivo di Python non è quello di essere efficace come linguaggio di programmazione.

Sinteticità = potenza? Questa mi sembra una domanda importante, forse la più importante per chiunque sia interessato alla progettazione di un linguaggio, e una domanda che sarebbe utile affrontare direttamente. Non sono ancora sicuro che la risposta sia un semplice sì, ma mi sembra una buona ipotesi da cui partire.

Ipotesi

La mia ipotesi è che la sinteticità sia la potenza, o che sia abbastanza vicina da poter essere considerata identica, tranne che in esempi patologici.

Mi sembra che la sinteticità sia lo scopo dei linguaggi di programmazione. I computer sarebbero altrettanto felici di sentirsi dire cosa fare direttamente in linguaggio macchina. Credo che il motivo principale per cui ci prendiamo la briga di sviluppare linguaggi di alto livello sia quello di ottenere un effetto leva, in modo da poter dire (e soprattutto pensare) in 10 righe di un linguaggio di alto livello ciò che richiederebbe 1000 righe di linguaggio macchina. In altre parole, lo scopo principale dei linguaggi di alto livello è quello di ridurre il codice sorgente.

Se la riduzione del codice sorgente è lo scopo dei linguaggi di alto livello, e la potenza è quanto bene raggiunge il suo scopo, allora la misura della potenza di un linguaggio di programmazione è quanto rende piccoli i vostri programmi.

Al contrario, un linguaggio che non rende piccoli i programmi fa un pessimo lavoro rispetto a ciò che i linguaggi di programmazione dovrebbero fare, come un coltello che non taglia bene o una stampa illeggibile.

Metriche

Piccolo in che senso? La misura più comune della dimensione del codice è rappresentata dalle linee di codice. Ma credo che questa metrica sia la più comune perché è la più facile da misurare. Non credo che nessuno creda davvero che sia il vero test della lunghezza di un programma. Linguaggi diversi hanno convenzioni diverse per quanto riguarda la quantità di codice da inserire in una riga; in C molte righe non contengono altro che uno o due delimitatori.

Un altro test facile è il numero di caratteri in un programma, ma anche questo non è molto buono; alcuni linguaggi (Perl, per esempio) usano identificatori più corti di altri.

Credo che una misura migliore della dimensione di un programma sia il numero di elementi, dove un elemento è qualsiasi cosa che costituirebbe un nodo distinto se si disegnasse un albero che rappresenta il codice sorgente. Il nome di una variabile o di una funzione è un elemento; un numero intero o in virgola mobile è un elemento; un segmento di testo letterale è un elemento; un elemento di uno schema o di una dirett

Listen Now

Love PodBriefly?

If you like Podbriefly.com, please consider donating to support the ongoing development.

Support Us