Convenzioni e Tipografia

Quando un codice sorgente viene tradotto in un programma eseguibile, molte parti vengono semplicemente ignorate.

Oltre ai commenti, anche l’impaginazione, cioè la disposizione del testo sullo schermo, è ignorata.

Per il compilatore, nella maggior parte dei linguaggi, i due codici riportati sotto sono del tutto equivalenti:

use List::Util qw(reduce);
sub fact {
    my $n = shift;
    reduce { $a * $b } 1, 1 .. $n
}

foreach my $i (0..16) {
    print "$i! = ", fact($i), "\n";
}

E quest’altro:

use List::Util qw(reduce);sub fact{my $n=shift;reduce{$a*$b}1,1..$n}foreach my $i(0..16){print "$i!=",fact($i),"\n";}

Ma è evidente che per un programmatore medio il primo codice è leggibile, mentre il secondo è più complesso.

Probabilmente chi legge una poesia oggi non sa, o non ricorda, che la maniera di impaginarla, che oggi è considerata normale, è frutto di una storia precisa.

Sempre caro mi fu quest'ermo colle,

e questa siepe, che da tanta parte

dell'ultimo orizzonte il guardo esclude.

Ma sedendo e mirando, interminati

spazi di là da quella, e sovrumani

silenzi, e profondissima quiete

io nel pensier mi fingo; ove per poco

il cor non si spaura. E come il vento

[...]

Ad esempio i Latini non usavano gli spazi e andavano avanti fino alla fine della pietra; al contrario, i Futuristi forzavano la disposizione delle parole nella pagina per uscire da ogni schema; oppure andavano a capo a piacere, anche dopo una sola parola:

Clof, clop, cloch,

cloffete,

cloppete,

clocchette,

chchch...

È giù,

nel cortile,

la povera

fontana

malata;

che spasimo!

[...]

Gli spazi aggiuntivi all’inizio della riga sono un’invenzione moderna che aggiunge solo leggibilità. E così vengono usati nella maggior parte dei linguaggi di programamzione.

Invece alcuni linguaggi particolari, come il Python, non usano le parentesi per indicare dove comincia e finisce un blocco, ma usano l'indentazione come elemento sintattico. Il codice che segue è corretto solo se ci sono quel certo numero di spazi prima di if, body, else e data:

 for a in pa: 
            if isinstance(a, basestring): 
                body = '%s%s' %  (body,  a) 
            else: 
                data.update(a)

Prossimo pannello:  Commenti



Versione: 02/02/2022 - 08:58:54

Parole: 220

Pannelli

Stili                       
Convenzioni Tipografiche    
Commenti                    
Altri commenti              
Literate programming        
Paradigmi                   
Nomi                        
Manuali                     
🔎