Espaços ou tabs: de que lado da guerra você está?
Muito se fala sobre o conflito que existe entre Israel e Palestina, a tensão política entre Estados Unidos e Rússia ou mesmo a briga entre Mega Drive e Super Nintendo. Não sei se todos vocês assistem ao seriado Silicon Valley, mas deveriam. Caso não tenha visto o sexto episódio da terceira temporada, pule o vídeo abaixo para evitar spoilers. Caso queira dar algumas risadas, aperte o play:
E, como um analista de sistemas com alguns anos e projetos nas costas, posso dizer: o debate entre tabs e espaços é real. Ele está acontecendo neste momento, enquanto você lê este artigo. Ao redor do mundo, programadores se estapeiam para decidir o que é melhor na hora de formatar o texto: tabs ou espaços.
Há quem sugira que tabs são melhores para a compactação dos arquivos. Há quem alegue que não faz diferença, pois o compilador vai tornar tudo a mesma coisa quando processar o código.
Há até quem apele para fatores emocionais como “eu prefiro o espaço e é minha opinião“, e logo é engolido por uma multidão alvoroçada com armas em riste, como teclados e cabos USBs afiadíssimos.
Para tirar essa história a limpo e decidir de uma vez por todas qual é a melhor forma de formatar o código, o desenvolvedor Felipe Hoffa, que trabalha no Google, resolveu analisar nada menos que 1 bilhão de arquivos de código fonte salvos em 400 mil repositórios do GitHub. Estamos falando de 14 terabytes de linhas de código.
As regras?
- First things first: somente tabs e espaços usados para indentar o código são contabilizados.
- Estrelas importam: somente os 400 mil repositórios com melhor avaliação entre janeiro e maio de 2016 foram considerados.
- Sem arquivos pequenos: os arquivos com código fonte precisam ter pelo menos 10 linhas que comecem com espaço ou tab.
- Sem arquivos duplicados: caso encontrados, arquivos iguais recebem um voto, não importa em quantos repositórios eles estejam.
- Um voto por arquivo: Alguns arquivos possuem uma mistura entre tabs e espaços. Neste caso, conta-se de acordo com o método mais usado dentro daquele arquivo. Mais tabs ou mais espaços.
- Linguagens mais importantes: o relatório analisou arquivos com as seguintes extensões: .java, .h, .js, .c, .php, .html, .cs, .json, .py, .cpp, .xml, .rb, .cc, .go.
Não, arquivos com extensão .vb não foram contabilizados. Como eu disse, somente as linguagens mais importantes. (Este sou eu cuspindo no prato que muito já comi).
Para poder extrair os relatórios dessa cacetada de dados, Hoffa utilizou o espetacular BigQuery, uma ferramenta do Google para analisar Big Data, com velocidade e performance ignorantes.
Por exemplo, 133 GB processados em 16 segundos!!!1
Para efeito de comparação, já otimizei queries em códigos SQL enormes, que agora buscam 12 GB de dados em 25 segundos, e já estava me sentindo o construtor de foguetes. Aí eles me aparecem com essa taxa como um tapa de realidade na minha cara.
Impressionante, né? O próprio desenvolvedor fez um post explicando mais sobre o BigQuery, recomendo fortemente a leitura.
Mas e aí Toad, afinal, quem venceu? Tabs ou espaços?
Então, dá uma olhada:
Como podemos ver nos dados, o vencedor por maioria esmagadora é o espaço. Em todas as linguagens acima com exceção do C, espaços são mais populares dentre os códigos analisados do GitHub.
De forma geral, isso pode ser assim porque espaços são exibidos de forma única mesmo em diferentes computadores, softwares e ferramentas. Tabs “quebram” o layout do texto em ferramentas diferentes.
Gostaria de saber como isso funciona entre profissionais brasileiros que trabalham com programação, ou mesmo aqueles que editam textos e mais textos no WordPress.
E antes que alguém diga algo como “nossa, mas que perda de tempo”, aqui vale muito mais a metodologia utilizada que a motivação da pesquisa. Esta ferramenta do Google é fantástica e Big Data já está mudando o mundo. Deixe de ser ranzinza.
E assista Silicon Valley.