Retroceder Minha "Educação" [fechado]

13

Há um tempo atrás, decidi começar a programar. Eu realmente pulei em um idioma (Perl) e fui dali. O que lamento é que acabei de pular:

Não aprendi o básico (se você pudesse chamá-lo de básico).

Eu não aprendi sobre ciência da computação.

Esta questão, acredito, está me afastando do meu verdadeiro potencial. Onde devo "reiniciar"? Existem livros, artigos etc. que devo ler? Existem tópicos que um programador experiente deve saber? Qual é o seu conselho?

Dinâmico
fonte
Não estou claro sobre sua pergunta. Então, quando você decidiu começar a programar, foi para conseguir um novo emprego ou apenas para realizar algumas tarefas administrativas no seu trabalho ou apenas por diversão? Preciso entender de onde você é, para ajudar por que você se arrepende de começar dessa maneira e qual é esse problema em impedir você? Não gosto de fazer suposições.
@ JamesDrinkard: Foi apenas por uma questão de aprendizado! Eu não faço isso para viver.
Dynamic
Quais são os seus antecedentes? Você sabe alguma coisa sobre ciência? Matemática? Engenharia? Trabalho de madeira? :-) Em que tipo de programação você está interessado? Sem esses detalhes, é difícil dar uma resposta útil. Além disso, não se arrependa de participar - isso é ótimo!
Guy Sirton
@GuySirton: Eu sou um estudante do ensino médio. Eu realmente não tenho um motivo para programar, apenas faço!
Dynamic

Respostas:

21

Eu faria o seguinte:

Caminho A: O método semi-típico

  1. Aprenda um idioma com uma sintaxe mais regularizada, como Java, C # ou Python. O Perl é uma ferramenta incrivelmente útil, mas também é muito livre, em termos de como permite fazer as coisas. Os outros idiomas que listei são muito, muito menos.

  2. Obtenha um livro sobre estruturas de dados no idioma mencionado.

  3. Obtenha um livro sobre algoritmos no idioma mencionado.

  4. Obtenha código completo e eficaz Java / C # / Qualquer que seja a versão do Python.

Caminho B: O Caminho da Iluminação de Joel Spolsky (ou Morte, faça sua escolha)

  1. Obter o livro "Código"

  2. Obtenha o "The C Programming Language" da K&R

  3. Obtenha a estrutura e a interpretação da programação de computadores

No que diz respeito ao método, o método 1 ensina a programar de maneira mais regularizada. Os conceitos de Ciência da Computação até certo ponto (ainda não há teoria da complexidade, confie em mim) e fornecem uma linguagem melhor para trabalhar em projetos com outras pessoas e para criar aplicativos maiores.

O método 2 é mais rígido, é muito mais uma abordagem de fundamentos, com "Código" explicando o básico, a K&R introduzindo o material no nível da máquina e o SICP introduzindo os conceitos de nível superior. É um caminho muito mais difícil, mas mais focado.

Em ambos os casos, reserve um tempo. Roma não foi construída em um dia e nem habilidades de programação, mesmo que você seja um gênio. A programação de Peter Norvig em 10 anos é o ensaio habitual para o qual aponto as pessoas.

Termo aditivo:

Tanto quanto o material gratuito disponível: Python the Hard Way, conforme listado abaixo, é um bom começo; a partir daí, como pensar como um cientista da computação é uma continuação razoável.

Existem vários recursos em algoritmos por aí e, honestamente, você provavelmente pode alternar as etapas 3 e 4 sem problemas. Lembre-se, é aqui que a matemática realmente começa a aparecer, portanto, não tenha medo de pedir ajuda quando chegar a esse estágio. Este parece ser um guia gratuito razoável .

Realmente não existe um equivalente gratuito e coeso do Code Complete, por exemplo, embora o Code como um Pythonista pareça bastante sólido. O importante é concentrar-se em tornar seu código legível depois que você entender os fundamentos. Não é "necessário" da mesma maneira que ter toda a sintaxe de código correta, mas facilita muito a vida quando você ultrapassa pequenos programas ou trabalha em algo por um longo período.

Você pode achar que eu me concentrei principalmente em Python, é porque é o mais fácil dos três encontrar coisas gratuitas bem escritas. Acho que os tutoriais de Java da Oracle são bons, mas são um pouco secos e não são ótimos para iniciantes. C # está em uma situação semelhante, embora nenhum sofra de falta de documentação.

Além disso, sua primeira piada / piada de CS: você deseja "Refatorar" sua educação, não o Backtrack.

Engenheiro Mundial
fonte
Obrigado! Você teria algum livro on-line gratuito para ler? Fora isso, esta é uma resposta incrível!
Dynamic
5
+ 1 para Estrutura e interpretação da programação de computadores (SICP) pode ser encontrado on-line aqui: mitpress.mit.edu/sicp
NWS
Conhecendo Perl, o Python me dará muitos problemas para me acostumar?
Dynamic
1
Depois do Perl, a maioria dos idiomas será uma transição difícil. O Python é bastante fácil, porque existe basicamente uma maneira de fazer qualquer coisa, em vez de 50 maneiras de fazer uma coisa como a do Perl. O grande truque do Python é determinar qual versão da linguagem usar: 2.7 ou 3.x. Eu usaria qualquer que seja o tutorial que você escolher e partir daí. Quando você for melhor, poderá se ajustar ao outro à medida que os projetos surgirem.
Engenheiro Mundial
1
@kevincline: Na verdade, depois de fazer alguns exercícios em Python, isso está me causando muitos problemas. IMHO, algumas das coisas extremamente simples em Perl, são difíceis (er) em Python.
Dynamic
4

Eu diria que o objetivo é aprender Python da maneira mais difícil ; é uma boa abordagem. Vá de lá; levará tempo suficiente para que você tenha tempo para encontrar outros recursos.

Na minha opinião, o "caminho B" mencionado em outra resposta não é apropriado nesta fase.

Dave Newton
fonte
1

Bem, comecei pelo mesmo motivo que tinha algum conhecimento no lado do hardware e fiquei intrigado com a programação. Eu gosto de aprender coisas novas.

Comecei com os arquivos em lote do DOS, QuickBasic, Visual Basic, VBA, MASM, com o Access para trabalho de banco de dados antes de conseguir meu primeiro emprego. Para mim, esse foi o melhor caminho, começando simples e depois construindo a partir daí.

Eu diria que decida o que você mais gosta sobre programação e siga essa rota, scripts, desenvolvimento web, programação para Windows, etc. Se você não souber, comece a trabalhar com algumas linguagens para ver o que você gosta. Você vai precisar de tempo embora. Demora cerca de 5 anos para ficar realmente bom com uma linguagem como Java ou talvez C ++, IMHO.

Como uma linguagem para ajudar a aprender o desenvolvimento da Web, o JavaScript é definitivamente o PHP, e o Python é popular, mas isso é IMHO. Supõe-se que você conhecerá ou aprenderá HTML / CSS. Eu realmente subestimei o javascript, apesar de usá-lo desde 2001. Fiz a mesma coisa com CSS e não achei importante. Eu mudei de opinião sobre isso também.

Quando tento determinar uma tendência, vou para http://www.indeed.com e clico no link de tendências na parte superior esquerda da página. Depois, coloquei palavras-chave como PHP e Python e vi quais estão sendo descartadas para os cargos reais disponíveis na Internet.

Isso é da perspectiva de uma carreira e, com base no que me traz mais valor para os clientes (empregadores). Não apenas da perspectiva de aprendizado.


fonte
Se eu dissesse que quero aprender um idioma que me ajude no desenvolvimento da Web, mas ainda possa fazer muito mais, o que você recomendaria?
Dynamic
-1

Aprenda sobre os algoritmos da forma mais básica, esqueça os idiomas por um tempo. Classificação de vetores, palavras, etc. Freepascal é uma linguagem agradável para começar com essas coisas, eu amo Perl, mas com todos os seus atalhos e coisas legais, muitas vezes você estará negligenciando o algoritmo inerente ao programa.

alfa64
fonte