quinta-feira, 17 de março de 2011

Nunca confie no TIOBE

Em vários posts meus eu mencionei o índice TIOBE para relacionar a popularidade das linguagens. Mas eu não sabia como o índice TIOBE funcionava, achei que ele era sério, baseado em projetos, mas ele é mais furado que o IBOPE, muito mais.

O TIOBE classifica popularidade como número de resultados nos buscadores. Ele parte de vários pressupostos errados.

1) Assume que popularidade é o número de resultados de buscas de uma linguagem em um mecanismo de busca.
2) Assume que todos os buscadores tem o mesmo peso, embora os resultados sejam muito diferentes e o algoritmo também.
3) Não elimina ruidos. Se você pesquisar por java programming encontrará resultados relacionados com uma programação qualquer na ilha de Java, por exemplo.

Além do ruido ser problema, a pesquisa é sempre feita com os termos <linguagem> programming, mas termos diferentes relacionados a uma mesma linguagem podem trazer resultados várias ordens de grandeza maiores ou menores do que <linguagem> programming. Além disso certas linguagens como javascript ou perl as pessoas costumam definir seu trabalho como scripting em vez de programming.

Por favor leia esses artigos: (o derivado e a fonte) http://akitaonrails.com/2008/04/13/off-topic-nunca-confie-no-tiobe

Parei de acreditar que o Java está sempre no topo. Embora muito utilizado e muito bom acredito que tenha outras linguagens que quase empatam com ele, em uma ordem totalmente diferente da TIOBE.

Comecei a ver as estatísticas de linguagens dos projetos do GIT hub. Se o kernel do linux está lá e muitos projetos GPL estão lá também isso torna as medidas um tanto quanto confiáveis. Os resultados são bem diferentes do TIOBE. Mesmo assim ainda posso dizer que não são completamente confiaveis porque essa estatística é baseada em uma amostra viciada: a maioria dos amantes de Ruby também é fã de Git e os amantes do Git, em sua maioria, programam em Ruby, então existem muitos projetos em Ruby no Git Hub, mas existem muitos projetos em outras linguagens que não estão no Git Hub. Com o tempo e o crescimento da popularidade do Git Hub é possível que o índice fique mais apurado. Outro modo de se chegar a esse resultado seria considerar o número de projetos em cada linguagem do sourceforge e do google code também.

Mas como eu sempre digo, REPITO:
1 - a popularidade de uma linguagem nada tem a ver com sua utilidade
2 - a popularidade de uma linguagem não tem nada a ver com a empregabilidade de seu programador
3 - Mesmo Java, Ruby, Delphi ou C# sendo populares ou "modinhas" isso não vai te impedir de estudá-los ou estudar PROLOG caso a necessidade apareça

Uma coisa é certa, um amigo meu me indicou Ruby e eu estou bastante curioso para ver como ele funciona. Por outro lado a vontade de programar para Android está me guiando ao Java.  Conclusão: JRuby :)

Qualquer que seja a linguagem, não vou mais conficar no índice da TIOBE

2 comentários:

  1. Pra vc ver como as coisas são, estou agora em um projeto totalmente .Net, em C#, aqui a lei era Microsoft, MAS, eu mostrei alguns testes feitos em RSpec no ruby, os caras acharam demais. Daí a sacada foi mostrar pra eles que é possível fazer no C# também, que no caso eu preferi usar o IronRuby e a gem RSpec.

    Existem umas implementações feitas em próprio .Net pra utilizar a idéia do RSpec, mas eu particularmente não gosto muito.

    ResponderExcluir

Postagens populares

Marcadores

delphi (60) C# (31) poo (21) Lazarus (19) Site aos Pedaços (15) sql (13) Reflexões (10) .Net (9) Humor (9) javascript (9) ASp.Net (8) api (8) Básico (6) Programação (6) ms sql server (5) Web (4) banco de dados (4) HTML (3) PHP (3) Python (3) design patterns (3) jQuery (3) livros (3) metaprogramação (3) Ajax (2) Debug (2) Dicas Básicas Windows (2) Pascal (2) games (2) linguagem (2) música (2) singleton (2) tecnologia (2) Anime (1) Api do Windows (1) Assembly (1) Eventos (1) Experts (1) GNU (1) Inglês (1) JSON (1) SO (1) datas (1) developers (1) dicas (1) easter egg (1) firebird (1) interfaces (1) introspecção (1) memo (1) oracle (1) reflexão (1)