Ah, essa é com certeza uma dúvida que qualquer profissional da área de desenvolvimento já passou pelo menos uma vez na vida. Ela é super recorrente para quem está começando. Afinal de contas, qual linguagem estudar e escolher para entrar no mercado de trabalho?
De fato, fazer esse tipo de análise pode ser um processo complexo, além de ser algo completamente subjetivo e que também sofre a influência de muitos fatores externos. Mas, independente disso, chega um momento onde nós precisamos escolher uma linguagem para nos dedicarmos. E como podemos ter certeza de que fizemos a escolha correta? Como saber se eu escolhi a linguagem certa para entrar no mercado de trabalho?
Vamos fazer uma análise sobre alguns pontos interessantes. Neste artigo, compararemos três das mais populares linguagens de programação - que no caso são Java, C# e PHP - e as analisaremos através de alguns tópicos: presença e adoção no mercado, interoperabilidade, adequação à execução no Windows, “estilo” da linguagem, presença na plataforma web e curva de aprendizagem.
Ah, antes de qualquer coisa: não estamos defendendo uma linguagem em detrimento das outras. Todas as análises nesse artigo são puramente baseadas em números e na minha vivência no mercado de trabalho. Sinta-se à vontade para utilizar estes números para auxiliar em sua decisão. ;)
Curso C# - Fundamentos
Conhecer o cursoPresença e utilização no mercado de trabalho
Essa é a primeira análise que passa pela nossa cabeça quando precisamos decidir entre um grupo de linguagens aquela que queremos nos dedicar.
Para isso, temos dois conjuntos de números de dois sites diferentes: os números do Tiobe Index e os números do Institute of Electrical and Electronics Engineers (“carinhosamente” conhecido como IEEE). Começando pelo ranking Tiobe, temos o seguinte gráfico:
No gráfico acima, vemos que a linguagem mais utilizada no mundo atualmente é o Java. O C# fica em quarto lugar, enquanto o PHP fica em sétimo lugar.
Se pegarmos os dados da IEEE, não temos uma discrepância muito grande:
Pela IEEE, o Java também é a linguagem mais utilizada do mundo. O C# aqui fica em quinto lugar, enquanto o PHP fica em sexto.
A partir desses números vemos que o Java tem mais mercado de trabalho de maneira geral, seguido pelo C# e pelo PHP, respectivamente.
O complicado destas análises é que elas são puramente quantitativas, desprezando aspectos qualitativos como região e empregabilidade. O caso do Java ilustra bem isso: de fato, o Java é mais utilizado em linhas gerais do que o C# e o PHP, o que consequentemente aumenta a disponibilidade de vagas para profissionais Java. Porém, justamente pelo fato de o Java ser uma linguagem muito popular, isso causa uma certa “saturação” no mercado de trabalho: existem muitas vagas para se trabalhar com Java, mas a quantidade de profissionais que são adeptos da plataforma da Oracle também é grande. Também existem muitas vagas para C# e PHP (muitas mesmo), mas a saturação do mercado nestes dois últimos casos é relativamente inferior, se compararmos diretamente com o Java.
Interoperabilidade entre plataformas
Hoje, esse é um ponto muito importante, afinal, ninguém quer mais saber de escrever código específico para cada plataforma. Os desenvolvedores buscam escrever um único código que vai poder rodar nos mais variados sistemas operacionais e dispositivos.
Sob esse ponto de vista, o Java e o PHP saem na frente. Ambos já foram concebidos para serem multiplataforma desde o início. Esse ponto se aplica mais ainda ao Java, já que este foi (e ainda é) um de seus principais apelos técnicos na comunidade.
O C# demorou um pouco mais para entrar nessa onda do multiplataforma. A Microsoft, com seu mind set antigo, sempre fechava seus produtos para sua própria plataforma, o que inclui o .NET Framework e, consequentemente, o C#. O resultado antigamente era que, embora o C# também fosse concebido desde o início para ser multiplataforma, ele ficasse atrelado aos produtos Microsoft, principalmente por causa do .NET Framework. Até era possível executar o C# em ambientes não-Windows, mas isso ocorria através de ports da comunidade (no caso específico do C# e do .NET, estamos falando do Mono). Infelizmente, esses ports no caso do .NET sempre estavam atrasados em relação às versões mais novas do framework.
Hoje essa realidade mudou completamente. A Microsoft abraçou o conceito de ser multiplataforma, além de se tornar uma das maiores adeptas do open source. Mantendo distância da discussão se essa mudança de atitude visa unicamente lucro ou não, isso foi fantástico para o .NET Framework e para o C# consequentemente e tecnicamente falando. Hoje, nós podemos (finalmente) rodar aplicações .NET em ambientes Windows, Linux e até MacOS/iOS utilizando o .NET Core. Porém, é fato que o C# saiu atrás com relação a este ponto se comparado ao PHP e ao Java.
Adequação à utilização do Windows
Pode parecer contraditório, principalmente com relação ao tópico anterior, mas é fato que o Windows é o sistema operacional mais utilizado no mundo em termos quantitativos. Sendo assim, é importante que uma linguagem de programação ofereça um bom suporte ao sistema operacional da Microsoft, tanto em termos da linguagem em si, como em ferramental de desenvolvimento (principalmente SDKs e IDEs).
Neste tópico, as três linguagens até se equivalem. Obviamente, há uma pequena vantagem para o C#, já que estamos falando de produtos Microsoft. Entre as três, talvez a que ofereça o suporte mais limitado seja o PHP, mas é algo tão irrisório que podemos considerar as linguagens muito similares nesse tópico.
Características da linguagem
Curso Java - Fundamentos
Conhecer o cursoAs três linguagens possuem características muito bem definidas com relação ao paradigma adotado.
As três linguagens possuem uma forte orientação imperativa por essência. Isso quer dizer que as três “se preocupam” com a maneira que alguma massa de dados deve se processada, e não com a massa de dados em si.
As três linguagens também trabalham em cima do conceito de mudança de estados. O código criado com estas linguagens funciona o tempo inteiro em cima de variáveis que têm seus valores alterados durante a execução do algoritmo. As decisões também são tomadas em cima dos valores destas variáveis.
As três linguagens também suportam formalmente o paradigma orientado a objetos. Nesse ponto, o PHP pode sair um pouco atrás do Java e do C#, já que a adoção completa de conceitos formais de orientação a objetos só ocorreu mesmo a partir da versão 5 em diante, enquanto o Java e o C# sempre tiveram forte vocação orientada a objetos desde as primeiras versões. Mas, considerando-se as últimas versões de cada linguagem, todas elas se equivalem nesse aspecto.
As coisas começam a mudar de figura quando começamos a falar principalmente sobre o paradigma funcional. Vamos relembrar o gráfico do ranking Tiobe:
Veja que existe claramente uma tendência de queda nas quatro primeiras linguagens. E, mais ainda: podemos ver uma forte tendência crescimento em linguagens de outro nicho, como o JavaScript. Isso está acontecendo porque, atualmente, o mercado está começando a adotar linguagens fundamentadas no paradigma funcional de maneira mais efetiva. Como elas trabalham em cima do processamento de informações e não em cima de transições de estados, linguagens funcionais têm a tendência de facilitar processos como os de escalabilidade, principalmente quando falamos sobre escalabilidade vertical.
Falando sobre o aspecto funcional, o C# sai na frente do Java e do PHP. A versão mais recente (o C# 7) já adota estruturas claramente funcionais (como pattern matching), além de todo o ferramental fornecido pelo LINQ (que possui claramente uma orientação funcional). O Java começou a pouco a se movimentar mais no sentido de se tornar mais funcional (muito também para quebrar a verbosidade característica da linguagem), enquanto o PHP tem se movimentado no sentido de se tornar mais formal com relação aos conceitos OO. Isso, em tese, torna o C# mais preparado para lidar com essa nova realidade funcional.
Ah, antes de qualquer coisa: não estou dizendo que é impossível programarmos de maneira funcional com PHP ou Java. Aqui, digo de recursos “naturais” à linguagem. ;)
Presença na plataforma Web
Obs.: não critique a presença do IE na imagem acima… Ele teve (e ainda tem) sua importância, haha :P
Atualmente, uma linguagem que não suporte o desenvolvimento para Web de maneira satisfatória certamente não será tão bem vista no mercado de trabalho, já que existe uma fortíssima tendência na adoção de ferramentas baseadas (principalmente) na web, em cloud e em dispositivos móveis. Novamente, as três linguagens se equivalem nesse sentido, já que todas elas suportam desenvolvimento Web.
Porém, o PHP já possui essa vertente Web muito mais acentuada do que o C# e o Java desde o início. Aliás, o PHP foi criado para ser uma linguagem web desde o início. E, mais: cerca de 80% da web roda em cima do PHP. Inclusive, ferramentas famosas para criação de páginas de conteúdo, como o WordPress, Drupal etc são construídos com o PHP.
Além da questão da linguagem em si, também devemos considerar todo o mecanismo necessário para que elas possam ser executadas na plataforma Web. Java e C# são conhecidos por necessitarem de stacks relativamente pesadas para conseguirem prover esse suporte, enquanto PHP é conhecido na comunidade por justamente necessitar de uma stack muito mais leve nesse sentido.
Agora, não se esqueça desse aspecto multi-plataforma que o Java e o C# possuem. Se voltarmos para aquele gráfico da IEEE, ele fica evidente:
Veja que o Java e o C# suportam desenvolvimento web, mobile e desktop de maneira “natural”, enquanto o PHP suporta somente o desenvolvimento web. Esse também é um aspecto que precisamos levar em consideração.
Curva de aprendizado
Esse talvez seja um aspecto muito subjetivo para ser discutido, pois cada pessoa possui uma velocidade e afinidade de aprendizado diferente das outras pessoas. Porém, podemos comentar sobre o material de apoio para aprendizagem.
Novamente, as três linguagens se equivalem nesse sentido. Tanto Java, quanto C# e PHP, possuem documentações oficiais excelentes, tanto em sua versão original (em inglês) como em sua versão traduzida. As três linguagens também têm uma comunidade grande e participativa. Também é fácil encontrar materiais e cursos para estudo para cada uma das três linguagens. Inclusive, temos cursos muito legais de Java, C# e PHP aqui no TreinaWeb. Sendo assim, é relativamente fácil aprender qualquer uma delas.
E a grande vencedora é…
Depois de toda essa conversa, você deve estar curioso para saber qual linguagem é a grande vencedora. Mas o grande fato é que não temos uma linguagem vencedora!
Curso PHP - Fundamentos
Conhecer o cursoJava, C# e PHP são linguagens relativamente parecidas ao mesmo tempo que são completamente diferentes. As três possuem a mesma vertente (são linguagens originalmente imperativas e orientadas a objeto) e possuem muito material disponível para aprendizagem. As três também suportam desenvolvimento de aplicações para web e possuem representatividade relevante no mercado de trabalho.
Aqui, entram em cena aspectos com uma análise mais complicada. A região onde você pretende atuar é um ponto que pode influenciar muito. Há regiões e países onde uma destas linguagens pode ser mais forte. Há mercados onde as três se equivalem em termos de oportunidades. Tudo vai depender de quais são seus objetivos profissionais e pessoais. A afinidade com uma linguagem em detrimento das outras também é um aspecto muito importante a ser considerado.
Agora, um ponto é consenso e fato: você pode escolher tranquilamente Java, C# ou PHP. Existe um excelente mercado para todas elas. E mais importante ainda:
Não se prenda à linguagem em si. Quase todas são muito parecidas. Se preocupe com o desenvolvimento de sua lógica e com conceitos essenciais, que são exatamente os mesmos em qualquer uma delas.
Se você absorver conceitos essenciais (como lógica de programação, boas práticas de codificação, funcionamento do protocolo HTTP, etc.), você conseguirá desenvolver com qualquer uma das três linguagens! ;)