Já parou para pensar em como os programas funcionam?
Redes sociais, jogos, páginas web, aplicativos para computador, a lista de programas existentes é imensa, mas você já se perguntou sobre os processos que levam um programa a funcionar?
Quando eu era pequeno e utilizava o computador do meu pai pra jogar Need for Speed e Counter Strike eu sempre me perguntava em como esses jogos eram feitos. Como aquele arquivo era executado? Como que eles conseguiam criar “coisas” assim?
Na época, eu nem imaginava quais seriam os recursos necessários para desenvolver software, mas a pergunta me intrigava. Então hoje eu decidi compartilhar um pouco desse processo com todas as pessoas que já se fizeram essas mesmas perguntas.
Para falarmos sobre a execução de um programa, é importante conhecermos um pouco sobre computadores, já que ele é o componente principal e é onde tudo acontece.
O que é um computador?
Antes de tudo, eu quero deixar explícito que não entrarei em méritos de engenharia da computação e seus conceitos complexos. A ideia é ter apenas uma noção simples e um entendimento geral de seu funcionamento.
Quando falamos de computadores, a primeira coisa que vem em nossa mente é o computador de mesa ou até mesmo o notebook. Mas os computadores não se limitam só a isso, smartphones, tablets, caixas eletrônicos, consoles de jogos (Xbox, PlayStation, etc.) também são computadores.
De uma maneira simplificada, um computador é um dispositivo eletrônico capaz de manipular, armazenar, recuperar e processar dados. Os computadores possuem uma peça muito importante, e que vai ser nosso foco principal, chamada de CPU (Central Process Unit) também conhecido popularmente como processador.
Imagine que o processador é o cérebro do dispositivo. Assim como nosso cérebro, ele é responsável por coordenar, executar e processar todas as informações que são passadas a ele.
O que são programas de computador?
Agora que já entendemos o que é um computador, vamos falar um pouco sobre os programas. Também conhecidos como softwares, um programa de computador é um conjunto de instruções que passamos para o processador para que ele execute uma determinada tarefa.
Vamos imaginar que temos uma receita de coxinha com catupiry. Essa receita define os ingredientes que serão utilizados para fazer a coxinha e também nos informa sobre a quantidade que devemos utilizar. Além disso ela também nos diz como devemos preparar cada ingrediente e como devemos cozinhar para obtermos nosso resultado final: uma deliciosa coxinha com catupiry.
Um programa de computador seria exatamente como essa receita, um bloco de instruções que diz ao processador como fazer e quando fazer.
Como funciona um programa?
A primeira coisa que devemos ter em mente é que nenhum programa é construído de forma exatamente igual a outro. Cada programa possui comportamentos únicos e cenários exclusivos e é por isso que um programa muito dificilmente vai se comportar da mesma maneira que outro. Porém, há uma noção básica que todos seguem: O conceito de entrada, processamento e saída.
Todo programa precisa de informações para poder funcionar. Essas informações são chamadas de dados. O processo de fornecer informações a um software é chamado de entrada de dados ou input. É com esses dados que ele vai dizer para o processador como e quando ele deve manipular e processar as informações passadas para ele. No fim do processo vai ser gerado o resultado final.
A entrada de dados pode se dar de diversas maneiras. Pode ser uma interação com o usuário, uma chamada REST, a leitura de um arquivo, leitura de um banco de dados, existem N possibilidades de entradas de dados para um programa.
O processamento é o que vai dar a exclusividade aquele software. Quando ele vai processar esses dados? Como ele vai processar os dados? Quais técnicas serão utilizadas? Essas são perguntas que o desenvolvedor responde e estrutura durante o processo de criação de um programa.
O output é o resultado do processamento dos dados. Essa saída também se da de N formas diferentes. Pode ser uma resposta ao usuário, um retorno de valor, o início de outra rotina, a geração de um arquivo, etc.
Tomaremos como caso de uso uma calculadora, que é um programa simples e que faz parte do cotidiano de muitas pessoas.
Vamos imaginar que queremos fazer uma soma de dois valores: 5 e 10. Ao digitarmos esses valores, nós estamos fornecendo ao programa os dados aos quais ele vai utilizar, passando assim pela primeira etapa: Entrada.
Quando clicamos no botão do “=” estamos solicitando que o programa faça o processamento desses dados. O programa pegará os valores fornecidos e enviará as instruções junto com esses valores para a CPU, assim passaremos pela segunda etapa: processamento.
Por fim a CPU retornará o resultado final da execução de volta para o programa e este irá exibir na tela o resultado da soma: “15”. Assim passamos pela última etapa: a saída.
Esse fluxo pode ser repetido de diversas formas dentro da calculadora, podemos mudar o tipo de operação para subtração, multiplicação ou até mesmo alterar os valores de entrada para gerar uma saída diferente. Mas o comportamento do software continua o mesmo.
Como um programa é construído?
Assim como no tópico sobre os computadores, esse é um tema muito amplo e com muitas questões a serem respondidas. Cada programa é construído de uma maneira diferente, e por esse motivo escreverei uma série de artigos para abordarmos esse tema com mais profundidade e que no final você consiga construir seu próprio programa.
Mas ainda sim há coisas em comum entre todos os programas: os conceitos básicos. Como já foi dito acima, um programa se comunica com o processador por meio de um conjunto de instruções.
Um programa é construído em cima de uma ou mais linguagens de programação e acredite em mim, existem VÁRIAS delas no mercado. A primeira coisa que tem que ser feita é definir em qual ou quais linguagens esse programa vai ser feito. Após isso deve ser pensado em como o programa deve se comportar, isso inclui quais entradas de dados ele terá, como ele processará esses dados e como ele irá tratar o resultado desse processamento.
Pode parecer um pouco complicado, no início, de entender esses termos, mas não é um bicho de sete cabeças. Quando começarmos a estudar a base da programação vocês perceberão que é mais simples do que parece.
Como um programa é executado?
Quando clicamos em um programa ou em alguma funcionalidade dele, nós estamos pedindo para que ele execute uma ação. Essa ação, como falado anteriormente, é um conjunto de instruções que é passado para o processador.
O processador só consegue fazer operações aritméticas com os números 0 e 1. As combinações possíveis com esses dois números é chamada de sistema de números binários e esse sistema é a linguagem de máquina. Todas as instruções, antes de serem passadas para o processador, são convertidas em arquivos binários.
Arquivos binários são arquivos compostos com várias combinações do sistema binário que serão executadas no processador.
Para que um programa consiga interagir com o processador é preciso que eles falem uma “língua” em comum. Essa língua chamamos de Linguagem de Máquina ou Código de Máquina.
Como você já deve ter imaginado é necessário que haja uma “tradução” entre o programa e o processador para que ele compreenda o que deve ser executado. Esse processo de tradução está exemplificado na imagem abaixo:
As linguagens de alto nível exemplificadas acima seriam nossos programas e aplicativos. O tópico de linguagens de programação merece uma atenção especial e abordarei em um próximo artigo.
Linguagens de alto nível: São as linguagens de programação mais utilizadas durante o desenvolvimento de um software. Linguagens de alto nível são humanamente mais fáceis de serem lidas.
Linguagem assembly: É uma linguagem de programação de baixo nível ao qual alguns programas são convertidos ou criados.
Código de máquina: Arquivo binário ao qual posteriormente vai ser executado pela CPU.
Hardware: Processador, responsável por ler e executar as instruções do código de máquina.
Com a finalização desse processo o programa está finalmente pronto e sendo executado.
Conclusão
Como podemos ver, o funcionamento de um software é muito mais do que apenas clicar em cima da aplicação, existem muitas operações rodando por baixo dos panos para que isso seja possível. Mas me conta ai, você já tinha imaginado esses processos?
Deixa no comentário sua opinião sobre o artigo e sugestões, obrigado por ler 🖤
GitHub: https://github.com/Katsshura
LinkedIn: https://www.linkedin.com/in/katsshura/
E-mail: xr.emerson@gmail.com