Como faço para lidar com a necessidade de conhecer várias linguagens de programação? [fechadas]

25

Eu sou um programador relativamente jovem. Tenho 23 anos e programo profissionalmente há cerca de 5 anos.

Como a maioria dos programadores que comecei com C, aprendi algumas montagens x86 por diversão e depois encontrei C ++, que acabou sendo a minha maior paixão no mundo da programação. Programar com C e C ++ obriga a aprender APIs, bibliotecas e estruturas específicas de plataforma, todas elas requerem estudo e experimentação constantes. Depois de algum tempo, tive que passar para Java e C #, pois a demanda na minha região é basicamente para essas linguagens. Com essas linguagens, entrei no mundo do desenvolvimento web e tive que aprender javascript. O desenvolvimento para o .NET Framework foi empolgante no começo, mas eu sempre me sentia envolvido pela Microsoft (e é claro que o .NET Framework estava me afastando do Linux). Para o desenvolvimento de desktop, eu poderia fazer praticamente tudo o que fiz com o .NET usando C ++ com Qt, mas para o desenvolvimento da web, tive que procurar uma alternativa. Rapidamente encontrei o Django e depois aprendi Python para poder usar o Django. Atualmente estou aprendendo o desenvolvimento do iOS com o Objective-C.

Até agora, foi muito fácil aprender todas essas linguagens (o C ++ me treinou bem), mas estou preocupado que um dia não seja capaz de acompanhar todas elas. Só para esclarecer. As únicas linguagens que aprendi porque precisei eram C # e Java. Todos os outros que aprendi por diversão, porque adoro programar e aprender coisas novas. Também gosto de manter minhas habilidades afiadas no desenvolvimento para computadores, web e dispositivos móveis.

Minha pergunta é: Como você controla várias linguagens de programação? (Quero dizer, acompanhe as mudanças nessas linguagens e mantenha suas habilidades nítidas) e: Existe alguma linguagem de programação suficiente?

Rafael
fonte
20
Como você ousa pensar em não aprender mais idiomas?
Mateen Ulhaq
9
"Toda vez que aprendo algo novo, isso afasta algumas coisas antigas do meu cérebro. Naquela época, fiz um curso de vinificação em casa e esqueci de dirigir".
precisa saber é o seguinte
1
Programar não é dominar a sintaxe da linguagem X, programar é aprender a programar. Aprenda a escolher o idioma certo para o trabalho certo e, depois de escolher o idioma, aprenda a API e a sintaxe e faça o que você faz em qualquer outro idioma ... PROGRAMA!
Chris
6
algumas línguas que você nunca esquecerá; outros que você deseja esquecer
Steven A. Lowe
3
Você está principalmente no OOP. Você deve explorar outras linguagens de paradigma, como a linguagem funcional Haskell, e depois pensar em acompanhar.
Vigneshwaran

Respostas:

27

Pessoalmente, acho que "acompanhar" os idiomas é uma perda de tempo. É sempre bom aprender novas linguagens populares, mas depois de ter uma linguagem popular e bem estabelecida como C ++, Python etc., você não deve se preocupar. Se você é um bom programador, o idioma é apenas um conjunto de palavras-chave.

Existem apenas tantos paradigmas substanciais por aí; talvez cachorros velhos não consigam aprender novos truques, mas realmente não existem muitos truques novos. Se você está preocupado que sua linguagem funcional / orientada a objetos / orientada a eventos / qualquer que seja a duração, aprenda outro paradigma; mas não se preocupe muito com a escolha exata do idioma.

E daí se você esquecer uma ou duas palavras-chave depois de ficar longe de um idioma por um tempo? É por isso que temos o Google.

Matthew Read
fonte
2
Só não deixe seu chefe ver. :) Ou um não programador. Eles acham que a programação é tão fácil e por que um programador seria pago por um trabalho tão fácil.
Mateen Ulhaq
4
Eu acho que isso é verdade se você permanecer dentro de um paradigma específico. Por exemplo, OO / Imperativo. Ele quebra se você olhar para um idioma que não é imperativo.
Richard
@ Richard: Eu sei que você não pretende sugerir que OO necessariamente implica imperativo, certo?
precisa saber é o seguinte
@Frank: Sim, em vez de grupo muito comumente usado de línguas (Java, C #, C ++) que são ambos ...
Richard
1
"(a) idioma é apenas um conjunto de palavras-chave" - ​​eu discordo. Toda plataforma possui maneiras locais e idiomáticas de fazer as coisas. Começar um bom programador na plataforma X envolve muito mais do que apenas sintaxe. Por exemplo, um ótimo código JavaScript não acontecerá se eu assumir que minha mentalidade .NET OO é tudo o que preciso.
Bevan
54

Estou preocupado que um dia não consiga acompanhar todos eles.

Depois de 30 anos, deixe-me dizer isso.

Sim, você perde a noção.

Tão?

É por isso que eles escrevem manuais de referência.

S.Lott
fonte
14

O benefício real de aprender vários idiomas são os diferentes paradigmas e modelos e formas de pensar que lhe concedem.

Seu conhecimento de Java e sua herança única deve ter moldado sua visão do C ++ e sua herança múltipla. Seu conhecimento de Java e seu GC deve ter moldado sua visão do C ++ e sua memória gerenciada pelo usuário. Seu conhecimento de C ++ e seus modelos deve ter moldado sua visão de Java e seus genéricos. Todas essas relações funcionam nos dois sentidos, é claro.

Se você nunca escreveu em uma linguagem funcional, não apreciará o que o C ++ <algorithm> está tentando fazer e o que está faltando por não ter funções cidadãs de primeira classe (pelo menos antes do C ++ 11). Se você nunca escreveu em uma linguagem de tipo dinâmico, não perceberá os limites do que a digitação estática pode ou não fazer por você. Se você nunca escreveu em um idioma sem estado mutável, não entenderá as penalidades que esse estado mutável gera sobre você.

Aprender outros idiomas é bom, porque faz você entender melhor os idiomas existentes. Nesse aspecto, você não precisa se preocupar em manter-se atualizado, porque os conceitos de um idioma não tendem a mudar rapidamente - ou de maneira alguma.

Philip Potter
fonte
8
+1 Não se trata apenas de aprender vários idiomas (aprender idiomas é a parte mais fácil). Aprender diferentes paradigmas é o que é importante. Pessoalmente, acho que, no nível universitário, os estudantes devem estar expostos a esses diferentes paradigmas, é triste quando existem tantas universidades "McJava (tm)" hoje em dia (observe que não estou dizendo que Java é ruim, por exemplo, leia o contexto completo, por favor.). :(
Darknight
8

Minha pergunta é: Como você controla várias linguagens de programação? (Quero dizer, acompanhe as mudanças nesses idiomas e mantenha suas habilidades afiadas)

Escreva código. Se você deseja acompanhar as atualizações do idioma, continue escrevendo o código.

Existe linguagem de programação suficiente?

Aprender mais de um idioma ajuda você a ter uma perspectiva de outros idiomas que você não entenderia. O aprendizado de vários idiomas fornece uma perspectiva geral abrangente sobre a computação em geral.

Mas é impossível aprender todas as línguas, e nem todas as línguas têm valor - para você ou para o seu trabalho. As línguas esotéricas não valem a pena aprender, exceto por seu valor intelectual inerente, porque não têm nenhum uso prático real.

Portanto, não, não existe "o suficiente". Mas certamente existe algo que "não vale a pena".

desvanecer-se
fonte
4

Apenas se preocupe em acompanhar os idiomas que você acha que vai usar ou que está usando no momento. Aprender novos idiomas é útil, mas não há motivos para aprender sobre alterações menores em um idioma se você nunca mais usá-lo novamente.

jzd
fonte
4

Nunca pare de aprender; mas perceba que você nunca sabe tudo sobre tudo. Você sempre terá alguns ambientes em que é mais fluente. Não se preocupe, apenas continue se divertindo.

Javier
fonte
É verdade, nunca pare de aprender, mas FOCO. Aprender tudo é como correr como uma galinha sem cabeça e, no final, você é bom em NADA.
Slawek
@ Slawk: "no final, você é bom em exatamente nada". Quase. Uma versão melhor pode ser: No final, as coisas em que você era bom foram substituídas por novas tecnologias sobre as quais você não tem idéia.
precisa saber é o seguinte
3

Você tem linguagens de programação suficientes quando sente que está pronto. Conhecer vários idiomas é ótimo, mas não sei se conhecer 12 quando você usa 2 no trabalho oferece mais do que benefícios contextuais. Não há nada de errado em conhecer mais idiomas, mas no restante do tempo você provavelmente está melhor melhorando seu conhecimento nos idiomas e disciplinas que você mais precisa usar. Como as línguas faladas, você quer ser mais eficiente nas que fornecem valor em sua vida.

Lembro-me de vários programadores que se gabavam de conhecer vários idiomas, mas escreviam código da mesma maneira em cada um, e isso não é necessariamente uma coisa boa.

Além disso, à medida que você envelhece, o tempo ajudará a decidir você (tenho muito menos tempo para estudar do que antes de me casar, ter filhos, me tornar um escritor freelancer, começar a lidar com questões de carreira e minha memória começou a ir para o sul. Doh!).

Bernard Dy
fonte
3

Eu aprendi muitas línguas nos últimos 25 anos. Depois de um tempo, alguns se tornam menos úteis e são esquecidos (Perl). Vamos nem falar sobre montagem 6502, Apple BASIC, Lisp, Prolog, Pascal, SPAN, FORTRAN ...

Outras línguas desapareceram, então eu tive que reaprender (Python) depois de 10 anos. Não fazia sentido acompanhar o Python, não demorou muito para se atualizar - o Google / SO é seu amigo.

No final, uma linguagem é apenas uma ferramenta. Você o usa para o trabalho em questão. A habilidade é saber o que usar quando. Para ser sincero, depois que comecei a usar o C ++, nunca mais quis fazer a codificação em C. Quando aprendi C #, nunca mais quis fazer C ++.

Dave
fonte
3
os relatos da morte de Perl são muito exagerados.
Philip Potter
Não é nada pessoal contra Perl. Eu costumava trabalhar no Unix, então Perl era minha arma de escolha. Eu construí muito grandes aplicativos de tecnologia usando-o. Então eu mudei para o Windows. Agora, estou de volta, mas o aplicativo que estou desenvolvendo está em Python, portanto, parece haver pouco sentido em usar Perl e Python.
dave
1

Na minha opinião, a programação não é toda sobre o idioma que você está usando. Programar é uma maneira de pensar. Você precisa ser um bom analista para escrever um bom software, a linguagem de programação apenas o ajudará a construir seu software. Certamente, cada idioma tem suas deficiências ou vantagens, mas para criar um bom software, você precisa pensar como desenvolvedor. Pessoas que não pensam como um desenvolvedor não criarão ótimos softwares, não importa quão boa seja a linguagem que estejam usando.

Eu sempre faço a comparação com alguém que está construindo uma casa, ele não se importa com o martelo, desde que ele tenha um, ele pode construir a casa. Ele pode precisar se familiarizar com o martelo (por exemplo, o peso), mas uma vez familiarizado com a ferramenta, ele pode construir uma casa fantástica. Acostumar-se à ferramenta não é tão difícil, pois a maioria das "versões" da ferramenta é bastante semelhante (isso vale para martelos, mas também para linguagens de desenvolvimento).

Enquanto estudava, costumávamos usar Java (antes eu usava ASP e VB5), mas depois de me formar (há cerca de 5 a 6 anos) aprendi a usar C # (e Javascript), uma troca de trabalho "me forçou" a usar o VB.NET, o próximo trabalho me permitiu usar as duas linguagens .NET (o que eu fiz) e até "permitiu" me deixar usar o Java novamente (para alguma ferramenta herdada que eles estavam usando). Atualmente trabalho com X ++ (linguagem do Microsoft Dynamics AX), mas ainda estou desenvolvendo o .NET. Esses são apenas os idiomas com os quais trabalho no dia-a-dia, também gosto de investigar novos idiomas como F #, Ruby etc. O aprendizado desses novos idiomas levou apenas alguns dias (apenas para entender a sintaxe) e o restante você está apenas brincando com o idioma e aprendendo gradualmente.

Existem muitos idiomas, mas eu tendem a me concentrar apenas em idiomas realmente diferentes (como F #). Eu vejo o aprendizado de novas línguas como interessante e divertido, então por enquanto eu estou bem, aprender uma nova língua é bastante fácil (pelo menos se o pensamento for o mesmo, C #, VB, Java são iguais, mas por exemplo, F # é bem diferente) e eu não me preocupo muito.

Gertjan
fonte
1

Comecei minha carreira há 5 anos no vb6, passei para php, depois para java e depois para .net. atualmente no último ano trabalhando no asp.net mvc2 e está tentando minha mão no mvc3 também

o segredo é que nunca se deve ficar desatualizado, você não pode dominar tudo no mundo, então se preocupar com isso não é a opção

maz3tt
fonte
1

Eu acho que essa é uma questão de carreira. Portanto, você deve contabilizar as pessoas que o contratam apenas se conhecer um conjunto específico de ferramentas. Talvez isso desqualifique o trabalho, mas talvez não. Portanto, aprenda coisas novas superficialmente. Mas continue aprendendo as coisas difíceis (matemática, novos paradigmas de programação) profundamente.

Adaptar-se ao uso de novas ferramentas é uma desvantagem. O setor de TI está cheio de hipopótamos e você precisa se defender deles. Isso começa com a afirmação: não, continuo usando meu editor antigo (emacs?). Mas de tempos em tempos você tem que aprender coisas novas. Eles realmente melhoram ao longo dos anos (3-4). Se você tem a chance de aprender coisas novas no trabalho, com um projeto real em mãos: não hesite, pois será divertido! A melhor maneira de discernir o hype da inovação real é olhar para as pessoas que a usam. Você é melhor em julgar as pessoas do que em tecnologia :)

fausto
fonte
1

Eu sugeriria aprender idiomas com diferentes paradigmas, como funcional, OO e lógico, porque eles são muito diferentes.

No entanto, eu não sugeriria necessariamente aprender 3 idiomas funcionais ou 3 idiomas OO.

Se você é bom em recitar, talvez. Mas acho difícil aprender coisas semelhantes repetidas vezes, o que acontece quase o mesmo, mas não exatamente, especialmente as coisas da biblioteca, como pintura de janelas, invocação de banco de dados, bibliotecas de coleções, nas quais é preciso lembrar nomes e convenções diferentes, mas que se comportam quase da mesma forma. Foi paintRect (xstart, ystart, xend, yend) ou (xstart, ystart, largura, altura)? Incluindo 'final' aqui, não incluindo lá?

Mas algumas pessoas não têm dificuldade em aprender essas coisas.

Então, eu sugeriria aprender algumas línguas, mas aprender algumas delas em profundidade pode lhe ensinar mais do que idioma após idioma apenas na superfície. Talvez não 2 idiomas por ano, mas a cada dois anos um idioma.

Usuário desconhecido
fonte
0

Estou do lado oposto do espectro. Eu odeio aprender vários idiomas, porque você aprende coisas simples e nunca fica bom em problemas mais profundos dessa maneira. Ao mesmo tempo, você aprende más práticas de outros idiomas.

Já viu um desenvolvedor Java hardcore codificando em C ++, é uma bagunça esperando para explodir ...

O problema é que todas as línguas têm suas dicas onde a abstração começa a vazar ou a jogar contra você. Você pode aprender a sintaxe em 1 dia, mas levará 5 anos para saber como codificar com eficiência e sem erros. Você usa em () ou []? Por que malloc fará com que seu processo de longa execução fique sem memória?

E aprender paradigmas também é uma proposta interessante. Como o uso das diretrizes Java em C ou das diretrizes Perl em C # provavelmente se transforma em uma demonstração impressionante de como escrever código ofuscado.

O aprendizado de alguns novos idiomas pode ajudá-lo a ampliar seus horizontes, mas eles não devem fazer você se sentir mais inteligente, devem fazer você se sentir mais burro com cada novo que aprender.

Codificador
fonte
0

Alguém sugeriu em algum lugar que "todos deveriam conhecer três idiomas".

Eu tendem a concordar. Você deve conhecer uma linguagem compilada (C / C ++, C #, etc), uma linguagem interpretada (Python, Ruby, etc) e uma linguagem de processamento de texto (Perl, Awk, etc). Também acho que você deve conhecer uma linguagem de script de shell (Bash, atualmente ou shell de energia do Windows). O mesmo conselho se aplica a kits de ferramentas e APIs.

A única maneira de acompanhar uma linguagem à medida que ela evolui é usando-a. Se você mantiver seu conjunto de ferramentas de idiomas regulares limitado a alguns, será mais fácil usá-los regularmente para resolver problemas e, assim, poderá acompanhar os desenvolvimentos em cada um.

Portanto, mantenha-se atualizado com as tecnologias que você usa diariamente e fique lá. Não há nada errado em se envolver em outras áreas de interesse quando você tem tempo. Geralmente, um programador competente não leva muito tempo para aprender uma nova tecnologia, com motivação suficiente e tempo para se sentar com ela.

Não há necessidade de acompanhar todas as tecnologias existentes ... você poderá girá-las para cima e para baixo conforme necessário, mantendo as que você usa mais regularmente como foco.

Adam Hawes
fonte
-5

Gente, sério - isso é triste. Sem especialização, "eu vou aprender tudo". Desculpe com essa abordagem, você saberá tudo, mas suas habilidades serão tão baixas que ninguém lhe pagará bem.

Houve uma pesquisa dizendo que você precisa de 10 anos de treinamento para ser "bom" em qualquer coisa (programar, tocar violão, dançar etc.). E isso é verdade, você precisa de 5 a 10 anos escrevendo C ++ / python / etc. adquirir as habilidades necessárias para desenvolver códigos comerciais de boa qualidade.

E essa besteira sobre referências de linguagem? E onde estão os bons hábitos de programação que são diferentes para cada linguagem de programação. Em qual referência você encontra boas práticas de gerenciamento de memória e estruturas de dados para práticas de C ou de Segurança no Servidor?

Desktop, celular, servidor (!!!) - esses são ambientes completamente diferentes. Você decide se quer "brincar" a vida toda ou se concentra em uma coisa e consegue um emprego decente. Provavelmente as pessoas lhe dirão besteira que você deve conhecer todos os idiomas do mundo, porque eles estão tentando fazer o mesmo para melhorar seus empregos de merda. Mas adivinhem, eles nunca serão capazes de fazer isso, mesmo depois de ler a "referência" do Java, porque do que serão capazes então? Exatamente NADA.

Sim - aprenda design gráfico, roteiro e flash também, você precisará! :) Eu não sei exatamente o que há de errado, mas se você estiver executando cliente, servidor e dispositivo móvel ao mesmo tempo - saia do seu emprego e não espere até amanhã, porque você precisa fazê-lo agora!

Minha pergunta é: Como você controla várias linguagens de programação?

Sua pergunta deve ser como não acompanhá-los. Meu conselho, saia de pokemon e fique bom em algo que você gosta.

Slawek
fonte
1
Você sabe que estou certo - quem ganha mais? Engenheiro Java sênior na IBM ou "programmer-o-graphican-o-computerfixer-o" em alguma empresa local de desenvolvimento de sites? Bem, eu conheço bons gráficos que fazem apenas gráficos e cobram US $ 10.000 por um projeto de banner "estúpido" ... e alguns caras "eu sei tudo" que estão criando sites estúpidos para empresas locais estúpidas por US $ 150 (que incluem gráficos), consertando Enquanto isso, eles sabem tão pouco em tantas áreas que tudo o que podem fazer é instalar um tema wordpress ou verificar por que o msoffice não está funcionando.
Slawek
-1 por ser mais um discurso retórico do que uma resposta e por confundir sua experiência pessoal com o mundo. Eu gostaria de ver a que "pesquisa" você está se referindo. A noção popular atualmente é de que são necessárias 10.000 horas de prática ativa para desenvolver conhecimentos em um campo. Isso foi popularizado pelos escritos de Malcom Gladwell. Provavelmente não é ruim como regra geral, mas dificilmente é uma lei da física. 10.000 horas são cinco anos de 40 horas semanais e, é claro, muitos de nós colocamos horas muito mais longas nos estágios iniciais de nossas carreiras.
Charles E. Grant
Não, eles têm uma especialização. Sua especialização é programação. As linguagens de programação são simplesmente ferramentas do ofício para serem escolhidas quando necessário e descartadas quando não forem necessárias. A coisa das 10.000 horas foi popularizada pelo livro de Malcolm Gladwell. Mas você entendeu o que ele estava dizendo? Ele estava dizendo para ser um gênio musical, por exemplo, levou 10.000 horas. Ele não estava dizendo que levou 10.000 horas para ser bom em tocar piano.
Antonio2011a
Se ninguém aprendesse mais de uma linguagem, todos estaríamos programando em assembler. Hoje estou usando Groovy, Java, Javascript, SQL, Ant e Selenium. Não preciso de 7 pessoas no meu time. Preciso de pessoas que possam adquirir uma nova tecnologia e fazer as coisas acontecerem.
Kevin cline