Talvez seja só eu, mas como estudante atual de CS, já deparei com muitas perguntas neste site e em outros lugares sobre não apenas "Qual idioma devo usar para x?" mas também "Alguém ainda usa o idioma Y?" Minha primeira aula de CS foi ministrada em Scheme, que, se não me engano, não é amplamente usada (pelo menos em comparação com linguagens como Java, PHP, Python, etc.). Muitos de meus colegas de classe se recusaram a ter que aprender um idioma que nunca precisariam usar novamente, mas não entendo de onde vem tanto desse medo de aprender idiomas menos populares. Não, eu não posso usar o Scheme em qualquer trabalho que conseguir, mas certamente não me arrependo de ter aprendido a usá-lo (embora de maneira muito iniciante, não muito profunda naquele semestre). Estou participando de uma aula de mecanismos de pesquisa neste semestre, o que é feito em Perl e novamente vejo colegas reclamando da escolha do idioma. Eu posso entender ter um idioma favorito e não gostar de outros, mas por que alguns se preocupam em aprender isso em primeiro lugar? Você pode realmente aprender o idioma "errado"? Aprender algo como Scheme ou Haskell não é bom exercício mental, senão nada, e útil pelo menos à exposição a diferentes maneiras de resolver problemas?
28
Respostas:
O objetivo de um curso de CS não é ensinar C # e Java; você pode aprender sozinho. É para te ensinar sobre programação e computação. A linguagem é apenas um detalhe. Ao longo de uma carreira em programação, você usará muitas linguagens. Hoje pode ser Java ou C #, mas daqui a 10 ou 15 anos pode ser Erlang ou algo que ainda nem foi inventado. Aprender estilos de programação diferentes e maneiras diferentes de atacar um problema é muito mais importante do que aprender qualquer idioma.
fonte
Porque a sua primeira língua moldará o seu modo de pensar, até você aprender o contrário.
Se você é analfabeto computacionalmente (programador iniciante) e o primeiro idioma que aprende é muito "básico", talvez não conheça conceitos de ordem superior como orientação a objetos, despacho múltiplo, herança, funções de primeira classe, metaprogramação etc.
A primeira língua que você aprende geralmente está ligada à sua primeira incursão no pensamento computacional. Se alguém lhe disser, Jimmy, o mundo antes de você consistir nos símbolos A, B e C, todo o seu pensamento será em termos de A, B e C. Até que um dia, um nerd chocado zomba de você por não conhecer X , Y e Z conceitos. Não há como você saber disso sabendo apenas o ABC.
As pessoas mais preocupadas com a primeira língua de alguém provavelmente são programadores esclarecidos que lutaram na escuridão. Ah, agora eu sei o que é uma função de primeira classe. Cara, eu gostaria de saber sobre injeção de herança e dependência há dois anos!
Seu primeiro idioma não é tão importante quanto sua atitude em relação aos idiomas subsequentes. Se você pode ver bem à sua frente saber que existe um mundo além do BASIC / C / Perl / PHP / etc, estará muito à frente do jogo. É por isso que muitas pessoas são fanáticas por linguagens funcionais, pois muitas linguagens ativamente desenvolvidas estão convergindo para elas.
fonte
Quando estava na faculdade, conheci muitas pessoas que decidiram se formar em economia, não porque era algo pelo qual elas estavam particularmente interessadas ou apaixonadas, mas porque pensavam que isso lhes daria um bom emprego.
Eu me formei em Estudos do Leste Asiático porque as aulas que tive como efeito colateral do meu interesse inicial em literatura me atraíam. Fui para a Alemanha porque queria fazer um programa de intercâmbio, onde passava a maior parte do tempo em programas de japologia e sinologia. Estudei o que mais me interessava. Decidi não usar a faculdade para estudar coisas relacionadas ao computador, pois já havia hackeado uma boa quantia durante a minha infância, mas passei um tempo programando e entendendo a Internet e, eventualmente, talvez de maneira improvável. , Consegui um bom trabalho que conseguiu combinar todos esses interesses.
A diferença está entre o Carreirista e alguém que aprende pelo bem da aprendizagem. O Carreirista está preocupado que eles tenham estudado A Coisa Errada, e que se arrependerão porque não será a Coisa Certa Me Conseguir um Emprego. A pessoa que aprende em prol da aprendizagem percebe que tem 4 anos para gastar tempo explorando todos os tipos de campos com pressões relativamente gerenciáveis; o carreirista pensa que o trabalho da escola é ensinar-lhes algo. O aluno descobre as coisas quando atinge um território desconhecido e tem uma chance maior de encontrar o emprego certo para eles. O Careerist acaba sendo um contador de segunda categoria em uma empresa de terceiro nível, paga as contas e se ressente do chefe.
Sim, esses são arquétipos e todos precisam equilibrar o pragmatismo com suas paixões, mas essa é a diferença essencial. É verdade que alguém com a estética do programador também pode fazer a pergunta, mas mais no contexto de "qual será o uso menos desperdício do meu tempo". Mas meu palpite é que é o impulso carreirista que faz essa pergunta, porque o Carreirista tem muito mais medo de cometer um erro do que o Aprendiz, e o Aprendiz geralmente faz um programador melhor porque o Aprendiz não teme erros. O aprendiz, como o programador, abraça o fracasso na busca de habilidades.
fonte
Sim, aprender linguagens funcionais como Scheme e Haskell é uma boa introdução à programação funcional. Tanto quanto seus colegas reclamando do Perl, embora o Perl não seja tão popular como era antes, certamente ainda é uma linguagem amplamente usada nos negócios.
Entendo seus colegas de classe que desejam aprender linguagens práticas usadas no mundo real, mas acho que eles perdem o ponto de que, uma vez que você é um programador experiente e exposto a vários paradigmas de programação, aprender novos idiomas é principalmente uma questão de aprender. a nova sintaxe. Assim, desde que você tenha exposição aos conceitos, poderá "se especializar" em qualquer idioma que seu empregador preferir, sem muita dificuldade.
fonte
Talvez porque as pessoas tenham sido influenciadas por declarações como a peça clássica de trollagem de Edsger Dijkstra: "É praticamente impossível ensinar boa programação a estudantes que tiveram uma exposição prévia ao BASIC: como programadores em potencial, eles são mentalmente mutilados além da esperança de regeneração". ( link )
Isso leva ao medo de sofrer danos cerebrais permanentes se você aprender o idioma "errado". Seu exemplo do Perl não é surpreendente, já que o Perl é uma daquelas linguagens que frequentemente invoca críticas como essa de seus detratores.
fonte
Seu primeiro idioma deve se concentrar em conceitos, não em sintaxe ou expressões idiomáticas. Usando isso como uma diretriz:
fonte
Pergunte a seus colegas de classe como eles sabem que um idioma está "errado" se eles não o usaram. Você só pode descobrir o que gosta usando uma grande variedade de idiomas.
Sem conhecê-los, não posso dizer com certeza por que eles se sentiriam assim. Talvez eles sejam preguiçosos. Talvez eles tenham usado o idioma antes e não tenham gostado. Talvez eles tenham medo de tentar outro idioma. Quem sabe. O que eu sei é que, como estudante de CS, pesquisador e tendo trabalhado na indústria, conhecer uma variedade de idiomas, bem, é um grande patrimônio e você nunca sabe o que vai usar ou não. Exemplo: Quando eu estava aprendendo C, meu professor nos apresentou os scripts de shell e utilitários de linha de comando como
grep
eawk
. Meus amigos não se preocuparam em aprender isso com um nível de competência. Agora eu os uso no trabalho todos os dias.O Perl é muito poderoso e, se você souber usá-lo, pode tornar sua vida muito mais fácil. Também é semelhante ao Python, e o Python é muito usado em um dos principais recrutadores de estudantes de CS: o Google. Seus colegas de classe devem estar comendo isso. FWIW, eu sei perl e python a um nível intermediário (não um iniciante, mas não um especialista).
Jovem e vaidoso? Eu também era assim. Mas meu "aborrecimento" estava mais no domínio da matemática. Então, com base nessa experiência, eu apostaria que eles estão preocupados porque não gostam de aprender coisas novas ou porque é difícil aprender novos idiomas para eles. (Mas então, qualquer coisa que valha a pena saber não vai cair no seu colo, eu digo)
Para a primeira frase: Não, mas você definitivamente pode aprender idiomas que preferiria não ter + tosse + Lisp + tosse + =)
Para o resto: Sim! Você deve aprender o maior número possível de idiomas para descobrir o que gosta e expandir seus horizontes. Não é necessário dominar todos eles, mas ter um conhecimento prático é sempre útil. Você nunca sabe quando um idioma que você pensou que seria uma perda de tempo para aprender é útil.
fonte
Como a contratação de programadores é um processo tão arbitrário e caprichoso, o simples fato é que, se você escolher a tecnologia errada, poderá encontrar o caminho do dodo.
Na primeira página, a qualquer momento, você verá um fervor religioso próximo de crenças como:
A única constante em tudo isso é que 99% das empresas por aí querem que você tenha X anos de experiência com a tecnologia Y ... E como uma pessoa só tem tantos ciclos disponíveis, o que eles gastam nesses ciclos é muito importante.
fonte
Eu acho que o medo de escolher o idioma “errado” para aprender se deve principalmente à falta de informações e falta de orientação , como:
fonte
Estamos expostos a mais opiniões.
Comparado a como as coisas podem ter sido feitas no passado, há mais dúvidas sobre como estamos gastando nosso tempo porque estamos expostos a mais opiniões - todo mundo pensa sobre qual deveria ser a primeira linguagem de programação e, como é um assunto tão delicado, qualquer um pode justificar qualquer coisa .
Devido ao nosso estilo de vida veloz, todos têm um medo inato de desperdiçar seu tempo. O medo acentuado de aprender o idioma errado é simplesmente o resultado de as pessoas serem facilmente expostas a uma infinidade de opiniões.
fonte
É a aversão geral de aprender algo que tem utilidade questionável. Eu posso ver a picada aqui sendo ainda pior, já que essa é a classe que as pessoas querem e ainda aprendem algo que acham inútil. Sei que, se eu fosse fazer uma colagem, gostaria de aprender algo que possa usar no mundo real.
A única parte em que eu poderia discordar dessas outras pessoas é quando um idioma está em uso intenso e elas simplesmente não querem sair da bolha para aprender. Só então a queixa não faz sentido.
fonte
Por que é 'medo'? Eu chamaria isso de animosidade de ter sido alimentado à força por algo que você não deseja ou não considera importante. Nenhum idioma está errado, mas temos tempo limitado para focar nas coisas. Eu tive que fazer minhas aulas de CS com Java e não estava feliz com isso. Não porque eu temia que Java fosse a linguagem errada, mas não era aí que estava o meu foco na carreira.
Agora Java é útil, certo? LOL Todo mundo aprende Java. É nisso que você não deseja competir. Seu currículo estará em uma pilha de 1000, com o título Recém-formado em CS, que conhece Java. Seu esquema de aprendizado sábio sobre empregabilidade provavelmente é melhor, pois esse é o sinal secreto de que você estudou em uma universidade de elite e não em uma faculdade comunitária.
Eu diria também que esse tipo de animosidade é muito mais amplo que o CS em geral, mas é indicativo do ensino superior em geral. Tenho certeza de que o instrutor escolheu Perl porque ele conhece e pode classificá-lo facilmente, e tem medo de aprender novos idiomas que os alunos preferem aprender. Eu acho que é sua própria educação e você deve ser capaz de mapear as tecnologias que considera necessárias para o seu próprio sucesso.
(O PS MIT desistiu do Schema e mudou para o Python)
fonte
O tempo é a mercadoria mais rara de todas, quando você sai para o mundo real - e ninguém quer perder tempo com habilidades que não lhes trarão nenhum benefício real.
Dito isto, acho que não há uma linguagem 'errada' para aprender - mas eu gostaria de ter descoberto Ruby anos atrás, em vez de ter dificuldades em fazer coisas avançadas em PHP ...
fonte