ti-enxame.com

Se alguém aprender uma nova linguagem de programação a cada ano, qual deve ser a lista?

No capítulo um de "O 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 muito 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 seja aprendido - o que vem a seguir, e por que?

19
Richard

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.

19
alternative

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, pegue 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 Haskell com alguns problemas da teoria dos grafos, como resolvendo Peg Solitaire etc. É muito viável fazê-lo para que tudo que você aprenda tenha valor de mercado imediato, até atingir itens eruditos ou para fins especiais, como segurança de capacidade do 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étodos virtuais entre C++ e Python, você praticamente "obtém" instantaneamente para qualquer outra linguagem.

13
DomQ

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 um 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!

9
limist

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 dos Python/Ruby/Perl (mas realmente não importa qual)) - para que você saiba que linguagem de script popular, moderna e de alto nível com bom suporte de biblioteca parece

SQL - para que você possa conversar com bancos de dados relacionais

Prolog - porque você ainda precisa impressionar

9
interstar
  • Go (nova linguagem de programação no nível do sistema com bom suporte para simultaneidade e conceitos não tão tradicionais)
  • Lua (linguagem de script: paradigmas simples, expressivos, extremamente flexíveis e balanceados imperativos, funcionais e meta programação, permitindo OOP)
  • D (C/C++ done right)
  • Groovy (Expressividade e meta programação em Java))
  • Eiffel (Design By Contract e uma abordagem diferente para OOP)
  • Prolog (A linguagem de programação lógica)
4
Maniero

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.

2
Paul Butcher

Além dos que você listou,

Haskell, F #, Clojure, OCaml, Lua, Vá, D, Erlang, Objetivo C.

1
grokus

Embora eu concorde que é bom aprender novos idiomas (e até imperativos durante uma longa carreira), acho que um por ano já passou dos primeiros cinco a dez anos. O que eu preferiria 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 uma carreira de mais de 30 anos, quero que alguém tenha conhecimento profundo e não apenas o básico em muitas coisas.

1
HLGEM