Meu pai está impaciente com o ritmo de aprender a programar. O que eu faço? [fechadas]


200

Então, meu pai me comprou cinco livros sobre programação (C ++, Java, PHP, Javascript, Android) cerca de um mês atrás. Ele é arquiteto e não sabe NADA sobre programação. Ele me comprou porque eu disse que a programação era divertida e que eu queria aprender.

Como você deve saber, ser criança (tenho 14 anos) e receber instruções para aprender a programar com livros sem graça não é a coisa mais fácil. Estou sempre me distraindo. Eu disse a ele antes que não precisava comprar livros e que podia assistir a tutoriais on-line. Mas não, ele é tão antiquado. Ele está apenas me deixando usar os livros.

Recentemente, ele começou a me perguntar o que eu fiz com isso, e mostrei a ele um programa em C ++ que fiz que pega o que você digita e depois atribui valores a cada letra (A é a primeira letra do alfabeto, para obter o valor de 1) ... e assim por diante. Em seguida, soma todos os valores e informa. Portanto, a palavra "adicionar" teria um valor de 9.

^^ Isso não foi muito impressionante para ele. Ele gritou comigo e me disse que tudo o que tenho feito é brincar. Isso não é verdade. Ele é extremamente tradicional e teimoso e não escuta nada do que eu tenho a dizer. O que devo dizer a ele?

PS: Se você tiver alguma dica sobre zoneamento de um livro, me avise

EDIT: Muito obrigado a todos, você não tem idéia do quanto significa saber que existem algumas pessoas que entendem a minha situação. Eu li todos e considerarei a opinião de todos. Gracias!


15
Comentaristas : os comentários destinam-se a buscar esclarecimentos, não a discussões prolongadas. Se você tiver uma solução, deixe uma resposta. Se sua solução já estiver publicada, faça um voto positivo. Se você quiser discutir esta questão com outras pessoas, use o bate-papo . Veja o FAQ para mais informações.

7
A propósito, você deve mostrar a ele esse tópico. Pode ir mais longe com ele, se ele vê a opinião de um programador profissional sobre o seu progresso.
Collecter

15
@ David Isso não é tradicional, é ser um pai terrível e uma pessoa egoísta. Nesse ponto, ele não quer que você tenha sucesso, ou estaria no poço com você. Ele realmente só quer ser o pai de uma criança de sucesso. Infelizmente, há pouco que você pode fazer sobre isso, já que é seu pai e você não pode ser desrespeitoso. O que eu diria é uma careta e aguento, então, quando chegar a hora da graduação, escolha uma liga de hera muito longe.
Lee Louviere

15
Não estou surpreso que isso tenha sido encerrado (é fora de tópico), mas é uma daquelas perguntas em que eu gostaria que tivéssemos uma tag / sinalização para "fora de tópico, mas continue assim mesmo". :)
Ciclope

12
Pergunte ao seu pai o que ele estava fazendo quando tinha 14 anos.
CodeART 7/12

Respostas:


197

Mostrei a ele um programa em C ++ que fiz, que pega o que você digita e depois atribui valores a cada letra (A é a primeira letra do alfabeto, obtendo o valor de 1) ... e assim por diante. Em seguida, soma todos os valores e informa. Portanto, a palavra "adicionar" teria um valor de 9.

Não sei o que você deve fazer com seu pai. Mas:

Se você fez isso sozinho, começando do zero, aprendendo com os livros, em um mês , é impressionante. E você fez isso em C ++, que é uma das linguagens de programação mais assustadoras existentes.

Existem muitas pessoas por aí fazendo entrevistas, tentando seriamente conseguir trabalhos de programação, que lutariam com isso. Veja esta história.

Só posso sugerir: continue fazendo o que você gosta. Ignore seu pai nesse contexto; ele não sabe do que está falando. Você tem talento em programação e vontade de aprender - os principais ingredientes para se tornar um grande programador.


8
Sim, estou aprendendo ambiciosamente (esse programa em particular me deu cerca de 60 dores de cabeça).
David

8
@ David: Dado que ele é um arquiteto, é compreensível que ele se preocupe com a aparência das coisas . Mas se ele não sabe nada sobre programação, não deve criticar. Os gráficos, a aparência do software são apenas os principais do iceberg .
Joonas Pulakka

12
A sério? "Fatbooth" possui alguns algoritmos de manipulação de gráficos peludos que levam anos para aprender e dominar. Se seu pai quer que você domine o reconhecimento facial, ele deveria ter comprado um livro sobre isso. Pode parecer fácil (porque é fácil de usar), mas é mais difícil de alcançar do que você imagina, oferecendo vários anos de dor de cabeça combinados. Assumir que aplicativos como o "Fatbooth" seja fácil de fazer é um insulto sério (mas secreto) aos programadores.
Spoike

121
+1 por impressionante . É, especialmente considerando de onde você é. Acho que você poderia perguntar ao seu pai em quantos prédios ele esteve envolvido, muito menos trabalhar sozinho, um mês depois de começar do zero aprendendo seu ofício. Coloque as coisas em termos com os quais ele possa se relacionar.
um CVn

13
@Joonas: Sem mencionar que design gráfico, usabilidade e design de interface são realmente todas as disciplinas que geralmente têm muito pouco a ver com programação .
Toby

88

Mostre a ele este post de Peter Norvig. Norvig é chefe de pesquisa e desenvolvimento do Google e ensina em Stanford, especificamente Artificial Intelligence, ele escreveu o livro introdutório padrão sobre IA. Há quanto tempo você trabalha nisso? Eu esperaria nada mais do que isso depois de um mês de trabalho de um novato sem nenhuma instrução adicional, particularmente com algo tão espinhoso quanto o C ++. Qualquer coisa que vale a pena aprender vale a pena aprender bem.


83
  1. Lembre-se de que seu pai provavelmente pensa que você é o garoto mais inteligente do mundo, e ele está tentando ajudá-lo a aprender algo que você disse gostar.

  2. Saiba que, embora seu pai esteja inquestionavelmente errado (cinco tópicos completamente diferentes são muito para discutir com uma criança de uma só vez), ele também está meio certo. Muitas pessoas tentam entender a programação imitando os "tutoriais" encontrados na Web. Isso nem sempre é uma coisa ruim, mas na OMI geralmente não leva a um entendimento sólido. O livro certo ensinará os fundamentos primeiro. Isso pode não ser tão divertido quanto os seguintes tutoriais, mas sua chance de sucesso a longo prazo aumenta e o número de perguntas que você precisa fazer no stackoverflow.com diminui.

  3. Esqueça todos, exceto um dos livros, pelo menos por enquanto. Parece que você já começou com o C ++, então continue se quiser.

  4. Você se sentirá desencorajado de tempos em tempos. Às vezes, parece que metade da programação está travada e a outra metade está travada. Desprender é uma habilidade valiosa, e quanto mais você praticar, melhor será. (Evitar ficar preso em primeiro lugar também é uma habilidade valiosa, então pratique isso também.)

  5. Aprender sua primeira linguagem de computador é o desenvolvimento de software, o que aprender a desenhar é projetar um edifício. Pode não ser a parte mais interessante, mas é uma habilidade necessária.

  6. Se você conseguir que ele escute, tente dividir todas as coisas que você teve que aprender para escrever seu pequeno programa. Leva algum tempo apenas para aprender a usar as ferramentas, e ele certamente não entende como tudo funciona.

  7. Agora que você chegou ao ponto de ter um programa em execução simples e aparentemente aprendeu um pouco de C ++, que programas interessantes você pode escrever? Que tal uma calculadora de empréstimo que aceite taxa de juros, valor do empréstimo e prazo do empréstimo e imprima uma programação de pagamento? Ou uma calculadora que lê uma fórmula molecular como "H2SO4" ou "C6H12O6" e imprime o peso da molécula? Isso não é muito mais complicado do que o programa que você já escreveu.


47
+1 "Esqueça todos, exceto um dos livros"
PA.

9
+1 para idéias práticas excelentes. Ao aprender, a parte mais difícil é sempre ter uma ideia para um projeto ao mesmo tempo em que você está sendo sufocado por novas informações.
Morgan Herlocker

5
+1 "Lembre-se de que seu pai ..." É bom ter o ponto de vista de seu pai lá, mesmo que ele esteja sufocando o entusiasmo de David com sua própria emoção de ajudar.
John MacIntyre

7
Faça uma pequena ferramenta de solução de problemas de arquitetura / calc, envolvendo seu pai!
Vaibhav Garg

3
+1 para o primeiro ponto. Eu acho que é muito importante que os pais pensem nos filhos como os mais inteligentes do mundo. No final, se não fosse essa atitude, o OP não teria feito tanto em um mês, tenho certeza. No entanto, pode ser uma sobrecarga se estiver dando muita dor de cabeça ao OP.
Anton Strogonoff

53

Ele me comprou porque eu disse que a programação era divertida e que eu queria aprender. ... O que devo dizer a ele?

"Pai, sua abordagem para isso está tornando o aprendizado do programa absolutamente divertido . Pare com isso."


4
não é o melhor conselho. Pai não gosta de ser respondida de volta dessa maneira
Chipre

11
sim, mas se o OP apenas ficar sentado e aceitar, o pai sentirá que está certo; seu filho não estava trabalhando muito, afinal. O garoto precisa se manifestar em algum momento para que seu pai perceba o quanto ele está trabalhando.
Kevin

11
@ Chipre É verdade, mas agora me encolho na palavra robótica. Foi o amor da minha vida há um ano. Eu tinha o Lego Mindstorms Kit, o RobotC instalado e tudo mais. Adorei, até meu pai pegar algumas engrenagens e motores "reais" e me dizer para fazer algo "real" como um braço robótico. Odeie a robótica com uma paixão agora.
chandsie

48

Como arquiteto, ele deve certamente estar puxando sua perna ou ser rude.

Faça uma investigação sobre quando ele começou: pergunte se ele desenhou arranha-céus com planos detalhados de encanamento, calculou as forças e o estresse nos materiais e fez avaliações de risco de desastre (como ser atingido por um avião com cobras) depois de um mês gastando com livros quando ele era tão jovem quanto você. Talvez isso o acalme.

Ok, talvez não seja o melhor conselho que eu possa lhe dar, para responder aos seus pais. Eu posso entender que ter um pai, que penaliza o progresso em vez de encorajar, é um pouco cansativo quando criança, mas o leva como incentivo para fazer melhor. Ele pode ter um problema de atitude, mas isso não significa más intenções.


44
Também aconselhe seu pai (embora esteja fora do escopo da pergunta): Abandone a atitude de Gordon Ramsay . Ele só funciona na Hell's Kitchen porque os competidores são adultos experientes que devem saber cozinhar e fazer a perfeição em seu restaurante, e Gordon dá crédito no vencimento. Se você fizer isso com crianças ou iniciantes iniciantes, isso apenas os assustará do aprendizado da prática. Vale ressaltar que Ramsay é melhor em suas outras séries de TV, já que não é da sua conta.
Spoike

30

Gostaria de saber quais livros você está usando. Nem todos eles são realmente bons. Além disso, nem todo livro é apropriado para todos.

Você não especificou sua idade, portanto, assumirei que você tem menos de 18 anos. Comecei a aprender aos 8 anos.

Quando eu era criança, aproveitava muitos recursos ao aprender a programar. Eu tinha os manuais que acompanhavam minha TI 99 / 4A, que continham muitos programas divertidos para desenhar imagens e animar figuras. A internet não estava disponível para mim, mas havia até revistas de computador direcionadas para crianças, com programas nos quais eu podia digitar e obter feedback imediato e artigos sobre como resolver outros tipos de desafios. Eu gostava muito de uma série de romances de espionagem que me permitia digitar e depurar programas incluídos como parte da história. Infelizmente, acho que esse tipo de recurso ainda não existe, mas existem alguns livros de programação que visam pessoas mais jovens, como o livro Hello World sobre Python e Land of Lisp (embora isso seja divertido para adultos também).

Não sei você, mas houve um tempo em que comecei a escrever programas que fazem coisas muito semelhantes às que você acabou de descrever. Eventualmente, mudei para coisas mais avançadas. Escrevi alguns jogos medíocres, algumas demos que tocavam vários sons e animações em reação ao pressionamento de teclas e alguns auxílios de estudo. Quando eu tinha 10 ou 11 anos, escrevi um programa que me ajudou a memorizar a tabela periódica dos elementos, interrogando-me repetidamente. (Naquela época, minhas habilidades de memorização eram melhores do que são agora, por isso, quase digitei os dados da primeira vez que fiz o teste, mas o objetivo era progredir).

Seu pai pode não perceber, mas os livros são apenas parte do processo quando você está aprendendo a programar. Encontrar um pequeno problema e tentar descobrir como resolvê-lo é a outra metade da equação. Encontrar um livro que ensina um pouco de cada vez e permite que algo divertido aconteça na máquina é a outra metade. No meu caso, os livros que enfatizavam gráficos e animação foram os que me conquistaram.

Quando criança, meus olhos se arregalaram quando li livros sobre algoritmos de classificação e estruturas complexas de dados, até aprender o suficiente para ver como eles se aplicavam aos problemas com os quais realmente me importava. Nem todas as palavras dos livros que você ler serão fascinantes. Isso está ok. Você vai conseguir essas coisas quando precisar; algum problema que você queira resolver o lembrará da técnica que você não achou interessante três semanas, três meses ou três anos atrás, e você voltará a revisá-la e descobrirá.

Um mês não é muito tempo para aprender programação. Escrevo códigos de uma forma ou de outra há cerca de 30 anos, inclusive durante a infância, e ainda aprendo algo novo todos os dias. Tenho certeza de que no primeiro mês que tive meu primeiro computador, passei muito tempo jogando o Munch Man e um número muito menor de horas tentando entender os programas de amostra no meu livro de referência. Aprenda no ritmo que funciona para você. Não há pressão no momento, e isso é ótimo.

"Brincar" é o que você deve fazer quando estiver aprendendo a programar. Os hackers (do tipo Paul Graham) bisbilhotam, tentando entender como seu sistema funciona, como sua linguagem de programação funciona, como suas ferramentas funcionam. Você tenta algo, falha, raciocina o problema que está enfrentando e tenta outra coisa, até conseguir que algo funcione. Não se preocupe muito com isso.

A menos que seu pai esteja trabalhando nos mesmos livros, ele provavelmente não entende o quanto você aprendeu até agora. Eu não esperaria poder projetar uma casa ou um arranha-céu depois de ler um livro sobre arquitetura por um mês, especialmente quando adolescente.

Para colocar as coisas em perspectiva, nas últimas quatro semanas eu tenho trabalhado em alguns cantos esotéricos do recurso Engines da estrutura Ruby on Rails. A partir de hoje, finalmente tenho algo a mostrar do ponto de vista do usuário. Aprendi bastante nesse período e desenvolvi muitos códigos fundamentais fundamentais que funcionam muito bem, mas é o meu equivalente profissional de permitir que os usuários digitem algumas coisas e recuperem outra coisa: não é tão impressionante à primeira vista para um usuário casual , mas muito trabalho foi feito. Se alguém me dissesse que eu estava brincando há quatro semanas, ficaria muito desapontado, mas também saberia que eles têm apenas a menor compreensão do que é necessário para tornar as coisas tão "simples".


2
+1 para cortar os dentes na TI 99 / 4A. Praticamente a mesma história para mim programação foi divertida e começar a fazê-lo era muito mais acessível (ou talvez parecesse assim). Minha filha (10) está demonstrando interesse em aprender a programar e estou tendo dificuldades para pensar em uma maneira divertida e interativa de fazê-la começar. Para o OP, de zero conhecimento a 1 mês, e fazer o que você disse parece certo no PAR.
ominus

Ominus (e David), dê uma olhada em Processing, e este livro de Manning: manning.com/pearson
JasonTrue

4
+1 para nem todos os livros são bons. Na minha experiência, a maioria dos livros lá fora é direcionada a pessoas que já entendem de programação. Não há muitos direcionados aos recém-chegados, mas eu recomendaria este e / ou este .
David

@ David obrigado pelo link. Pedi o livro para a filha esta manhã.
Ominus 3/08

@Jason: Ele mencionou que era um garoto de 14 anos.
Cyprus

19

Parece que, nessa situação, seu pai não é alguém que lhe dá apoio e apoio positivos no que você está fazendo. Solução simples: não o use para isso.

Faça seus próprios projetos e faça-os porque são divertidos, não porque ele (ou qualquer outra pessoa) quer que você os faça. Escolha algo divertido para você. Você não precisa aprender todo o idioma / tecnologia de um livro. Em vez disso, comece a mexer nas coisas. Eventualmente, à medida que as coisas se tornarem fáceis, você procurará novos conceitos / desafios. E você vai querer ler os livros que hoje você acha chatos (ou pelo menos algumas seções).

Se você ficar parado e precisar de ajuda para codificar qualquer coisa, o stackexchange é um ótimo recurso, como você já descobriu.


16

Parece-me que seu pai tem uma tendência a expectativas irreais, ou talvez você tenha um histórico de começar as coisas e não seguir adiante, ou ambas. O importante a se perceber é que nada disso realmente importa aqui, tudo o que importa é que você goste do que está fazendo e melhore.

Eu tenho um tempo muito difícil com livros que não me divertem, eu sempre tenho. Aprendo melhor observando outras pessoas fazendo coisas, fazendo perguntas quando não entendo o objetivo de alguma coisa e depois lutando até descobrir. A luta nos fortalece e nos dá a propriedade de nossas realizações eventuais, talvez por isso seja tão difícil sair do útero.

Dito isto, uma das ferramentas mais nítidas da sua caixa de ferramentas será a capacidade de permanecer aberto, trabalhar produtivamente em meio a críticas e não descartar conselhos com base na fonte. Bons livros de programação tendem a agarrá-lo, inspirá-lo e esperar que você retorne a eles quando bater em uma parede. Sem eles, você estará fazendo muitas coisas incríveis sem entender inicialmente exatamente o que está fazendo. A programação é uma arte muito deliberada, por isso encorajo você a procurar livros que sejam escritos de uma maneira fácil de digerir.

Estou programando profissionalmente há um bom tempo e posso dizer que minha satisfação é realmente minha. Meu chefe não entende direito por que as coisas que escrevi são tão impressionantes, minha esposa adormece quando conto a ela sobre o meu dia e meus amigos se esforçam para evitar me perguntar sobre meu trabalho. Aprecio minhas vitórias e a oportunidade ocasional de compartilhá-las com meus colegas. Seu pai, nesse caso, não é um dos seus colegas.

Continue indo e continue melhorando. Acostume-se ao fato de que os não programadores precisam ver algo visualmente impressionante antes de ficarem impressionados. Por que não tentar escrever algo como um gerador de conjuntos Mandelbrot / Julia ? Isso pode mostrar a ele o tipo de progresso que ele está procurando, tirando-o do seu caso por um tempo. Em dez anos, você fará algo muito semelhante para tirar um gerente não técnico de suas costas, para que você possa realizar um trabalho real.

Lembre-se, você está fazendo isso porque gosta.


11
Ouçam este homem, ele sabe o que; s falando;)
drxzcl

2
Eu gosto do fato de que os não programadores precisam ver algo visualmente impressionante antes de serem impressionados '. Escrever um gerador de fractal foi um dos meus primeiros projetos na escola de ciência da computação. E fiquei impressionado me :)
Guillaume

Provavelmente a melhor resposta em toda esta discussão ...
Venki

15

É difícil dizer se essa pergunta é melhor para o fórum dos pais ou o fórum de programação. Receio que meu conselho não esteja no alvo, porque sinto que o emaranhado nessa questão é potencialmente um monte de "problemas" de relacionamento pai-filho.

Dito isto, o que eu focalizaria seria a grande oportunidade que existe para você e seu pai se conectarem a um assunto pelo qual vocês possam compartilhar uma paixão de alguma maneira. Sendo eu mesmo pai e conhecendo meu próprio pai, sei com que desespero queremos que nossos filhos nos ouçam, sigam nossas instruções e aprendam conosco. Nossos filhos geralmente são levados a fazer o oposto. Portanto, o fato de vocês dois compartilharem esse interesse comum é maravilhoso.

Os pais podem ser teimosos, com certeza, mas ainda acho que há uma oportunidade para você flexionar sua própria individualidade e escolha através deste exercício. Não por um sentimento de desafio, mas por sua própria vontade e ambição de conhecer bem o assunto da programação. Pessoalmente, parece que seu pai jogou você no fundo do poço quando se trata de programação. Concedido que pode não ser o MIPS Assembly Language ou o LISP, mas ainda assim, C ++? Java? Caramba. Adoro programar, mas ler aqueles no início pode ter me deixado de fora. Brincando. :)

Então, o que eu perguntaria é: o que te inspira ? Que tipo de coisas você deseja construir? Responda a isso e procure seus próprios livros e tutoriais sobre esse assunto. Venha aqui e faça perguntas. Construa algo. Então mostre ao seu pai o que você construiu. Diga a ele o que você aprendeu. Agradeça a ele por estar tão envolvido com você e diga que o aprecia. Eu digo isso porque, no final, é disso que se trata. Ele quer compartilhar algo com você porque ele ama você. Às vezes, os pais têm dificuldade em expressar isso de maneiras tradicionais, por isso buscamos essas maneiras indiretas de dizer a mesma coisa. Às vezes somos péssimos em fazer isso mesmo. Mas não esqueça que em tudo isso existe um desejo de estar mais perto de você.


15

Parece que ninguém sugeriu isso ainda:

Recentemente, ele começou a me perguntar o que eu fiz com isso, e mostrei a ele um programa em C ++ que fiz que pega o que você digita e depois atribui valores a cada letra (A é a primeira letra do alfabeto, para obter o valor de 1) ... e assim por diante. Em seguida, soma todos os valores e informa. Portanto, a palavra "adicionar" teria um valor de 9.

^^ Isso não foi muito impressionante para ele. Ele gritou comigo e me disse que tudo o que tenho feito é brincar. Isso não é verdade. Ele é extremamente tradicional e teimoso e não escuta nada do que eu tenho a dizer. O que devo dizer a ele?

Se você pensar bem, esse programa não é muito impressionante para quem usa computadores e não sabe nada sobre programação.

Mostre ao seu pai como você conseguiu. Acompanhe-o pelo código fonte. Ele provavelmente (definitivamente) não entenderá, mas transmitirá quanto trabalho você dedicou e quanto você entende, e talvez ele tenha uma impressão mais positiva do quanto você realmente realizou.


3
Isso mereceu muito mais reconhecimento do que recebeu. Uma boa solução sem confrontos que poderia levar seu pai a entender um pouco mais o hobby de seus filhos.
Fergus In London

@FergusMorrow Concordo. Essa resposta recebeu votos muito pouco.
Stommestack

12

Faça o que você quiser

É a sua vida. Tu podes fazer o que quiseres. Não deixe ninguém (nem mesmo seu pai) controlar sua vida.

Suponho que você goste de programar mais ou menos e queira se tornar um especialista de sucesso (e seu pai quer, todo mundo quer). Mas o problema é que você nunca terá sucesso a menos que saiba o que está fazendo e a menos que goste .

Dominar qualquer campo é difícil. Você não pode fazer isso apenas sob a influência de alguém. E ninguém sabe o que você deve fazer melhor do que você . Você quer descansar hoje e sentir vontade de jogar o dia todo? Essa é sua decisão e você é responsável por ela. Você deve aprender a ser responsável por suas decisões e sua vida. Ser responsável por suas decisões é obrigatório para todo especialista de sucesso.

Então, o que você faz nessa situação? Defenda sua posição, não ouça ninguém e faça o que lhe parecer útil.


3
O PO é um menor legal (14, aparentemente). Espera-se que seus pais controlem sua vida, e lutar cegamente pelos próximos quatro anos provavelmente deixará todo mundo infeliz.
jwodder

11
@jwodder: Se esses pais sentem que precisam controlar o que seu filho aprende em seu tempo livre , então pode ser o melhor que ele começa a lutar o mais rápido possível. Eu também tenho filhos, um tão velho quanto David. Se meu filho não pudesse me dizer que eu estava errado quando ela pensava que eu estava, eu temeria pelo futuro dela. Um garoto de 14 anos não tem 7 anos, sabe alguma coisa sobre o mundo e conhece algumas coisas que seus pais não sabem. E se ele acabou por não ser o que eles queriam, eles falharam todos os anos antes e não têm mais chance de recuperar o atraso, muito menos continuando fazendo o que fizeram por 14 anos.
SBI

10

Você solicitou livros. Honestamente, você resolverá melhor os problemas do que ler livros. Encontre um quebra-cabeça ou um problema pelo qual seja apaixonado. O Project Euler é uma ótima fonte, e o CodeGolf pode oferecer perguntas interessantes ocasionalmente. Meu primeiro projeto de programação foi um aplicativo C ++ que encontrou números primos. O livro que eu estava usando na época oferecia uma implementação simples como esta:

bool isPrime(int x){
    int c = 1;
    while(c < x){
        if(x%c == 0){
            return False;
        }
        c=c+1
        /*c+=1 if compiler is set to '98 or more recent*/
    }
    return True;
}

o que é massivamente ineficiente. Encontrei os primeiros 500 números primos com essa função antes de desistir de desgosto por sua lentidão. Papai e eu nos divertimos muito tentando otimizar acima, e mesmo sendo um aplicativo simples que nem sequer gravou sua saída em um arquivo, eu me diverti e o produto resultante foi legal.

Você aprenderá lendo livros? sim, mas não posso enfatizar o valor de apenas mexer com uma linguagem de programação e aprender por tentativa e erro.

Se você está aprendendo a programar para o seu pai, pare e descubra o seu próprio motivo. A minha ainda me persegue para construir para ele um sistema de negociação automatizado de alto volume. Eu falo sério quando digo que você precisa encontrar algo em que deseja trabalhar, porque, caso contrário, provavelmente abandonará a programação porque verá que é uma tarefa não um hobby ou um esporte.

Tente ler o livro de Linus Torvalds, "Just For Fun", no qual ele relata as origens do sistema operacional Linux. O título diz tudo.

A sério. Basta ir hackear algum problema. Quando preso, envolva o velho.

Se seu pai não aprecia seu trabalho, não é porque ele está decepcionado. Ele é arquiteto, não sabe o quão complexas são algumas coisas. Tente orientá-lo no seu código, mesmo que apenas na lógica, e faça-o apreciar o que é essa lógica que você aprendeu escrevendo-a.


TL; DR


  1. Apenas mexa com alguma coisa. Resolver um problema. Se você não conseguir resolvê-lo, encontre a solução de outra pessoa e tente entendê-la.
  2. Divirta-se com # 1
  3. Sempre que aprender algo ou avançar, lembre-se de contar ao seu velho.
  4. Ponha-se no ritmo. Todo mundo aprende à sua maneira e no seu próprio ritmo. Apenas continue e, eventualmente, você terá as habilidades necessárias para fazer o que quiser.

11
Na verdade, ele afirma especificamente que ele não pedir os livros .... O restante deste concordo com
Paul

6

Tente encontrar um livro que seja especificamente uma introdução à programação para iniciantes. Talvez algo como Hello World! Programação de computador para crianças e outros iniciantes por Warren Sande.

Você também deve ver o que sua biblioteca possui. A maioria das bibliotecas deve ter alguns livros para iniciantes.


5

Na minha opinião, você tem dois problemas:

  1. Você quer aprender programação e se divertir (a diversão é essencial, facilita tudo)
  2. Você tem um cliente que realmente não entende nada de programação, mas tem uma idéia do que deseja. (Seu pai no seu caso)

NA MINHA HUMILDE OPINIÃO:

  1. Para o seu primeiro problema, basta ir a sites como este e fazer perguntas como você fez. Encontre recursos como estes https://softwareengineering.stackexchange.com/questions/62224/how-to-become-a-professional-programmer/62263#62263 . Pense em algo que deseja criar (um jogo, lista de tarefas, sistema de gerenciamento de coleção de filmes, a próxima melhor plataforma social) e comece a codificar. Ou comece com a solução de quebra-cabeças Onde posso encontrar quebra-cabeças e desafios de programação?

  2. Seu segundo problema é mais difícil, você precisa educar seu pai (enquanto ele não parece muito disposto). Enquanto aprende, ficará melhor explicando a ele o que é difícil de programar. Você pode tentar usar metáforas como a explicou O que é uma boa metáfora de programação? . Outra dica é que os não programadores em geral não conseguem as complexidades de um ótimo algoritmo, mas são facilmente testados por interfaces com boa aparência. Dependendo da plataforma escolhida, você pode gerar interfaces com aparência bastante fácil para impressionar seu pai. Use por exemplo:

Espero que isto ajude.


+1 Gostei da sua postagem, mas acho que ninguém aqui sugeriu que esse garoto descubra quais são as expectativas do pai. Parece um pouco prematuro descartar as expectativas do pai sem saber o que são.
precisa saber é o seguinte

5

Eu apenas gostaria de acrescentar que eu estava em uma posição muito semelhante em uma época da minha vida, meu pai realmente não entendeu o que o reforço positivo significava. Mas, vendo que eu era persistente e resiliente em relação à sua desaprovação, às vezes dura, eu consegui manter isso. Cerca de vinte anos depois, o relacionamento com meu pai mudou muito, melhorou, mas as nuances sutis da época ainda estão lá.

Este é apenas um momento difícil da sua vida e o importante aqui é que você se diverte fazendo isso mais do que qualquer outra coisa.


5

Em relação à linguagem de programação, concordo que você deve se concentrar em apenas uma.

Na verdade, eu recomendo um que você ainda não tem: Python. Python é uma linguagem bastante fácil de aprender, mas também bastante poderosa. C ++, Java, PHP e Javascript são todos muito mais complexos.

Existem vários livros de Manning que ensinam programação usando Python. Eu consideraria fortemente "Olá, mundo!", Mesmo que seja voltado para uma população um pouco mais jovem.

Se você deseja continuar com o C ++, recomendo este livro:

Embora seja mais uma "referência" e menos um "tutorial". Não conheço um bom tutorial sobre C ++ - há muitos livros "ensine-se C ++ rápido" por aí, mas não acho que sejam muito úteis. (C ++ é uma linguagem bastante difícil de aprender primeiro; a maioria dos programadores de C ++ começou em uma linguagem mais fácil).


Concordo, python é uma escolha melhor como primeira língua. O C ++ é ótimo, mas é muito poderoso e difícil de usar - é como aprender a pilotar um avião antes de aprender a andar. Com o python, você pode usar as bibliotecas imediatamente e fazer coisas divertidas. Sua função string_add é de 5 linhas de código legível. Por exemplo, def string_add(a_string): \n\t sum = 0 \n\t for letter in a_string:\n\t\t sum += ord(letter) - ord('a')+1 \n\t return sum(a \ n - nova linha \ t -tab) ou o uso de programação funcional mais avançada é um liner. string_add = lambda a_string: sum(map(lambda ch: ord(ch)-ord('a')+1, a_string))
precisa saber é o seguinte

+1 Demorei cerca de um ano para aprender C ++, enquanto levei apenas dez minutos para aprender Python.
rightfold 2/08

+1 Eu também recomendaria a programação Head First, que usa Python.
David

4

Sobre C ++, Java, PHP, JavaScript e Android (para que você possa escolher entre eles, porque a tentativa de dominar tudo de uma vez provavelmente falhará):

  • C ++: É uma linguagem extremamente poderosa. Mas poderoso demais, implacável e enigmático demais para começar. Você precisa entender muito de muitas coisas para seguir em frente. Eu acho que isso em uma má escolha de idioma para iniciar também o programa.
  • Java: Uma escolha popular para iniciantes. De certa forma, é o oposto do C ++: o C ++ oferece a você qualquer maneira imaginável de dar um tiro no pé, enquanto o Java tenta não permitir nada que possa estar além do seu controle, o que é de fato bastante paralisante. É um pouco simplista, trivial e restritivo demais para mostrar muita programação. E você não pode fazer muito em Java sem conhecer muito a API padrão e várias estruturas. Java como uma tecnologia tem muito a oferecer, mas tem suas deficiências como uma linguagem.
  • PHP: uma linguagem muito popular, principalmente por causa de sua baixa barreira de entrada. O PHP como linguagem amadureceu e agora é rico com os recursos que se espera de uma linguagem moderna. No entanto, o PHP carrega muita bagagem por razões históricas. Portanto, embora ele permita escrever bons programas, poucas pessoas o fazem e você não encontrará tanta informação sobre como fazê-lo. E a biblioteca padrão está uma bagunça. Se você decidir escrever PHP, meu conselho é começar a trabalhar com uma estrutura desde o início, pois eles geralmente promovem soluções robustas para problemas comuns. Pessoalmente, recomendo o symfony , flow3 e CakePHP . No entanto, meu conselho é: não comece com isso.
  • JavaScript: uma linguagem surpreendentemente poderosa, quando você a conhecer. Ele tem algumas "peculiaridades" , mas na verdade você deve ser capaz de conviver com isso. Embora inicialmente usado para adicionar interatividade às páginas HTML, o JavaScript agora pode ser usado em vários campos. Além de uso clássico, ele pode ser usado para Desktop e móvel desenvolvimento de aplicativos com plataformas como Appcelerator , PhoneGap e AIR e para criar servidores usando node.js .
    Existem muitas bibliotecas e estruturas JavaScript por aí. Eu sugiro que você verifique nocaute e jQuery , bem como qooxdoo e ext.jsse você estiver procurando por algo completo. Além disso, para o desenvolvimento no servidor , você deve conferir o express.js .
    Além disso, gostaria de salientar o CoffeeScript , uma linguagem que compila para JavaScript, mas tem alguns extras, que são úteis.
  • Android: Ao contrário dos outros quatro, esta é uma plataforma. As plataformas devem ser escolhidas dependendo do que você deseja fazer. Se for o desenvolvimento de aplicativos móveis para dispositivos Android, vá em frente. Não tenho certeza se é a melhor coisa para começar, mas, no final das contas, você precisa criar coisas que considera legais.

De qualquer forma, o que é realmente importante é que você ache isso agradável. Que você cria coisas, você acha legal. Isso resolve algumas de suas necessidades ou é divertido brincar. A programação é para quem gosta. Você precisa de um conjunto de ferramentas que permita criar aplicativos com poucas linhas de código. JavaScript / CoffeeScript pode ser um bom ponto de partida.
Pessoalmente, gostaria de indicá-lo para Ruby. Ele me ensinou muito sobre programação e me sinto infeliz por não saber disso quando comecei a programar. Basicamente, existem dois livros formidáveis ​​(ambos disponíveis gratuitamente):

  • Why's Poignant Guide - Pessoalmente, foi um pouco demais para distração (piadas, desenhos animados etc.) nesse livro para mim, mas você pode gostar disso.
  • Ruby Pragmático - Funcionou perfeitamente para mim. É um pouco seco, mas simplesmente lida com o essencial.

Junto com isso, sugiro que você verifique os sapatos . É uma ótima ferramenta com uma incrível ajuda integrada, incluindo referências, tutoriais e demos. Você terá suas primeiras coisas em funcionamento em poucos dias.

E, provavelmente para mais tarde, eu gostaria de apontá-lo para haXe . Eu acho que é um ótimo idioma (meu idioma preferido), e há um novo guia para iniciantes , lançado recentemente. No entanto, o haXe não possui ferramentas disponíveis, o que torna igualmente simples a criação de aplicativos como no JavaScript e Ruby. Portanto, você pode achar entediante ou até frustrante, o que derrota todo o propósito.


Definitivamente, sugeriria que ele cortasse os dentes em C / C ++. Fiz o mesmo e achei o aprendizado de qualquer idioma surpreendentemente fácil, porque quase todos os idiomas modernos derivam algo do C / C ++.
Cyprus

@ Chipre: Embora eu concorde, ambos valem a pena aprender, também não acho que seja uma boa opção para começar a aprender a programar. Além disso, não vejo como a família LISP ou Smalltalk derivaria algo essencial de ambos.
Aug2

Acho que devemos deixar o garoto decidir o que ele quer fazer. Dito isto, LISP / SmallTalk são muito esotérico para ser de utilidade geral (minha opinião)
Chipre

@ Chipre: eu ofereci apenas conselhos. No final, ele deve escolher. Eu não quis dizer LISP ou SmallTalk, mas a classe (parcialmente) sobreposta de linguagens modernas que eles criaram, principalmente Ruby, Squeak, Objective-C, Lua, Scala, Erlang, Clojure, JavaScript, F #, Nemerle, Scheme. Todos os quais são de fato usados, alguns até mesmo entre os idiomas mais populares por aí .
Aug2

3

Isso é bastante para esperar em um mês. Em vez disso, você deve tentar se concentrar em aprender um idioma ou paradigma de cada vez, ou isso pode ser esmagador. Empurrar demais de uma só vez também é uma boa maneira de se desligar. Você pode aprender melhor trabalhando em um programa específico de seu interesse. Se o telefone com Android é o seu interesse, provavelmente é melhor usar Java em vez de C ++. Ele pode estar esperando alguma coisa da interface do usuário whiz-bang como um cliente típico, portanto, não desanime com sua decepção :)

Alguns livros do Head First podem ajudar a tornar o aprendizado um pouco menos seco, se você for forçado a ficar com os livros.


3

Eu acho que você deve guardar as coisas mais formais por enquanto e dar uma olhada no Scratch - http://scratch.mit.edu/ - permite lidar com a maioria das construções de programação de uma maneira mais fácil, enquanto ainda aprende as coisas você precisa de loops etc.

Ele também permite multithreading impecável, que talvez seja a parte mais difícil de fazer manualmente, e que é necessária para fornecer resultados interessantes no mundo de hoje.

Não o subestime porque ele usa cores e uma abordagem de programação semelhante a um lego brick. Você pode fazer muito com isso, sem se perder nos detalhes técnicos.


+1 - Scratch é uma maneira fantástica e divertida de aprender. Na verdade, ele foi projetado com a faixa etária em mente, mas ainda é o Turing Complete. Além disso, consulte BYOB (Build Your Own Blocks) para obter uma extensão orientada a objetos para o Scratch.
Morgan Herlocker 2/08

3

Pergunte ao seu pai se ele poderia projetar um edifício alto na sua idade. É isso que é programação. Leva tempo para aprender, porque há muito o que aprender. É como andar de bicicleta, apenas você tem mil pedais, marchas, manípulos, botões e não pode escolher qual deles usar a qualquer momento. É preciso prática.

Eu não duvido de você. Você se interessou pelo C ++ desde o início em seu objetivo de se tornar um programador. Isso é impressionante para mim .

Aguente firme e boa sorte com sua carreira como programador!


3

Eu sei que já existem muitas respostas. Mas não vejo esse conselho: tente ajudar seu pai. Tente escolher algo cabeludo no livro C ++, que você possa entender e peça para ele ajudar.
Dê a ele o livro e deixe-o rastrear em C ++. Tenho certeza de que isso o fará perceber como é difícil codificar.


3

Tente mudar essa situação para seu próprio bem. Apenas aceite que o que você realizou até agora não é suficiente e tente fazer melhor ... Você terá tempos difíceis o suficiente quando estará trabalhando para um chefe, se não começar a superar isso e melhorar a partir de agora .

Se eu trabalhasse duas vezes mais duro quando tinha a sua idade ...


3

A contribuição do seu pai não conduz ao seu processo de aprendizagem. Sim, existem várias maneiras de aprender programação como outras pessoas mencionaram. No entanto, você mostrou um progresso fenomenal em C ++ na minha opinião. Seu programa de adição teria sido algo que eu mal conseguia lidar depois do meu primeiro semestre em programação java.

Há duas coisas que você precisa resolver para continuar:

1) Lide com seu pai.

Olha, todo pai tem sonhos extravagantes para os filhos. No entanto, suas expectativas podem ser muito altas e, eventualmente, levarão a algo que nem é possível em alguns contos de fadas. Eu recomendo trazer alguém externo à situação para avaliar melhor seu progresso e trazer seu pai à terra. Você pode tentar conversar com familiares / amigos que você conhece com experiência em programação ou mesmo as pessoas desta comunidade podem enviar um e-mail para ele em nome de nossas próprias experiências e conhecimentos. Este é o passo mais importante de todos, porque se seu pai não se acalmar, você perderá o interesse todos juntos.

2) Encontre um foco.

Não é propício para aprender tudo de uma vez. Escolha um idioma e fique com ele. Enquanto você lê um livro em um idioma específico. Seguir os exemplos do livro literalmente não é o caminho a seguir. A regurgitação é um processo de aprendizado para alguns, mas não para todos (especialmente eu). É importante atacá-lo de todos os ângulos que você puder e que interessam. Livros de programação de autores diferentes no mesmo idioma, mas usos diferentes podem aumentar sua curiosidade sobre como você gostaria de usar o idioma e os conhecimentos para seu próprio desejo de programação (criar jogos? projetar aplicativos? testar? ect, ect). Você também pode ir em uma aventura pessoal para criar um programa. Descubra o que você quer fazer, independentemente do que você sabe no momento, e pesquise-o enquanto programa. Com o passar do tempo, você Eventualmente, quero experimentar outras linguagens de programação relacionadas ou não. Você também pode perceber que não deseja programar todos juntos.

Acima de tudo, lembre-se de que não é o resultado final que importa, é a jornada. Não se esqueça de se divertir!


3

Você recebeu bons comentários e conselhos sobre os aspectos de programação da sua situação. Mas eu quero adicionar algo de uma perspectiva diferente ...

Tenho a impressão de que você está tendo pensamentos negativos sobre seu pai - ele pressionou você e fez alguns comentários que lhe causaram algum pesar e preocupação - e que tiraram a diversão da programação. Isso é uma pena e acho que a maioria das pessoas aqui concorda que a programação é divertida - eu programa há mais de trinta anos e ainda acho divertido.

Mas acho que seu pai está realmente do seu lado. Ele fez o que achava certo, estava tentando ajudar, comprou os livros para você para começar bem. Mas ele entendeu errado (e eu falo como pai, às vezes entendemos errado!). Para ele, é provável que os livros tenham começado em sua carreira de arquitetura (presumo que isso tenha começado antes da Internet e do www estarem disponíveis, se é que existem). Então, para a mentalidade dele, os livros são onde você começa.

Então, supondo que seu pai esteja do seu lado (e tenho certeza de que ele está), o problema é que ele simplesmente não entende o quão difícil pode ser quando você começa a programar - então mostre a ele todas as respostas que ele tem postado aqui - Tenho certeza de que seu pai é um cara legal e ele entenderá e apoiará você.

E boa sorte com sua programação - parece que você está começando bem.


talvez adicionar 'prodígio' não seja demais, não é? Criar um programa como esse será difícil para muitos de meus amigos, posso garantir
#

@ Chipre - eu não estava fazendo nenhum comentário sobre suas habilidades específicas (embora eu esteja certo de que elas estão bem). Realmente tinha a ver com o pai dele.
Simon Knights

3

Uma coisa não mencionada nas outras respostas:

Como você deve saber, ser criança (tenho 14 anos) e receber instruções para aprender a programar com livros sem graça não é a coisa mais fácil. Estou sempre me distraindo. Eu disse a ele antes que não precisava comprar livros e que podia assistir a tutoriais on-line. Mas não, ele é tão antiquado. Ele está apenas me deixando usar os livros.

Você certamente precisa trabalhar nessa parte. A Internet é a ferramenta crucial de todo programador e você precisa trabalhar com ela.

Em primeiro lugar, a programação é sobre resolução de problemas. Quando você não sabe como executar o X no idioma XYZ, pesquise no Google e procure soluções. * Encontrar soluções rapidamente é tão importante para um programador quanto usar um teclado.

Em segundo lugar, outra habilidade crucial é usar a documentação . Os livros geralmente são como tutoriais - oferecem orientação, mas não oferecem conhecimento completo - e é aqui que a documentação é útil. Por exemplo: você está programando em C ++, tem um mês de experiência. Mais cedo ou mais tarde (eu diria que em breve) você precisará usar a biblioteca padrão ... ou talvez você já a tenha usado? Nesse caso, é um bom sinal, provavelmente o seu livro não é ruim nesse caso. De qualquer forma, será útil saber o que já está presente nas bibliotecas padrão C ++ e o que não está. Para isso, é útil manter uma referência como http://cplusplus.com/ aberta o tempo todo durante a programação.


A internet é crucial para a codificação e ainda mais crucial para aprender a codificar. Se seu pai não entende e espera que você aprenda a programar usando apenas os livros , a abordagem dele é contraproducente e faz com que você progrida mais lentamente (e possivelmente tenha maus hábitos).


2

Ele não tem idéia do processo de se inclinar para o programa. Você pode ler todos esses livros e ainda não conseguir escrever nada decente, porque o que leva mais tempo é o entendimento genuíno do que você pode fazer e como abordá-lo.

Você disse ao seu pai que gosta de programar - não deixe que ele estrague tudo para você. E certamente não tente aprender 5 linguagens de programação, pelo menos não agora. Atenha-se a um relativamente simples como o Java, que pode ser transferido para os outros depois que você o dominar.

No que diz respeito aos livros, a propósito, é o caminho certo para fazê-lo, porque você aprende sobre o idioma da maneira certa. Os seguintes tutoriais costumam levar a maus hábitos etc.

Boa sorte; e que ele saiba que você está fazendo isso corretamente, o progresso é lento, mas você está aprendendo muito enquanto está fazendo isso.


2

Eu acho que muitos programadores com idades entre 25 e 35 anos cresceram jogando Nintendo e Sega. Uma boa parte deles / nós fez a transição mental de por que jogar um jogo quando você pode fazer o seu próprio. É uma motivação muito egoísta que pode levá-lo a ser um programador melhor. É um começo. Mais tarde na vida, você pode passar da criação de videogames (problemas virtuais) para jogos com apostas mais altas (problemas do mundo real). Assim como esta prescrição para esse paciente não interagir negativamente com outro medicamento prescrito, esses caminhões podem fazer a maior quantidade de entregas com a menor quantidade de gás para reduzir a poluição, ou como posso garantir que a compra desse estoque comprará pelo preço que eu quero quando existem milhares de outros comprando ao mesmo tempo.


1

A arquitetura está enraizada no mundo físico, sobre o qual você está aprendendo desde que nasceu. Para um estudante universitário de arquitetura, brincar com legos seria uma perda de tempo. Seu pai assume que, como você sabe matemática, conhece os fundamentos e deve poder começar a produzir coisas. Bem, isso não é verdade. Ele não sabe nada sobre programação, porque nem percebe que não é um ramo da matemática .

A programação é um mundo novo. A melhor maneira de se tornar especialista nisso é aprendê-lo como você aprendeu no mundo físico: mergulhe e experimente. Em uma palavra, toque. É hora de lego.

Para comparação, considere os astronautas. Eles também têm um mundo novo para o qual estão totalmente despreparados. Eles precisam começar com o básico, como mover-se pela sala.

Como próximo passo, sugiro criar um jogo em que o computador escolha um número aleatório e tente adivinhar, e ele informa se você está adivinhando muito alto ou muito baixo.

Experimente também muitos idiomas diferentes! Não de uma só vez, mas talvez por uma semana de cada vez.

Quando você ganha experiência, criar um videogame completo é um dos maiores desafios que você pode enfrentar como programador de jornada. Os videogames tocam quase todos os cantos da nossa disciplina, e a criação de um é uma ótima maneira de desenvolver suas habilidades. É também um lugar perfeito para experimentar e aprender em níveis cada vez mais altos de habilidade.


0

Aproveite o seu tempo aprendendo linguagens de programação, quanto mais você pratica, mais você aprenderá a programar. Desta vez, você criou um programa muito simples, que é bastante divertido para iniciantes, mas à medida que avança, certifique-se de criar um bom programa que poderia ser usado pelo seu pai, bem, se você me perguntar, foi assim que ajudei meu pai no trabalho dele.

Apenas converse com seu pai e explique as coisas, e tenho certeza de que ele realmente entenderá e tenho certeza de que um dia você será um excelente desenvolvedor.


0

Eu estudo como engenheiro de software e o progresso da aprendizagem de programação na minha educação tem sido mais do que apenas ler livros.

Antes de tudo, recomendo que você aprenda C, porque é uma linguagem simples e muitas outras linguagens (como C ++, objetivo-c) são construídas sobre C. A maneira como fizemos foi comprar um micro chip ( no nosso caso, um Atmel Mega16 com um kit STK 500, que é apenas uma placa com LEDs e botões) e, em seguida, apenas brincamos com ele, programando programas para fazer bip e bop. Isso é mais divertido do que ler e escrever programas olá mundo IMO.

Quando C se tornar um passeio para você, vá para C ++ e programação orientada a objetos (OOP). OOP é o conceito-chave em muitas linguagens e maneiras de pensar em programação e, portanto, obrigatório se você é sério com sua programação. Certifique-se de entender a teoria por trás da OOP antes de mergulhar nela - caso contrário, pode ser um processo difícil :-)

Por último, mas não menos importante, recomendo que você estude diferentes tipos de dados, como pilhas, filas, pilhas etc., que são ótimos para entender quando você está programando e lendo sobre novas linguagens.

Boa sorte meu amigo!


Eu recomendaria algo diferente de C ++ para aprender OOP. Python é bom. C ++ é uma linguagem tão complexa que tentar aprender conceitos de OO é muito doloroso; depois de realmente aprendê-los, você saberá o que fazer com muitos dos recursos de aparência opaca.
Ncshaels
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.