A resposta-curta-que-cabe-em-um-tweet:
Programar é dar ordens para que os computadores façam o que você quer que eles façam.
Agora desenvolvendo um pouquinho mais:
O que é um computador?
Um computador basicamente faz cálculos e armazena dados. (A propósito, durante muito tempo, “computador” foi uma profissão, desempenhada majoritariamente por mulheres!)
Apesar de termos conhecimento da existência de computadores automáticos bem antigos – de antes mesmo da invenção da eletricidade -, quem descreveu formalmente o que viria a ser chamado de computador foi Alan Turing, que teve a vida retratada no recente filme O Jogo da Imitação, sobre o trabalho de criptografia dos aliados para quebrar o código da Enigma alemã.
O britânico imaginou em 1936, quando tinha 23 anos (!), uma máquina universal que seria capaz de entender instruções básicas e executá-las: ler uma fita, imprimir ou apagar um item e passar para o próximo item da fita. É a chamada Máquina de Turing (Veja como funcionaria uma na vida real – feita de LEGO!)
E é isso que todo computador faz até hoje. Isso mesmo. Tudo que os computadores mais modernos do mundo fazem pode ser transcrito em uma sequência dessas ações básicas aí (pelo menos é isso que prega a Tese de Church-Turing).
A questão é que pedir para a máquina de Turing fazer alguma coisa real geraria uma sequência gigante de passos – nada funcional. No fundo, o computador moderno faz operações muito básicas, é verdade, mas ele é capaz de fazer bilhões de operações por segundo e é isso que faz ele ser uma maravilha da vida moderna.
Como se dá ordens para um computador?
Como a gente consegue pedir com carinho coisas para um computador? Escrevendo programas!
O primeiro passo é pensar como o computador pode resolver determinado problema, isso é o chamado algoritmo (não confundir com o logaritmo das aulas de matemática). Um algoritmo nada mais é do que uma sequência de passos para se realizar alguma coisa. O exemplo clássico para entender este conceito é pensar em uma receita de bolo. Nela, você tem ingredientes e uma ordenação de passos para fazer algo, no caso, um bolo. A tradução dessa sequência de passos em uma sequência de códigos é chamada de programa, o algoritmo concretizado.
Geralmente, assume-se que um algoritmo deve satisfazer os seguintes requisitos:
- Ser um conjunto finito de instruções simples e precisas, que são descritas com um número finito de símbolos;
- Sempre produzir resultado em um número finito de passos;
- Poder, a princípio, ser executado por um ser humano com apenas papel e lápis;
- Não requerer inteligência do ser humano além do necessário para entender e executar as instruções.
Veja como seria um algoritmo para encontrar uma palavra em um dicionário, escrito em pseudocódigo, isto é, uma linguagem que o computador não entende. Ela não tem o rigor sintático que as linguagens de programação têm, por isso, é mais fácil para a gente compreendê-lo.
Pegue o dicionário
Abra o dicionário no meio
Olhe as palavras
Se “programação” está entre as palavras
Copie o significado e fim! =)
Senão, se “programação” está na primeira metade
Abra a lista na metade da esquerda
vá para a linha 3
Senão, se “programação” está na segunda metade
Abra a lista na metade da direita
vá para a linha 3
Senão
desista
E qual língua o computador fala?
O fato mais mind-blowing do universo (depois do “somos todos poeira de estrelas”) é pensar que tudo para um computador se resume em 0 e 1. 0 não passa corrente. 1 passa corrente.
Imagens? Música? Jogos? Sim, amigos, tudo 0 e 1. Vou dar um parágrafo para vocês respirarem.
(E um link para entender um pouquinho mais sobre isso)
O importante agora é saber que não escrevemos programas em 0 e 1! Graças a Deus! Nós usamos as famosas linguagens de programação. Existem várias delas. Várias. Algumas são mais próximas do chamado código de máquina (chamadas “linguagens de baixo nível”), outras, mais próximas da linguagem humana (chamadas “linguagens de alto nível”).
Cada um escolhe a(s) linguagem(ns) que quer aprender – mas é claro que existem as mais populares, que são aquelas utilizadas pela maioria das empresas de computação, como C, C++, C#, Python, PHP, Java, JavaScript etc… O Índice Tiobe lista quais são as linguagens mais populares no momento. Vale lembrar que os famosos HTML e CSS são linguagens utilizadas para construir páginas na web e não são considerados linguagem de programação, já que não construímos algoritmos com elas, apenas telas.
O algoritmo de estreia de 99,99% das pessoas é o “Hello, World” ou em bom português Olá, mundo. Ele basicamente faz a tela mostrar essa frase (imprimir, no termo técnico-histórico: antes de as telas surgirem, os desenvolvedores literalmente imprimiam os resultados dos códigos, nas máquinas de Telex).
Quem quiser comparar linguagens pode acessar o Rosetta Code, um wiki com diferentes algoritmos em que, em vez de escolher ler o artigo em inglês, espanhol ou português, você escolhe a linguagem de programação em que o algoritmo foi escrito.
Vejamos o “Hello, World” em algumas linguagens:
Python
print(“Goodbye, World!”)
C++
#include <iostream>
int main () {
std::cout << "Goodbye, World!" << std::endl;
}
Cobol
program-id. hello.
procedure division.
display "Goodbye, World!".
stop run.
Lua
print "Goodbye, World!"
[Disclaimer: repare que o artigo sobre o programa Hello, World mostra códigos que imprimem “Goodbye, World!”. Nossas pesquisas intensas concluíram que se trata de uma piada interna. :F]
É por isso que muita gente fala que aprender a programar é como aprender uma nova língua. Cada linguagem possui sua própria sintaxe, regras de pontuação e várias outras especificidades.
Mais alguma coisa que devo saber?
Sim, o computador é burro. Quer dizer, ele é lógico. E muitas vezes, a lógica é contra-intuitiva. Porque a lógica não se beneficia das ambiguidades da linguagem. O computador não raciocina ou reflete sobre qual era a intenção do programador ao escrever determinada instrução. Tem uma piada de programador que é mais ou menos assim:
A esposa dá as instruções para o marido programador ir ao supermercado: “Traga 6 ovos. Se tiver batata, traga 10”. O programador volta com 10 ovos e a esposa pergunta por que ele fez isso, ao que ele responde: “porque tinha batata”.
Assim como o marido programador, o computador interpreta as ordens de maneira literal, então, temos que refletir bem sobre como vamos pedir as coisas! É por isso que muita gente recomenda aprender a programar com lógica de programação.
Pronto! Agora você já sabe o básico sobre o fascinante mundo de fazer os computadores resolverem problemas! O que mais você gostaria de aprender? Deixe nos comentários e a PrograMaria vai se esforçar para te atender! 🙂
Este post contou com a colaboração e a revisão técnica de dois amigues incríveis:
L. Pereira. http://tia.mat.br/posts/
Ricardo Bittencourt, o RicBit. http://blog.ricbit.com/
Aimeê Ferreira é ilustradora e designer formada pela FAU-USP. Seu trabalho pode ser visto em http://www.aimeesf.com/
Um bela definição programação, adorei o texto.
Parabens 🙂
Muito legal
Satisfatório!
ótimo texto! direto e didático! obrigada! seria bacana esmiuçar agora os pontos importantes desse texto com essa mesma pegada 🙂
Obrigada, Thabata! Vamos esmiuçar cada ponto nos próximos posts! Aguarde! =)
Beijos,
Iana
Ótimo texto! Didático e bem humorado! Adorei!
Eu queria ler mais textos básicos como esse, para entender a mecânica geral da coisa.
Por exemplo, comecei agora os cursos de linguagem de programação mas não sei bem como aplicá-las. Ex.: ainda estou em html e css. Tenho um editor (kodomo edit). Escrevo o código e salvo como arquivo htm. E aí? como ele passa disso para uma página online, de fato, acessível a todos? O mesmo para as outras linguagens: aprendi agora que html e css não são de programação (não sabia!), mas por exemplo, escrevo um programa no editor, em alguma linguagem (digamos C++). Como ele passa daí para ser um programa usado pelas pessoas?
Como funcionam front-end e back-end, servidores, etc?
Outra coisa, para que são usadas cada uma das linguagens?
Enfim, são coisas bem básicas mesmo…. mas que percebi que não são abordadas nos cursos que tenho feito.
Adoro o trabalho de vcs!! Vou acompanhar!! 🙂
Oi, Renata! Tudo bem?
Obrigada pelo seu comentário! As suas dúvidas são ótimas!
Vamos responder algumas delas com os próximos posts dessa série.
As outras vamos providenciar! =)
Obrigada pelo apoio!
Um beijo,
Iana
Legal, obrigada! Vou acompanhar! 🙂
Perfeita a sua sugestão, tenho as mesmas dúvidas e já fiz até faculdade.
E aaaai.
Que massa encontrar o site de vocês, adorei!
Eu não gostava de programar até que tive que refazer uma cadeira de prog 3x. Hahahaha.
Seria interessante se vocês pudessem fazer tipo um tutorial de como começar a programar em alguma linguagem, sei lá, php por exemplo. Os primeiros passos pras meninas motivarem a buscar mais.
Deus abençoe vocês!
Oi, Viviane! Ficamos felizes com a sua mensagem
Vamos fazer tutoriais sobre algumas linguagens, sim! Aguarde! 😉
Um beijo,
Iana
Top adorei o texto principalmente este A esposa dá as instruções para o marido programador ir ao supermercado: “Traga 6 ovos. Se tiver batata, traga 10”. O programador volta com 10 ovos e a esposa pergunta por que ele fez isso, ao que ele responde: “porque tinha batata”.
Um jeito diferente de aprender amei !
Apaixonada pela iniciativa de vocês!
Não conheço muito dessa área mas vou procurar entrar mais nesse mundo.
A super interessante do mês de fevereiro fez uma matéria muito interessante sobre tecnologia, e um fato interessante é que em Gaza no território palestino 60% dos estudantes dos cursos engenharia da computação são mulheres.
Abraços.
Que demais esse dado, Ana Laura! Obrigada por compartilhar conosco – e por deixar seu comentário! 😀
Estou ajudando meu filho a fazer um trabalho de escola e achei este texto maravilhoso, explica tudo de forma simples e muito clara.
Parabéns!
Excelente texto!!!
O texto deixou esse mundo (da programação), menos assustador 🙂
Amei esse texto! bem informativo e elucidativo 🙂 Parabéns <3
Realmente, muito obrigado! Estou começando a estudar desenvolvimento web recentemente e tendo os primeiros contatos com programação, esse site está me ajudando bastante!
Maravilhoso, tinha muitas dúvidas que foram resolvidas, que produzam mais material assim, super didático com uma linguagem maravilhosa e cheio de ricas informações. Obrigada
A piada do marido é a melhor! Parabéns pelo post, super claro e interessante.
Eu adorei o texto. Não possui complexidade para compreensão, o que é muito bom. Estou fascinada com a área de tecnologia, e quero aprender mais.
A didática da Programaria, seja em cursos, artigos ou vídeos é perfeita, simplesmente quem gosta de código ama tudo por aqui. Eu vou ler tudo aos poucos!!
Maravilhoso aprendizagem
Estou amando este artigos 🙂