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.

Comentários

Envie uma pergunta

Os mais notáveis

Comentários com a maior pontuação

Eric Castro

Esta pesquisa não definiu qual é o melhor e sim qual é o mais utilizado :/

Rafael Arcanjo
Eu sempre uso TABs... Mais por comodidade de ficar contanto espaços no teclado.
Petrus Augusto
é... Isso não é discussão. É Vim e acabou.
Mark Gonçalves
Eu aprendi em maquina de escrever e aprendi a usar a primeira carreira de teclas, as de "tabulação", uso tab desde a máquina de escrever!
Mark Gonçalves

ao meu lado eu escuto constantemente "tatatatatatatatatatata"

Arthur Gouveia
Realmente Python recomenda/obriga usar espaço! https://www.python.org/dev/peps/pep-0008/#tabs-or-spaces
FELIPE AGUIAR
Não entendo nada de programação, mas uma coisa é certa: Silicon Valley é engraçada pra cacete. haushaushuashuahsuahushauhsa...
Vitor Mikaelson
Ache que teve, e a intenção não era apenas qual o botão, e como eu disse, o caractere.
Leandro Camilo
A pesquisa quer encontrar a preferência. Mas como vai ter resultados confiáveis se a maioria te louco TAB, mas foi salvo espaços? A minha preferência foi TAB, mas contou como espaço porque a IDE converteu, não porque prefiro. Eu sei que dá pra configurar. Mas obviamente o pesquisador não teve o cuidado de se atentar a este detalhe.
Vitor Mikaelson
Mas é isso que é levado em conta. O caractere não a tecla. Alias, tem como trocar no VS para usar o tab de verdade (o que eu fiz)
Vitor Mikaelson
A maioria das IDEs converte tab para espaço automaticamente.
Vitor Mikaelson
Mas se tá usando tab que converte para espaço, continua sendo contado como espaço. Não há nada errado.
Samuel Pereira Góes
Sempre uso espaços pelo motivo que o próprio artigo citou, mantem o mesmo visual independente de editor, porem eu uso a tecla TAB para identar pois é mais confortável, apenas o editor que é configurador pra usar espaços.
André G
Aprendi a programar em C e aprendi dessa forma, então me acostumei. Consigo enxergar melhor as chaves desse jeito.
André G
Aprendi a programar em C, meu professor me ensinou a usar o Tab, portanto, até hoje prefiro usar o Tab. Aqui na empresa eu estava editando uma macros de um cara, inseri um código meu na macro dele e isso serviu até pra ver o que eu havia feito e o que era o código dele.
Exibir mais comentários