Primeira vez aqui? Seja bem vindo e cheque o FAQ!
x

Como um programador iniciante pode-se tornar um programador intermediário?

+2 votos
692 visitas
perguntada Jun 21, 2015 em Programação Computacional por danielcajueiro (5,171 pontos)  

Essa pergunta está relacionada com essa aqui.

Compartilhe

3 Respostas

+6 votos
respondida Jun 22, 2015 por Rodrigo Miranda (231 pontos)  
selecionada Set 28, 2015 por danielcajueiro
 
Melhor resposta

O Peter Norvig tem um texto muito bom sobre isso:

Teach Yourself Programming in Ten Years

E as sugestões dele sobre como aprender a programar são excelentes, então só vou reforçar um ponto e sugerir outro:

  1. Aprenda fazendo. Programação, assim como matemática ou tocar um instrumento (principalmente se for numa banda) é uma atividade que requer um modelo mental específico, que vai sendo construído aos poucos.

  2. Leia bom código. Com os repositórios de código livre, hoje é muito fácil encontrar código de sistemas de todo nível de complexidade. Procure bom código e estude, veja como as coisas são feitas. Prefira código mais simples e modular, e fácil de entender.

Eu reforço a recomendação do Daniel de um bom livro de algoritmos. O do Cormen et. ali, sugerido pelo Daniel, é realmente muito bom, mas talvez seja complexo para um programador iniciante. Talvez seja interessante começar com o livro do Sedgewick

Algorithms, 4th Edition, Robert Sedgewick

Algoritmos na verdade operam sobre estruturas de dados, então estudar estruturas de dados é fundamental. Não conheço livros recentes do assunto, mas um que eu gosto muito, tenho até hoje e foi muito útil durante todo o meu curso de computação é:

Data Structures Using C, do Aaron Tenembaum

Além disso, é bom saber como bons programadores pensam ao atacar o problema, e aí dois dos livros que eu recomento fortemente são:

Programming Perls, do John Bentley

The Practice of Programming, de Brian Kerninghan e Rob Pike

Boa programação!

+4 votos
respondida Jun 21, 2015 por danielcajueiro (5,171 pontos)  

Estou assumindo que você já é um programador em nível iniciante. Ou seja,

Nível básico: Um programador deve ser hábil para implementar algoritmos simples, em sua linguagem de escolha, usando controles de fluxo e loops. O ideal é que já seja capaz de modularizar seu código usando funções.

Isso significa que você já sabe conversar com o computador. Você já sabe pedir para ele seguir um caminho de execução ou outro, você já sabe pedir para ele repetir parte de um código, você já consegue separar seu código em módulos e, finalmente, você já consegue resolver problemas simples em sua área de interesse.

Como me tornar um programador em nível intermediário?

1) Você precisa perceber que um mesmo problema pode ser resolvido de várias formas diferentes e algumas delas são mais interessantes que outras.

Por exemplo, considere o problema de ordenação de números (veja essa pergunta relacionada). De quantas formas diferentes você consegue resolver esse problema computacionalmente? Você na vida real ordena ítens diferentes de forma totalmente diferentes. Por exemplo, considere que você gostaria de ordenar formulários pela idade das pessoas. Esse problema provavelmente você resolveria de forma diferente se fosse ordenar cartas de um baralho.

Um outro exemplo interessante é o caso da sequência de Fibonacci que pode também ser implementada de várias formas diferentes.

De uma forma geral, existem várias estratégias básicas que podem ser usadas para resolver um problema computacional, por exemplo,

a) Recursão

b) Divida e conquiste

c) Reduza e conquiste

d) Programação dinâmica

Um livro com uma excelente apresentação a esse assunto é:

Anany Levitin - Introduction to the Design and Analysis of Algorithms, 2011.

2 - Depois que você perceber que existem várias formas diferentes de resolver um mesmo problema, você perceberá também que cada forma de resolver um problema está associada a um custo computacional. Por isso, vale a pena a você dar uma olhada em Complexidade Computacional. Um livro muito bom (e clássico agora) sobre esse assunto é:

Thomas H. Cormen e Charles E. Leiserson - Algorithms

3 - Usando como base esses novos instrumentos na sua caixa de ferramentas que tal fazer uma aeróbica computacional? Um problema por dia? Você pode por exemplo trabalhar com os problemas do Euler Project

4 - Você deve começar a perceber que embora você se sinta mais a vontade com uma linguagem de programação, você é capaz de fazer programas simples em várias linguagens diferentes. Isso ocorre simplesmente porque linguagens estruturadas são bem parecidas. Especialmente, pyhton, C++, java... Todas elas vêm da mesma linhagem. Dependendo de sua área, escolha uma outra linguagem para brincar.

5 - Que tal agora brincar com bases de dados? Você pode baixar bases do banco central, IPEA ou IBGE e brincar de fundir essas bases e colocar num formato interessante para ser usado em regressão ou outro tipo de estudo.

6 - Agora você deve passar uma mudança de paradigma e perceber a importância de orientação a objeto. Sendo honesto, essa foi uma fase difícil para mim, pois para o tipo de programação científica que eu fazia, parecia não ser necessário. Entretando, aprendendo noções de programação a objeto, você será capaz de fazer programas melhor estruturados e mais fáceis de serem mantidos.

Eu acho que a idéia geral (independe da linguagem) você pode pegar no livro

Brett D. McLaughlin, Gary Pollice e Dave West. Head First Object-Oriented Analysis and Design Paperback, 2006.

Mas se você quizer realmente aprender os objetivos de Orientação a Objeto, você precisa ir para

Eric Freeman, Bert Bates, Kathy Sierra, Elisabeth Robson
Head First Design Patterns Paperback, 2004

Se você for realmente, você já estará próximo de ser um programador avançado.

Um exercício interessante é repetir os padrões desses livros na linguagem de seu interesse.

Áreas de interesse da computação científica:

Física

Economia

Outras perguntas relacionadas?

Qual a melhor linguagem de programação para começar?

Quais os melhores livros para iniciar em Python?

Quais os melhores livros para iniciar em R?

Como iniciar programação em Python?

Como um programador em nível intermediário pode-se tornar um programador em nível avançado?

+2 votos
respondida Jun 22, 2015 por Iúri Honda (141 pontos)  

Um livro que eu gostei bastante para iniciar Python (bem básico mesmo), é o livro do Charles Severance (Clinical Associate Professor of Information at the University of Michigan). Os livros dele são gratuitos e estão disponíveis no seu site.

Além disso, ele tem um curso muito didático no Coursera, chamado Programming for Everybody, da Universidade de Michigan.

Este curso é para quem quer realmente começar do zero. Este processo exige bastante humildade, principalmente pelo fato de que tudo sempre parece muito básico. Mas é treinando muito o básico que estou conseguindo avançar para o intermediário e futuramente para o avançado.

...