Vale a pena ser poliglota nas linguagens de computador? [fechadas]

14

Você pode ouvir muitas vezes que os programadores devem aprender muitos idiomas diferentes para melhorar a si mesmos. Ainda vou à escola e não tenho grande experiência em programação (pouco mais de um ano). Mas o que era a intenção nobre de melhorar as habilidades de programação se transformou em algum tipo de TOC: sinto que não vou me acalmar até aprender todas as linguagens de programação relativamente conhecidas.

E aqui está a própria pergunta: As linguagens de programação poliglotas realmente o ajudarão (e não quero dizer o habitual "O programador deve conhecer pelo menos todos os paradigmas", quero dizer realmente todas as linguagens que você costuma ouvir)? Alguém tem experiência semelhante? Ajuda no trabalho / habilidades / carreira? Com que frequência você consegue aplicar essas habilidades?

Anton Barkovsky
fonte
3
Acho que quando as pessoas sugerem que outras pessoas aprendam sobre novos idiomas, trata-se menos de aprender idiomas e mais de aprender novos paradigmas. Minhas duas principais linguagens são Python e C ++, aprender Haskell foi uma grande experiência para mim, porque me força a pensar de uma maneira diferente da que eu pensaria.
Vitor Py
4
Conhecer todos os principais paradigmas realmente ajuda muito . Ser exposto pelo menos um pouco a todas as linguagens interessantes pode ajudar um pouco se você estiver criando suas próprias linguagens (e assim que entrar no paradigma de programação orientada a idiomas, é provável que você o faça).
SK-logic
4
"Uma linguagem que não afeta a maneira como você pensa sobre programação, não vale a pena conhecer." (Alan Perlis). Amém.
2
@Job, conhecer 10 linguagens de programação requer apenas uma pequena fração do esforço necessário para aprender o básico de uma única linguagem falada.
SK-logic
2
@ SK-logic depende. Aposto que posso ensinar um filho de 6 anos a falar espanhol mais rápido do que eu posso ensinar python a ele.
Raynos 01/07/11

Respostas:

10

"Programador deve conhecer pelo menos todos os paradigmas"

Isso ajuda

Quero dizer, realmente, todas as línguas que você costuma ouvir sobre

Isso não ajuda. Embora, depois de conhecer todos os paradigmas, você possa aprender um idioma por semana.

É simplesmente mais ideal passar uma semana aprendendo esse idioma quando você precisar desse idioma.

Um bom programador é um programador preguiçoso

Nota:

Aprender idiomas comuns / populares não é tão útil quanto aprender "todos os paradigmas". O primeiro não cobre o último. Por exemplo, aprender auto é incrivelmente útil para entender OO prototípico. Não é uma linguagem comum nem popular, mas é muito mais útil do que aprender python quando você já conhece o ruby.

Design da linguagem:

Conhecer a maioria dos idiomas é útil se você estiver escrevendo / criando um novo idioma. Portanto, há um caso de uso sólido para isso, mas é um nicho bastante.

O que eu recomendo que você faça:

Leia o código completo 2 pelo menos 3 vezes

Os idiomas vêm e vão para a esquerda e para a direita, dependendo do que é popular. A tecnologia se torna obsoleta após meses ou anos, dependendo de como é a curva da tecnologia. (A web desaprova a tecnologia a cada 6 meses).

A técnica de programação e a teoria da ciência da computação sempre permanecem as mesmas.

Raynos
fonte
Mas há muitas características menores interessantes em línguas e até mesmo aprender nova linguagem de paradigma já conhecido pode explodir sua mente (por exemplo, para mim, foi Smalltalk)
Anton Barkovsky
@AntoBarkowski que é uma afirmação falsa, não compare o SmallTalk com outros idiomas OO. Java / C ++ / C # / etc. não são idiomas OO reais . Claro SmallTalk vale a pena aprender, mas não é o mesmo paradigma;)
Raynos
6
As pessoas continuam dizendo "você pode aprender um idioma por semana", mas isso não é verdade. Claro, você poderá escrever o código sintaticamente correto nesse idioma, mas há mais do que isso. Por exemplo, C # e Java são muito semelhantes sintaticamente e são linguagens OO. No entanto, escrever código Java em C # não faz de você um programador de C #.
R0MANARMY
3
@ R0MANARMY "<bons programadores> podem aprender um idioma em uma semana". Uma linguagem não inclui bibliotecas, estruturas e APIs. Minha definição de bons programadores pode ser muito alta.
Raynos 01/07/11
1
@ R0MANARMY, quais desses bits semânticos pequenos e sem importância que você mencionou podem levar mais de uma hora para serem compreendidos?
SK-logic
4

Não se trata de saber codificar em uma variedade de idiomas, mas, como você diz, sobre os paradigmas. Quanto mais opções você souber, melhor. Conhecer vários idiomas certamente ajuda, mas se você continuar aprendendo os mesmos tipos de idiomas, rapidamente chegará a um beco sem saída.

A chave é saber qual idioma / sistema é melhor para implementar uma parte do seu projeto. Mesmo se você tiver decidido um idioma principal (como a maioria dos projetos), ainda terá todo tipo de ferramentas, scripts, automação e suporte à criação que precisam ser escritos. Normalmente, uma variedade de outros idiomas ou ferramentas é melhor do que o seu idioma principal.

Só para esclarecer, acho tolo tentar aprender todos os idiomas sobre os quais você realmente ouve: existem centenas deles e, frequentemente, são apenas pequenas variações em outros idiomas.

edA-qa mort-ora-y
fonte
3

IMHO, não. Primeiro porque você não pode aprender um idioma em menos de um ano. Demora 2 dias para poder escrever código nele, mas é necessária muita experiência para escrever código fluente e bem formado para o idioma especificado. Por que o GC funciona como funciona, onde alocar memória, quais construções são mais rápidas, como concatenar corretamente as seqüências de caracteres, quais são os cantos perigosos do idioma etc.

Eu escrevo código Java / .NET terrível como desenvolvedor de C ++, como muitos desenvolvedores de Java escrevem código C ++ terrível.

A melhor parte de aprender outras línguas é que você aprende novos paradigmas e talvez tenha uma ferramenta melhor para algum problema concreto. Digamos - você precisa de um aplicativo GUI não público muito rápido, o .NET é insubstituível lá.

Mas aprender uma linguagem para que você não use estruturas no .NET, ou não vaze todos os objetos em C ++, leva muito tempo. Eu acho que é melhor gastá-lo na aprendizagem de princípios de design, plataformas e seu idioma de escolha.

Mas esta é apenas a minha opinião.

Codificador
fonte
2
"porque você não pode aprender um idioma em menos de um ano". Não confunda o aprendizado de um idioma com o aprendizado das estruturas populares que ele expõe. Adicione também "técnicas gerais de programação" à lista no final.
Raynos 01/07
@ Raynos: achei que era a isso que ele estava se referindo.
Steven Jeuris
1
Minha maneira favorita de jogar com um novo idioma é implementar um compilador para um subconjunto decente dele. No total, são necessárias de 2 a 4 horas para entender o idioma e ser capaz de identificar e roubar os melhores recursos. Nem quase um ano, nem mesmo um dia.
SK-logic #
1
Bem, se você estava participando de um grande projeto em C ++ e veio a uma entrevista com palavras como "Venho programando em Java há 10 anos, mas passei os últimos 6 meses em C ++, por isso conheço a linguagem". Duvido que você receba uma posição de desenvolvedor sênior altamente paga por esse trabalho. Então, não, eu ainda acho que você não pode aprender um idioma em mais ou menos um mês.
Coder
2
@ Codificador, se você estivesse participando de um grande projeto em C ++ e veio a uma entrevista com palavras como "eu programa em 20 idiomas há 10 anos, incluindo C ++", provavelmente conseguiria um emprego.
SK-logic
2

Não é prático conhecê- los, mas pode ser muito útil saber sobre eles. O que quero dizer com isso é que, quando você recebe um novo problema, pode dizer: "Lembro-me vagamente de que [outro idioma] tinha uma maneira superior de resolver problemas como esse. Eu deveria procurar isso".

Karl Bielefeldt
fonte
Acho que podcasts como o SE Radio são bons para isso. Eles costumam ter o tamanho certo para serem ouvidos no trajeto para o trabalho e você pode aprender muito dessa maneira. Mas é da forma Por que é <X> Interessante.
Zachary K
1

Você ajudaria mais sua carreira desenvolvendo conhecimento de domínio e aprendendo muitas linguagens de programação. Sem mencionar que você precisará aprender ferramentas extras, como usar um criador de perfil em seu idioma, o mesmo para depurador, a melhor estrutura de GUI e como programar rapidamente com ele, quais bibliotecas comuns de terceiros existem com tradeoffs e idiomas específicos de idioma.

Também é mais sábio aprender a fazer mais coisas do que muitas maneiras de fazer a mesma coisa.

Peter Smith
fonte
1

Trabalhei em vários sistemas em que os componentes foram escritos em vários idiomas (o pior infrator exigia que eu entregasse o código escrito em Ada 83, C, Fortran 77, SQL e DCL, enquanto meu último trabalho exigia que eu entregasse código C ++ e Java ) Então, sim, existem casos do mundo real em que você precisa conhecer várias linguagens o suficiente para ser produtivo nelas (produtivo! = Proficiente; você não será um especialista profundo em C ++ e Java e ... a menos que você é uma aberração).

Além disso, o objetivo de aprender a usar vários idiomas é ajudar a separar os conceitos da implementação . Para mim, OOP não começou a fazer sentido até que eu trabalhei com vários OOPLs. Além disso, em algum momento de sua carreira, você terá que mudar rapidamente de marcha e começar a trabalhar em algo totalmente novo e desconhecido; levar algum tempo para ir além do que você precisa saber ajudará a facilitar essa transição quando ela acontecer.

John Bode
fonte
1

Acho que seria melhor aprender algumas línguas diferentes e depois pelo menos uma em profundidade antes de começar a necessidade de aprender todas as línguas possíveis. Depois de ter uma quantidade mínima de amplitude, a profundidade se torna realmente importante para o seu progresso como desenvolvedor. Eu teria visto alguém com profundidade em uma ou duas línguas e um punhado de outros dois do que alguém com um punhado de tudo. Obter profundidade é como aprender outro paradigma, isso mudará a maneira de pensar sobre programação e abrirá portas para projetos emocionantes realmente complexos.

HLGEM
fonte
0

É como aprender a falar muitas línguas. Aprender todos eles a ponto de ser útil é quase impossível. Atenha-se àqueles que provavelmente usará e ficará melhor. Você pode aprender C ++, C # e Java muito bem, mas tentar espremer Perl, Python, VB (não VB.NET), Ruby e JavaScript para um nível profissional ao mesmo tempo é simplesmente idiota. Não há horas suficientes no dia para manter suas habilidades em todas elas ao mesmo tempo.

Christopher Bibbs
fonte