terça-feira, 11 de fevereiro de 2014

Java ainda em segundo lugar


De acordo com a lista TIOBE, de popularidade das linguagens de programação, em Fevereiro de 2014 as três mais populares são, nesta ordem: "C", Java (TM) e Objective-C. O que isto significa para nós, desenvolvedores? Qual é a mensagem que o Mercado está nos passando?




Um profissional de TI deve ser sempre "antenado"

Sempre que eu participo de rodas de "conversa fiada", ouço as maiores tolices, sendo discutidas de forma absolutamente passional, portanto, desprovida de razão. "O "COBOL" é a linguagem mais utilizada no mundo..." ou "... .NET já ultrapassou Java há muito tempo...", ou ainda "... Python e Ruby vão desbancar todas as outras linguagens...".  Não são tolices por causa das linguagens, mas pela falta de base das afirmações.

Eu sou muito cartesiano, e acredito que afirmações sem base são apenas falácias, cujo único propósito é vencer uma disputa emocional. Profissionais que falam mais do que ouvem, geralmente, são desatualizados. A falta de modéstia e o medo da competição os leva a ficarem totalmente DES-antenados!

Gente, não adianta discutir sem ter base, e, hoje em dia, eu costumo confiar razoavelmente na lista TIOBE, que apresenta uma classificação das linguagens de programação de acordo com sua popularidade. No site da Lista, há uma explicação sobre sua metodologia de pesquisa (traduzida por mim):
"As classificações são baseadas no número de engenheiros qualificados em todo o mundo, cursos e fornecedores terceirizados. Motores de busca populares, como Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube e Baidu são usados ​​para calcular as classificações. Observa-se que o índice TIOBE não é sobre a melhor linguagem de programação ou a língua em que a maioria das linhas de código foram escritas."
A classificação é publicada mensalmente, e agora (Fevereiro de 2014), as 10 linguagens mais populares são:

Feb 2014Feb 2013ChangeProgramming LanguageRatingsChange
12C18.334%+1.25%
21Java17.316%-1.07%
33Objective-C11.341%+1.54%
44C++6.892%-1.87%
55C#6.450%-0.23%
66PHP4.219%-0.85%
78(Visual) Basic2.759%-1.89%
87Python2.157%-2.79%
911JavaScript1.929%+0.51%
1012Visual Basic .NET1.798%+0.79%
Notamos que "C" vem em primeiro lugar, com uma classificação de 18,3%, seguido de Java, 17,3% e Objective-C, 11,3%.

A lista ainda apresenta o "viés", ou seja, qual é a tendência do indicador, baseado na variação mensal do índice (veja AQUI como é calculado).

Fatos notáveis

Por que "C" é a linguagem mais popular? Por que Objective-C está em terceiro lugar? E por que Visual Basic clássico está na frente de Visual Basic .NET? Onde está o COBOL? Por que Python está em oitavo? Cadê o Ruby, o Groovy e o Scala?

Realmente, são perguntas bastante interessantes... Andei conversando com alguns amigos (ex-alunos e colegas), e levantei alguns motivos que podem tentar explicar alguns destes fatos.

Linguagem "C"

Se olharmos a "big picture", apresentada pela TIOBE, vemos que "C" quase sempre esteve em primeiro lugar:

Programming Language201420092004199919941989
C122111
Java21113--
Objective-C33848---
C++433223
C#58930--
PHP656---
(Visual) Basic745337
Python86112722-
JavaScript99820--
Perl107451723
Só perdeu seu lugar em dois anos para Java.

Isto se deve a alguns fatos importantes. Em primeiro lugar, "C" é a linguagem base dos sistemas operacionais "X" (Unix, Linux etc), logo, muitos programas são escritos diariamente nessa linguagem, entre utilitários e aplicativos. Em segundo lugar, "C" é a linguagem de preferência acadêmica para ensino de algoritmos e estruturas de dados.

E tem um terceiro fator, que é a portabilidade, pois "C" roda em qualquer plataforma, desde hardware embarcado até mainframes Z-OS. Daí a popularidade constante da linguagem "C".

Provavelmente, você não verá muitos sistemas comerciais ou websites (usando CGI) escritos em "C", mas, se você se formou nos últimos 20 anos, certamente aprendeu a usar e escreveu vários programas em "C".

"C" e Java

As duas linguagens andaram trocando de lugar em alguns anos, e isto se deve à enorme e repentina popularidade que a linguagem (e a plataforma) Java conquistou. Ela chegou a ultrapassar a popularidade da linguagem "C", e isto aconteceu de 2004 até 2009, depois, o "C" voltou a ocupar a primeira posição novamente.

A linguagem Java foi muito beneficiada pelos "órfãos" do "Delphi", que passaram a utilizá-la como alternativa viável. E também não devemos esquecer que Java é a linguagem de programação do Android Development Kit ou ADT.

Por que a queda? 

Bem, após pesquisar muito na Internet e conversar com algumas pessoas, alguns fatores motivaram a aparente "queda" de popularidade da linguagem Java, entre elas:

  • Surgimento de linguagens alternativas, como: Ruby e o crescimento de outras linguagens, como Objective-C, que foi muito turbinado pela crescente popularidade do Max OSX e do iOS (o iOS SDK utiliza Objective-C). O Ruby se tornou muito popular, principalmente devido ao "Rails" (RoR);
  • Surgimento de outras linguagens baseadas na JVM. JRuby, Groovy, Scala e várias outras linguagens, baseadas na VM Java, começaram a "roubar" popularidade de sua "mãe". Embora sejam consideradas de baixa popularidade, certamente contribuíram para diminuir a popularidade da linguagem Java, pois eram mais modernas e fáceis de usar;
  • O crescimento do uso da plataforma .NET, especialmente da linguagem C#, que começou a crescer em popularidade a partir da versão 3.5 (Visual Studio 2008), considerada um marco de sucesso;
  • A aquisição da Sun pela Oracle. 
Sobre a aquisição da Sun pela Oracle, quero deixar claro que nada tenho contra essa grande empresa (Oracle) e acredito que eles tenham feito o possível para manter a confiança dos desenvolvedores no futuro da plataforma Java. Porém, foi um grande impacto na Comunidade, embora a Oracle tenha iniciado um forte investimento na plataforma Java, ao adquirir a BEA, uma empresa líder de mercado em produtos Java EE, ainda era considerada apenas no segmento de Bancos de Dados, e não de linguagens de programação. 

Certamente, houve um impacto na popularidade da linguagem, que, associado aos outros fatores que apresentei, ajudaram a "diluir" a sua popularidade. Então, como a linguagem "C" não sofreu com nenhum destes fatores, ela continuou com a popularidade que sempre teve, retornando ao primeiro lugar.

Objective-C????

Para quem está acostumado a programar em Java, .NET, ou mesmo C++, a primeira reação ao Objective-C é de absoluto desprezo! O que os seus criadores estavam pensando? Realmente, é uma linguagem ruim, um "Frankenstein", feito com pedaços de "C" e de "SmallTalk"! Uma coisa horrorosa.

Mas, foi a linguagem escolhida pela Apple para seus principais SDKs: Mac OSX e iOS. Com o sucesso e popularidade dos computadores Mac, turbinados com o Mac OSX, e do iPhone, o Objective-C foi turbinado às nuvens!

Eu jamais pensaria em desenvolver um aplicativo usando Objective-C... Se tivesse que escolher, preferiria até mesmo COBOL. Porém, para desenvolver aplicações para iOS, você tem que obrigatoriamente saber Objective-C. Eu até desenvolvi um framework, baseado em Lua, para tentar deixar de usar essa linguagem (AAMOFRAMEWORK), de tanta raiva que tenho dela. 

Porém, não há como negar a sua popularidade

Visual Basic Clássico e VB.NET

O Visual Basic Clássico (Visual Studio versão 6 ou anterior) está em sétimo lugar? E com viés de alta? 

A lista TIOBE não esclarece que o sétimo lugar é ocupado APENAS pelo Visual Basic Clássico. Na verdade, é uma mistura entre o VB.NET e o VB clássico. Mas o VB clássico ainda é uma linguagem muito, mas muito popular mesmo. E as razões são:
  • Existem muitos websites em ASP clássico e, a maioria deles, utiliza componentes escritos em Visual Basic Clássico, para processamento de regras de negócio;
  • O Visual Basic Clássico foi a linguagem para onde quase todos os desenvolvedores de sistemas xBase (Clipper) migraram, logo, existe um enorme mercado para esta linguagem;
  • O Visual Basic Clássico ainda é utilizado para programar macros em Microsoft Excel (VBA), logo, existe muita procura por artigos, livros e cursos de Visual Basic;
O VB.NET está em décimo lugar, pela primeira vez na história, e com viés de alta! Porém, o C# sempre foi popular, muito mais popular que o VB.NET. Por que? Para começar, os desenvolvedores Visual Basic (incluindo eu mesmo) ODIARAM o VB.NET, do fundo dos seus corações. 

Eu tinha escrito um livro de Visual Basic, e meu Editor pediu que eu o atualizasse para a nova versão do VB (VB.NET). Então, baixei o Beta e fui compilar o sistema exemplo. Não deu erro algum!!!! Porém, nada rodou... O VB.NET marcou todo o meu código como comentário (com "TODOs") e simplesmente eu teria que refazer tudo... Não aceitei isso. Passei a ODIAR .NET e me entreguei ao Java, de corpo e alma. 

Agora, passada a mágoa, novos desenvolvedores estão descobrindo o VB.NET como alternativa ao C#, embora eu ainda não saiba a razão, pois nem a Microsoft investiu muito na evolução da linguagem VB.NET na última versão do Microsoft Visual Studio. 

A melhor posição que uma linguagem .NET ocupa é a quinta, com o C#. Apesar dos esforços da Microsoft, o crescimento de popularidade das linguagens .NET ainda é abaixo do esperado. Um dos principais motivos é o fato de exigir o sistema operacional Microsoft Windows, o que é um grande problema, já que grande parte dos Datacenters utilizam algum tipo de sistema Linux. 

A popularidade do C# é impulsionada, em parte, pelo Mono (e pela IDE Mono Develop), muito utilizada em modo embarcado, sendo notável o crescimento de interesse pelo C# dos desenvolvedores de Jogos que usam o Engine Unity. Existe também a plataforma mobile Xamarin, que levou o C# para o Android e iOS. E, não podemos nos esquecer das apps para Windows Phone. Isto tudo ajuda o C# a se manter em quinto lugar, mas bom mesmo seria se surgisse algum framework multiplataforma, de aplicações gerais, baseado no Mono. 

COBOL...

Dizem que COBOL é a linguagem mais utilizada no mundo... Pode até ter sido, e, sem dúvida, existe muito código legado escrito nela, ainda sendo executado diariamente. Mas, sua popularidade é muito baixa (vigésima quarta posição), abaixo até mesmo de Lisp, Pascal e MatLab. 

A questão é: COBOL pode ser até a linguagem mais utilizada (não estou afirmando isso), mas quase ninguém desenvolve novos aplicativos nela, e, quem o faz, não pesquisa nada. Também não são oferecidos novos cursos desta linguagem. 

E COBOL está estagnada, o que denota justamente o que eu disse: Legado. Novos desenvolvimentos em mainframe estão sendo feitos em Java, usando WebSphere, da IBM. 

Python

Nada tenho contra Python, e respeito muito a comunidade de desenvolvedores dessa linguagem, mas, apesar te ter experimentado um grande aumento de popularidade até 2009, vem perdendo popularidade nos últimos anos e está com viés de baixa.

Porém, devemos notar que ainda é a oitava linguagem mais popular, a frente de linguagens muito utilizadas, como Javascript, por exemplo. 

Pesquisei muitas discussões e um dos motivos é a falta de integração com camadas clientes, como suporte nativo de navegadores e frameworks móveis. Além disto, ouve-se muito falar que Python sofre concorrência direta do Ruby, encarado como seu sucessor natural (isto é papo de Internet, não tenho bases para confirmar ou refutar isso). 

Pelo que dizem, a versão 3 do Python trouxe grandes mudanças, que, geralmente, causa uma certa perda de popularidade. Além disto, algumas bibliotecas populares ainda não foram migradas. Tudo contribui para o viés de baixa da linguagem. 

Ruby, o Groovy e o Scala

A grande vantagem e, ao mesmo tempo, maldição do Ruby foi o Rails. A plataforma RoR ficou tão associada, que as pessoas não pensavam mais em Ruby, mas em Ruby on Rails. Criou-se uma cultura de desenvolvimento rápido turbinada por provedores PaaS, como o Heroku (e diversos outros), que tornaram o RoR uma febre, que durou alguns anos. 

Muitos adeptos da plataforma LAMP (Linux-Apache-MySQL-PHP) migraram para RoR, assim como muitos adeptos do Java EE e do ASP Clássico. Porém, o RoR é uma forja de titânio, amarrando as coisas permanentemente, sem integração fácil com outras plataformas. Foi muito apresentado como "substituto" do Java EE e do LAMP, ao invés de ser um integrador. As pessoas tinham que tomar decisões do tipo: "parta sem olhar para trás", e isto, ao longo do tempo, foi afastando os desenvolvedores. 

Além disto, as primeiras versões do Ruby e dos seus servidores de aplicação (Mongrel e outros) apresentavam baixo desempenho, se comparados até mesmo com as plataformas LAMP. 

Veja bem, essas afirmações eu coletei de várias pessoas que trabalharam com RoR, e de artigos e conversas na Internet, logo, não são afirmações minhas. Eu nunca trabalhei com Ruby nem com RoR, embora acredite que há muito exagero, deve haver algum fundo de verdade nisso tudo. A fusão nuclear entre o Ruby e o Rails pode ser um fator para queda de popularidade da linguagem Ruby. 

O resultado é que Ruby está em décimo segundo lugar, e com viés de baixa.

Independentemente do que o Mercado pensa, eu escolheria Ruby como linguagem de desenvolvimento, sem medo de ser feliz! Na verdade, venho estudando a possibilidade de ampliar o AAMO para incluir Ruby scripting. 

Scala ocupa a trigésima nona posição, e Groovy está no grupo entre a posição 51 e a 100. Bem, são linguagens novas e muito semelhantes, que não quebraram paradigmas ou revolucionaram coisas. Embora o Groovy seja muito utilizado para criar DSL - Domain Specific Languages, e esteja começando a ser associado com plataformas de Entrega Contínua, o que deve turbinar um pouco sua popularidade em alguns anos. Eu apostaria em Groovy como uma das próximas líderes de popularidade. 

Conclusão

As estatísticas TIOBE podem ser inexatas, e até mesmo terem critérios questionáveis, mas são baseadas em popularidade, o que pode ser um grande fator de influência em suas decisões tecnológicas. 

De qualquer forma, acredito que todos devemos ficar antenados com as novidades tecnológicas, especialmente sobre as linguagens de programação, mesmo que seja para evitar falar besteiras.