(Por que) Devo aprender uma nova linguagem de programação? [fechadas]

97

Eu sou bastante proficiente com Java, C / C ++, JavaScript / jQuery e decentemente bom em Objective-C. Sou bastante produtivo com as linguagens e seus frameworks correspondentes e também produzo sistemas de nível corporativo (e também os de pequena escala) com facilidade suficiente, mantendo o código "limpo" e de fácil manutenção (sim, posso ler meu próprio código depois de seis meses:)

A menos que exigido pela plataforma (iPhone, iPad, etc.) ou pelo cliente / organização de 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 com isso?

Muitos de meus colegas estão prontos para mergulhar para aprender a "próxima nova coisa / linguagem" e normalmente é Python, Ruby ou PHP (apenas nomeando alguns populares). Agora, apenas conhecer a linguagem por si só é IMHO fútil. Você também precisa conhecer as estruturas, aprender seu uso / APIs, bem como "boas práticas de implementação", etc.

Então, a partir de um sentido 'econômico', existe algum benefício em aprender uma nova linguagem de programação? Se a linguagem for aprendida de maneira rápida e suja, provavelmente também será usada para prototipagem e 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 deveria (ou qualquer um) aprender uma nova linguagem de programação que não seja "é divertido, então vamos testá-la" - se o investimento de tempo não valer a pena a longo prazo?

    
por PhD 22.02.2012 / 20:32
fonte

17 respostas

178

De O programador pragmático , Dica # 8 "Invista regularmente em seu portfólio de conhecimento":

Learn at least one new language every year. Different languages solve the same problems in different ways. By learning several different approaches, you can help broaden your thinking and avoid getting stuck in a rut. Additionally, learning many languages is far easier now, thanks to the wealth of freely available software on the Internet

Não é sobre a próxima "novidade". É sobre pensar de maneiras diferentes fora de seus padrões normais de pensamento.

Existe um ditado: "Quando você é um martelo, tudo parece um prego". Talvez exista uma maneira melhor de resolver um problema usando alguma outra tecnologia. Se você não explorar, talvez não saiba que estava disponível.

    
por 21.02.2012 / 20:55
fonte
80

Por que as pessoas escalam o Monte Everest? Ou execute 100 milhas em 24 horas ? Por que empreendemos algum desafio? Porque está lá. Não vejo nada de errado com "Ars gratia artis". Chega um ponto em que aprender por aprender torna-se sua própria recompensa. Mas se você quiser razões mais poderosas para aprender um novo idioma, aqui estão algumas:

Novas formas de resolver problemas Aprender um novo idioma, realmente aproveitando o tempo para mergulhar, lhe dá a chance de programar novamente como um novato. Essa nova perspectiva pode ensinar técnicas que podem ser transferidas para um idioma antigo. Pense na influência que o Ruby on Rails teve sobre a ASP.NET MVC ou como o Java Hibernate foi portado para C # (junto com inúmeras outras estruturas que influenciam o desenvolvimento .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 OO / Híbridos processuais (ou puramente processuais no caso de C). Tente sua mão em uma linguagem funcional ou dois. Tente implementar o fatorial em Erlang usando a recursão e observe seu queixo atingir o chão quando 20000! retorna em 5 segundos (sem estouro de pilha no site). Em seguida, examine o poder de escalonar seu aplicativo para analisar números e analisar protocolos com menos código e em menos tempo do que seria necessário para obter duas instâncias de uma JVM conversando por meio de RMI ou SOAP. Aprender outras linguagens / frameworks que são direcionados para resolver problemas específicos lhe dará 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 Conhecer uma nova língua só pode aumentar sua chance de conseguir esse emprego com aquela startup quente. "Cara, esse trabalho seria perfeito se eu conhecesse Ruby." Além disso, você pode aproveitar a linguagem o suficiente para decidir mudar de caminho.

Mantenha-o fresco Trabalhar com a mesma coisa dia após dia torna-se tedioso. Usar uma linguagem diferente pode lhe dar uma folga da rotina diária e permitir que você chegue ao dia seguinte atualizado.

Porque está lá Aprenda um novo idioma porque você quer.

    
por 21.02.2012 / 19:01
fonte
37

Nós pensamos com palavras. A linguagem que usamos influencia a maneira como fazemos isso. Há um caso interessante sobre a língua pirahã - pessoas que falam que a linguagem não pode lidar como algo aparentemente "simples" ou "intuitivo" como números porque a linguagem em que foram criados não tem palavras para "quantidades específicas" (nem mesmo "um" 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 seu atual histórico de programação, recomendo que você aprenda alguma linguagem funcional, como Erlang ou Scala. Finalmente, o Clojure é uma linguagem muito sólida também.

Se você quiser se sentir um pouco mais em casa primeiro, experimente uma linguagem de script poderosa como Python ou Ruby.

    
por 22.02.2012 / 11:11
fonte
26

Não apenas você quer aprender novos idiomas para aprender linguagens diferentes das que você já conhece. Se você conhece o aprendizado de Java, o C # realmente não o desafia, 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, você quer algo muito diferente

Como:

Ruby um divertido OO com linguagem pouco tipada

Prolog Uma linguagem de programação lógica muito diferente

Erlang Concorrência e tolerância a falhas muito bem

Esquema Leia o SICP e alcance a iluminação

Haskell Um dos sistemas de tipos mais poderosos do mundo, se compilar, provavelmente funcionará, e também evitará que você cometa erros estranhos e muito mais.

Ou simplesmente pegue Seven Languages em Seven weeks, que fará o que o título diz.

    
por 22.02.2012 / 12:01
fonte
15

A sua pergunta é tão importante que me pede para fazer a seguinte pergunta:

Se você é programador por profissão, porque no mundo você 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 ano ou dois antes do Y2K, eu estava dando aulas de 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 trabalho para programadores Cobol que ele achava que estaríamos fazendo nossos alunos um desserviço, não dando-lhes a oportunidade de aprender a habilidade e adicionar ao seu conjunto de habilidades.

Eu tive um aluno que fez a turma como sua última turma eletiva para se graduar . Ele também estava trabalhando como programador de C na época. Ele levou a aula Cobol porque ele não tinha outras opções e ele queria o diploma. Então ele veio para a aula com um chip no ombro.

I already know C, and I'm using it professionally so I don't know why in the world that anyone would want or even need to learn Cobol.

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 veio primeiro, segundo terceiro, etc.)

Ele deveria escrever seu programa em C, o que ele fez, e ele mostrou seu programa para mim. Ao mesmo tempo, mostrei a ele a minha versão Cobol do programa.

Então eu joguei uma bola curva:

Supposed that the end user is getting data from somewhere else. It's the same fields in each record, but the order and the number of characters per field is different. Show me what you would have to change in your program to make it work with the new data format.

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 as mudanças que eu precisava fazer no meu programa Cobol. Eu modifiquei a cláusula de imagem para refletir o novo formato de dados.

Eu não tenho certeza se ele entendeu completamente a lição desse exercício, mas ele pelo menos deixou de reclamar pelo resto do semestre.

Então - em resposta à sua pergunta: Você deve aprender novos idiomas porque deseja APRENDER. E se você não quer aprender - mais poder para você ... (Eu não tenho certeza se eu contrataria você com essa atitude)

    
por 21.02.2012 / 20:21
fonte
12

Existem vários motivos pelos quais aprender uma nova língua pode valer um investimento no tempo:

  1. Aumentar o tamanho da caixa de ferramentas - aprender um novo idioma pode fornecer caminhos adicionais para solucionar problemas técnicos. A possibilidade de novas ferramentas poderia fornecer uma melhor escolha de linguagem / plataforma para resolver certos problemas do que as ferramentas / linguagens que conhecia anteriormente. Um exemplo simplista pode ser o de um programador que apenas conhece C. Aprender uma linguagem de script abre outras possibilidades para ele - em termos de implementação, configuração do ambiente, etc.
  2. Tenha acesso a uma nova plataforma - um excelente exemplo pode ser o Objetivo C - se alguém quiser desenvolver para iOS, aprender essa linguagem é quase obrigatório.
  3. Aprenda novos paradigmas - certas linguagens podem ter melhor acesso a novos paradigmas. Usando C como exemplo, pode ser difícil desenvolver serviços da Web no padrão ANSI C. No entanto, aprender a desenvolver em .NET, Java, PHP ou outras novas linguagens pode acelerar o desenvolvimento de serviços da Web.

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 à nova linguagem para aprendê-la "adequadamente". Pode-se ver esses exercícios rápidos de aprendizado como um investimento na investigação sobre se um novo idioma vale mais tempo de treinamento.

    
por 21.02.2012 / 18:38
fonte
11

Em uma palavra: Marketability .

Você abre suas perspectivas de emprego quando consegue mostrar que tem capacidade de se adaptar e aprender coisas novas. Claro, você poderia continuar escrevendo aplicativos usando o idioma em que você se tornou proficiente, mas o que acontece quando você descobre que sua linguagem preferida se torna irrelevante para o setor em que você está trabalhando. Na verdade, lembro de uma época em que usávamos para escrever nossos próprios serviços web a partir do zero em C ou C ++, atualmente usamos ferramentas que fazem toda a "webbiness" subjacente para nós (Think Rails, etc ...).

O ponto é, você acaba como aqueles atores que fazem uma série de TV, e então não pode facilmente passar para qualquer outra coisa, porque eles são sempre vistos como seus personagens originais. "Quem na Terra quer que o Capitão Kirk seja Indiana Jones? !!". O mesmo acontece com os programadores que só usaram o único produto. Claro, você saberá como ninguém, mas isso não ajudará quando você for tratado como se fosse um Fortran que não pode trabalhar com C #.

Se você quiser poder mudar de emprego com facilidade e manter suas opções em aberto, é necessário ampliar sua experiência. Trabalhe em muitos projetos diferentes em diversos idiomas e, de preferência, em pelo menos duas ou mais plataformas, e mantenha-se no mercado para mais do que ser o que você é hoje.

Naturalmente, há muitas outras razões para aprender um novo idioma, às vezes até mesmo para o inferno dele. Ele abre sua mente para outras possibilidades, então quando seu chefe chega até você e diz "podemos fazer algo", você pode dizer Sim com uma variedade de ferramentas disponíveis para você.

    
por 21.02.2012 / 21:50
fonte
8

Neste momento da sua carreira, você deve aprender novos idiomas se achar que eles farão de você um programador melhor.

A maioria das linguagens listadas (Java / C / C ++ / Javascript / Objetivo-C) são OO / imperativo convencionais. Aprender mais uma linguagem OO / imperativa provavelmente não vai te 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 na especificação.

Eu também estou inclinado a ser cético sobre as reivindicações de aumento de produtividade de ordem de magnitude. No entanto, pode valer a pena conferir a ocasional linguagem de alta produtividade, para ver se você gosta dela.

A melhor razão para aprender uma nova língua é aprender habilidades de aplicabilidade geral. Para isso, eu recomendaria um mergulho profundo 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 de arquitetura de máquina melhorará suas habilidades de depuração e otimização, mesmo que você nunca escreva outra linha de montagem.

    
por 22.02.2012 / 00:14
fonte
6

Cada um de nós decide sobre o que queremos trabalhar ...

  1. você aprende porque quer
  2. você aprende porque precisa do trabalho que deseja

Se você não quer aprender PHP, ninguém está fazendo você e há muitas áreas onde você pode programar sem saber como escrever PHP.

Muitas pessoas olham para o mercado de trabalho para ver onde áreas de áreas quentes e saltar sobre essas tecnologias. Muitas pessoas aprendem uma língua e continuam com ela e, 20 anos depois, tornam-se 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 ser.

    
por 21.02.2012 / 19:26
fonte
5
O melhor argumento que eu conheço é que ele amplia sua perspectiva sobre quantas maneiras diferentes um problema pode ser resolvido, ou alguma lógica pode ser expressa. Sabendo bem Java e C + + dá-lhe uma boa visão sobre o nativo e amp; Reinos da VM, mas há muito mais "graus de liberdade" para explorar.

Tenho cerca de 15 anos de experiência em C ++, 5 em Java. Existem muitas linguagens que aprendi e deixei para trás (PHP, Pascal, montagem para um monte de processadores diferentes, entre outros) e posso dizer com certeza que mesmo aquelas que eu não uso mais deixaram uma marca significativa em como eu penso sobre um problema . Além disso: mesmo se você quiser ficar com, digamos, Java, para um determinado projeto, você terá que saber a alternativa para apresentar bons contra-argumentos para seus proponentes.

Ainda assim, eu aprendi Python neste ano e fiquei encantado com o quão elegantemente algumas coisas podem ser feitas. Tanto que decidi converter um punhado de servlets REST que eu tinha escrito, do Java ao Python. As vantagens na manutenção do código foram bastante significativas. Com certeza também deixou uma marca na minha maneira de fazer as coisas, não só porque agora vou escolher o Python para algumas tarefas, mas também porque eu posso adotar princípios de design similares ao codificar em C ++ & Java.

Dito isso, não acho que você deva aprender muitas línguas diferentes o tempo todo, apenas por causa disso. Leva um tempo considerável, e as "acomodações" que você terá que fazer em sua mente para que eles coexistam com os outros que você já conhece também levam 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 conheço ou pretendo aprender. Quando decidi aprender Python, por exemplo, também considerei Ruby e Perl, e depois os descartei - pelo menos para o futuro próximo.

    
por 21.02.2012 / 19:48
fonte
5

As pessoas aprendem novos idiomas para ...

  • expanda seus conhecimentos. Se você souber mais, sinta-se melhor e fique mais confiante. Confiança = Código incrível!
  • tem uma caixa de ferramentas maior. Digamos que você tenha que criar um aplicativo. Se você conhece apenas Java, você fará o programa em Java. Mas se você conhece Java, Python, Scheme e Lisp, é provável que você escolha a melhor ferramenta para o trabalho.
  • consiga um emprego. Enfrente. Se você conhece mais idiomas, tem mais oportunidades de emprego. Isso é bastante autoexplicativo.
  • torne-se um melhor programador geral. Se você conhece a sintaxe do Perl, sabe que pode ficar um pouco louco. Ao escrever programas longos em Perl, você é basicamente forçado a seguir as melhores práticas, ou você não será um campista feliz. Como você conhece as práticas recomendadas do Perl, isso pode ajudá-lo a escrever um código PHP melhor (de uma forma ou de outra).

Como você pode ver, há muitas razões para aprender um novo idioma. Meu conselho para você (e minha única citação original que eu acho boa):

Write code frequently; Write code well; Write code in Scheme, PHP, Java, Python, Lisp, Perl, C, C++, C#, Visual Basic, Ruby...

    
por 21.02.2012 / 21:44
fonte
5

Concordo com a maioria das respostas postadas já. Para acrescentar a isso, confira as estatísticas obtidas pela Pesquisa de usuários com estouro de pilha de 2011. Houve uma correlação muito alta entre o número de línguas conhecidas e o dinheiro ganho. Eles podem não estar diretamente ligados uns aos outros, mas é algo em que pensar.

As pessoas que tendem a aprender mais idiomas tendem a ganhar mais dinheiro.

link

    
por 21.02.2012 / 23:50
fonte
4

Alfred North Whitehead escreveu um ótimo ensaio chamado " A importância da boa notação "

It is interesting to note how important for the development of science a modest-looking symbol may be. It may stand for the emphatic presentation of an idea, often a very subtle idea, and by its existence make it easy to exhibit the relation of this idea to all the complex trains of ideas in which it occurs.

Uma linguagem de programação é uma forma de notação. Eu posso codificar OO em C; Na verdade, foi assim que o Stroustrup começou com o C ++ - como uma série de macros de pré-compilador C. No entanto, é muito mais fácil e rápido escrever código OO em Java, C ++ ou C # porque eles possuem primitivos de linguagem presentes que suportam OO mais facilmente.

Todas as razões para aprender novas línguas dadas até agora são válidas, mas acho que a melhor razão para aprender uma nova língua é que uma nova notação pode permitir que você pense de uma maneira nova, que pode ajudá-lo a resolver novos problemas.

    
por 21.02.2012 / 21:38
fonte
2

A maioria ou todas as respostas acima estão relacionadas à profissão. Programação. Eu quero lembrar que antes de sermos programadores - somos seres humanos.

Uma boa razão pela qual não aprende uma nova linguagem de programação, no seu caso, é deixar você descansar ou fazer outras coisas além da programação.

Da minha experiência, trabalhando na agricultura e trabalhando com madeira, pensei muito em programação - mais do que aprender uma nova língua. Ou seja, 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 que você seja um especialista.

Muitos conceitos em programação vêm diretamente da vida cotidiana: simplicidade, manutenção, prática, útil, rápida - e às vezes lenta , modularidade, etc; são todos conceitos usados por um carpinteiro, por exemplo.

Acredite ou não: pessoalmente, aprendi muito sobre conceitos de programação, tirando férias longas para colher laranjas. O conceito principal que aprendi com isso foi - simplicidade. Trabalhando como construtor, aprendi outro conceito: construir a base da melhor forma 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.

    
por 25.02.2013 / 10:50
fonte
-2

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 introduz a pelo menos um ou dois, tornando-o mais experiente e capaz como programador. Alguns podem virar seu mundo de programação de cabeça para baixo. Mas quando você aprende uma nova linguagem que apresenta paradigmas que você já conhece, você já os conhece e está acostumado com eles.

    
por 21.02.2012 / 22:14
fonte
-3

Como a maioria deles já escreveu, eu tenho um bom conhecimento de trabalho em C. Recentemente, eu estava trabalhando em algum problema para o qual eu precisava cruzar os resultados; foi matemático. Então, qual é o caminho mais rápido para obter a resposta? Me deu um chute para verificar a linguagem de programação mais rápida a ser aprendida.

E eu descobri que bc , uma linguagem de calculadora de precisão arbitrária, 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 em um piscar de olhos. Eu verifiquei no fatorial (20000) que um dos amigos sugeriu, e deu resultados em um piscar de olhos sem qualquer acidente.

É 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 na minha língua favorita, 'C'.

E também, se houver necessidade de aprender um novo idioma, você terá a oportunidade com diferentes problemas e várias soluções.

    
por 22.02.2012 / 20:38
fonte
-8

Qualquer um pode criar um novo idioma; mas ninguém parece entender que "melhor" raramente é o mesmo que "muito melhor que o custo da adoção seja realmente justificado". O resultado final é centenas de idiomas diferentes, onde é impossível para qualquer um entender todo o código-fonte, e onde os programadores precisam desperdiçar cerca de um quarto de seu tempo sendo improdutivo devido a diferenças de linguagem / framework / biblioteca.

Em um mundo ideal, há 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. Haveria também 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 do custo de "rotatividade" e reciclagem constante no ensino de idiomas. indústria como um todo.

De um sentido "macroeconômico", não há nada de errado em aprender uma nova linguagem de programação como hobby, mas usando essa nova linguagem de programação faz com que você seja parte do problema.

    
por 21.02.2012 / 19:26
fonte