Iniciando no mundo da programação
Autor: ronaldim-programmer | Publicado: 2011-09-07T16:06:00-07:00

fonte: http://www.hardware.com.br/dicas/iniciando-mundo-programacao.htmlTodas as pessoas que estão dando os  primeiros passos no mundo da programação se deparam com uma questão  fundamental: Qual linguagem de programação aprender primeiro ? Este  pequeno texto tenta de alguma forma dar uma resposta para esta pergunta.Antes de mais nada, lembre que esta é apenas a minha opinião e muitos  provavelmente não concordam com meu ponto de vista, mas pelo menos  acredito que possa servir como um ponto de partida.

Mesmo que você já saiba programar, este texto pode esclarecer alguns  conceitos muito importantes, mas lembre-se que ele foi criado para  pessoas que estão começando a escrever suas primeiras linhas de código.  Eu não vou ensinar a programar nada aqui, apenas tentarei traçar alguns caminhos para que você possa iniciar  sua jornada da forma mais tranqüila e produtiva possível.

Antes de mais nada, vamos ao básico:

Para se criar um programa para computador, você precisa de uma linguagem  de programação e um compilador ou interpretador ou máquina virtual.

Definições e diferenças entre Compilador, Interpretador e Máquina Virtual:
Um compilador é um tradutor capaz de traduzir um texto  escrito por um programador (código fonte) em um código binário de uma  determinada arquitetura de processadores. Este código gerado é  incompreensível para o ser humano, mas pode ser lido e executado pelos computadores.
O ciclo de desenvolvimento então se estabelece da seguinte forma: o  programador escreve um texto seguindo as normas e regras estabelecidas  pela linguagem de programação. Em seguida, o programador executa o  compilador, que verifica se este texto escrito pelo programador não contem nenhum erro e o traduz para uma seqüência de  zeros e uns (código binário), que o computador (Sistema Operacional) é  capaz de entender. Depois disso, basta que o usuário execute o programa  final gerado para ver o resultado. Resumindo, o processo seria:
1- Programador escreve o código fonte e executa o compilador
2- Compilador procura por erros de gramática e de semântica e gera um arquivo executável (binário).
3- Programador executa o código binário e o testa.
4- Os 3 passos anteriores são refeitos até que o programa esteja completo.
5- Usuário final executa o código binário gerado pelo compilador (no Windows, os conhecidos arquivos com a extensão EXE).

Um interpretador difere dos compiladores pelo fato de  nenhum código binário ser criado. O programador escreve o código fonte e  este pode ser executado diretamente através de um interpretador. O  interpretador irá ler o código fonte procurando por eventuais erros, e ao mesmo tempo, já o executa e mostra  para o usuário o resultado. Desta forma, com a utilização de  interpretadores ao invés de compiladores, o ciclo de desenvolvimento se  torna mais simples:
1- Programador escreve o código fonte e executa o interpretador.
2- O interpretador lê o código fonte a procura de erros, e conforme vai lendo as instruções, vai executando-as.
3- Os 2 passos anteriores se repetem até que o programador alcance sua meta.
4- Usuário final executa o interpretador, que por sua vez lê o código e executa todas as operações lá descritas.

Por sua vez, uma máquina virtual é algo que fica entre  os 2 casos anteriores. No caso das máquinas virtuais, o programador  escreve um código fonte e executa um programa (compilador) que irá  traduzir o texto redigido pelo programador (código fonte) em um código binário, assim como acontece com os  compiladores tradicionais. Mas a grande diferença neste caso, é que o  código binário gerado não pode ser executado diretamente pelo  computador. Embora ele seja binário, ele ainda é incompreensível para o computador. Para que o computador possa executar  este código, é necessário uma máquina virtual. A máquina virtual traduz o  código binário gerado pelo compilador em um código binário que o  computador (Sistema Operacional) consegue entender.

Comparação:
A utilização de máquinas virtuais pode parecer meio estranho para alguém  novo na área da programação, mas esta técnica trouxe grandes avanços, e  está sendo cada vez mais usada. A principal vantagem, é o fato de ser  muito fácil executar um mesmo aplicativo em sistemas distintos. Um código binário criado a partir do método  tradicional dos compiladores só pode ser executado no Sistema  Operacional onde foi criado, já um código gerado por uma máquina virtual  pode ser executado em diversos Sistemas Operacionais diferentes (desde que exista uma máquina virtual existente para aquele  determinado Sistema Operacional). Ficou confuso ? Pense no Java. Você  pode criar um programa no Windows, e eu poderei roda-lo no Linux,  FreeBSD, MacOSX, Solaris e muitos outros Sistemas Operacionais sem fazer nenhuma alteração no seu programa.
Por outro lado, esta camada de tradução a mais criada pela máquina  virtual torna a execução do programa mais lenta quando comparada ao  método tradicional de compilação.
Já as linguagens interpretadas são ótimas pois simplificam o processo de desenvolvimento.

Tipos de linguagens de programação:
As principais linguagens de programação modernas podem ser dividas (de  forma simplificada) em 2 grandes grupos: linguagens de programação  procedural (Basic, C, Pascal, ..) e linguagem de programação Orientadas à  Objetos (Java, C#, Smalltalk, ..).
As linguagens procedurais são, na minha opinião, mais simples de se  entender por isso recomendo que inicialmente você comece a estudar essas  linguagens e deixe um pouco de lado as linguagens orientadas à objetos.
No desenvolvimento de um sistema procedurais, você deve descrever  diversas instruções dizendo passo-a-passo o que exatamente o computador  deve fazer. Já as linguagens de programação Orientada a Objetos tentam  simular o mundo real no computador, através da criação de classes, métodos, atributos, etc. Desta forma, o programador  descreve o programa de uma forma mais abstrata, o que pode tornar a  programação um pouco mais complicada para os usuários iniciantes.

Bom, chega de conversa! Vamos voltar para pergunta inicial: Qual linguagem de programação utilizar para iniciar no mundo da programação ? A resposta é............ DEPENDE ! Vou tentar dividir em tipos de personalidade. Ai você pode analisar a que melhor se encaixa, e assim poderá escolher a linguagem que provavelmente será mais produtiva para você:

Caso você queira algo mais fácil de aprender, eu recomendo iniciar com  Pascal. Ela é uma linguagem que não é muito mais utilizada hoje em dia,  mas é ótima para aprender, pois é uma linguagem que possui uma estrutura  muito bem feita. Mas não tente ir logo de cara para o Object Pascal, pegue um compilador de Pascal puro. Você  encontra mais informações sobre esta linguagem no Wikipedia.

Caso você seja mais "nerd" e tenha paciência e vontade de aprender, você  pode tentar começar programando em C (mas fique longe do C++, aprenda C  puro primeiro). É uma linguagem bastante difícil de se aprender, mas  depois que você sabe ela, qualquer outra vai parecer muito fácil! É uma linguagem muito utilizada ainda nos dias  de hoje e todo bom programador tem que saber.

Caso você goste de jogos de computador e queira aprender a programar  para desenvolver jogos, recomendo a linguagem Blitz Basic (ou suas  variantes, Blitz3D, BlitzPlus ou BlitzMAX). Ela é muito, muito fácil de  usar e é totalmente voltada para o desenvolvimento de jogos para computador. Você encontra mais informações  sobre ela em: www.blitzbasic.com

Caso você esteja pensando em aprender Java como sua primeira linguagem  de programação, eu te digo: não faça isso! Eu programo com Java faz mais  ou menos 6 anos e não a recomendo como linguagem para se iniciar no  mundo da programação. Caso você não tenha uma ótima base de Orientação a Objetos previamente estabelecida, Java  será uma linguagem bastante complicada e muito confusa. Por essas  razões, não acho que vale a pena começar com ela.

Mas o mais importante: independente da linguagem que você queira  aprender, existem outras coisas muito mais importantes para se estudar:  Desenvolvimento de Algoritmos e Estruturas de Dados.
Para fazer um programa de computador, você precisa ter uma sólida base  destes 2 temas. Sem saber isto, você nunca será um bom programador em  linguagem alguma! Saber quais os comandos da linguagem não é nada, você  tem que saber o que fazer estes comando, e é aí que o estudo de Desenvolvimento de Algoritmos e também de Estrutura  de Dados é que vai te ajudar.
Para estudar estes temas, recomendo fortemente o livro Algoritmos:  Teoria e Prática (Charles E. Leiserson, Clifford Stein, Ronald L. Rivest  e Thomas H. Cormen). Este livro, embora tenha um preço um pouco  elevado, contem simplesmente tudo sobre o tema. Vale muito a pena estuda-lo caso você realmente queira se tornar um  programador um dia.