É verdade que uma pessoa com bons conhecimentos básicos de programação pode aprender facilmente qualquer linguagem de programação?
Bem, quando digo linguagens de programação, refiro-me às linguagens ágeis e dinâmicas como PHP, Perl, Ruby, etc., mas não às linguagens de programação anteriores de um passado distante.
Eu trabalhei apenas em java, groovy e flex até certo ponto. Então, considerando o fato de eu ser um programador amador, mas um aluno rápido, em uma base aproximada, quanto tempo levaria para conseguir uma posição em qualquer uma dessas línguas?
programming-languages
learning
Vamsi Emani
fonte
fonte
Respostas:
Sim, com reservas.
Há quatro semanas, eu diria que tinha habilidades de nível profissional em C e C ++ e habilidades de nível amador em Java. Meu chefe me pediu para escrever algum software em JavaScript, com o qual eu não tinha experiência, e lá fui eu.
Nas duas semanas seguintes, li muitos trechos de código de amostra, encontrei todas as bibliotecas legais e escrevi meu programa. Está feito e funciona. Então, na semana passada, comprei um livro sobre JavaScript e o li e, garoto, eu não sabia o que estava fazendo. Agora eu entendo por que meus objetos estavam agindo de maneira tão estranha.
Então agora eu digo, eu sei um pouco de JS. Posso ler e trabalhar com ele, mas tenho certeza de que o que estou escrevendo é ineficiente, difícil de ler e não segue as práticas recomendadas.
Em geral, um aluno rápido pode levar uma semana e começar a produzir produtos de baixa qualidade em um novo idioma. Se você conhece Java, pode pegar rapidamente C, C ++, PHP, Python, JavaScript, mas apenas o suficiente para modificar o código ou escrever funções bem definidas. (Perl pode ser mais difícil porque as expressões regulares são complexas.) Para projetar adequadamente um sistema em um novo idioma, você provavelmente desejaria um ano de desenvolvimento profissional sob mentores experientes.
fonte
Basicamente, a resposta é sim ... e não ... depende do que você quer dizer com fundamentos e domina facilmente .
FACTO
Conhecer os fundamentos da programação ajudará independentemente da linguagem. Por fundamentos aqui, quero dizer coisas que não são específicas de um determinado paradigma. Coisas como algoritmos, níveis de abstração, isolamento etc.
Conhecer bem os fundamentos de um determinado paradigma (OOP, funcional etc) facilitará o aprendizado de idiomas que suportam o mesmo paradigma. Pode-se dizer que conhecer bem um idioma permitirá que você compreenda rapidamente os idiomas da mesma família.
Com todos os idiomas aprendidos na mesma família, o próximo será muito mais fácil, não me surpreenderia se essa curva de aprendizado fosse exponencialmente mais rápida, pois você sabe mais.
MITO
--- última seção editada com base nos comentários ---
Facto...
mas
Mito
fonte
para qualquer idioma semelhante , sim
para idiomas com paradigmas radicalmente diferentes, nem tanto
exemplo: você conhece C ++, deseja aprender Java, pedaço de bolo; você conhece o VB.NET, quer aprender o Prolog ... o bolo inteiro, possivelmente três ou quatro bolos
fonte
Acredito que a resposta breve seja: "meio que verdadeira, mas difícil de verificar". É muito difícil aprender a API, usos, expressões idiomáticas e paradigmas intimamente associados (OO, funcional etc.) do que a sintaxe real de uma linguagem. Eu acho que a linguagem em si é facilmente conquistada se você tiver um forte conhecimento e experiência em fundamentos de programação e algum conhecimento de compilador, mas difícil de dominar por causa de coisas auxiliares.
Um exemplo claro seria ir de um idioma para outro; C para Java. A sintaxe do código se parece muito com os programas no estilo C, mas você também precisa conhecer as APIs java (genéricas, coleta de lixo etc.) e, muito provavelmente, em nosso atual cenário de TI, algumas estruturas de terceiros (Spring, jUnit , Hibernate e assim por diante) para fazer algo útil para as empresas. Portanto, se você já fez C antes, a sintaxe do idioma não seria o problema, é o resto.
Isso vem de mim, que conhece Java, C #, Javascript, HTML, CSS, Delphi etc. Talvez eu não conheça todos os cantos sobre os frameworks ou bibliotecas que eu uso, mas eu sei o que fazer e posso aprender rapidamente por causa de minha experiência usando diferentes dos anteriores. Para um "aprendiz rápido", é realmente todo o pensamento lateral.
fonte
Os fundamentos da ciência da computação que você precisa conhecer incluem não apenas a base matemática (teoria dos conjuntos, lógica, teoria dos grafos, álgebra, teoria da informação, teoria algorítmica da informação etc.), mas também várias linguagens de programação, pelo menos uma de cada grupo - ou seja, um imperativo (possivelmente com OOP, mas esse bit não é obrigatório), um funcional ansioso, um funcional preguiçoso, um lógico, um concatenativo ou baseado em pilha.
Com essa base, você poderá aprender facilmente qualquer novo idioma em pouco tempo. Se alguns bits estiverem faltando, você poderá enfrentar uma resistência severa.
E a melhor maneira de aprender o idioma de dentro para fora é implementar um compilador ou intérprete de brinquedo para um subconjunto significativo (é claro, sem uma biblioteca padrão - essa é a parte mais complicada e chata de qualquer idioma).
fonte
Acho que o consenso aqui é que ter bons fundamentos ajudará até certo ponto, e não discordo disso. No entanto, um ponto que falta nas outras respostas é a questão de captar os idiomas da língua, e acho que, para dominar uma língua, você deve escrevê-la linguisticamente.
Por exemplo, você pode escrever resmas de C # completamente corretos sem nunca usar a
using
instrução para descartar automaticamente objetos, mas em C # idiomático bem escrito, você veráusing {...}
muita coisa. Eu não conheço nenhuma linguagem nenhuma - .Net que possua esse construto (embora conheça muito poucas outras e meu Java esteja bastante enferrujado, posso estar errado), portanto, mesmo um especialista vindo de outra linguagem que não possui essa O recurso precisará aprender esse idioma do zero.fonte
É uma afirmação verdadeira para alguma definição de "razoavelmente bom" e "facilmente".
Quanto melhor você entender os fundamentos, mais fácil será a transição de um idioma para outro. Se você é um programador Java experiente que possui um entendimento sólido de linguagens orientadas a objetos, por exemplo, as diferenças básicas de sintaxe entre Java e C # devem ser relativamente fáceis de dominar em uma semana ou duas. Levará mais tempo para entender como a funcionalidade em todas as bibliotecas associadas é mapeada de uma para a outra, mas você provavelmente terá um controle decente das bibliotecas básicas em um mês ou dois. Então, é uma questão de descobrir os casos em que a abordagem padrão para um problema na linguagem A não se traduz diretamente na abordagem padrão na linguagem B (ou seja, você deseja usar o LINQ em C # em vez de JPA em Java) e se sentir confortável o suficiente no novo idioma que você ' re pensando nele em vez de pensar no idioma antigo e "traduzir". Isso provavelmente levará de três a seis meses, dependendo de quão bem a funcionalidade que você normalmente usa nos mapas. Na marca de seis meses, o programador especialista em Java provavelmente seria um desenvolvedor de C # razoavelmente eficiente e competente. Mas, como em qualquer coisa, você pode passar anos aprendendo todos os detalhes complexos, dominando várias bibliotecas e complementos que não fazem parte do idioma, mas que fazem parte do ecossistema circundante, e geralmente se aprimorando como desenvolvedor nesse idioma. o programador especialista em Java provavelmente seria um desenvolvedor de C # razoavelmente eficiente e competente. Mas, como em qualquer coisa, você pode passar anos aprendendo todos os detalhes complexos, dominando várias bibliotecas e complementos que não fazem parte do idioma, mas que fazem parte do ecossistema circundante, e geralmente se aprimorando como desenvolvedor nesse idioma. o programador especialista em Java provavelmente seria um desenvolvedor de C # razoavelmente eficiente e competente. Mas, como em qualquer coisa, você pode passar anos aprendendo todos os detalhes complexos, dominando várias bibliotecas e complementos que não fazem parte do idioma, mas que fazem parte do ecossistema circundante, e geralmente se aprimorando como desenvolvedor nesse idioma.
fonte
Eu diria que depende completamente do entusiasmo de uma pessoa para aprender o novo idioma. Quando os fundamentos são fortes e se ele consegue entender como o novo idioma interpreta alguma coisa, é muito fácil aprender qualquer idioma.
O melhor exemplo é o meu eu. Eu trabalhei com várias linguagens, apesar de ter feito a maior parte do meu trabalho em C #, mas comecei minha carreira em C e aprendi C ++, Java, VB, PHP, linguagens de script, perl e assim por diante. Em qualquer lugar ao longo deste período, nunca senti que não pudesse aprender esse idioma.
fonte
Eu nunca achei difícil aprender uma nova linguagem de programação, pelo contrário, era muito divertido na maioria das vezes. No entanto, existem idiomas que eu olhei, mas nunca entendi, porque não conseguia entender a ideia por trás deles, se havia algum. Um exemplo é COBOL, eu nunca entendi o que tinha que acontecer em que DIVISÃO e SEÇÃO e por quê. Outros exemplos são PHP e Groovy. Com o PHP, tentei entender por que alguém precisaria dele em primeiro lugar, já que existe perl. Talvez alguém possa explicar. Com o Groovy, eu também não entendo um pouco dos conceitos por trás dele.
fonte
Tudo depende.
Eu sei que muitas vezes é a resposta ...
Mas o que os fundamentos significam ?? Muitas pessoas que têm fundamentos para um paradigma (como OO) não os têm para outros paradigmas (como funcional).
Muitas pessoas vindas de OO e conhecem todos os padrões de design, podem não ter pistas de padrões funcionais de design ou coisas como compreensão de lista, currying, recursão de cauda, fechamentos ...
Então SIM: se fundamentos significam fundamentos de todos os paradigmas.
Nesse caso, o problema é que o javascript usa muitos paradigmas, como procedural, OO e funcional, e tem um escopo estranho vindo de java, c ++, ...
Portanto, os fundamentos não ajudam nesse caso, mas pegar mais fundamentos aqui e ainda assim converter para outro idioma pode ficar cada vez mais fácil quanto mais padrões você obtiver em sua caixa de ferramentas.
fonte
Não esqueça que a arte da programação de computadores é a arte de permanecer EXATAMENTE o que você quer dizer. Portanto, qualquer meio de informar ao computador o que fazer, do Java ao Access, ao Excel e ao Visual Fortran, é uma linguagem de programação.
E algumas línguas são simplesmente ruins. IMHO Excel e Basic são idiomas ruins; Java e C ++ são boas linguagens. Os scripts do FileMaker são uma linguagem terrível. O HTML pode ser excelente se você não for desleixado.
Você pode aprender isso? Se é bom, sim. Se estiver ruim, depende do seu limiar de nojo. Coisas que fazem você querer vomitar são difíceis de aprender.
Não se comprometa a usar o idioma X em um projeto, a menos que você já tenha visto e tocado com o idioma X.
fonte
A resposta é "Isso é um fato, não um mito!"
Eu sou como você, eu também trabalhei em várias tecnologias viz. java, .net e recentemente trabalhou com iPhone, android e blackberry.
A rede está cheia de recursos, basta passar pelas informações para entender isso, implementar isso e seguir adiante.
De fato, "a tecnologia é feita para desenvolvedores, não os desenvolvedores são feitos para tecnologias; as tecnologias mudam, mas os desenvolvedores não".
:)
fonte