No capítulo um do "Programador Pragmático", o primeiro objetivo de aprendizado é:
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 ser atingido por uma rotina. [...]
Para conseguir isso ao longo de uma carreira, é provável que a lista de idiomas seja bastante longa (principalmente se você não quiser "progredir" no gerenciamento). Claramente, a educação de um programador (ou qualquer outra forma) ajudará você a começar com um núcleo de linguagens comercialmente úteis (a lista usual de anúncios de empregos: C, C ++, Ruby, Python, JavaScript, C #, Java, VB, etc. .). Além disso, é provável que um programa de aprendizado formal ou informal tenha abordagens funcionais cobertas (por meio de algo como Haskell, LISP ou uma linguagem derivada de ML)
Mas uma vez que um subconjunto razoável dessa lista é aprendido - o que vem a seguir e por quê ?
fonte
Respostas:
Torne-o interessante e passe todos os anos escrevendo um intérprete ou compilador para sua própria linguagem de programação que preenche um nicho para o qual você nunca usou uma linguagem de programação. A cada ano, escreva seu próximo compilador / intérprete usando o idioma que você escreveu no ano anterior.
fonte
Você deve maximizar a "relevância marginal", ou seja, sempre se aventurar em novas áreas nas quais você ainda não é forte. Varie as linguagens de programação e os conceitos . Se você não conhece nenhuma linguagem orientada a objetos, tente Java e alguma estrutura de alta abstração, como o Hibernate. Em seguida, escreva algumas coisas sobre administração de sistemas em uma linguagem de script como Python ou Perl. Em seguida, adquira algumas habilidades de baixo nível em C ou C ++, escrevendo código de servidor multithread de alto desempenho. Se você não conhece a programação funcional, tente o Haskell com alguns problemas da teoria dos grafos, como resolver o Peg Solitaire , etc. É muito viável fazê-lo, para que tudo o que você aprenda tenha valor imediato de mercado, até atingir itens eruditos ou para fins especiais, como como segurança de capacidade de objeto ,Prolog ou VHDL .
Bom exercício, a propósito! Isso ensinará você a pensar lateralmente e visualizar problemas em termos independentes de idioma, em vez de confiar em poucas técnicas específicas da plataforma. Por exemplo, depois de dominar as semelhanças e diferenças no envio de método virtual entre C ++ e Python, você "obtém" instantaneamente qualquer outra linguagem.
fonte
Uma linguagem que não afeta a maneira como você pensa sobre programação, não vale a pena conhecer. - Alan Perlis
Como algumas das outras respostas foram abordadas, se você está aprendendo um novo idioma por ano, por quê? é expandir seus recursos como programador. O como? é aprendendo idiomas com paradigmas distintos daqueles que você já conhece, e fazer um balanço dos paradigmas que você já conhece determina qual idioma aprender a seguir.
Quais são esses paradigmas? O livro avançado Conceitos, técnicas e modelos de programação de computadores fornece uma excelente visão geral com um mapa gráfico .
Assim, se você conhece apenas linguagens imperativas do tipo C, aprender o Scheme / Lisp é extremamente útil. Se você já conhece idiomas imperativos e funcionais, aprender o Prolog será útil, etc.
Um livro recente que tenta ensinar vários idiomas e paradigmas é Sete idiomas em sete semanas . É claro que você não será fluente em cada idioma após uma semana de estudo, mas parece fornecer uma perspectiva multiparadigma acessível e orientada ao profissional.
Quando você cria outro paradigma, é realmente um momento zen; passar da programação imperativa para a funcional me fez ver o mundo da computação sob uma luz totalmente nova. Feliz aprendizado!
fonte
C - como essencial, "subjacente a tudo", linguagem de programação de sistemas
Lisp (Scheme) - a estranha mas incrivelmente poderosa linguagem ur que os grandes hackers acham que define legal
Smalltalk - porque é isso que OO deveria ser
Erlang (ou outro idioma do ator) para entender os atores
Haskell - para entender Mônadas
Javascript - porque está em toda parte e é essencial para criar scripts para o navegador
Um do Python / Ruby / Perl (mas realmente não importa qual) - para que você saiba como é uma linguagem de script popular, moderna e de alto nível, com bom suporte de biblioteca
SQL - para que você possa conversar com bancos de dados relacionais
Prolog - porque você ainda precisa impressionar
fonte
fonte
1) Prolog: é completamente diferente de todos os idiomas imperativos que você está usando até o momento, e isso mudará a maneira como você pensa sobre os problemas
2) Lisp: sem ele, você também pode estar usando o Vi
3) Erlang: Novamente, é completamente diferente, também, parece bastante elegante.
4) Algo do Turing Tarpit (por exemplo, Brainfuck), e provavelmente escreva um compilador ou intérprete para ele: não consigo pensar em um motivo para fazer isso, mas parece uma boa idéia.
fonte
Além dos que você listou,
Haskell, F #, Clojure, OCaml, Lua, Vá, D, Erlang, Objetivo C.
fonte
Embora eu concorde que é bom aprender novos idiomas (e até mesmo imperativos durante uma longa carreira), acho que um por ano já passou dos primeiros cinco a dez anos. O que eu prefiro ver é alguém com esse nível de experiência aprendendo coisas novas sobre os idiomas que já conhece. Em algum momento, você precisa de profundidade e amplitude de conhecimento. Então, você pode escrever uma construção If em 12 idiomas, grande grito. Prefiro ver alguém que realmente se interessa e se torne especialista em pelo menos uma coisa. E então, nos próximos anos, tornar-se especialista em outra coisa. Ao longo de mais de 30 anos de carreira, quero que alguém tenha um conhecimento profundo, não apenas o básico em muitas coisas.
fonte