Outro dia meu pai me fez uma pergunta que eu nunca esperaria dele.
"Como posso aprender C ++?"
Meu pai está completando 56 anos este ano e computadores são um conceito distante para ele. Ele não sabe usar muito bem o telefone além de ligar para números (sem discagem rápida ou contatos); embora ele tenha começado a aprender um pouco melhor os computadores - a ponto de saber como abrir a Internet (no Windows) e navegar (e ter concluído com êxito vários pedidos de emprego inteiramente por conta própria, online, dos quais também foram oferecidos cargos) ) Mas, ainda assim, essas são experiências de janelas estreitas demais para realmente significar muito.
Embora ele não tenha conhecimento, meu pai sabe ler. E eu quero dizer ler como uma habilidade, não apenas uma habilidade. Ele tem pouca ou nenhuma educação universitária (problemas financeiros, família, etc.) e teve a sorte de terminar o ensino médio, mas ainda assim aprendeu a se tornar um eletricista mestre e é um deles há quase 30 anos. Ele fez o mesmo com o violão, aprendendo a tocar em um nível muito profissional e foi elogiado por sua habilidade. No ensino médio, ele pegou um livro de levantamento de peso - e era a única pessoa em seu ensino médio na época a se qualificar oficialmente como "atleta" pelos padrões nacionais.
Em todos os casos, ele só precisava de algo para ler. Algo para ensiná-lo. Ele absorve informações como uma esponja.
Não tenho dúvidas da motivação ou capacidade do meu pai de fazer isso, então meu objetivo geral é simplesmente:
Coloque meu pai no mundo dos computadores e leve-o para a programação.
Eu acredito firmemente que, uma vez que eu o ensine os fundamentos, sua habilidade de dirigir e ler o manterá por conta própria.
Então, estou perguntando a todos: por onde começar com tudo isso? E quais são os melhores recursos por aí? Devo fazê-lo iniciar o Linux em vez do Windows? C ++ é uma má ideia?
Lembre-se de que ele precisa (IMO) aprender primeiro os computadores e depois entender primeiro (a experiência "Hello world") de programação.
Por uma questão de dinheiro e com a máxima preferência, eu gostaria de recursos on-line gratuitos que ele possa ler, mas de qualquer forma quaisquer boas sugestões impressas ou pagas on-line são bem-vindas (que eu poderia procurar mais tarde).
E também pretendo iniciá-lo com C ++ (sem Python, Java etc.), porque eu o conheço melhor e poderei ajudá-lo ao longo do caminho com o código. (Eu tenho um conhecimento mínimo agora em outros idiomas).
Edit: Estou recebendo muitas sugestões persistentes para usar o Python. A única razão pela qual eu queria fazer C ++ é que eu sei e pode estar lá quando meu pai precisa de ajuda. Minha primeira exposição à programação já foi em Java. Eu aprendi Java e fiquei bom nisso. Abro outras sugestões, mas forneça uma aplicação eficaz de suas sugestões.
EDIT # 2: Entendo que minha abordagem / pensamento / conhecimento pode estar faltando aqui. Eu sou um estudante de graduação do segundo ano do ensino médio. Se você não concorda com nada no meu post, me diga por que - me dê idéias, informações - é por isso que estou perguntando em primeiro lugar. Para restringir meu objetivo geral a objetivos alcançáveis específicos.
Respostas:
Primeiro, mesmo se você conhece bem o C ++, é uma linguagem horrível e horrível para iniciantes, e não posso recomendar o suficiente para mantê-lo o mais longe possível, se ele quiser aprender a escrever código com êxito. Aprender programação não é uma linguagem, é aprender a expressar requisitos abstratos na lógica formal. O C ++ dificulta o foco, porque você está constantemente tropeçando em problemas específicos do idioma.
Se ele quer aprender a expressar idéias na lógica formal, opte por algo que simplifique isso. Minhas escolhas seriam Pascal (para desenvolvimento em nível de aplicativo) ou Python (para trabalho em nível de script) porque ambos foram projetados para serem intuitivos e fáceis de aprender como prioridades principais. Uma vez que ele realmente conhece os princípios de como escrever código, se ele realmente se importa com o C ++ especificamente, ele pode aprender.
Pelo mesmo motivo, não o inicie no Linux, e não no Windows, porque ele tem dois problemas para focar: aprender Linux e aprender código, ao mesmo tempo! Mantenha as distrações no mínimo.
Quanto aos recursos reais de programação, é fácil encontrar tutoriais on-line, mas descobri que a melhor maneira de aprender a programar é através da programação. Encontre algo que você gostaria de fazer e comece a descobrir como fazê-lo.
Vários anos atrás, vi um jogo e pensei: "Eu poderia fazer isso e poderia fazer melhor". Então liguei o Delphi e comecei a descobrir os princípios envolvidos. Ainda estou aprendendo coisas novas desse projeto pessoal e, ao longo do caminho, me tornei um bom programador! Então tente isso; pergunte ao seu pai o que ele gostaria de fazer se ele pudesse programar - e verifique se é possível, e de alcance razoavelmente pequeno, já que ele ainda não tem experiência - e então sente-se com ele e comece a descobrir como ele deve fazer. isto.
E se ele tiver alguma dúvida, obtenha uma conta no StackOverflow. :)
fonte
Eu acho que o interesse do seu pai em C ++ é definitivamente arrumado , mas não seria a minha escolha para uma primeira linguagem de programação - a menos que ele tem um muito requisito específico que ele está interessado em reunião. (Mesmo assim, aprender C ++ depois de aprender outra linguagem mais simples ainda pode ser bem mais fácil.)
Existem algumas coisas importantes para a programação:
De muitas maneiras, a sintaxe e a semântica de linguagens específicas estão próximas do fim das habilidades necessárias para a programação. Afinal, se você estiver quase certo, a maioria dos compiladores dirá qual erro você cometeu - embora seja necessário experiência para decodificar o que os compiladores estão dizendo especificamente.
Então, sugiro que seu pai lide com uma linguagem de programação muito mais simples: Ruby, Python, C, C #, Haskell etc. (Haskell é definitivamente difícil para pessoas que programaram apenas linguagens imperativas, mas eu ' fique curioso para saber se novatos completos sofrem o mesmo sentimento de "peixe fora d'água".)
Adotar uma linguagem mais simples no início significa que seu pai terá mais sucesso mais cedo e achará mais fácil "brincar". O loop REPL interativo de muitos idiomas é um excelente lugar para aprender.
Quando seu pai estiver familiarizado com funções, classes, objetos, métodos, as minúcias e nuances do C ++ não parecerão tão impressionantes. Caramba, mesmo começando com C seria mais fácil: não perdoa , mas há menos recursos confusos para se preocupar.
Você está curioso sobre Linux vs Windows; Não sei se a distinção importa muito. Se ele já está familiarizado com um ou outro ambiente, a troca é apenas mais um obstáculo. Se ele não souber, sugiro o Linux, mas principalmente porque a instalação de boas ferramentas é ridiculamente fácil:
apt-get install <foo>
funciona na maioria das distribuições, e as distribuições que não oferecem suporteapt
geralmente fornecem algo semelhante. Um minuto depois, seu novo e elegante pacote é instalado, geralmente mais rápido do que o necessário para encontrar uma fonte de download confiável para binários pré-compilados do Windows que não cheiram a cavalos de Troia.fonte