Qualcuno preferisce i font proporzionali? [chiuso]

46

Stavo leggendo l'articolo wikipedia sullo stile di programmazione e ho notato qualcosa in un argomento contro il codice allineato verticalmente:

Reliance on mono-spaced font; tabular formatting assumes that the editor uses a fixed-width font. Most modern code editors support proportional fonts, and the programmer may prefer to use a proportional font for readability.

Per essere onesti, non penso di aver mai incontrato un programmatore che preferiva un font proporzionale. Né posso pensare ad alcun motivo veramente valido per utilizzarli. Perché qualcuno dovrebbe preferire un font proporzionale?

    
posta Jason Baker 20.09.2010 - 09:44
fonte

11 risposte

43

Punti comuni contro i font proporzionali, commentati

  • Non è possibile allineare in modo preciso il codice verticalmente con i font proporzionali. Voglio dire, potresti allineare il codice verticalmente con i font proporzionali, se tutti usassero tabstops elastici , ma ahimè ...
  • Alcuni font proporzionali rendono difficile distinguere alcuni gruppi di caratteri. (ad esempio, mrnm). Tuttavia, non tutti i caratteri di programmazione sono perfetti: Courier New ha identici 'O' e '0' e identici '1' e ' l'.
  • Alcuni IDE hanno scarso supporto per caratteri non a larghezza fissa (come summenzionato Visual Studio o Python's IDLE). In alcuni contesti, inoltre, non puoi semplicemente usarne uno. (ad esempio, terminali.)
  • La scelta di un font proporzionale per la codifica ti porterà in infinite guerre sante. Qui, tuttavia, il problema esiste tra la tastiera e la sedia.

Punti a favore dei caratteri proporzionali

  • Alcuni personaggi sono solo più ampi di altri. Dovendo stipare un m nello stesso spazio di un n o un i rende veramente impegnativo per progettare un buon font monospace leggibile .
  • Miglioramento della spaziatura tra le lettere giusto. Confronta rnW e Ill in questo screenshot di Proggy Clear per un esempio di spaziatura dei font fatta male.
  • La maggior parte dei font del programmatore manca in corsivo o in grassetto. Ciò rende difficile l'uso dell'evidenziazione della sintassi efficace.
  • L'allineamento verticale è comunque una lattina di vermi. Schede o spazi o tabulazioni e spazi?

Personalmente, ho usato entrambi il carattere 'Ubuntu' e WenQuanYi Zen Hei Mono con piacere e mi sono trovato incapace preferire l'uno all'altro. :)



Ubuntu 10 e WenQuanYi Zen Hei Mono 9, confrontati. Non c'è un chiaro vincitore qui, se me lo chiedi.

Detto questo, i caratteri sono come cibo. Alcuni come loro sono ben arrotondati, alcuni come quelli caldi e piccanti - non c'è un font giusto, o tutti lo useremmo in questo momento. Yay per scelta!

    
risposta data 18.11.2010 - 16:03
fonte
29

C'è una ragione che rende praticamente impossibile l'utilizzo di caratteri diversi da Monospace per la codifica, ma non è stato menzionato in altre risposte: selezioni rettangolari .

Questa funzionalità, spesso non molto utile e poco conosciuta quando si lavora con testo normale, è essenziale per gli sviluppatori. Puoi immaginare una moltitudine di scenari: rimuovere // commenti su più righe, aggiungere parentesi o altri caratteri, ecc. Questo è ancora più prezioso con il supporto avanzato delle selezioni rettangolari, come in Visual Studio 2010, in cui puoi non solo selezionare e rimuovi il testo, ma selezionalo e sostituiscilo.

Facciamo un esempio:

private IEnumerable<SELove> StackExchangeRocks()
{
    var howILoveSEWebsites = new []
    {
        new SELove { SiteName = "Stack Overflow", MyReputation = 5269,  MyRating = Rating.Outstanding, },
        new SELove { SiteName = "Programmers",    MyReputation = 16937, MyRating = Rating.Outstanding, },
        new SELove { SiteName = "Super User",     MyReputation = 650,   MyRating = Rating.QuiteGood,   },
        new SELove { SiteName = "Server Fault",   MyReputation = 489,   MyRating = Rating.Good,        },
        // Initialize other websites here.
    };

    return howILoveSEWebsites.OrderByDescending(c => c.MyRating);
}

private class SELove
{
    public string SiteName { get; set; }
    public int MyReputation { get; set; }
    public Rating MyRating { get; set; }
}

private enum Rating
{
    Outstanding,
    Good,
    QuiteGood,
}

In questo codice legacy, voglio sostituire la valutazione in codice con un metodo che caricherà la mia valutazione dai siti Web Stack Exchange, potendo avere sempre dati aggiornati. Ho iniziato a ridefinire la proprietà MyReputation e ora voglio rimuovere l'inizializzazione, nell'ambito. Immagina di non avere quattro, ma tutti i siti web di 84 SE.

Ecco cosa succede quando usi Consolas , un font monospace. Premo Backspace, e questo è tutto, posso passare il tempo rimanente a fare qualcosa di veramente utile.

EquilastessacosaconSegoeUI.Ouch!

    
risposta data 25.09.2011 - 00:02
fonte
16

Usavo un font proporzionale, soprattutto perché trovo che la punteggiatura sia in realtà più facile da distinguere, ma nel tempo mi sono arresa perché nessun altro lo fa e tutti inconsciamente assumono caratteri mono distanziati (come menziona l'articolo di wikipedia, provando per fare formattazione tabellare, arte asciutta nei commenti e così via).

Inoltre, problemi in Visual Studio , che Microsoft non vuole risolvere, in pratica rende impossibile l'uso di font proporzionali ben progettati comunque.

    
risposta data 20.09.2010 - 11:36
fonte
8

Personalmente non mi interessa. Fintanto che mantieni le mie schede allineate e il font leggibile, non mi importa se utilizzo il monospace, proporzionale o qualche altra spaziatura off-the-wall. Non iniziare a sostituire le mie schede con spazi e non avrai alcun problema con me.

    
risposta data 18.11.2010 - 16:56
fonte
6

Uso un font proporzionale (Arial è il migliore che ho trovato fino ad ora, Verdana un secondo runner-up) e onestamente sono ancora stupito che le persone usino font a larghezza fissa; perché vorresti sacrificare la leggibilità in questo modo? Potrei capire se la formattazione tabellare fosse desiderabile, ma non lo è, dal momento che crea un incubo di manutenzione indipendentemente dal tipo di carattere.

    
risposta data 30.12.2010 - 16:01
fonte
4

Ricordo che nel libro di Bjarne Stroustrup Il linguaggio di programmazione C ++ , i font distanziati in modo propositivo erano usati per il codice. (Non riesco a trovare nessuna pagina di esempio sul Web)

Non ricordo le ragioni esatte, ma penso che abbia menzionato questo e un altro cambiamento (penso che il linguaggio C ++ stesso) sia una nuova introduzione in quel libro.

Personalmente, preferisco quelli a spazio fisso. Consolas è il mio preferito.

    
risposta data 20.09.2010 - 11:57
fonte
4

Per le lingue con linee brevi e molto spazio aperto, preferisco i caratteri a spaziatura fissa. Trovo che i caratteri a larghezza variabile possano migliorare la leggibilità in presenza di linee lunghe e sintassi densa.

Il problema con i font più proporzionali è che non erano progettati per la programmazione. Questa pagina mostra alcuni caratteri che erano.

    
risposta data 24.09.2011 - 23:51
fonte
2

Gli ambienti Smalltalk come Pharo usano font proporzionali e grazie allo stile del linguaggio sembra molto buono lì. Ma in linguaggi in stile C come Go o altri come Erlang o Python preferisco i caratteri a spaziatura fissa.

    
risposta data 20.09.2010 - 11:28
fonte
2

Ho trascorso un po 'di tempo a trovare un buon font leggibile per Eclipse qualche tempo fa, e sotto XP ho usato Verdana per un po' di tempo. Consolas lo ha risolto perché è veramente superbo per la programmazione.

Queste sono le mie conclusioni:

  • I font più proporzionali sono progettati per la prosa e solo una piccola punteggiatura (che a sua volta è solitamente uno o raramente due caratteri). La famiglia di linguaggi C ha molti di punteggiatura, che semplicemente non - a mio parere - hanno un bell'aspetto ed è più difficile da leggere del necessario.
  • Caratteri di lunghezza variabile significano che la lunghezza delle linee varia. Questo rende quasi impossibile indovinare dove finirà il cursore quando si naviga usando i pulsanti freccia. Ho trovato questo fastidioso.
  • Anche la spaziatura verticale conta. Normalmente non è qualcosa che può essere sovrascritto facilmente, e i font più proporzionali hanno meno spazio tra le righe di quanto mi piacerebbe.
  • Molto pochi IDE sono testati con caratteri proporzionali. Questo fa spazio a bug sottili come mettere il cursore nella posizione sbagliata, ridisegnare i caratteri in modo errato e simili.

Quindi ho scoperto che non valeva la pena per me.

Nota sull'allineamento e altri layout: ho impostato Eclipse per la formattazione automatica di ogni file su ogni salvataggio, quindi tutti i layout di fantasia vengono automaticamente ripristinati. Eclipse utilizza schede anziché spazi multipli e questi possono essere posizionati correttamente anche con font proporzionali. Quindi i layout possono possono essere sovrapposti, ma usiamo la configurazione standard del formattatore che non ha questo.

Credo che l'applicazione della formattazione automatica per tutti su ogni salvataggio minimizzi i falsi positivi nel sistema di controllo del codice sorgente, quando si eseguono analisi forensi.

    
risposta data 09.04.2012 - 13:57
fonte
0

Mai, mai, perché i caratteri a spaziatura fissa mi consentono di confrontare diversi attributi.

Confronto:

name1 = ["William", "Shakespear", 1564, "Peotry"]

name2 = ["John", "Locke", 1632, "Philosophy"]

name3 = ["Jonathan", "Littell", 1967, "Prose"]

A:

name1=["William",  "Shakespear", 1564, "Peotry"     ]
name2=["John",     "Locke",      1632, "Philosophy" ]
name3=["Jonathan", "Littell",    1967, "Prose"      ]

I font proporzionali non possono posizionare esattamente attributi equivalenti esattamente uno sopra l'altro.

    
risposta data 28.02.2012 - 14:06
fonte
0

Mentre sento che i font proporzionali sono più carini, in alcuni di essi, in particolare i caratteri sans-serif, è impossibile vedere la differenza tra un "io" e una "l". Aspetta, come ho chiamato di nuovo quella variabile?

    
risposta data 09.04.2012 - 15:07
fonte

Leggi altre domande sui tag