Um programador deve se concentrar em pelo menos quantos idiomas? [fechadas]

21

Para mim eu sou uma pessoa C # e Java. Eu acho que esses dois idiomas são bem parecidos, então é mais fácil para eu me cruzar. Não tenho certeza se é uma boa ideia escolher outros idiomas diferentes. Alguma ideia?

Cara Digital
fonte
você está perguntando porque os processos de contratação procuram palavras-chave nos currículos?
Brian
@ 0A0D não, na verdade, foi por interesse pessoal. Sou um programador também :)
Digital Dude

Respostas:

43

Posso pensar em pelo menos cinco razões para aprender um idioma, e parece que você deve aprender um para cada um deles.

  1. Um idioma para obter seu primeiro emprego - provavelmente Java / C # / C ++
  2. Uma linguagem para fazer as coisas - provavelmente Bash / Perl / Python / Ruby
  3. Um idioma para curvar sua mente - provavelmente Haskell / Clojure / Scala / F #
  4. Um idioma por razões específicas do domínio - provável JavaScript / Objetivo C
  5. Um idioma para sujar as mãos - provavelmente C / Assembly
Eric Wilson
fonte
17
Que idioma rege todos eles?
Tester101
4
Assembléia governa todos eles. É por isso que está listado por último. Guardei o melhor para o final.
WernerCD 28/10/10
9
Tester101: inglês? ; o)
John Fisher
6
Obviamente, não deve surpreender que o idioma para conseguir seu primeiro emprego não seja o idioma usado para realizar as tarefas.
4
... e na escuridão, amarre-os!
tchrist
53

Não se trata de quantas línguas você aprende. É sobre aprender novos conceitos. Alguns idiomas podem ensinar muitos conceitos, enquanto outros podem ensinar apenas um.

Se você conhece C #, provavelmente não aprenderia nada terrivelmente novo aprendendo Java. Mas você faria se aprendesse Haskell.

Portanto, quando você escolhe um novo idioma para aprender, escolha algo que ensine conceitos que você ainda não conhece.

Frank Shearar
fonte
23
+1 "Uma linguagem que não afeta o modo como você pensa sobre programação, não vale a pena conhecer" -Alan Perlis
Inaimathi
20
@Inaimathi: A menos que saber ajuda a pagar as contas.
Kramii Reinstate Monica
5
Apenas uma observação: sugeri Haskell por nenhuma outra razão, além de radicalmente diferente de C #. O trapaceiro que usava amianto em mim queria dizer "aprenda Smalltalk para que você possa aprender OO"!
Frank Shearar
10
@ Cara Digital: o fato de que é difícil é meio que o ponto. Essa dor atrás da testa NÃO é uma coisa ruim - é um sinal de que seu cérebro está crescendo. Se você quiser continuar aprendendo a mesma coisa repetidamente, aprenda Java, C #, Ruby, C ++ (woooh, nenhum coletor de lixo - assustador!), C (sem aulas - assustador!), Talvez fique realmente louco e tente o Objective-C! (Ooooh - há dois dias eu não sabia escrever Mac e agora posso programar um!) O que quero dizer - se você quer aprender algo NOVO, precisa fazer algo DIFERENTE. Seguir a mesma estrada leva você ao mesmo lugar.
Bob Jarvis - Restabelece Monica
4
@Kramii @Inaimathi Aha, mas uma linguagem que ajuda você a pagar as contas afeta a maneira como você pensa sobre programação
slf
22

Eu diria que a coisa mais importante é a capacidade de aprender rapidamente. Dito isto, é importante conhecer diferentes idiomas que são usados ​​para diferentes fins. Por exemplo, eu sei:

1) Python e Perl para a categoria de linguagens de script

2) C ++ como linguagem "framework"

3) Java para aplicativo móvel

4) C para a enorme quantidade de código legado

5) Algumas línguas obsoletas que eu conhecia quando jovem (básico, Pascal, Clipper etc.)

Eu diria que você precisa de pelo menos um idioma principal e um de script. Conhecendo o C #, eu diria que você precisa aprender Python, Perl ou Ruby a seguir. (Eu iria com Python, mas isso é apenas uma questão de preferência).

Emiliano
fonte
1
Eu também concordo com você que. Um programador que conhece uma linguagem deve pelo menos precisar aprender uma das linguagens de script para trabalhar com ela. Eu sinto que isso é muito importante + útil quando você quer fazer alguns testes. especialmente desenvolvimento de jogos ... etc. Eu acho que vou pegar python como minha linguagem adicional :) #
Dude Digital
2
karma para capacidade de aprender rápido
Ayush Goyal
Além de uma linguagem de script, às vezes conhecer uma linguagem de script de shell também pode ser uma grande ajuda. Determinadas tarefas comuns no sistema são mais fáceis de resolver em uma linguagem shell do que mesmo em uma linguagem de script como Python.
CodexArcanum 28/10/10
sabendo C # é diferente de ser um perito em que a linguagem
Brian
1
Pascal é dificilmente uma linguagem obsoleta; Atualmente, existem muitas coisas sendo desenvolvidas em Delphi.
Mason Wheeler
8

É bom aprender uma nova linguagem de programação a cada ano. Mas, em vez de aprender algo semelhante ao que você já sabe, aconselharei a aprender algo radicalmente diferente como Scala ou F #. Ele mostrará novas maneiras de fazer as coisas e, eventualmente, enriquecerá suas habilidades de programação.

Paweł Dyda
fonte
Obrigado! Eu sei um pouco aqui e ali, mas percebi que não posso realmente dominar um idioma completamente. Há sempre coisas novas acontecendo ..: /
Digital Dude
2
@ Digital Você não precisa dominar todos os idiomas. Você deve estar familiarizado com os conceitos, para que, se surgir um problema que seria melhor atendido por um idioma, você possa tomar essa decisão. Também pode expô-lo a conceitos que você pode usar em seus principais idiomas.
KeithB
8

Você deve se concentrar nos idiomas de que precisa e usar para o que está fazendo . Aprender um idioma realmente vem da prática, então você obtém o benefício desse idioma quando o pratica. Se você quiser aprender um novo idioma no seu tempo livre, faça-o implementando-o em tarefas de crescente complexidade, para que você possa realmente lidar com ele.


fonte
7

concentre-se em nenhum. concentre-se em aprender e escrever código limpo; claro, expressivo, simples e, o mais importante, não duplicado.

vá para os princípios desse tipo de programação, o básico (por exemplo, encapsulamento para OOP; o que significa e o que isso implica) e aprenda alguns princípios

esse material facilitará seu trabalho. isso tornará ainda mais fácil para as pessoas que trabalham com você ou depois de você.

você também precisa conhecer a sintaxe muito bem. mas isso não é algo que leva o seu foco por um longo tempo

e você também deve entender muito bem as tecnologias que usa. mas esses podem ser priorizados de acordo com o nível de complexidade exigido pelos seus negócios.

os dois últimos não são do foco principal, mas de algum foco

Belun
fonte
Sim, recentemente eu peguei o C # essential, que é um livro muito bom para ler e descobri muitas coisas que eu nunca soube realmente fazer pleno uso dele. O outro livro C # em profundidade que ouvi também é recomendado. Há muito o que aprender ... foi por isso que comecei este post sobre ter que me concentrar em alguns idiomas.
Digital Dude
priorize de acordo com o seu propósito. quer tornar seu trabalho mais fácil? você está feliz com onde está e o que faz? vá para código limpo. se você deseja trabalhar em outra empresa que usa outra tecnologia, aprenda isso. Se você quiser mudar a tecnologia apenas pela diversidade, vá em frente. escolheu seu objetivo e aja de acordo
Belun
6

Um programador precisa conciliar a programação, não em uma (s) linguagem (s) específica (s).

Ahmet Kakıcı
fonte
6

O número necessário para fazer o seu trabalho.

Mas C # e Java são tão próximos quanto o inglês do Reino Unido e o inglês dos EUA. Você pode aprender algo novo indo para finlandês ou navajo.


fonte
1
ou! Xóõ: en.wikipedia.org/wiki/Taa_language (o idioma africano do "clique").
precisa
hehe, depois que você menciona sobre finlandês ou navajo. Eu acho que vou para a língua japonesa para o meu quarto vez ... o suficiente de programação ...
Digital Dude
1
@Jared, eu acho que uma língua EXIGE cut-and-paste apenas para dizer seu nome, pode incentivar hábitos indesejáveis desde o início ...
5

Eu não acho que você possa necessariamente dominar um idioma sem ter compreensão suficiente de outros idiomas para ver esse idioma "de fora" por assim dizer. Cada idioma diferente traz outra coisa para a mesa e os conceitos que eles trazem são coisas que você pode levar para os principais idiomas com os quais trabalha.

Portanto, o tempo gasto aprendendo a usar outros idiomas nunca é desperdiçado, mesmo que você não esteja planejando usá-los comercialmente.

O velho ditado é aprender um idioma todos os anos e eu certamente diria que nos primeiros dez anos, mais ou menos, você precisa fazer isso. Talvez além disso, você possa escolher entre explorar alguns dos que já conhece mais profundamente (talvez atualizar seu conhecimento sobre os que aprendeu alguns anos atrás) ou trabalhar com bibliotecas específicas, em vez de acumular novos idiomas sem parar, mas mantendo um olho em explorar a prática da programação através do trabalho com diferentes idiomas é certamente uma ajuda para o seu desenvolvimento como programador.

glenatron
fonte
Após um ponto, você também pode gastar algum tempo usando os conceitos aprendidos em um idioma em outro. Por exemplo, depois de aprender a programação funcional usando o Haskell, você pode tentar ver quais conceitos de programação funcional você pode usar no C #. Você não gostaria de escrever um programa de funções inteiro em C #, mas seções dele podem fazer mais sentido dessa maneira.
KeithB
3

Linguagens de programação populares, como C # e Java, manterão você empregado na maioria dos lugares, mas nenhuma é diferente o suficiente uma da outra para aprender novas maneiras de resolver problemas. Eu acho que existem alguns idiomas com os quais você come (os que você usa para fazer seu trabalho) e outros com os quais você brinca. Ambos têm seus propósitos.

Descobri que, ao aprender novas linguagens de programação, também aprendi maneiras novas e mais elegantes de resolver problemas. Não se trata do número de idiomas ou da frequência com que você os escolhe. Cada linguagem de programação que vale a pena aprender tem um ponto de vista único, o que obriga a abordar seus problemas com uma nova mentalidade. Muitas vezes o valor vem do aprendizado dessa mentalidade.

Eu toquei no Smalltalk e adorei. A linguagem foi apenas um prazer de desenvolver. Depois que você se acostumou com os idiomas, eles ajudaram você a ser mais expressivo com seu código. Eu não perdi a digitação estática que você tem em Java / C ++ / C #. Os genéricos com os quais vivemos em nossas linguagens estaticamente tipificadas são realmente construções para contornar as limitações impostas pela digitação estática.

Eu uso Ruby e Ruby on Rails regularmente, embora não para pagar empregos no momento. O princípio de design de Ruby era "aumentar a felicidade do programador". Você precisa amar esse sentimento e, na maioria das vezes, acho que ele transmite.

Eventualmente, o Java seguirá o caminho do lisp e do Smalltalk, e o C # seguirá o exemplo. O que estará lá para tomar o seu lugar continua a ser visto. No final do dia, se você souber como resolver problemas e tiver várias maneiras de dividir e dividir o problema, poderá encontrar um emprego e escolher o idioma de que precisa.

Berin Loritsch
fonte
2

Quando se trata de manter as habilidades atualizadas e flexíveis, acho que você deve tentar aprender pelo menos uma linguagem de programação completamente nova a cada 6 meses. E eu quero dizer uma linguagem que é muito, muito diferente.

Portanto, ao aprender mais da estrutura .net ao usar C # ou as estruturas Java, você ajuda a manter a flexibilidade, ao aprender que Haskell, Smalltalk, Scala, Clojure ou Ruby expandirá sua técnica e o ajudará a pensar de maneiras diferentes, algumas das quais você pode usar de volta à sua linguagem principal e algumas das quais podem ajudá-lo a seguir em frente se o Java deixar de ser o rei da colina.

Se você nunca aprendeu C, embora sua sintaxe tenha sido trazida para Java, a mentalidade pode ser bem diferente. Vale a pena conhecê-lo em profundidade e, melhor ainda, entender como o código OO pode ser escrito nessa linguagem que parece apenas processual.

Eu recomendo a leitura do livro de Bruce Tate "Beyond Java", que destaca muito bem os perigos de estar em apenas uma linguagem, observando a ascensão e queda do C ++. Embora o C ++ esteja longe de morrer ainda e tenha décadas restantes, está se tornando cada vez mais restrito o uso somente em situações que não podem se beneficiar dos ganhos de produtividade em outros idiomas. Por outro lado, o Sinatra, uma estrutura em rubi, permite criar um serviço da Web simples em cerca de 6/7 linhas de código, o equivalente em C ++ pode ser uma ordem de magnitude maior que isso.

Danny Staple
fonte
1

Quando você não é um falante nativo de inglês, pelo menos você deve se concentrar em melhorar seu inglês . Estou dizendo isso com base na minha experiência. Compreender essa linguagem me ajudou muito.

Todos os bons materiais (livros, artigos, código, etc.) para aprender linguagens de programação, tecnologias e novos conceitos são escritos em inglês.

Matias
fonte
1

Idiomas são ferramentas para realizar o trabalho. Alguns idiomas são bons para alguns tipos de problemas, outros geralmente são bons em todos os tipos de resolução de problemas. Eu recomendo aprender novos idiomas à medida que forem surgindo. Não fique obcecado com o que está na moda neste mês, mas aprenda o que eles podem fazer, no que são bons. Meu conselho é 1 novo idioma por ano. Eles saem mais rápido do que isso, mas você deseja colocar novas ferramentas em sua caixa de ferramentas, não ser o garoto novo e elegante da moda.

Um ensaio que fala sobre as diferenças de idiomas é "Beat the Averages", de Paul Graham. Eu recomendo a leitura, mas uma parte importante está aqui (ele usa "Blub" como uma linguagem hipotética para que você não discuta sobre o que seu idioma favorito pode fazer):

Ou o Perl 4? Entre o Perl 4 e o Perl 5, os fechamentos lexicais foram adicionados ao idioma. A maioria dos hackers Perl concorda que o Perl 5 é mais poderoso que o Perl 4. Mas, depois de admitir isso, você admite que uma linguagem de alto nível pode ser mais poderosa que outra. E segue-se inexoravelmente que, exceto em casos especiais, você deve usar o mais poderoso possível.

Essa idéia raramente é seguida até a sua conclusão. Após uma certa idade, os programadores raramente mudam de idioma voluntariamente. Qualquer que seja a linguagem com que as pessoas estejam acostumadas, elas tendem a considerar apenas boas o suficiente.

{recorte}

Enquanto nosso hipotético programador Blub estiver olhando para baixo, ele sabe que está olhando para baixo. Idiomas menos poderosos que o Blub são obviamente menos poderosos, porque faltam alguns recursos aos quais ele está acostumado. Mas quando nosso hipotético programador Blub olha na outra direção, no continuum de poder, ele não percebe que está olhando para cima. O que ele vê são apenas línguas estranhas. Ele provavelmente os considera equivalentes em poder a Blub, mas com todas essas outras coisas peludas também. Blub é bom o suficiente para ele, porque ele pensa em Blub.

Quando passamos ao ponto de vista de um programador que usa qualquer uma das linguagens mais altas do continuum de poder, descobrimos que ele, por sua vez, olha para Blub. Como você pode fazer algo no Blub? Nem tem y.

Por indução, os únicos programadores em posição de ver todas as diferenças de poder entre as várias linguagens são aqueles que entendem a mais poderosa. (Provavelmente, é isso que Eric Raymond quis dizer sobre Lisp fazer de você um programador melhor.) Você não pode confiar nas opiniões dos outros, por causa do paradoxo Blub: eles estão satisfeitos com o idioma que usam, porque dita o a maneira como eles pensam sobre os programas.

http://www.paulgraham.com/avg.html

A maioria dos aplicativos que enviamos são escritos em C # ou VB. Quando precisamos adicionar scripts a um aplicativo, escolhemos o Python (Lua foi a escolha do segundo colocado). Estamos aprendendo F # porque isso pode fazer algumas coisas novas e difíceis de explicar e entender, se tudo o que sabemos é C # / Java / VB.

Tangurena
fonte
0

Bem, primeiro de tudo, há várias linguagens que são muito difíceis de evitar para a maioria dos programadores: javascript, sql, c, etc., para que você possa se familiarizar com elas, elas não vão desaparecer.

também é uma boa idéia conhecer uma linguagem de script tipada por pato ... por exemplo, uma de perl, python, ruby, lua etc. essas são incrivelmente úteis para uma enorme variedade de problemas, incluindo a automação de grande parte de sua própria rotina diária.

para melhor ou para pior, você provavelmente também encontrará c # e / ou java em algum momento, eles são bastante difundidos.

de qualquer forma, não se limite artificialmente. aqueles codificadores que conheço que explicitamente evitam pegar ferramentas interessantes parecem ter visões de mundo enclausuradas e impacto limitado.

Brad Clawsie
fonte
0

Isso poderia se tornar outro especialista versus debate generalista em certo sentido. Algumas pessoas podem passar um longo tempo conhecendo um idioma em grandes profundidades, o que funciona bem para eles. Outras pessoas podem gostar de saber um pouco sobre vários idiomas diferentes, o que funciona bem para eles. A maioria das pessoas está entre esses dois extremos.

Se você deseja sugestões de idiomas para explorar, aqui estão algumas idéias:

  1. Programação funcional - Haskell ou Lisp seriam exemplos aqui e a mudança de paradigma pode ser um pouco assustadora até certo ponto.

  2. Específico ao banco de dados - PL / SQL ou T-SQL vem à mente como algo que pode ser útil se você deseja fazer mais trabalhos de back-end com sistemas que requerem um banco de dados para algumas de suas funcionalidades.

  3. Idiomas da web da interface do usuário - o ActionScript ou o Javascript seriam exemplos aqui dos idiomas usados ​​nos Rich Internet Applications, embora o AIR possa fazer com que alguns aplicativos de desktop usem chamadas da Web em alguns casos, como o Twhirl, usando a API do Twitter.

Essas são apenas idéias e, dependendo de onde você quer estar, podem ser úteis ou inúteis para você. Boa sorte com as escolhas que você fizer.

JB King
fonte
0

Um programador precisa conhecer três idiomas: C, inglês e outra coisa.

C é muito uma linguagem central, está perto da máquina e possui regras de sintaxe comuns a várias linguagens de alto nível. C obriga você a pensar em coisas como estruturas de dados de uma maneira muito diferente do Java. Além disso, os vms Python e Ruby são construídos em C, e você pode incorporar C nos dois idiomas quando quiser aumentar sua velocidade.

O inglês é a linguagem comum da programação. A maioria dos livros, relatórios técnicos, sites técnicos e documentos de periódicos são publicados primeiro em inglês e, às vezes, exclusivamente em inglês. Além disso, se o inglês não é o seu primeiro idioma, o aprendizado do inglês expandirá seu kit de ferramentas para manipular conceitos (isso vale para os falantes de inglês que também aprendem outro idioma, é claro).

O Something Else deve ser uma linguagem que não seja processual, ou não esteja estaticamente tipada, ou seja fortemente orientada a objetos, ou de alguma forma seja fundamentalmente diferente de C. Haskell, Scala, Python, Ruby, algum dialeto Lisp, qualquer que seja .

Depois disso, você poderá aprender o que sua situação específica exigir, provavelmente C # ou Java.

philosodad
fonte
Gostaria de receber um comentário sobre por que você, crítico anônimo, votou nesta resposta.
27411 filosodad
o idioma inglês não ensina ideias, é apenas uma maneira de expressar ideias.
Sagarmatha
@sagarmatha: Mesmo que isso fosse verdade, o que não é , não há nada "apenas" em poder se expressar na linguagem de comunicação padrão do campo. Se você melhorasse o seu inglês, seria capaz de se expressar claramente para os falantes de inglês e, mais importante, de ler e compreender o inglês muito mais rapidamente. Como Matias ressalta, livros de programação e artigos técnicos tendem a sair primeiro em inglês e, às vezes, apenas em inglês .
Filodad)
Não entendi por que você recebeu voto negativo, mas concordo que o conhecimento de inglês é tão importante quanto o conhecimento de uma linguagem de programação principal. @sagarmatha: Você acabou de se contradizer. Se as idéias são expressas em inglês, o conhecimento do idioma certamente permitirá que você aprenda essas novas idéias. O quão bem você aprende e aplica isso dependerá da sua capacidade de entender inglês e habilidades de programação.
precisa