Futuro das linguagens de programação

36 respostas
webprogramação
G

Eu sei que muitas discussões, e tópicos sobre linguagens já existe, mas quero propor uma para um âmbito atual, pensando a longo prazo e nós que obtenha maiores benefícios.

Posso estar sendo falho em algum questionamento, peço que me corrijam.

Fui apresentado ao mundo “Open-Source” e estou caindo de cabeça, deixando de lado sempre que possível tecnologias “enterprise”, principalmente por eu achar que pode me proporcionar um maior aprendizado.

Então me deparei na seguinte questão: Qual linguagem escolher para investir e me aprofundar no momento, Python, Ruby, Go, C#(.Net Core), alguma outra que não citei ?

Já descartei PHP e Java, por opinião pessoal, acho as outras opções mais atrativas, mas nada é 100% a questão de apenas “querer”.

Com certeza o foco não é apenas uma, sei que não existe bala de prata, porem preciso me focar “unicamente” em uma agora, colhendo os frutos(exp, aprendizado etc) futuros amanha, para poder trilhar em outros caminhos.

Começando pela web, qual delas poderiam delas dariam um retorno “maior”, seja para Rest, Full-Stack etc:

  • Continuara com relevância no futuro ?
  • Atende bem em diversos tamanhos/contextos de projetos ?
  • Menos receita de bolo e mais diversidade ?
  • Foco na Tecnologia/Atualidade/Desenvolvimento ?
  • Apesar do contexto ser web, que possa contribuir em novos rumos, mobile, segurança etc

Talvez possa ter faltado alguma, mas não me veio agora, conforme o debate, as coisas podem se abranger.

Se poderem contribuir com opinião e experiencia de vocês, ficarei grato.

36 Respostas

T

A pergunta que você fez é basicamente “qual linguagem escolher que não vai me dar nenhum arrependimento” (frisando a palavra nenhum). Tal linguagem não existe.

Qual é o seu objetivo profissional?

Linguagens são só ferramentas, e a transição entre elas fica mais fácil conforme se ganha experiência. A ferramenta que você precisa aprender e usar depende do objetivo que quer atingir. Se seus objetivos passam por aprender Java (por exemplo), evitá-la não lhe trará vantagem alguma.

Eu não cogitava aprender C# nem PL/SQL, mas parte dos meus objetivos me levaram à aprender um pouco de ambas. Contrastando com isso, PHP, a qual eu fiz um grande investimento em aprender, hoje está em terceiro plano.

Abraço.

J

Como o colega @TerraSkilll falou, depende do seu objetivo. O futuro pode ser esse, é o que os mais jovens gostam, mas querer não é poder. Se o objetivo for o grande mercado, pode não adiantar querer ficar na crista da onda pra depois chegar na hora H o forte do mercado ainda for Java e .NET ‘clássico’. Importante é acompanhar as coisas novas e quando for o momento fica tranquilo migrar de conhecimento e se dedicar. Como o colega explicou, fica mais fácil conforme for ganhando experiência no que realmente for trabalhar. Mas ignorar o que é muito usado no presente, como Java, é perigoso. Mas enfim, depende de você falar seu objetivo real, em startups por exemplo costuma ter isso que você quer.

E

Cara, vamos lá… Está no GUJ e não quer aprender Java? Pede pra sair que tu é moleque!! :smiley:

Brincadeiras à parte, acho que aprender uma nova linguagem não é difícil, desde que você já conheça uma linguagem do mesmo paradigma.

Então, aprenda uma linguagem orientada a objetos, uma linguagem funcional, uma linguagem lógica (Prolog, por exemplo), etc… Vá aos poucos e não caia na ilusão de que vai aprender uma linguagem e acabou.

G

@TerraSkilll, obrigado por sua resposta.

Por agora meu objetivo é “web” e caminhar para o que tem de atual nela.
Sei que não usarei somente uma linguagem, como falei la em cima, quero escolher uma agora, para esse momento “web”. Passarei por diversas linguagens, projetos, plataformas, diversas situações de aprendizado(assim espero rs’).

Quantas linguagens/ferramentas não vão surgir daqui para frente e etc ? nenhum momento pegarei uma delas e usar como bala de prata.

Abraços

G

Concordo plenamente com você @javaflex, por isso tudo tende a buscar um equilíbrio.
Meu objetivo agora é web, por parte do servidor, já que no cliente não tem “saída”.

Não disse que vou focar apenas em uma e não aproveitar as oportunidades de conhecimento que surgir, eu falo no agora, o depois o tempo ira dizer.

Sobre as transições, por isso tenho focado nos conceitos, principalmente OO e HTTP, para poder aplicar em qualquer linguagem.

Obrigado por sua resposta.

G

Sobre a brincadeira, cada um tem sua posição, respeito… rs’

Brincadeira, eu reforcei la em cima que não quero aprender somente “uma”, mas no momento que quero focar em “web”, quero também poder focar em apenas uma linguagem, botando os conceitos na praticas e pegando experiencia.

Porque como você disse e nos sabemos, aprendendo bem os conceitos a aplicação deles fica mais fácil, principalmente na transição de linguagens.

Por estar “entrando” agora, quero fazer o possível para não repetir os erros dos que já passaram por aqui, deixando um longo aprendizado.

Foco é por ai mesmo, funcional eu penso em GO ou Elixir, mas quero concretizar a OO primeiro.

Obrigado por sua respostas @esmiralha

G

Realmente, estava muito animado em me dedicar no “momento” em Python ou Ruby:

Python, por querer investir em segurança ofensiva futuramente. Ruby, por futuramente se a linguagem Crystal-lang se estabelecer, investindo na mesma. Alem de serem POO.

Mas estive pensando, C# poderia ser uma linguagem mais robusta que as anteriores, porem tem o lado “mainstream” e gostaria de continuar no open-source, onde acabei de entrar, pensando assim no .NET Core, apesar de ser novo, parece que é o que microsoft ira seguir. Uma renovação na stack do .net, com uma associação ambígua entre o .Net e o .Net Core, evoluindo juntos. E quando eu for investir em desenvolver mobile, posso optar por Xamarin(Apesar de não rodar em linux) alem de Java.

Porem ainda estou indeciso, estive pensando em desenvolver uma “pequena” aplicação com cada uma das 3, mas não sei se isso seria suficiente para determinar alguma coisa, já que tem de haver um equilíbrio de vontade e necessidade.

Depois dessa escolha, me dedicaria em um projeto “Pessoal” para aprendizado, experiencia e um sistema rodando.

J

Sim, .NET Core com certeza é o futuro do .NET. Apesar de open source está sob o investimento da Microsoft. É muito importante acompanhar, onde os conhecimentos do .NET atual serão bem aproveitados, e o C# totalmente. Se quer escolher algo secundário pra somente brincar, é uma escolha certa. Mas pra ganhar dinheiro no mercado, dentro do cenário do seu post, as empresas ainda vao pedir muito .NET ou Java por um bom tempo.

P

Desde que fale HTTP[1], backend web você pode usar qualquer linguagem.

[1]

G

Estou ciente @pfk66, só que não quero escolher “qualquer linguagem”, pensar bem antes.

P

No cliente eu concordo com vc, não tem saída.

Se as pessoas estão usando mais apps nativas do que o browser, então a tendência é o mercado concentrar nos desenvolvedores nativos.

G

É muito bom estar sobre cuidados da Microsoft, “equilíbrio” dos dois mundos, alimentando os dois lados.
O bom de ter essa dualidade, é que idependente dos .Net, utilizara os “mesmos” conhecimentos, problema se for versões mais antigas.

Estou vendo que é isso:

Mercado Enterprise-> Linguagens "conservadoras"
Mercado de Startup-> Linguagens/Tecnologias “atuais”, diversificada.

Não seria para “brincar”, pois isso influencia/resulta em muitas coisas, por isso é difícil escolher.

G

Se não tivéssemos essa divisão, entre o lado enterprise e “livre” ?

Porque eu encher dessa forma:

Mesmo que tenha ferramentas estabelecidas, existe uma coisa para cada situação. Vejo muitas empresas/sistemas rodando em cima de ferramentas ultrapassadas e eu sinto ate um desanimo, onde eles poderiam utilizar uma coisa melhor para uma situação, muitas das vezes usam uma coisa só para tudo.

Um exemplo, na minha cidade(que não estou agora), tem uma empresa/startup, la eles utilizam varias linguagens, mas não por “diversão” e sim proposito, por exemplo, eles usam elixir por ser eficiente em um determinado problema.

Isso que me anima, não deixo de me importar com o “produto”, mas também me importo em usar o que for correto e “atual”, não que Java e C# não sejam, pelo contrario, são dos monstros do mundo do Desenvolvimento, total respeito pelos dois <3, mas não servira para tudo, talvez tenha outra tecnologia com maior eficiência para aquela finalidade.

Seria fantástico, e acredito que deva existir algumas empresas que tem um pouco dos dois lados, vendendo/desenvolvendo ótimos produtos, ganhando uma boa grana, sem deixar de utilizar tecnologias novas ou o que for correto.

Talvez esteja doido, mas sou puxado para isso e por querer “arriscar” no diferente.

P

A palavra chave aqui é “eficiente para um determinado problema”.

Qual problema você está tentando resolver?

J

A pergunta do @pfk66 é bem válida. Se não é para brincar só para se preparar para o futuro, então terá que antes de tudo ter um caso real, para depois saber o que escolher, isso não envolve só o que queremos.

J

Nesses casos a ideia dar certo é o mais importante. Como não tem heranças de legados e tem muitos jovens nessas startups, o clima de liberdade é maior, sendo natural usarem o que é mais novo, claro que uma escolha responsável, que já seja confiável e eficiente para produção.

G

@javaflex e @pfk66, preferi responder sem vincular a respostas de vocês para poder invitar aos dois:

A principio quero desenvolver um projeto “completo” e com “todo” processo de engenharia/segurança.
Colocando em pratica, ganhando “experiencia” e aprendizado pratico. E quem sabe se esse projeto vingar, poderá gerar frutos financeiros, mas por hora é por experiencia.

O motivo do grande dilema de não escolher logo uma linguagem sem pensar, é que vai gerar um conhecimento que não devera ser utilizado uma vez e sim progredir em outros resultados, emprego?, Outros Projetos? e etc, fora que nunca saberei tudo, principalmente em um único uso.
Como no Cliente Web não tem para onde fugir, o que muda é o “framework”, então não tem saída rs’.

É um sistema de geolocalização, vou utilizar a API do google maps.

Pretendo utilizar 2 clientes: Um sera web com SPA com Vue.js ou outra, e o outro seria mobile com java ou xamarin.

No lado do servidor, quero servir os clientes com uma REST, que é aonde eu não determinei uma ferramente.

O banco esta entre um relacional como Postgresql ou um noSql

Por base seguirei a arquitetura MVC, parece ser bem estabelecida e utilizada.

Já tenho bastante coisa para aprender/praticar, vou fazer uma parte de cada vez, porem tenho que determinar a back-end.

Sobre eu não querer uma linguagem enterprise, por visar Ruby, Python e ate mesmo agora o C# “livre”, é pelo fato de parecerem mais flexíveis e não presas/pré-determinadas a uma stack sempre, proporcionando um maior aprendizado.

Ex: .Net é preso ao windows, dês em produção e desenvolvimento.

J

Esta questão de ser “preso” muitas vezes não é problema. Muitas empresas preferem manter investimentos em servidores Windows pela parceria e garantida da Microsoft. Em relação a mobile, tem empresas que só trabalham com iOS. Mas se o seu objetivo não for atender somente um cenário específico, vai ter que se preocupar mais com um leque de tecnologias e infraestrutura. Em relação a mobile, a forma mais profissional é desenvolver nativo pra cada plataforma, fora isso é decisão estratégia buscar solução “cross plataform”, onde para casos de sucesso mundial em mobile não costuma ser a melhor escolha. Já back-end é mais tranquilo usar soluções que funcionem em mais de uma plataforma, por tanto que seja eficiente para produção de acordo com a infraestrutura e não seja uma tecnologia obscura e fora de cogitação.

Foque em uma coisa de cada vez, foque em 1 client + back-end claro. E cuidado com esses frameworks js, a cada dia aparece um novo.

Se está em dúvida entre Python ou Ruby pesquise bastante comparativos para tirar suas próprias conclusões experimentado ambas.

G

Concordo com essa preocupação, mas eu falo sobre um maior desprendimento no desenvolvimento também.

Realmente, principalmente por IOS e Android terem as maiores parcelas desse mercado. Sei que é o melhor seria mesmo desenvolver em cada uma, mas penso no xamarin por me trazer uma “praticidade”. Faz tempo que estou de olho nele, pelas propostas oferecidas e parece uma melhor performasse que as “hibridas”. Sobre a infraestrutura no mobile, você fala dos aparelhos/versões?

É o que pretendo, formando a “base” na web, parto para mobile, que dará a pratica “real”.
Sobre frameworks js, vou utilizar por causa da construção de SPA, pensei em Backbone também, não queria ir direto a um Angular, dizem que é o que tem maior curva de aprendizado, então conheci Vue.js, parece ser promissor e com uma curva de aprendizado melhor.

J

O que seria na prática desprendimento no seu desenvolvimento?

G

Por exemplo, se eu for desenvolver com .Net Framework(enterprise), obrigatoriamente eu estaria preso ao windows e as demais.

J

Vai depender do seu cenário real.

P

Qual o dilema?

Acho que se vc se permitiu conhecer diferentes frameworks js, que servem pra basicamente, A MESMA COISA, então pode se permitir conhecer diferentes linguagens de backend.

…ou você acredita mesmo que vai arrumar emprego com Vue???

G

Qual delas optar agora.

Mas eu não disse que não vou me permitir conhecer outras linguagens back, só não tem como eu misturar varias linguagens agora. Passando esse projeto ou ate antes, surgindo outras oportunidades, vou encarar. No momento sera para se dedicar a minha experiencia e não com a linguagem. Não quero usar somente uma ou saber só uma.

Eu pesquisei bastante, venho vendo varias linguagens ao longo desse tempo, essas foram as que visei mais, mas não diz que vou negar outra linguagem amanha, é somente nesse contexto, para atingir esse objetivo, que alem de um projeto/sistema, uma experiencia.

Sobre o Vue.js, sei que quero desenvolver um cliente SPA, pode ser com BackBone, Angularjs, Vue.js, o que for, por hora esta o Vue.js. Estou analisando, pode ser que para mercado(“moda”) angular seja melhor, mas sera que não é mais do que eu preciso? Sera que Vue.js não oferece o suficiente ?(view), foi boa a sua colocação.

O importante é o aprendizado/desenvolvimento sobre SPA, que acredito que esta crescendo muito, sei que não cabe em todos projetos, como poderia ser para outra ferramente.

J

Esses frameworks JS vem e vão, até o próprio AngularJS praticamente morreu já na versão 1.0, onde a versão 2.0 é outro projeto totalmente diferente, só leva o nome sem o JS no final. Para ajudar no lado client prefiro bibliotecas, amarram menos. JQuery está há 10 anos no mercado, não considero moda. Embora frameworks JS facilitem mais SPA, vai ter que dormir com incertezas.

P

A princípio você pode usar qualquer linguagem pra backend web, inclusive JS.

G

Concordo com você, realmente JQuery é bem viável, como você disse esta a anos no mercado. Fora que JQuery pode ser usado juntamente com a biblioteca BackBone.

Mas fico em duvida se essas frameworks vão se concretizar de vez no mercado.

Sobre JQuery, vi que tem um modulo SPA, saberia se ele pode ser modular igual a essas frameworks ? Qualquer coisa é investir em Sass.

@javaflex

G

To ligado @pfk66, com Node.Js, mas no momento quero focar em linguagem OO, futuramente quero adentrar nessas novas perceptivas: Node, Go, Elixir etc…

J

Esses frameworks JS sempre serão dúvida. A quantidade já diz muita coisa. O AngularJS ficou mais famoso por causa da imagem do Google, que passou pra comunidade. Então por isso é o mais pedido no mercado, mas nem o Google usa isso. De concreto mesmo só a base, HTML, CSS, JS, HTTP, o resto é ferramenta que vai usar ou não dependendo do que a empresa pedir, ou de você escolher no caso de seu projeto pessoal.

Sobre “módulo” SPA para biblioteca JQuery eu não sei informar por não trabalhar com SPA. Pelo que acompanho em relação a SPA, o movimento é usar uma dessas dezenas de frameworks JS.

Se eu fosse você se concentrava em um tipo de ‘application’ só, na minha opinião app nativa mobile tem mais público do que SPA, e vai poder trabalhar com algo mais concretizado do lado client. Em relação a web/HTML se concentra logo depois para aprendizado de sistemas “clássicos”, que são mais pedidos no mercado, e não SPA. Sem essa de SPA, usar jquery por exemplo é super tranquilo.

L

Se você não quer tecnologias “enterprise” e quer ser competitivo no mercado, dá pra ir de Ruby ou Python, contudo existem diversas empresas startup que utilizam Java. Eu mesmo já trabalhei em uma.

Com Python, a maior (eu disse maior, não todas) parte das vagas que verá são para DevOps e afins. Já com Ruby é mais provável que pegue MVP’s, sistemas web no início ou até mesmo “buchas” já consolidadas pra resolver :stuck_out_tongue:

Elixir, Clojure, Go, etc eu diria que é um aprendizado secundário. Algumas empresas já utilizam Clojure, por exemplo o Nubank, e já vi algumas vagas pra trabalhar com Elixir na Europa, mais especificamente Irlanda e Inglaterra. Sem contar a Plataformatec no Brasil.

Pra firmar o OO que você tá interessado, tanto Ruby quanto Java eu indicaria primeiro, embora prefiro aprender as coisas mais por debaixo dos panos. Muita coisa no Ruby que já vem “pronta”, ajuda você a entender bem caso já tenha um background em Java ou outra linguagem de mais baixo nível tipo C. Outra vantagem de aprender Java é que também te abre portas pra criar apps nativas pra Android.

No Front, não inventa, é Javascript na veia sem bibliotecas. Aprende Javascript e só depois vai ver alguma lib/framework. De nada adianta o cara conhecer a API do Angular mas não saber resolver um problema com prototype.

Se você quer adentrar nesse mundo “exigindo” aprender apenas uma linguagem, sem saber como funcionam as coisas por debaixo dos panos, sua vida como programador poderá ser complicada :smiley:

Abraço e boa sorte

G

Vendo por esse ponto esta correto, tem varias coisas que me atraem a querer usar algum framework, mas o principalmente pode ser feito só com JS, que seria as chamadas AJAX. Sobre HTTP, estou com um livro para ler.

Realmente, princialmente porque fico mais animado em aprender “mobile” do que se aprofundar em front-end(frameworks e etc) e como você mesmo disse, esta firmado/concreto no mercado.

G

Entendo sobre o que esta tentando me alertar, mas já compreendo esse ponto, principalmente por impor isso em meus estudos/conhecimentos, não adiante querer saber só as maiores abstrações e esquecer das internas.

Sobre Java, prefiro optar por C#, achei muito interessante a proposta do .Net Core, provavelmente vai crescer muito, mesmo que não seja o foco agora um dia sera. Fora que posso usar o mesmo conhecimento no “enterprise” e ate mesmo com as semelhanças com outras linguagens.

Não sei porque a galera que vem nesse tópico não entendeu que não quero aprender somente uma linguagem, já estudei 3 linguagens, mas quero concretizar uma por agora, no momento, não quero estudar 2, 3, 4 linguagens de uma vez, não faz sentido. Ate enjoa, coisas novas surgem, não da para ficar somente com uma coisa. Se hoje eu optar por C# ou Ruby ou Python, em um futuro pode ser que estude java(android) e etc.

Estou consciente disso, aprendi na pratica com meu ex-professor, gosto mesmo é de saber como funciona por debaixo dos panos.

Obrigado, progresso pra firma.

E

Javascript é uma linguagem OO. Não baseada em classes, mas sem dúvida orientada a objetos. Por que você não investe um pouco mais de tempo em Javascript?

P

Se quer aprender OO, melhor desenvolver um jogo ou app mobile então. web service não tem muito de OO pra modelar. Por isso linguagens OO estão perdendo espaço no back end opensource.

I

Web service não tem OO? Discordo… web service é só um “front end”, é só servicos, o que tem por trás pode, com certeza, estar orientados a objeto

P

Depende da arquitetura.
Se for um monolítico que não precisa escalar… então pode criar um sistema OO no backend…
Mas se for um arquitetura orientada a serviços, introduzir um sistema OO entre o armazenamento, que possivelmente está no formato relacional, e o cliente do webservice, sendo que a API tb não é baseada em objetos… hummm
pra mim, é apenas introduzir complexidade desnecessária.

Criado 29 de setembro de 2016
Ultima resposta 5 de out. de 2016
Respostas 36
Participantes 7