Spaces vs. Tabs: A 20-Year Debate Reignited by Google’s Golang
I geek hanno scelto i lati negli ultimi 16 anni-i programmatori dovrebbero indentare il loro codice usando spaces o tabs? Ma ora l’infame banale flame war è stata data una nuova importanza da uno studio di Google — forse ispirato al dialogo in un recente episodio della Silicon Valley della HBO.
” A dire il vero, ho una leggera preferenza per le schede. Ma questo è solo perché sono anale e perché preferisco la precisione.”
” Beh, non scegliere una lotta qui, ma se ti interessa davvero la precisione, non useresti gli spazi? Ma qualunque cosa, una volta che passa attraverso il compilatore, è la stessa cosa, giusto…?”
” Se è lo stesso, perché non usare semplicemente le schede?”
” Perché potrebbe apparire diverso sui computer di altre persone.”
” Le schede creano file di dimensioni più piccole, va bene…? Voglio dire, perché non usare Vim su Emacs?”
” Uso Vim su Emacs.”
” Oh, dio ci aiuti!”
Finalmente quest’anno — proprio prima del fine settimana del Labor Day-l’avvocato degli sviluppatori di Google ha deciso di pesare. “Analizzeremo un miliardo di file tra i linguaggi di programmazione 14 per decidere quale è in cima.”Hanno scricchiolato i file dai primi 400.000 repository GitHub, guardando solo i file di codice scritti nelle migliori lingue – e il loro grafico ha mostrato che gli spazi erano di gran lunga il metodo più popolare di rientro, in ogni lingua. Tranne Go e C.
“Confermato, Go è la lingua del futuro”, ha scherzato un commentatore su Reddit.
“Formatta automaticamente anche il codice sorgente”, ha replicato un altro programmatore. “Io uso gli spazi, e sputa fuori le schede!”
E su Twitter, uno sviluppatore ha scherzato il saggio aveva solo creato un’altra polemica. “La nuova discussione è ora’ che diavolo è sbagliato con Go?'”
Almeno un ingegnere canadese ha applaudito lo sforzo che Google ha messo nel risolvere la questione.
https://t.co/wuMz1gLwXT è così che si risolve l’argomento: dati.
— Ian Fosbery (@MisterZia) Settembre 8, 2016
Ma alla fine, Google non è riuscito a portare la pace al mondo degli sviluppatori.
Per essere chiari: tutti quelli che usano spazi invece di tabulazioni per il rientro sono irrimediabilmente sbagliati.
Fammi vedere il tuo codice nel modo che mi piace.
Periodo.— Iñaki Baz Castillo (@ibc_tw) Settembre 14, 2016
Quando qualcuno ha fatto riferimento Castillo all’analisi di Google, ha semplicemente aggiunto ” Lo sapevo. E sì, sono tutti sbagliati al 100%.”
” Cos’è questa follia”, ha twittato l’ingegnere del cloud Ed Morgan.
“Madness tutti sanno che le schede sono migliori!”ha risposto un manutentore di NetApp con sede a Londra.
“Questo è disgustoso”, ha twittato un web designer freelance nel Regno Unito
E non è finita qui. Il post di Google è diventato presto virale, disegnando 1.620 commenti su Reddit e anche su Gizmodo, Slashdot e Hacker News. “Dopo oltre 20 anni di ascolto del dibattito tabs-vs-spaces e considerando tutti i punti legittimi che entrambe le parti hanno, molti hanno fatto la seguente osservazione ed è ciò che mi risuona di più”, ha scritto un programmatore su Hacker News.
“In un mondo perfetto ideale, _all_ di programmatori e strumenti di editor di testo _all_ utilizzerebbero le schede specificamente per il rientro e gli spazi specificamente per l’allineamento. Ma non viviamo in quel mondo perfettamente coordinato, quindi spaces mantiene la massima fedeltà, a scapito dei programmatori che non sono in grado di personalizzare istantaneamente il rientro da larghezze di 2,4,6,8.”
I geek hanno davvero discusso su questo per oltre 20 anni? Sembra di si’. Era già stato descritto come un “argomento interminabile” da Jamie Zawinski, uno dei programmatori del primo browser Netscape Navigator — nel 2000. Il suo post ha spiegato come configurare due editor di testo Linux (Emacs e Vi) per cambiare le schede a varie larghezze. (“Così andare avanti e untabify!”)
Allegramente abbiamo rotolato lungo, e nel 2004, un post sul Microsoft Developer Network ha preso lo stesso problema, notando che alcune persone combinano spazi e schede, e sostenendo che hanno effettivamente picchettato una quarta posizione: strumenti di codifica dovrebbero essere configurabili per visualizzare la vista preferita di ogni utente, mentre il salvataggio del codice in conformità con un insieme concordato di regole. Ma non tutti erano così aperti. Nel 2009, Jeff Atwood, uno dei co-fondatori di Stack Overflow, ha scritto un post sul blog chiamato Death to the Space Infidels!. Fa pressioni per la sua posizione citando l’amato libro del 1984 Code Complete.
“I nostri studi sostengono l’affermazione che la conoscenza dei piani di programmazione e delle regole del discorso di programmazione può avere un impatto significativo sulla comprensione del programma… Non è solo una questione di estetica che i programmi dovrebbero essere scritti in uno stile particolare programmers i programmatori hanno forti aspettative che altri programmatori seguano queste regole del discorso. Se le regole vengono violate, l’utilità offerta dalle aspettative che i programmatori hanno accumulato nel tempo viene effettivamente annullata.”
E Atwood cita più esperimenti-uno dei primi anni 1970 – che hanno scoperto che le informazioni vengono mantenute meglio quando sono disposte in un ordine significativo. “Quindi sì”, conclude Atwood, ” per quanto possa sembrare assurdo, combattere per i caratteri degli spazi bianchi e altri problemi apparentemente banali del layout del codice è in realtà giustificato. Entro limiti ragionevoli, naturalmente, quando fatto apertamente, in modo equo e consensuale, e senza pugnalare i tuoi compagni di squadra in faccia lungo la strada.”
Quattro anni dopo, la questione si presentò nel cuore di geek nation-in una discussione su Stack Overflow.
“Spazi”, legge un argomento. “Una scheda potrebbe essere un numero diverso di colonne a seconda dell’ambiente, ma uno spazio è sempre una colonna.”
“Tabs”, legge l’argomento del contatore. “Sono un personaggio specificamente pensato per il rientro. Consentono agli sviluppatori con preferenze diverse nella dimensione del rientro di modificare l’aspetto del codice senza modificare il codice ”
Quindi lì!
Ma la parte delle schede della pagina alla fine colpisce una nota conciliante. “Naturalmente, la coerenza conta più di uno dei due, e un buon IDE rende le differenze trascurabili.”Ma perché rovinare una buona discussione? “Detto questo, il punto di questo thread è di essere una guerra santa, quindi so”
E Jeff Atwood stesso sembra essere d’accordo — fino a un certo punto. Nel 2009, ha scritto ” In realtà non importa quali stili di codifica scegli. Ciò che importa è che tu, e tutti gli altri della tua squadra, si attenga a quelle convenzioni e le usi in modo coerente.”Ma non poteva resistere ad aggiungere un’altra frase.
“Detto questo, solo un idiota userebbe le schede per formattare il proprio codice.”
- Gli scienziati di Stanford costruiscono un modo per digitare senza mani leggendo i segnali cerebrali.
- La NASA condivide alcune immagini spettacolari da Marte.
- L’America nomina il suo primo Chief Information Security officer federale.
- Amazon vuole invadere il tuo centro commerciale di quartiere – e la tua casa!
- Il Raspberry Pi celebra la sua 10 milionesima vendita.
- John le Carre pubblica finalmente la storia della sua vita movimentata.
- La “breve storia dell’umanità” di Yuval Noah Harari ha seguito una storia speculativa di domani.
- Nicholas Carr guarda il mondo che abbiamo creato e scrive ” Utopia è raccapricciante.”
Sul suo blog, Carr chiede possiamo applicare gli standard media-company a Facebook? - Ricordando il discorso “Coraggio” di Steve Jobs – come alcuni utenti Reddit deridono la configurazione delle cuffie solo wireless del nuovo iPhone.