Como introduzir um computador analfabeto de 50 anos na programação [fechado]

10

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.

skippr
fonte
11
Esta questão não está relacionada ao desenvolvimento profissional de software. Embora, no decorrer de nossos dias, tenhamos que interagir com outras pessoas, técnicas e não técnicas, e às vezes ensiná-las, não somos professores ou instrutores profissionais e não podemos fornecer bons conselhos sobre como melhor ensinar alguém. Se você quiser discutir mais sobre isso, pode fazer uma pergunta no nosso site Meta .
Thomas Owens
@ThomasOwens, como você sabe que não existem professores ou instrutores profissionais na comunidade? O Meta menos visto é realmente para onde devo ir? Acho que posso ceder a isso (embora eu realmente gostaria que ficasse aqui), por favor, migre para mim. Se houver algo que eu possa fazer para que essa pergunta se encaixe nos critérios para ser melhor visualizada pela comunidade SO / Programadores, ajude-me a fazê-lo.
Skippr 22/03/12
11
Que eu saiba, não existe um site que aceite essa pergunta. Eu apenas olhei a lista e não vi nenhuma. Se você quiser discutir mais sobre isso, faça uma pergunta no Meta .
Thomas Owens
@ Thomashowens Bem, eu não estou aqui para reclamar ou trollar, então farei o meu melhor com isso. Obrigado
skippr 22/03/2012
Escondendo minha resposta nos comentários ... Ao contrário das respostas abaixo, acho que o C ++ é realmente uma ótima primeira linguagem. Especialmente para iniciantes. Você começa com o console trivial IO e C ++ é muito mais amigável para iniciantes que Java ou C # nesse sentido. Menos código da placa da caldeira para confundi-lo também. Certamente, existem recursos avançados que causarão confusão, mas você pode ir muito longe, limitando-se a alguns recursos básicos.
Lord Tydus 22/03/12

Respostas:

13

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. :)

Mason Wheeler
fonte
4

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:

  • A capacidade de resolver problemas abstratos
  • A capacidade de decompor problemas em pedaços pequenos o suficiente para resolver problemas
  • A capacidade de criar soluções iterativamente e em pedaços pequenos o suficiente para avançar o progresso é possível
  • A sintaxe e a semântica de idiomas específicos.

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 suporte aptgeralmente 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.

sarnold
fonte
Meu pai definitivamente tem essa "capacidade de pensar" que é tão vital para os programadores. Vejo o bom senso e a inteligência dele nas coisas que ele faz agora e sei que isso pode ser aplicado na programação. Vamos supor que temos um candidato ideal para aprender. Minha pergunta é: como os levamos até lá?
Skippr 22/03/12
Hrm, eu dividi as habilidades em diferentes categorias para enfatizar que a falta de sintaxe e semântica pode atrapalhar o desenvolvimento de outras habilidades - uma linguagem com menos regras de arcano deixará a abstração fluir mais fácil - mas eu parece não ter afirmado bem esse ponto.
sarnold
11
Das linguagens sugeridas, eu certamente preferiria o Python. Mas, se seu pai é visualmente inclinado, o Processing (consulte www.processing.org) pode ser uma introdução interessante (embora existam muitos tipos de problemas para os quais não é adequado).
James Youngman 22/03
@ James: heh, acho que nunca vi a frase, programas interativos usando ... saída em PDF antes. :)
sarnold