Sou bastante proficiente em Java, C / C ++, JavaScript / jQuery e decentemente bom em Objective-C. Também sou bastante produtivo com as linguagens e suas estruturas correspondentes e produzo sistemas de nível empresarial (e também de pequena escala) com facilidade suficiente, mantendo o código 'limpo' e sustentável (sim, eu posso ler meu próprio código depois das seis meses :)
A menos que seja exigido pela plataforma (iPhone, iPad etc.) ou pela organização cliente / implementação, apenas "por que" devo aprender uma nova linguagem de programação? Apenas por diversão"? E fazer o que com essa diversão, se eu não vou fazer nada que valha a pena?
Muitos de meus colegas estão prontos para aprender a "próxima coisa / linguagem nova" e geralmente é Python, Ruby ou PHP (apenas citando alguns populares). Agora, apenas conhecer o idioma por si só é inútil IMHO. Você também precisa conhecer as estruturas, aprender seu uso / APIs, bem como 'boas práticas de implementação', etc.
Então, do ponto de vista "econômico", existe algum benefício em aprender uma nova linguagem de programação? Se o idioma for aprendido de maneira rápida e suja, provavelmente também será usado para prototipagem / implementação rápida e suja - mas não vejo isso como um investimento justificável de tempo / esforço.
Então, por que eu (ou alguém) aprender uma nova linguagem de programação que não seja "é divertido, então vamos tentar" - se o investimento de tempo pode não valer a pena a longo prazo?
Respostas:
Do programador pragmático , dica nº 8 "Invista regularmente em seu portfólio de conhecimentos":
Não é sobre a próxima "coisa nova". Trata-se de pensar de maneiras diferentes, fora dos seus padrões normais de pensamento.
Há um ditado: "Quando você é um martelo, tudo parece um prego". Talvez haja uma maneira melhor de resolver um problema usando alguma outra tecnologia. Se você não explorar, talvez não saiba que estava disponível.
fonte
Por que as pessoas escalam o Monte. Everest? Ou percorrer 100 milhas em 24 horas ? Por que assumimos algum desafio? Porque está lá. Não vejo nada de errado com "Ars gratia artis". Chega um momento em que aprender pelo aprendizado torna-se sua própria recompensa. Mas se você quiser razões mais poderosas para aprender um novo idioma, aqui estão algumas:
Novas maneiras de resolver problemas O aprendizado de um novo idioma, que realmente leva tempo para se aprofundar, permite que você programe novamente como um novato. Essa nova perspectiva pode ensinar técnicas que podem levar a um idioma antigo. Pense na influência que o Ruby on Rails teve no ASP.NET MVC ou como o Java Hibernate foi portado para C # (junto com inúmeras outras estruturas que influenciam o desenvolvimento do .NET). A exposição a diferentes idiomas pode ensinar novas maneiras de resolver problemas.
A ferramenta certa para o trabalho certo Todos os idiomas que você mencionou são híbridos OO / Procedimentais (ou puramente processuais no caso de C). Tente sua mão em um ou dois idiomas funcionais. Tente implementar o fatorial em Erlang usando a recursão e observe sua mandíbula cair no chão quando 20000! retorna em 5 segundos (sem excesso de pilha no site). Em seguida, observe o poder de dimensionar seu aplicativo para analisar através de números e analisar protocolos com menos código e em menos tempo do que levaria para obter duas instâncias de uma JVM falando por RMI ou SOAP. Aprender outras linguagens / estruturas direcionadas para resolver problemas específicos fornecerá mais ferramentas.
Conheça novas pessoas / expanda sua rede Mergulhar em um novo idioma expõe você a uma nova comunidade. Conhecer novas pessoas é uma coisa boa para sua carreira e pessoalmente.
Novas oportunidades O conhecimento de um novo idioma só aumenta as chances de conseguir esse emprego com a inicialização a quente. "Cara, esse trabalho seria perfeito se eu conhecesse Ruby." Além disso, você pode aproveitar o idioma o suficiente para decidir mudar de caminho.
Mantenha-o atualizado Trabalhar com a mesma coisa todos os dias se torna tedioso. O uso de um idioma diferente pode dar uma pausa na rotina diária e permitir que você volte ao dia seguinte atualizado.
Porque está lá Aprenda um novo idioma porque você deseja.
fonte
Pensamos com palavras. A linguagem que usamos influencia a maneira como fazemos. Há um caso interessante sobre o idioma pirahã - as pessoas que falam esse idioma não conseguem lidar com algo aparentemente "simples" ou "intuitivo" como números, porque o idioma em que foram criados não possui palavras para "quantidades específicas" (nem mesmo "uma" " e muitos").
Com linguagens de programação é o mesmo. Uma nova linguagem de programação, pode "abrir" sua mente para alguns aspectos da programação.
Dado o seu histórico atual de programação, recomendo que você aprenda alguma linguagem funcional, como Erlang ou Scala. Finalmente, Clojure também é uma linguagem muito sólida.
Se você quiser se sentir um pouco mais em casa primeiro, tente uma linguagem de script poderosa como Python ou Ruby.
fonte
Você não apenas deseja aprender novas linguagens, mas também diferentes das que já conhece. Se você sabe que o aprendizado de Java em C # não será realmente um desafio, eles são bastante semelhantes. Idealmente, você deve escolher um idioma muito diferente do que você conhece. Se você conhece java, JavaScript e Objective-C, deseja algo muito diferente
Tal como:
Ruby, uma linguagem OO divertidamente digitada
Prolog Uma linguagem de programação lógica muito diferente
Simultaneidade e tolerância a falhas de Erlang muito bem
Esquema Vá ler o SICP e alcance a iluminação
Haskell Um dos sistemas de tipos mais poderosos do mundo, se o compilar, provavelmente funcionará, além de impedir que você cometa todos os tipos de erros estranhos e muito mais.
Ou apenas compre sete idiomas em sete semanas, o que fará o que o título diz.
fonte
Sua pergunta é tão importante que me pede para fazer a seguinte pergunta:
Se você é programador por profissão, por que não gostaria de aprender algo novo para adicionar à sua experiência profissional?
Sua pergunta me parece muito com a atitude de um aluno que já tive. Um ou dois anos antes do ano 2000, eu estava dando uma aula Cobol (como eletiva), a pedido do Diretor de Serviços de Carreira da universidade onde eu lecionava na época. Ele tinha tantas empresas se aproximando dele com oportunidades de emprego para programadores da Cobol que ele pensou que estaríamos prestando um desserviço aos nossos alunos, não dando a eles a oportunidade de aprender a habilidade e aumentar seu conjunto de habilidades.
Eu tive um aluno que teve a turma como sua última aula eletiva a se formar . Ele também estava trabalhando como programador C na época. Ele fez a aula de Cobol porque não tinha outras opções e queria o diploma. Então ele veio para a aula com um chip no ombro.
Então, eu o desafiei com a tarefa de escrever um programa para ler dados de um arquivo que tinha um formato específico para cada registro de entrada (ou seja, quantos caracteres cada campo ocupava em uma linha, qual campo chegava primeiro, segundo, terceiro etc.) .)
Ele deveria escrever seu programa em C, e ele me mostrou o programa. Ao mesmo tempo, mostrei a ele minha versão Cobol do programa.
Então joguei uma bola curva para ele:
Ele levou um dia para criar uma nova versão do programa que funcionava com o novo formato de dados. Envolveu a alteração de pelo menos 20 ou 30 linhas de código e a modificação de várias funções e módulos.
Depois mostrei a ele as alterações que precisava fazer no meu programa Cobol. Modifiquei a cláusula de imagem para refletir o novo formato de dados.
Não sei se ele entendeu completamente a lição desse exercício, mas pelo menos parou de reclamar pelo resto do semestre.
Portanto, em resposta à sua pergunta: você deve aprender novos idiomas porque deseja APRENDER. E se você não quer aprender - mais poder para você ... (não tenho certeza se contrataria você com essa atitude)
fonte
Há várias razões pelas quais aprender um novo idioma pode valer um investimento no tempo:
O aprendizado de novos idiomas pode fornecer benefícios imediatos, como você já observou, em soluções "rápidas e sujas". No entanto, essas soluções imediatas podem levar um programador a investigar e aprofundar a arquitetura associada ao novo idioma para "aprendê-lo" adequadamente. Pode-se ver esses exercícios de aprendizado rápido como um investimento para investigar se um novo idioma vale a pena acrescentar tempo de treinamento.
fonte
Em uma palavra: comercialização .
Você abre suas perspectivas de emprego quando pode demonstrar que tem a capacidade de se adaptar e aprender coisas novas. Claro, você pode continuar escrevendo aplicativos usando o único idioma em que se tornou realmente proficiente, mas o que acontece quando você descobre que seu idioma preferido se torna irrelevante para o setor em que está trabalhando. Lembro-me de uma época em que usamos Para escrever nossos próprios serviços da Web do zero em C ou C ++, hoje em dia usamos ferramentas que fazem toda a "webbiness" subjacente para nós (Think Rails, etc ...).
O ponto é que você acaba como os atores que fazem uma série de TV e, em seguida, não pode facilmente passar para outra coisa, porque é visto para sempre como seu personagem original. "Quem na terra quer que o capitão Kirk seja Indiana Jones? !!". O mesmo acontece com os programadores que apenas usaram o único produto. Claro, você o conhecerá como ninguém, mas isso não ajudará quando você for tratado como se fosse um Fortran que não pode passar a trabalhar com C #.
Se você deseja mover trabalhos facilmente e manter suas opções em aberto, precisa ampliar sua experiência. Trabalhe em muitos projetos diferentes em vários idiomas e, de preferência em pelo menos 2 ou mais plataformas, e mantenha-se comercializável por mais do que apenas ser o que é hoje.
Claro, existem muitas outras razões para aprender um novo idioma, às vezes até mesmo para o inferno. Isso abre sua mente para outras possibilidades; portanto, quando seu chefe chegar até você e disser "podemos fazer alguma coisa", você poderá dizer Sim com uma variedade de ferramentas disponíveis para você.
fonte
Neste ponto de sua carreira, você deve aprender novos idiomas se achar que eles o tornarão um programador melhor.
A maioria dos idiomas listados (Java / C / C ++ / Javascript / Objective-C) é OO convencional / imperativa. Aprender ainda outra linguagem OO / imperativa provavelmente não lhe ensinará muito mais sobre esse tipo de programação. A menos que você tenha um interesse particular, não faz sentido aprender o sabor do mês nas especificações.
Também estou inclinado a ser cético em relação a reivindicações de aumentos de produtividade em ordem de magnitude. No entanto, pode valer a pena conferir a linguagem ocasional de alta produtividade de renome, para ver se você gosta.
A melhor razão para aprender um novo idioma é aprender habilidades de aplicabilidade geral. Para isso, eu recomendaria um aprofundamento em uma linguagem funcional (Haskell, ou um dos Lisps), por um lado, e código de montagem e arquitetura de sistemas (x86 ou ARM), por outro.
A programação funcional quebrará seu cérebro e melhorará sua mente, enquanto o aprendizado da arquitetura da máquina melhorará suas habilidades de depuração e otimização, mesmo que você nunca escreva outra linha de montagem.
fonte
Cada um de nós decide sobre o que queremos trabalhar, então ...
Se você não quer aprender PHP, ninguém está aprendendo e há várias áreas em que você pode programar sem nem mesmo saber como se escreve PHP.
Muitas pessoas olham para o mercado de trabalho para ver onde as áreas quentes se movimentam e se aproveitam dessas tecnologias. Muitas pessoas aprendem um idioma e o seguem e 20 anos depois se tornam engenheiros de manutenção legados. E então você tem muitas pessoas que estão em qualquer lugar entre esses dois extremos.
No final, é tudo sobre o que você quer estar.
fonte
O melhor argumento que conheço é que ele amplia sua perspectiva sobre quantas maneiras diferentes um problema pode ser resolvido ou que alguma lógica pode ser expressa. Conhecer bem Java e C ++ oferece uma boa visão sobre os domínios nativo e de VM, mas há muito mais "graus de liberdade" para explorar.
Tenho cerca de 15 anos de experiência em C ++, 5 em Java. Há muitas linguagens que aprendi e deixei para trás (PHP, Pascal, assembly para vários processadores diferentes, entre outras) e posso dizer com certeza que mesmo aquelas que não uso mais deixaram uma marca significativa na maneira como penso sobre um problema. . Além disso: mesmo se você quiser se manter, digamos, em Java, para um determinado projeto, precisará conhecer a alternativa para apresentar bons contra-argumentos a seus proponentes.
Ainda assim, eu aprendi Python apenas este ano e fiquei encantado com a elegância de algumas coisas. Tanto que eu decidi converter um punhado de servlets REST que eu havia escrito, de Java para Python. As vantagens na manutenção do código foram bastante significativas. Certamente também deixou uma marca na minha maneira de fazer as coisas, não apenas porque agora escolherei o Python para algumas tarefas, mas também porque posso adotar princípios de design semelhantes ao codificar em C ++ e Java.
Dito isto, acho que você não deve aprender muitas línguas diferentes o tempo todo, apenas por isso. Demora um tempo considerável, e as "acomodações" que você deve ter em mente para que coexistam com as outras que você já conhece também exigem tempo e esforço. Eu só decido aprender um idioma quando ele tem maturidade suficiente, tem uma boa base de desenvolvedores e oferece resultados significativamente diferentes dos outros que eu conheço ou pretendo aprender. Quando decidi aprender Python, por exemplo, também considerei Ruby e Perl e depois as descartei - pelo menos em um futuro próximo.
fonte
As pessoas aprendem novos idiomas para ...
Confiança = Código impressionante!
Então, como você pode ver, existem muitas razões para aprender um novo idioma. Meu conselho para você (e minha única citação original que acho boa):
fonte
Eu concordo com a maioria das respostas já postadas. Para anexar a eles, confira as estatísticas obtidas pela Pesquisa de usuários do Stack Overflow de 2011. Houve uma correlação muito alta entre o número de idiomas conhecidos e o dinheiro ganho. Eles podem não estar diretamente ligados um ao outro, mas é algo em que pensar.
Pessoas que tendem a aprender mais idiomas tendem a ganhar mais dinheiro.
http://blog.stackoverflow.com/2012/02/survey-results/
fonte
Alfred North Whitehead escreveu um grande ensaio chamado " A Importância da Boa Notação "
Uma linguagem de programação é uma forma de notação. Eu posso codificar OO em C; de fato, foi assim que o Stroustrup começou com o C ++ - como uma série de macros do pré-compilador C. No entanto, é muito mais fácil e rápido escrever código OO em Java, C ++ ou C # porque eles têm primitivas de linguagem presentes que suportam OO mais facilmente.
Todos os motivos para aprender novos idiomas dados até agora são válidos, mas acho que o melhor motivo para aprender um novo idioma é que uma nova notação pode permitir que você pense de uma nova maneira, o que pode ajudá-lo a resolver novos problemas.
fonte
A maioria ou todas as respostas acima estão relacionadas à profissão. Programação. Quero lembrar que antes de sermos programadores - somos seres humanos.
Uma boa razão para não aprender uma nova linguagem de programação, no seu caso, é deixar-se descansar ou fazer outras coisas além da programação.
Pela minha experiência, trabalhando na agricultura e trabalhando com madeira, pensei muito em programação - mais do que aprender um novo idioma. Para ser um bom programador, você deve primeiro ser um bom ser humano. Se você não tem muita experiência na vida, além da programação, sua ideia sobre programação pode estar totalmente errada - mesmo se você for um especialista.
Muitos conceitos de programação vêm diretamente da vida cotidiana: simplicidade, manutenção, prática, utilidade, rapidez - e às vezes lenta , modularidade, etc; são todos os conceitos usados por um carpinteiro, por exemplo.
Acredite ou não: pessoalmente, aprendi muito sobre conceitos de programação, tirando longas férias para colher laranjas. O principal conceito que aprendi com isso foi - simplicidade. Ao trabalhar como construtor, aprendi outro conceito: construa a base da melhor maneira possível - se você quiser que as paredes fiquem retas.
Finalmente, a resposta para sua pergunta pode ser: tirar férias, participar de uma aula de taekwondo ou cuidar do jardim - então sua pergunta pode não incomodá-lo mais.
fonte
O valor de aprender uma nova linguagem de programação é, aproximadamente, o recíproco do número de linguagens de programação que você já conhece.
Isso ocorre porque há um número finito de paradigmas e o aprendizado de um novo idioma geralmente o apresenta a pelo menos um ou dois, tornando-o mais experiente e capaz como programador. Alguns podem virar o mundo da programação de cabeça para baixo. Mas quando você aprende um novo idioma que apresenta paradigmas que você já conhece, você já os conhece e está acostumado a eles.
fonte
Como a maioria deles já escreveu, tenho bons conhecimentos de trabalho em C. Recentemente, eu estava trabalhando em algum problema para o qual precisava cruzar os resultados; foi matemático. Então, qual é a maneira mais rápida de obter a resposta me deu um chute para verificar a linguagem de programação mais rápida a ser aprendida.
E descobri que o bc , uma linguagem arbitrária de calculadora de precisão, o utilitário quase disponível em todas as plataformas Unix.
Eu não pensei em Python, Perl ou qualquer coisa, mas descobri que isso resolveu meus problemas rapidamente. Eu verifiquei no fatorial (20000) que um amigo sugeriu, e deu resultados rapidamente, sem qualquer falha.
É importante, até certo ponto, que você precise conhecer um novo idioma que facilitará seu trabalho / problema no momento.
Definitivamente, se eu escrever isso no meu currículo, acho que ninguém se importa, mas, da minha perspectiva, resolve meu problema antes de atacá-lo no meu idioma favorito, 'C'.
E também, se houver necessidade de aprender um novo idioma, você terá a oportunidade com diferentes problemas e número de soluções.
fonte
Qualquer pessoa pode criar um novo idioma; mas ninguém parece entender que "melhor" raramente é o mesmo que "tanto melhor que o custo de adoção é realmente justificado". O resultado final são centenas de linguagens diferentes, onde é impossível alguém entender todo o código-fonte e onde os programadores precisam perder cerca de um quarto do tempo improdutivos devido a diferenças de linguagem / estrutura / biblioteca.
Em um mundo ideal, haveria uma linguagem de programação de baixo nível (por exemplo, C), uma linguagem de programação "segura" de alto nível (por exemplo, Java) e uma linguagem de script. Também haveria uma grande marreta para destruir a "Torre de linguagem de programação de Babel" criada por pessoas que não entendem as virtudes da padronização e o custo da "rotatividade" e constante reciclagem no setor de TI como um todo.
Do ponto de vista "macroeconômico", não há nada de errado em aprender uma nova linguagem de programação como hobby, mas usar essa nova linguagem de programação para qualquer coisa faz parte do problema.
fonte