Dói aprender partes de muitas linguagens de programação?

37

Comecei minha carreira de programação no BASIC, durante a 9ª série. Aprendi um pouco de BASIC escrevendo programas simples para adicionar, subtrair e imprimir. Então eu fui para a universidade e fiz Engenharia da Informação e Sistemas de Computação. No primeiro ano, fui ensinado C e tenho um bom domínio sobre isso.

Em seguida, aprendi C ++ no segundo ano. Apenas me ensinou algum conhecimento sobre OOP. Agora estou fazendo PHP (junto com HTML). Eu não dominei C ++, BASIC ou PHP. Agora estou planejando mudar para o desenvolvimento móvel. Mas sinto que não cobri tudo nas línguas que aprendi.

Isso realmente importa?

fuddin
fonte

Respostas:

50

Estamos todos apenas aprendendo bits de linguagens de programação. Eu consideraria apenas os implementadores de linguagem aqueles que são 10 em 10 no conhecimento de uma língua.

Aprender vários idiomas e paradigmas é a única maneira de desenvolver um "gosto" pelo que você gosta e não gosta. Se você só aprendeu uma língua, você não iria mesmo ser capaz de realmente decidir se você mesmo como ele ou não.

Você está realmente fazendo da maneira correta. Você poderá reutilizar os fundamentos mais importantes que aprendeu em cada um deles, ao mesmo tempo em que fica exposto a diferentes sintaxes, bibliotecas e estruturas.

Brian
fonte
16
Eu gosto desta resposta, exceto que é menos "o que você gosta" e é mais "a ferramenta certa para o trabalho". Ninguém deve usar o mesmo idioma para resolver todos os problemas. Isso daria um péssimo desenvolvedor de software. Cada idioma e paradigmas têm prós e contras.
user606723
11
Dado que compiladores e intérpretes têm bugs, não acho que seja humanamente possível chegar a 10 na maioria dos idiomas.
jmoreno
6
Eu acho que nem as pessoas que escrevem compiladores C ++ entendem C ++. Individualmente, quero dizer. Obviamente, coletivamente, eles precisam entender de alguma forma toda a linguagem, mas não acho que exista uma única pessoa neste planeta que entenda tudo isso. De fato, os membros do comitê geralmente são bastante claros sobre o fato de todos entenderem apenas sua própria área de especialização. Da mesma forma em Java: Martin Odersky disse recentemente que acredita que existem apenas 3 pessoas no mundo que entendem caracteres curinga. E pelo tom do e-mail, tive a impressão de que ele não se incluía.
Jörg W Mittag
2
nesse grupo, mesmo que ele tenha realmente projetado o Java Generics (junto com Phil Wadler, é claro). Embora, para ser justo, os curingas tenham sido adicionados ao seu design sem o seu consentimento, de fato, contra sua dissidência expressa.
Jörg W Mittag
11
@ brian, confie em mim, você não precisa conhecer o idioma para poder implementar seu compilador. Você pode apenas traduzir as especificações em um código às cegas. Mas como resultado, você aprenderá pelo menos alguns conceitos básicos do idioma - é por isso que é a minha maneira preferida de aprender os novos idiomas.
SK-logic
21

Se você ainda está na universidade, não deve importar ainda que você não sinta que cobriu tudo em qualquer um dos idiomas que conhece. Compreender as teorias fundamentais comuns por trás dessas linguagens é muito mais importante. Depois de entender o básico, você poderá aprender os detalhes de outros idiomas quando precisar deles.

FrustratedWithFormsDesigner
fonte
5
Nos meus dois primeiros anos, acho que escolhemos um novo idioma a cada 3-4 semanas para acompanhar o Pascal, que foi a base da maior parte do trabalho de nosso projeto (1982-85) - alguns deles eram idiomas funcionais. Parte do ponto era tentar e garantir que estamos separados "programação" de "codificação"
Murph
12

Eu acredito que o mais importante na programação é entender os diferentes paradigmas .

Na sua pergunta, você mencionou Programação Orientada a Objetos (OOP) . Se você dominou este tópico, poderá explicá-lo usando apenas pseudo-código e essencialmente alguma representação de modelagem gráfica (como diagramas de classes UML).

A decisão de usar Java, C ++ ou C # (...) depende de você ou da empresa em que trabalha, mas o que é realmente importante é entender / reconhecer os diferentes problemas e decidir o melhor modelo para resolvê- los. Uma maneira muito importante de resolver problemas de programação é usar os padrões de design que você pode descobrir neste livro de referência .

Quanto às linguagens incorporadas, acredito que o importante é entender os diferentes problemas associados a essas tecnologias.

De uma maneira metafórica, eu compararia isso a escrever um bom livro científico; o que é importante é a teoria que você expõe, os problemas que consegue resolver e assim por diante. Quer você escreva o livro em inglês, francês ou japonês, isso não é importante no final.

Dito isso, também é importante conhecer as especificidades de um idioma específico, se você deseja se especializar nessa tecnologia, a fim de explorá-la com muita eficiência.

SRKX
fonte
2
+1 para os paradigmas. Não é importante focar no açúcar sintático da linguagem X ou Y (é claro que você precisa disso se usar a linguagem X todos os dias no trabalho); o que é útil é estudar diferentes paradigmas, porque o IMHO ajuda você a ter uma mente mais aberta e criativa na resolução de problemas.
sakisk
5

Na minha opinião, há pouco sentido em mudar de idioma com muita frequência. Você nunca vai entender nenhum deles. Especialmente alguns como C ++, onde algumas pessoas passam uma década escrevendo a linguagem e ainda têm o código parecido com C.

Se você não pode escrever as práticas recomendadas em um idioma, não continue, IMO. Isso significa que a cobertura de mais de um casal levará muitos anos, se não décadas.

DeadMG
fonte
5

Eu acho que não vai doer aprender um pouco de muitas línguas diferentes, mas ao mesmo tempo você deve aprender pelo menos uma ou duas em profundidade.

Giorgio
fonte
3

Eu usei muitas linguagens durante minha carreira, como AMOS Basic, Java, C ++, PHP, VB6, Delphi etc. Hoje eu uso C #, JavaScript, Ruby e alguns Clojure no trabalho, e também joguei com Pyhton, Erlang, Lisp e esquema comuns.

Mas, neste outono, eu queria criar um calendário especial de Natal para o meu blog e decidi me familiarizar e resolver um problema específico em 24 idiomas adicionais. Essa foi uma ótima experiência, eu aprendi muito e recomendo fazer isso quando tiver alguma experiência em programação.

Minha resposta para você é a seguinte: Aprenda duas línguas muito bem (elas devem ser bem diferentes), mas certifique-se de provar e se familiarizar com muitas.

Hoje, é importante conhecer bem OOP e FP (programação funcional), e você também deve se sentir confortável em uma linguagem muito estática e muito dinâmica.

PS: Meu blog é em norueguês, mas se você quiser ver a lista de idiomas que cobri, pode dar uma olhada aqui .

Torbjørn
fonte
2

Aprendo o que preciso aprender em um idioma específico quando preciso aprender algo novo. O "gatilho" que me diz que preciso me aprofundar mais em um idioma é que um determinado pedaço de código parece feio ou desajeitado, parece insustentável ou difícil de testar ou comentar. Frequentemente, esses gatilhos apontam para minha falta de conhecimento de um idioma de programação, estilo, estrutura de dados e assim por diante.

David Pointer
fonte
2

Aprender várias linguagens de programação é uma boa prática e é necessária atualmente; quantas vezes você nem sempre pode usar o idioma de sua escolha para tudo.

Os benefícios de ver como outras linguagens fazem as coisas o ajudarão como programador; mesmo que ocasionalmente quando você está pulando você cometer erros de sintaxe (por exemplo, está verificando a desigualdade !=, ~=ou <>). Porém, você deve ter cuidado para aprender mais do que apenas a sintaxe de um idioma, mas as práticas recomendadas em um idioma, além de boas habilidades gerais de engenharia de software. Coisas, se você aprendeu C e depois aprendeu C ++, certifique-se de que, ao escrever código C ++, esteja no estilo do código C ++ (em vez de apenas C com algumas novas palavras-chave. Ou seja, você tem várias classes / objetos, prefere referências / ponteiros inteligentes sobre ponteiros brutos, etc.

dr jimbob
fonte
11
Não me inicie Se x <b> = </b> 5 Então. Eu tenho que verificar novamente todo o meu código C por uma semana depois de manter qualquer coisa relacionada ao BASIC.
user606723
2

é bom estudar linguagens de diferentes paradigmas de programação! Linguagem processual, declarativa, funcional, orientada a objeto, prototípica e dinâmica - cada classe de programação oferece seu próprio conhecimento sobre como organizar e resolver um problema. Eventualmente, você descobre um ou mais paradigmas com os quais é mais produtivo e feliz e o usa.

rgordon0
fonte
2

Definitivamente não. Claro que você também quer ter certeza de que está aprendendo diferentes estilos de idiomas. Aprender C # e Java não expandirá sua mente de maneira importante, mas aprender Java e Haskell o fará.

Confira o Livro Sete Idiomas em Sete Semanas , que o guiará através de uma introdução a Ruby, IO, Scala, Erlang, Prolog, Clojure e Haskell. Se você gosta de idiomas, vai adorar esse livro.

Zachary K
fonte
11
Aprender C # depois de Java pode expandir sua mente graças à sua programação funcional (e outros recursos que faltam em Java). Mas se for apenas para aprender, Haskell provavelmente será muito melhor, por causa de quão puramente funcional é.
Sv16 de
1

Bem, C e C ++ não farão mal à programação móvel. Você pode usar o Cocoa Touch ou o Android NDK e, às vezes, o desempenho é necessário. Além disso, às vezes você deseja, porque deseja escrever um código que é executado em várias plataformas. Nesse caso, supondo que você não esteja usando apenas uma estrutura de terceiros, você pode escrever seu aplicativo em C / C ++ e compilar em wrappers específicos da plataforma para elementos nativos necessários (por exemplo, a única maneira de obter um contexto OpenGL no iPhone usando a classe CAEAGLLayer nativa).

Portanto, é como quanto mais ferramentas você tiver na gaveta, mais opções você terá para realizar o trabalho. Você descobrirá que tem preferência por certas ao se especializar em vários tipos de tarefas. Se você faz apenas coisas da interface do usuário, C pode não ser o seu favorito de todos os tempos. Gostaria de me preocupar mais com o tipo de coisa que gostaria de fazer e depois aprender qualquer ferramenta necessária.

Rab
fonte
1

Na verdade, é tão útil quanto aprender um pouco de francês, espanhol, inglês, árabe, hindi e chinês, sem nunca conhecer nenhum deles.

Mehrdad
fonte
6
Não tenho ideia do que você estava tentando dizer com isso.
precisa saber é o seguinte
Você percebe que a maioria de nós não conhece "bem" até mesmo nossos idiomas nativos, certo?
Spidey
1

Pelo contrário, acho que dói quando não sou capaz de aprender uma nova linguagem de programação. Pode ser por falta de tempo ou por outras razões. Até onde eu vejo, programadores / desenvolvedores de software adoram desafiar as linguagens, colocar coisas / produtos melhores e, quando você vê que está fazendo a mesma coisa sempre, não se sente bem. Então você quer um novo desafio, um novo idioma, algo novo para aprender e colocar mais produtos nele.

Então, acho que me anima a seguir novas linguagens, novas bibliotecas, novas abordagens, novas tecnologias. Mas não tenho tempo para obter todos eles, e as pessoas podem não conseguir se aprofundar o suficiente sempre. Portanto, dói não aprender mais; mas não fere para saber mais.

Yasin Okumuş
fonte
0

Concordo com brian, FrustratedWithFormsDesign e SRKX, mas gostaria de acrescentar que, durante a universidade, ampliar seu conhecimento com várias linguagens e paradigmas de programação é a maneira desejável de se tornar um bom profissional.

É realmente improvável que você esteja saindo da faculdade como programador formado. A programação é uma tarefa árdua e você precisará dos anos em que trabalha ao lado de bons programadores, participando de bons programas de treinamento e reuniões da comunidade e, principalmente, você terá que enfrentar os problemas da criação e falhar muito, até aprender a dominar isto.

Aprender vários paradigmas, vários idiomas, resolver os múltiplos problemas de nossa área, fornecerá uma boa base de suporte para você aprender o ofício por conta própria, diariamente, enquanto atua como profissional na indústria.

Você pode participar de uma aula de compiladores, mas não sai como designer de linguagem, criador ou mesmo como desenvolvedor de compiladores. Você obterá as etapas, os processos, os problemas e as soluções básicas, e isso lhe dará a vantagem de adaptar esse conhecimento a uma ampla gama de problemas.

Spidey
fonte
0

Resposta curta: Não.

Resposta longa: grande parte do trabalho de um programador ou engenheiro de software ou designer é independente de uma linguagem específica, mas muito dependente de uma determinada metodologia. Por exemplo, a Programação Orientada a Objetos trata muito de onde as coisas existem na memória e no tempo de execução, quão acessíveis elas são e como estão disponíveis para uso posterior (herança e encapsulamento). As implementações diferem, como Java com uma classe de objeto herdada de nível superior, quer você goste ou não, e C ++ não com nenhuma que você não especifica.

Muitos idiomas compartilham recursos (e muitos divergem). A sintaxe difere, é claro, e é mais complicado quando você compara paradigmas completamente diferentes, como imperativo e funcional. Mas o processamento de strings é basicamente o mesmo onde quer que você vá, uma vez que você obtém pequenas questões de sintaxe, índice e mutabilidade fora do caminho. Qualquer idioma com digitação estática geralmente possui algum método de conversão e coerção, mas como e quando você pode fazê-lo depende do designer do idioma.

A linguagem é a ferramenta. Você está apenas colocando mais ferramentas no seu cinto. Mas a ferramenta é tão boa quanto o artesão que a empunha.

Agora, quantos você aprende é uma escolha pessoal. Eu nunca aprenderia um idioma para aprender um novo. Qualquer opção para aprender um novo idioma é solicitada por um requisito do curso (teve que pegar js, php e R para uma única aula no ano passado), um requisito de projeto existente (se 90% do trabalho for feito em perl 6 antes você é contratado, o mesmo acontece com os 10% restantes depois) ou um benefício específico do aplicativo (R sobre Java, combinado com alguma biblioteca açucarada para análise estatística).

Dito isto, você deseja aprender o que está disponível e disponível. Minha faculdade ministrou um curso sobre esse assunto, Conceitos de Linguagem de Programação . Tratava-se de um amplo curso de visão geral, não de matemática rigorosa ou relacionado à codificação, cobrindo o básico do que poderia ser considerado prático e não teórico da ciência da computação. Foi um ótimo curso e eu gostaria que fosse algo oferecido no 1º ao 2º ano, em vez do 3º ao 4º ano. O texto foi Conceitos de Linguagens de Programação . Não estou dizendo que você precisa sair e ler este livro, mas isso certamente ampliaria seus horizontes.

Justin Reeves
fonte
0

Bem, do jeito que eu vejo, você não precisa aprender cada idioma. Mas tente aprender recursos muito básicos que também serão necessários em outros idiomas.
Por exemplo, os conceitos de OOPS são necessários em todas as linguagens, seja Java , PHP ou qualquer outra linguagem.
Os conceitos de alocação de memória são bastante semelhantes em muitas linguagens de programação. Esses tipos de tópicos que você nunca deve perder.
Cada linguagem possui gramática e regras, o mesmo se aplica a linguagens de programação; O próprio Dennis Ritchie aceitou esse fato. Portanto, deve-se aprender a gramática dessa língua.
Mas, pelo que vejo, você aprendeu os fatores não comuns entre duas linguagens de programação. Eles permitem que você identifique qual idioma representa o quê. C ++ é todo OOP básico (Programação Orientada a Objetos); portanto, depois de aprender os conceitos de OOP , você aprende a gramática que também verá em PHP e Java.
Meu fluxo de aprendizado foi:
Visual Basic 5 (parcial) -> HTML 2.0 (parcial) -> C (parcial) -> CPP (parcial) -> Java (parcial)
e, em seguida, aprendi a linguagem C novamente, seguida por C ++ e JAVA ( complete esse tempo), então mudei para o Android, pois estava familiarizado com Java e XML(parcial) e aprendeu no meio tempo. A primeira tentativa me ensinou menos, mas na segunda, não deixe de aprender tudo o que o ajudará na próxima vez.

Sandeep Pareek
fonte
é difícil ler este post (parede de texto). Você se importaria de editá -lo em uma forma melhor?
Gnat