Se sim, você pode me dizer como a aprendizagem de um novo paradigma mudou sua abordagem para resolver problemas de programação, mesmo que o problema esteja em outro paradigma / linguagem / tecnologia?
Eu realmente aprecio Se você pode me dizer de uma maneira específica, como suas habilidades de programação X (por exemplo: JAVA / C # / C ++) melhoraram ao aprender Y (por exemplo: Scheme / Prolog / Lisp).
Além disso, quais paradigmas você sugere que mais ajudam a se tornar um bom programador?
Minhas experiências são apenas estruturadas - OOP, imperativas - procedimentais e, em certa medida, meta-programação de modelos, mas meu objetivo não é aprender outro idioma, mas aprender abordagens diferentes para resolver problemas.
Obrigado!
Respostas:
Eu tento aprender pelo menos 1-2 idiomas novos todos os anos. O máximo que ganhei foi aprendendo uma linguagem funcional (F #) que mudou a maneira como encaro a solução de problemas - I = agora, tento dizer à máquina o que fazer em vez de fazê-lo, especialmente em C # onde uso muito o Linq e objetos imutáveis agora que conheço os benefícios de usá-los. Também uso bastante funções de ordem superior (métodos como parâmetros) e, como resultado, meu estilo de codificação foi alterado (aprimorado).
fonte
Absolutamente. Cada linguagem de programação que você aprende terá uma maneira diferente de fazer certas coisas. Algumas coisas vão deixá-lo louco, outras que você vai adorar e outras vão crescer lentamente em você.
Nunca é perda de tempo aprender pelo menos o básico de um novo idioma.
fonte
Ok, aqui está um exemplo que encontrei.
Eu aprendi uma linguagem relativamente antiga (VB6) para um projeto em algum código antigo que tínhamos.
A linguagem é muito orientada para janelas, mas não há tantas classes poderosas de alto nível como as que temos no quadro .Net.
Eu tive que fazer algumas manipulações de imagens, e isso me apresentou as funções da API do Windows para as manipulações de imagens.
Depois de saber que isso me deu uma melhor compreensão das classes GDI da .Net. E o entendimento de que às vezes o uso da API do Windows será muito mais rápido (menos quebra de funções).
Isso mostra que, mesmo quando você aprende código antigo, ainda pode aprender e ter outra perspectiva.
fonte
Na minha experiência, definitivamente sim. Ter várias maneiras diferentes de atacar um problema é como uma paleta de ferramentas. Um dia você (como eu) terá uso para essas outras ferramentas. Ou possivelmente não. Tudo depende. Alguns exemplos:
Os idiomas geralmente não são independentes, eles vêm com um ambiente. Passei um pouco de tempo aprendendo uma língua estranha, conhecida como awk . Ele se baseia na correspondência de padrões usando "expressões regulares". Ao tentar aprender o C ++ STL (sem muito sucesso), aprendi sobre mapas. Combinando esses dois conceitos, eu poderia escrever rapidamente alguns utilitários de transformação de texto em Pearl (o único idioma disponível na plataforma).
Principalmente por diversão, tentei aprender Erlang (não muito bem-sucedido). Possui uma biblioteca de funções conhecida como OTP implementando, entre outras coisas, uma maneira de lidar com erros, às vezes conhecida como deixar falhar e ter um monitor reiniciando as funções. Eu usei essa idéia em algumas áreas, às vezes simplesmente deixando as coisas falharem, em vez de fazer testes sem fim.
Tentar aprender Haskell (novamente sem muito sucesso) realmente abriu meus olhos para outras maneiras de atacar problemas. A programação funcional meio que (na minha opinião) começa com a escrita de um código que diz qual resultado você deseja, não com a escrita das etapas envolvidas na obtenção de lá. Acho que isso realmente me ajudou a escrever um código SQL melhor.
Ultimamente, tentei um pouco de javascript. E encontrou um ambiente conhecido como assentiu. Não é necessário código para criar um pequeno servidor de automação residencial.
Para colocar em perspectiva, a maioria das minhas brincadeiras em vários idiomas foi (e é) em um nível bastante superficial, principalmente para ter uma ideia do que as pessoas estão falando. Existem pouquíssimos idiomas nos quais posso ser produtivo.
fonte
Eu também aprendi muito mexendo com uma linguagem funcional por algum tempo. No entanto, o que aprendi foi menos sobre fazer as coisas de maneira diferente das linguagens imperativas, além de facilitar a concorrência. Pode ser aplicado tão facilmente em uma linguagem imperativa quanto em uma linguagem funcional, mas, por alguma razão, a maioria dos exemplos que encontrei em linguagens imperativas eram mais complicados. (Outras coisas se mostraram muito mais complicadas em linguagens funcionais.)
Outra coisa que aprendi com uma nova linguagem foram padrões de programação adicionais. Eu tinha lido sobre muitos deles, mas ver e usar várias implementações realmente boas tornou mais fácil entender e realmente mostrou sua utilidade e quando elas são apropriadas.
fonte