Olá pessoal! Encontrei esse artigo no iMasters e achei bem interessante!
É uma forma de explicar aos leigos o que é programação!
Tradutor
Uma maneira de explicar o que fazemos dia sim, dia não, é pensar em
nós como tradutores entre o mundo humano e o mundo dos computadores.
Como programadores, temos a habilidade duramente conquistada de pegar um
problema do espaço humano e traduzi-lo para o espaço computacional. Não
somente isso, mas o computador com o qual estamos falando é brilhante,
mas também muito, muito pedante. Temos que remover toda a imprecisão do
problema humano e deixá-lo extremamente claro para o computador. É como a
diferença entre um mapa e um conjunto de direções. Com um mapa, você
pode achar seu caminho e precisa somente de um. Um conjunto de direções é
bem claro, mas bastante específico, e, se você cometer um erro, o resto
das instruções se torna uma bela porcaria. Lidar com um computador é
como lidar apenas com conjuntos de direções.
Às vezes, essa tradução é fácil, como pedir para um computador para
realizar somas; muitas vezes, muitas e muitas somas complicadas. Mas, em
grande parte do tempo, a tradução é muito difícil.
Infelizmente, as coisas que geralmente são difíceis para os
computadores (por exemplo, processamento de linguagem natural,
reconhecimento de rosto) são aspectos que as pessoas consideram muito
fáceis. Uma maneira interessante de ajudar as pessoas a começar a ver a
grande diferença entre pessoas e computadores é pedir a uma pessoa para
juntar um bilhão de números aleatórios em menos de um minuto. Ela irá
dizer que é impossível. Então pergunte a ela por que ela não consegue
fazer, mas seu computador consegue. Da mesma maneira, os humanos acham
muito fácil reconhecer pessoas, falar com várias pessoas diferentes, ler
todos os tipos de letras cursivas (mas não de médicos) e outras coisas
que são muito difíceis para computadores.
Designer/arquiteto
Como programadores, nós também somos designers e arquitetos (mas
raramente algum de nós consegue de fato desenhar). Depois de termos
traduzido um problema do espaço humano para o do computador, nós temos
que quebrá-lo em vários conjuntos de direções específicas. Isso é ok se
você quiser que um programa faça apenas uma coisa, mas nós queremos que
nossos programas tenham um pouco (ou muita) de flexibilidade.
Essa flexibilidade adiciona complexidade, e essa complexidade precisa
ser gerenciada. Faça bem o seu design e seu programa será flexível e
poderá ser modificado. Faça isso errado, e você deixará sua vida bem
difícil.
A analogia do arquiteto é boa quando as pessoas continuam querendo
mudar seu programa quando você já está no meio do caminho. As pessoas
não pedem para os arquitetos construírem um arranha-céu e então voltam
seis meses depois e pedem que ele também voe, mas isso parece normal com
computadores. O problema é que a arquitetura está escondida por trás da
interface, e o custo de modificá-la não é visto pelo usuário. É como ir
ao teatro, na frente o cenário é lindo e fabuloso, mas assim que você
chega por trás das cenas é tudo industrial. O perigo é que se você não
mantém o cenário, um dia ele pode cair ou pegar fogo. Mesmo sendo
improvável que seu código irá pegar fogo, ter seu código entrando em
colapso (travando) muito é um sinal de que ele precisa de um trabalho de
manutenção.
Sumário
Tradutor, artesão, arquiteto, designer, criador de direções. Podemos
usar todas essas analogias para tentar explicar o que fazemos como
programadores. Cada uma delas toca uma parte do que fazemos, mas sem ser
um é difícil saber de fato o que significa ser um programador.
Quais analogias, metáforas ou histórias você usa para explicar o que você faz?
⁂
Texto original disponível em http://www.programming4scientists.com/2009/08/18/how-to-explain-programming-to-your-mum/
Nenhum comentário:
Postar um comentário