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.

html_ident

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.

espaco_tab

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.

1-2vlufqGEGy26S4Ar7BqbAg

Por exemplo, 133 GB processados em 16 segundos!!!1

Screen Shot 2016-09-01 at 9.42.14 AM

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:

1-JK_4wcGgD3OTUq0weuIXfw

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.

Inception
Inception

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.

Receba mais sobre Vale do Silício na sua caixa de entrada

* ao se inscrever você aceita a nossa política de privacidade
Newsletter
Matheus Gonçalves

Matheus Gonçalves

Ex-redator

Matheus Gonçalves é formado em Ciências da Computação pelo Centro Universitário FEI. Com mais de 20 anos de experiência em tecnologia e especialização em usabilidade e game development, atuou no Tecnoblog entre 2015 e 2017 abordando assuntos relacionados à sua área. Passou por empresas como Itaú, Bradesco, Amazon Web Services e Salesforce. É criador da Start Game App e podcaster do Toad Cast.

Relacionados