# Introdução à programação/Programar
### Motivação

Nos dias que correm, não saber trabalhar com computadores é considerada iliteracia (analfabetismo) e o custo por não saber utilizar um computador pode ser caro.
Quando usamos computadores, podemos fazer muitas coisas. Uma criança pode usar a Internet para passar uma mensagem, um estudante pode usar uma planilha eletrônica para calcular uma média ou quantos pontos precisa para ser aprovado em cada matéria, um cozinheiro pode guardar suas receitas em software como o Word ou em um produto especializado para receitas. Na verdade, a quantidade de produtos especializados é tão grande que, se você procurar bem, certamente vai encontrar algum programa que faça algo bem próximo do que você deseja.
O problema é que, às vezes, queremos fazer algo específico: queremos um programa de computador que faça algo que servirá de forma única a nós ou a nossa empresa. Nesse caso, em vez de comprar um programa pronto temos que desenvolver o nosso próprio programa. Para isso é necessário dominar uma nova forma de manipular o computador: a programação. Nosso motivo pode ser um negócio, um trabalho escolar, um hobby ou mera curiosidade. Hoje em dia, programar um computador pode ser feito de várias formas. Você pode, por exemplo, modificar levemente o comportamento de aplicações por meio de macros, como é permitido em programas como Microsoft Word. Você pode fazer ainda modificações mais sérias por meio de linguagens embutidas, como pode ser feito também nos programas do Microsoft Office ou até mesmo em jogos de computador como Neverwinter Nights. Você pode também pegar um programa já existente de código aberto, ou software livre e modificá-lo. Ou você pode começar do início e programar praticamente tudo, certamente com ajuda de bibliotecas prontas que fazem parte do trabalho.
Para programar você tem muitas opções: pacotes que podem ser estendidos com macros ou linguagens embutidas, ambientes de programação point-and-click, linguagens mais fáceis de aprender e linguagens mais difíceis, mas que apresentam grande poder ou características apropriadas para grandes sistemas. Em todo caso, o espírito por trás de tudo é o mesmo: programar é dar ordens para o computador, mostrar como ele deve reagir ao usuário e como ele deve processar os dados disponíveis.
Praticamente não há limite do que você pode fazer com um computador. Computadores ajudam pessoas a falar, controlam aparelhos e levaram o homem a Lua de várias maneiras. Mesmo as coisas mais difíceis, como simular um sentimento ou inteligência, são estudadas com afinco em todo mundo. Alguns problemas são muito grandes e exigem a construção de computadores enormes. Outros são tão simples que podemos resolver em computadores simples, que estão dentro de equipamentos. A noção de poderoso também muda com o tempo: um chip que era usado em computadores pessoais em 1988, o w:Z80, hoje é usado em aparelhos como faxes.
Hoje é difícil imaginar um domínio da atividade humana onde a utilização de computadores não seja desejável. Assim sendo o domínio da programação é substancialmente ditado pela imaginação e criatividade. Podemos dizer que a grande vantagem de saber programar é a possibilidade de criar o que quiser, quando quiser. Não só para o PC, mas celulares, PDAs, entre outros. Claro que exige um pouco de esforço, porém para muitos esse esforço é na verdade um desafio cuja a recompensa é ver sua ideia transformada em realidade.

### A programação

Provavelmente você já ouviu a palavra programação, conhece o seu significado, mas, provavelmente, desconhece o que faz, como se faz e quem faz. Programar é fácil e divertido, a dificuldade, para maioria dos iniciantes pouco persistentes, é começar a perceber como um computador funciona.
Bem, um computador pode ser entendido de várias maneiras. Dentro dele, o que existe são sinais eletrônicos. Os humanos que os projetam normalmente pensam nesses sinais como "1"s e "0"s. Em certo ponto, passamos a pensar em algo conhecido como linguagem de máquina, ou seja, sequências de "1"s e "0"s, normalmente escritos como números inteiros, que indicam um certo comportamento, como somar dois números. Para ficar mais fácil ainda, essa linguagem de máquina é normalmente transcrita para uma linguagem de montagem ou Assembly que descreve as ações que um computador pode fazer por meio de w:mnemônicos, como ADD e MOV. Porém, já há algum tempo, nós fazemos o computador funcionar por meio de programas escritos em linguagens de programação, que tentam deixar a tarefa de explicar o que o computador tem que fazer mais fácil para os seres humanos, mesmo que, por causa da alta especialização da linguagem, apenas a alguns deles. Todas as linguagens de programação têm essencialmente o mesmo propósito, que é permitir ao programador humano dar instruções ao computador.
No nosso cotidiano a comunicação é feita de um modo natural e raramente temos consciência das regras que aplicamos na nossa linguagem. O destino da aprendizagem de uma linguagem de programação é exatamente a mesma: aplicação de regras, se possível de forma tão arraigada que pareça ser inconsciente (abstrair). Um bom programador entende os "meandros" da linguagem que usa e pode até mesmo ver beleza, ou feiura, em um código, da mesma forma que gostamos ou não de um texto as vezes não pelo seu conteúdo, mas pela forma como foi escrito.
As linguagens são criadas com duas motivações: linguagens de uso geral, que servem para fazer "qualquer coisa" e linguagens de uso específico. Se você quer fazer programas que tratem de problemas estatísticos, provavelmente linguagens como "R", uma linguagem criada para esse uso específico, são adequadas. Se você quer fazer um programa para calcular a folha de pagamento de uma empresa, provavelmente linguagens como COBOL, C, C++ ou Java, linguagens de uso geral, serão adequadas.

### Um Programa de Computador

Um programa de computador é como uma receita de cozinha: uma sequência de passos a serem executados. Se computadores cozinhassem em vez de processar dados, um programa típico poderia ser:
Porém, programas de computador trabalham com dados, e um programa típico real é (usando a linguagem Python)
Este programa (ou melhor, essa função) retorna a soma de dois números.