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

97

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?

PhD
fonte
6
programmers.stackexchange.com/questions/118338/… Talvez você se interesse pela resposta que eu dei gere.
23412 deadalnix
3
Se você pode ver uma nova linguagem com novos conceitos e não tem um desejo de compreendê-los, muitos lugares não vai contratá-lo (na verdade, muitas perguntas da entrevista são feitos para determinar especificamente coisas como esta)
Bill K
3
Vou perguntar por que não devo aprender um novo idioma?
usuário
2
@ZacharyK, mesmo que o trabalho fosse para um desenvolvedor java, e o candidato fosse superduper em java. Parece que você pode estar atirando no próprio pé.
NimChimpsky
2
Existem muitos caras do Super Java por aí. Estou tão interessado no que você saberá em 6 meses quanto no que você sabe agora. (Claro que parecem gastar todo o meu tempo em Erlang, CoffeeScript e PHP)
Zachary K

Respostas:

178

Do programador pragmático , dica nº 8 "Invista regularmente em seu portfólio de conhecimentos":

Aprenda pelo menos um novo idioma a cada ano. Idiomas diferentes resolvem os mesmos problemas de maneiras diferentes. Ao aprender várias abordagens diferentes, você pode ajudar a ampliar seu pensamento e evitar ficar preso em um barranco. Além disso, aprender muitos idiomas é muito mais fácil agora, graças à riqueza de softwares disponíveis gratuitamente na Internet

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.

jmq
fonte
Ponto excelente. Foi esse pensamento que me levou a experimentar o RavenDB em um projeto, e aprendi muito depois de anos preso em uma rotina do SQL Server.
22412 Bob Horn
52
Eu pensei que era quando tudo que você tem é um martelo tudo parece o polegar
Zachary K
2
Eu concordo completamente. Eu também acrescentaria que aprender outro idioma ajuda a entender melhor os aspectos dos idiomas que você pensava conhecer anteriormente. Também ajuda a distinguir o que são conceitos / padrões / limitações fundamentais da programação "real" e o que são meramente artefatos do seu conjunto de ferramentas específico. Por exemplo, se todos os idiomas que você conhece são de tipo fraco, talvez você nunca saiba que existe uma digitação forte e nunca se pergunta por que! Conseqüentemente, seus produtos podem sofrer desempenho ou segurança, mesmo que sejam excelentes no tempo de lançamento no mercado ;-).
JJC
3
O Programador Pragmático é um dos melhores livros de programação que eu já li. Muito bom!
Soner Gönül
Eu realmente concordo em "Trata-se de pensar de maneiras diferentes, fora dos seus padrões normais de pensamento". Quando aprendi Python, adquiri o novo mundo de uma maneira de pensar.
Yoo Matsuo
80

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.

Michael Brown
fonte
3
O Javascript +1 pode ser funcional, mas certamente parece que o OP pode estar faltando alguns paradigmas em sua caixa de ferramentas. E mais experiência com linguagens funcionais fornecerá uma visão mais profunda de suas linguagens existentes, por exemplo, com modelos C ++
jk.
+1 para mantê-lo fresco, ele realmente faz sentir bem trabalhando em algo diferente
Mona
Gostaria de salientar que as otimizações de chamada de cauda não têm nada a ver com o fato de uma linguagem ser (pura) funcional ou não, linguagens imperativas compiladas para serem executadas no tempo de execução de 64 bits do .NET e obter otimização de chamada de cauda gratuitamente, por exemplo .
Blindy
1
LOL, sim, não é isso que faz do Erlang uma linguagem funcional pura, mas é uma mudança total de perspectiva. Nas linguagens imperativas, somos encorajados a evitar a recursão para todos, exceto os casos mais triviais, e a recursão das linguagens funcionais é um modo de vida. A correspondência de padrões, em oposição a if / else ou switch / case, também é bastante interessante.
Michael Brown
2
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). Este é um dos argumentos mais fortes para aprender uma linguagem funcional que eu já vi. Nunca pensei que poderia ser tão eficiente.
Olegs Jeremejevs 23/11
37

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.

egarcia
fonte
22
+1. "Uma linguagem que não afeta a maneira como você pensa sobre programação, não vale a pena conhecer." - Alan Perlis
ruakh 21/02
2
Rejeito a premissa de que "pensamos com palavras", pois nega a possibilidade de que alguém (ou qualquer coisa) sem palavras possa pensar. Mas as palavras são extremamente úteis para rotular conceitos (e assim ajudar a distingui-los). Em geral , pensamos mais alto com (muito envolvimento de) palavras, porque é eficiente. Qual é uma afirmação mais ambígua, mas penso mais perto da verdade. Engraçada, não posso rejeitar o uso de palavras sem usar palavras ...
Donal Fellows
@DonalFellows: Acho que temos alguns "processos mentais" que não são expressáveis ​​através de palavras. Mas não chamo esses "pensamentos", mas "sentimentos", "reflexos", "intuições" etc. Acho que um pensamento adequado deve ser expressável em termos de algum tipo de linguagem. Então, para mim, algo que não tem uma linguagem pode viver, processar, reagir, sentir ... mas não pensar. Mas essa é uma crença, baseada na intuição, não em nenhuma evidência real. E também um pouco off-topic, realmente :)
egarcia
Concordo absolutamente, aprender linguagens apenas porque elas são a nova linguagem de programação legal não faz sentido. Você deve se ater aos muito diferentes e tentar não cobrir muitos deles. Ser bom em algo levará uma quantidade considerável de tempo (provavelmente 10 ou mais anos), não importa se está tocando um instrumento musical, cozinhando ou programando.
Mister Smith
2
@evilcandybag: Na verdade, eu posso demonstrar uma fonte: sciencemag.org/content/306/5695/496 , sciencemag.org/content/suppl/2004/10/15/1094492.DC1/… (PDF).
Ruakh 22/02/12
26

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.

Zachary K
fonte
2
+1! Um exercício que estou fazendo agora é implementar o mesmo algoritmo (classificação por mesclagem) em diferentes idiomas: isso realmente me dá a sensação de quantas maneiras existem para expressar a mesma computação. Já tenho as versões C, C ++, Pascal, Java, Scala e Haskell em execução. Python, Ruby, Modula2, Scheme estão a caminho. Acho que você pode aprender muito olhando diferentes linguagens de programação! E, ao fazer uma coisa em um idioma, posso ter muitas idéias sobre como implementá-lo de uma maneira melhor em outro idioma.
Giorgio
3
Eu gosto disso, exceto por como você descreve Haskell. Você ainda pode escrever um código errado que seja compilado. (A correção de tipo não é o único requisito para correção geral.) A razão para aprender Haskell é que ela é notadamente muito próxima da matemática e possui um modelo de avaliação preguiçoso; isso deve abalar as noções da maioria dos programadores sobre o que é a programação.
Donal Fellows
Eu acho que deveria dar uma chance ao Prolog. Quando eu aprendi, fiquei impressionado. Como você pode fazer as coisas escrevendo apenas alguns caracteres.
User
3
@DonalFellows na minha experiência, se você acertar os tipos em Haskell, o resto do programa tende a se escrever.
tobyodavies
1
"Ruby, uma linguagem OO divertida e fracamente digitada": Ruby é realmente fracamente digitada ou dinamicamente?
Giorgio
15

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.

Eu já conheço C e estou usando-o profissionalmente, então não sei por que diabos alguém iria querer ou precisar aprender 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 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:

Supõe-se que o usuário final esteja obtendo dados de outro lugar. São os mesmos campos em cada registro, mas a ordem e o número de caracteres por campo são diferentes. Mostre-me o que você precisaria alterar em seu programa para fazê-lo funcionar com o novo formato de dados.

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)

Zeke Hansell
fonte
6
Embora suas intenções fossem boas, se eu fosse esse aluno, simplesmente pensaria que a única razão pela qual seu aplicativo foi facilmente alterado foi porque você sabia das eventuais alterações nos requisitos. Se o programa fosse escrito em C com o mesmo conhecimento, também seriam necessárias alterações mínimas.
Hspain
Tive um colega de trabalho com uma atitude semelhante: "C e PHP me valem dinheiro. Por que devo perder meu tempo aprendendo outro idioma?" Ele não trabalha mais lá.
greyfade
3
todos os requisitos mudam mais cedo ou mais tarde! Esse é o tipo de questão.
Zachary K
@ hspain - na verdade, por causa de todo o objetivo do exercício, o Cobol trata as especificações de E / S como parte de um programa de primeira ordem, em vez de algo que acontece de maneira laissez-faire, com base na maneira como você escreveu e encomendou o seu Instruções de E / S em C. E para ecoar o comentário de Zachary K, o fato é que os requisitos mudam. - Sim, você pode estruturar um programa em C de forma que seja menos quebradiço quando coisas como requisitos de E / S mudam, mas isso envolve pensar no programa de uma maneira completamente diferente do que você normalmente faz quando escreve um programa em C.
31512 Zeke Hansell
Na verdade, eu não sabia disso sobre Cobol. Algum dia eu possa ter de ir dar uma olhada
Zachary K
12

Há várias razões pelas quais aprender um novo idioma pode valer um investimento no tempo:

  1. Aumente o tamanho da caixa de ferramentas - aprender um novo idioma pode fornecer caminhos adicionais para a solução de problemas técnicos. A possibilidade de novas ferramentas poderia fornecer uma melhor escolha de idioma / plataforma para resolver certos problemas do que as ferramentas / idiomas que se conhecia anteriormente. Um exemplo simplista pode ser o de um programador que conhece apenas C. O aprendizado de uma linguagem de script abre outras possibilidades para ele - em termos de implantação, configuração do ambiente etc.
  2. Obtenha acesso a uma nova plataforma - um excelente exemplo pode ser o objetivo C - se alguém quiser desenvolver para iOS, aprender esse idioma é quase obrigatório.
  3. Aprenda novos paradigmas - certos idiomas 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 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.

JW8
fonte
11

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ê.

S.Robins
fonte
8

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.

tempestade
fonte
6

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

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

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.

DXM
fonte
Na sua descrição, parece um pouco em preto e branco. "Funis de tecnologia" e engenheiros de manutenção legados são os dois extremos do IMHO, com a maioria de nós sentados em algum lugar. Além disso, alguns "funis de tecnologia" são loucos demais pelas novidades brilhantes para realmente aprender qualquer tecnologia adequadamente (o que levaria mais tempo do que o que eles estão dispostos a investir em uma única tecnologia), para que nunca produzam soluções sólidas e de longo prazo para problemas.
Péter Török
1
@ PéterTörök: Editou minha resposta. Eu estava apontando a balança, mas estava com preguiça de soletrar tudo. Você está certo, é um espectro contínuo.
DXM
5

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.

Fabio Ceconello
fonte
5

As pessoas aprendem novos idiomas para ...

  • expandir seus conhecimentos. Se você sabe mais, se sente melhor e mais confiante.
    Confiança = Código impressionante!
  • tenha uma caixa de ferramentas maior. Digamos que você precise 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 escolha a melhor ferramenta para o trabalho.
  • arrume um emprego. Encarar. Se você conhece mais idiomas, tem mais oportunidades de emprego. Isso é bastante auto-explicativo.
  • torne-se um programador geral melhor. 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 práticas recomendadas ou 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 maneira ou de outra).

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):

Escreva código frequentemente; Escreva bem o código; Escreva código em Esquema, PHP, Java, Python, Lisp, Perl, C, C ++, C #, Visual Basic, Ruby ...

Dinâmico
fonte
1
@ Nupul: Ou pelo menos acho que a citação é assim ...
Dynamic
5

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/

hspain
fonte
4

Alfred North Whitehead escreveu um grande ensaio chamado " A Importância da Boa Notação "

É interessante notar como é importante para o desenvolvimento da ciência um símbolo de aparência modesta. Pode representar a apresentação enfática de uma idéia, geralmente uma idéia muito sutil, e por sua existência facilitar a exibição da relação dessa idéia com todos os complexos trens de idéias em que ela ocorre.

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.

Onorio Catenacci
fonte
2

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.

Shian
fonte
Embora eu possa concordar com você, eu acrescentaria que, depois de ter todas essas boas idéias sobre programação enquanto realizava outras atividades, gostaria de aprender uma linguagem de programação na qual essas idéias sejam implementadas. Portanto, na IMO, os dois aspectos (dando um tempo na programação e aprendendo novas linguagens de programação) não se excluem (não deveriam).
Giorgio
É verdade que fazer uma pausa na programação e aprender novas linguagens de programação não deve (não deve) se excluir. No entanto, no mundo muito rápido em que estamos vivendo, é importante lembrar que o descanso - pode ser mais produtivo que o movimento. Pode ser uma pausa para o café - ou até 1 ano.
Shian
-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 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.

David Kendal
fonte
-3

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.

czar x
fonte
-8

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.

Brendan
fonte
4
Parece um ideal bastante impraticável. Quem decidirá esses idiomas padrão e como você decide que vale a pena mudar para um novo idioma? E o risco de ficar preso em uma linguagem de baixa qualidade só porque ninguém está disposto a tentar algo novo? Imagine se tivéssemos feito isso há 10 anos - Todo mundo usa C ++ e Java (ou talvez VB)!
Brendan Long
3
Seu conceito de "mundo ideal" parece suspeito como o de mil novecentos e oitenta e quatro . No seu Newspeak, idéias revolucionárias como "programação funcional" e "inferência de tipos" e "polimorfismo de primeira classe" e "multimétodos" nem sequer podiam ser pensadas, porque não havia como expressá-las. Reconhecidamente, Orwell não parece ter pensado em sua idéia marreta, mas se tivesse, tenho certeza de que teria encontrado o seu caminho no.
ruach
2
Além dos pontos acima, muito pouco da sua "resposta" é relevante para a pergunta real. Voto negativo.
user16764
3
Em um mundo ideal, haveria apenas uma resposta para a pergunta de Nupal. Ter todas essas respostas adicionais após a primeira por pessoas que não entendem as virtudes da padronização apenas causa confusão. Não há nada de errado em discordar da resposta em sua mente, mas postar uma resposta adicional faz parte do problema.
benzado 21/02
1
A restrição a esses idiomas não impediria nenhum dos problemas mencionados. Eu tive que reescrever o aplicativo muito mais vezes devido à mudança de estruturas do que à mudança de idiomas.
Fabio Ceconello