Past If declarações Matrizes, loops ... E agora?

9

Desisti de programar há pouco mais de um ano, quando continuava atingindo esse muro. Estou revisitando o assunto porque quero criar aplicativos básicos para Android. Mas sinto que meu conhecimento limitado não será suficiente.

Aqui está o meu problema.

Li alguns livros e assisti a tutoriais em vídeo em C # / Java, segui exemplos e depois terminei o livro. No final, eles sempre parecem me deixar perplexa quanto ao que fazer a seguir.

O que significa que eles ensinam você a partir do seu aplicativo básico "olá mundo", até os ifs e matrizes, então aparentemente esperam que você saiba como entrar no mundo da codificação e criar qualquer coisa.

Estou faltando alguma coisa aqui? Sei que esses são os elementos básicos de todos os programas, mas os livros que leio nunca me mostram o que fazer a seguir.

A resposta fácil, suponho, seria "começar a codificar", mas onde? Eu li "Head First Java" por exemplo; até a parte em que eles dizem para você pegar tudo o que aprendeu e criar um jogo de corrida de cães ....

"tente não trapacear e veja o código fonte fornecido, você deve conseguir fazer isso agora" _ isso não é uma citação exata, mas basicamente foi o que me disseram .......

Meia hora atrás, eles estavam apenas explicando como fazer arrays; depois, sem nenhuma teoria, pretendia criar um jogo de trabalho?

A razão pela qual pergunto isso é porque receio que isso seja tudo o que devo saber para começar a codificar, mas parece que recebi uma pequena caixa de ferramentas e fui instruído a construir um arranha-céu.

Obrigado por qualquer conselho

user76625
fonte
"Jogo de corrida de cães" pode significar muitas coisas. Para iniciantes, isso envolve algum gráfico? Contanto que o que você esteja criando não envolva gráficos, eu acho que é perfeitamente apropriado para iniciantes. Talvez fazer carrasco vez apenas para evitar pensar sobre as imagens ...
jhocking
É bem possível construir um arranha-céu com essa pequena caixa de ferramentas - grandes programas são apenas coleções organizadas de MUITOS bits. Você não poderá AGORA , no entanto - precisa começar a construir uma casa de passarinho e seguir em frente. Como jhocking disse, não tente fazer nada com gráficos ainda - há uma boa razão para o material inicial ser sempre baseado em texto não formatado.
precisa saber é o seguinte

Respostas:

10

O que significa que eles ensinam você a partir do seu aplicativo básico "olá mundo", até os ifs e matrizes, então aparentemente esperam que você saiba como entrar no mundo da codificação e criar qualquer coisa.

Estou faltando alguma coisa aqui? Sei que esses são os elementos básicos de todos os programas, mas os livros que leio nunca me mostram o que fazer a seguir.

Na verdade não. Eles não são. Os elementos básicos de todos os programas são abstração e reutilização. Muitas linguagens de programação nem possuem matrizes ou ifs ou loops.

Existem alguns ótimos livros que ensinam como programar, em vez de como uma determinada linguagem de programação funciona, que parecem ser os livros que você está lendo.

Como criar programas, também conhecido como HtDP, é um livro. Ele ensina, bem, como criar programas. E faz isso fornecendo receitas a seguir para analisar problemas, resolvê-los, transformá-los em algoritmos e ainda mais em programas de trabalho.

Observe que "receita" é basicamente outra palavra para "programa"; portanto, em outras palavras, o livro ensina programas para humanos executarem em suas cabeças, a fim de gerar programas a serem executados por computadores. Quão legal é isso? :-)

Os autores estão atualmente trabalhando em um rascunho para uma segunda edição do HtDP , que você pode querer ler em vez da primeira edição. O material sobre programação imperativa foi removido e será abordado no segundo volume ainda não escrito de Como projetar componentes , mas você pode ler os capítulos ausentes da primeira edição.

Observe que o HtDP não assume nenhum conhecimento de programação e é direcionado a estudantes do ensino médio. Mas não deixe que isso o impeça: significa que você provavelmente será capaz de terminar alguns capítulos mais rapidamente, mas não acho que você ficará entediado.

Abstrações de concreto também é uma boa leitura em veias semelhantes. Como o HtDP, ele não assume nenhum conhecimento de programação.

Outro livro que você pode ouvir mencionado é Estrutura e Interpretação de Programas de Computador, também conhecido como SICP. É um dos melhores livros de programação já escritos e, novamente, não assume nenhum conhecimento de programação.

Ele é , no entanto, voltado para iniciantes completos que estudo no MIT . E assim, enquanto não assume qualquer conhecimento de programação, que não assumem um pouco de domínio do conhecimento, por exemplo, nas áreas de engenharia elétrica, física e matemática. Nota: eles não têm nada a ver com os conceitos ensinados, são apenas necessários para entender os exercícios e exemplos . Portanto, talvez seja melhor ler HtDP ou Concrete Abstractions primeiro e depois ler SICP.

Jörg W Mittag
fonte
11
Nunca ouvi falar de uma linguagem de programação sem uma ifdeclaração ou algum tipo de loop: não estaria completo sem elas.
Reintegrar Monica - M. Schröder
@ Martin Schröder: Existem linguagens de programação sem loopdeclarações e elas estão completas.
Giorgio
@Giorgio: Por exemplo? AFAIK você precisa de algum tipo de loop / goto.
Reintegrar Monica - M. Schröder
2
@ MartinSchröder: O Lambda Calculus é completo em Turing (na verdade, é o idioma para o qual esse termo foi inventado), e possui apenas abstração de funções e aplicação de funções. Nem sequer tem recursão, você deve codificá-lo usando um combinador de ponto de fixação! Por outro lado: existem muitas linguagens de programação que não são completas de Turing, como SQL (antes de 2003), ou mais sutilmente, C (a conclusão de Turing requer armazenamento infinito, mas C garante que você pode usar o endereço de qualquer coisa e armazene-o em uma variável de tamanho finito).
Jörg W Mittag
2
@ MartinSchröder: Ou, outra dica: existem linguagens de programação nas quais apenas compilar o programa pode forçar o compilador a resolver problemas difíceis. No C #, você pode codificar os problemas do 3-SAT como problemas de resolução de sobrecarga e fazer com que o compilador os resolva; Você parece pensar em "linguagens de programação" como linguagens imperativas , mas existem muitas linguagens não imperativas que podem representar cálculos complexos.
precisa saber é o seguinte
5

Bem, você não está em uma situação única. A maioria dos livros iniciados em linguagem de programação tende a se concentrar mais nos elementos básicos da linguagem e isso é uma coisa boa. No entanto, como aconteceu com você, no final, nos encontramos em uma situação em que aprendemos cada construto que o idioma tem a oferecer, mas não o podemos aplicar para resolver alguns problemas práticos. Em resumo, a diferença entre exemplos de texto e programas práticos pode ser preenchida apenas quando você tenta jogar com o código (como disse Telastyn). Aqui está o que eu geralmente faço enquanto aprendo coisas novas:

  1. Enquanto aprende com o livro, tente encontrar alguns cenários da vida real em que alguns exemplos / técnicas de código do livro possam ser aplicados.
  2. Tente misturar os programas de exemplo fornecidos no livro para criar algo maior e complicado. Depois disso, tente minimizar o código e escreva um código diferente que dê o mesmo resultado.
  3. Google para projetos práticos para o idioma em consideração.
  4. Depois de ter certeza de que aprendeu o elemento básico da linguagem, experimente uma estrutura de sua escolha. Pela primeira vez, escolha algo que tenha uma curva de aprendizado mais fácil.
  5. Procure um projeto existente e tente estudar seu design.
  6. Procure livros avançados que ensinam coisas mais avançadas sobre o design de aplicativos, como padrões de aplicativos, design e implementação de OO etc.

No final, trata-se de prática e pesquisa que o ajudarão a aprimorar suas habilidades de programação e, finalmente, torná-lo um arquiteto de muitos arranha-céus.

mlakhara
fonte
2

Veja isso em C #. É muito completo: http://www.programmersheaven.com/ebooks/csharp_ebook.pdf Eu mesmo usei isso há apenas meio ano. Eu uso o compilador #Develop com ele para os exemplos. Não posso ajudá-lo muito com Java, porque quase nunca o usei.

Quando chega a hora de programar, o que muitas pessoas não percebem é que você geralmente usa um SDK ou estrutura adicional para o que está projetando. Portanto, não espere pular imediatamente de Java ou C # para a programação por telefone, porque é provável que você precise de uma boa estrutura intermediária, e as curvas de aprendizado para eles podem ser tão cansativas quanto as curvas de aprendizado para as próprias linguagens de programação. Embora o tutorial em C # que publiquei cubra apenas C #, muitos dos conceitos abordados são vistos em outras linguagens orientadas a objetos, como Java.

Editar: o cenário que você descreve é, infelizmente, o caminho que muitos tutoriais seguem. Você não precisa seguir esse tutorial e, se funcionar da maneira que você aprende, provavelmente é melhor tentar escolher outro (não conheço nenhum, mas o Google provavelmente). Mas, para ter certeza, verifique se o autor do livro que você está descrevendo explicou o código linha por linha. Não se preocupe com o quão inteligente você é, apenas um prodígio poderia passar direto de um livro para um jogo de trabalho. Lembre-se de que os tutoriais não são, de modo algum, a medida padrão de habilidade, então escolha o que melhor ensina a você e não desanime!

person27
fonte
Ótima resposta, e gostaria de acrescentar que você deve decidir sobre um projeto que gostaria de realizar. Google maneiras de resolver os problemas que o projeto apresenta. Você aprenderá muito procurando maneiras melhores de resolver os problemas com que se depara.
mortalapeman
1

Sim, isso deve ser suficiente para criar programas super básicos. Nesse ponto, você tenta criar um programa um pouco mais complexo do que os livros que você fez. Quando você precisa fazer algo específico e não sabe nem como trabalhar com algum trabalho, pesquise na Internet ou peça a um professor / mentor. Isso levará a recursos mais avançados (e quase sempre a um beco sem saída, pois você, sem saber, escolheu algo muito mais complexo do que aquilo que pode fazer).

Nenhum livro vai te ensinar como resolver problemas.

Nenhum livro vai explicar como criar programas - isso vem com a prática. Nenhum livro vai te ensinar como fazer uma aplicação não trivial - há muita nuance; você aprenderia a criar essa implementação e não coisas assim.

A melhor maneira de aprender neste momento é brincar. Para brincar com o código para criar algo. Assim como os artistas geralmente começam a rabiscar pequenos petiscos que ficam progressivamente mais sofisticados e bonitos, os programadores também precisam dessa progressão exploratória.

Telastyn
fonte
11
"Nenhum livro vai explicar como projetar programas" - os autores de como projetar programas podem discordar :-)
Jörg W Mittag
11
@ JörgWMittag: Eles terão algumas técnicas e demonstrações comuns de programas típicos, mas qualquer coisa não trivial exigirá um alto grau de julgamento humano aprendido, que a partir de 2013 ainda não pode ser mecanizado.
Whatsisname
1

Eu realmente não me lembro se usei um livro para entrar na programação, mas acho que naqueles dias era mais um manual de referência de sintaxe do que um livro de tutorial. Ele me ensinou o que a linguagem de programação poderia fazer, mas não como criar um aplicativo real com ela.

Felizmente, havia alguns exemplos no livro que eu costumava digitar (sim, não havia exemplos de código fonte para download) e tentei descobrir como funcionava. Essa não é a melhor maneira de aprender programação, mas para mim foi divertido na época.

O que eu recomendaria é que você defina uma meta como " Desejo criar um aplicativo Javascript que desenhe um círculo saltitante " e depois use seu conhecimento já adquirido para iniciar e pesquisar tudo o mais nos SDKs / documentação e / ou aqui do idioma em SO.

Essa é a abordagem que estou usando quando tento pular para um novo idioma e aprender meus primeiros passos. A maioria dos livros que li nos últimos dias não estava satisfeita porque senti a mesma falta de algo importante . Felizmente, agora temos os internets, portanto, qualquer que seja o idioma que você queira aprender, você pode encontrar um código fonte na Internet e usá-lo para continuar seu aprendizado.

edit Obviamente, alguns livros mais gerais ensinando como projetar um aplicativo ou qual processo (SCRUM, XP, V-Modell) a seguir é uma boa adição ao conhecimento puro da linguagem.

Vergonhoso
fonte
1

Concordo com Jörg que você também deve ler alguns livros gerais sobre os conceitos de programação, em vez de aprender muitos detalhes sobre uma linguagem específica neste estágio. Em relação ao livro Como criar programas , ele é usado como referência neste curso , o que pode ser do seu interesse.

Caso contrário, outra ferramenta que outros não mencionaram é conversar muito com outros desenvolvedores . Lembro que, para mim, uma das maneiras mais eficazes de aprender a programar era passar muitas horas discutindo com colegas ou outros programadores sobre aspectos de programação, linguagens de programação, técnicas ou problemas concretos que eu estava enfrentando naquele momento em particular. A transmissão oral de conhecimento ainda pode ser um dos meios mais eficazes para aprender novas habilidades.

Giorgio
fonte
+1. Eu conheço pessoas que vão a conferências sem ir a uma única conversa. Eles apenas vão lá para passear nos corredores e discutir problemas com estranhos, apenas para ter um ponto de vista diferente.
Jörg W Mittag
0

Eu sugeriria encontrar projetos de código aberto e transformá-los em caixas de areia pessoais. Modifique comportamentos existentes, adicione novos comportamentos e exclua alguns também. Brinque, implemente suas próprias idéias e "e se eu tentasse isso".

Não estou defendendo que você converta outro projeto de código aberto e o reivindique por conta própria.

Estou dizendo que olhe para outros projetos de trabalho como um meio de ensinar a si mesmo como chegar aos próximos passos. Existem muitos sites disponíveis com código opensource para download. Aqui estão alguns que vêm à mente: CodePlex CodeProject

Matt Raffel
fonte
-5

Isso é vida dos codificadores. Você não conhece uma tecnologia, mas desenvolve um 'olá mundo' e se torna um especialista. Nas empresas (vida real) é assim que funciona. Boa sorte

user76655
fonte
2
Essa não é uma resposta muito útil.
precisa