O código fonte, após passar pelo interpretador (ou compilador) da linguagem escolhida, gera o código objeto, o programa final, a linguagem montada com bits e bytes que o computador entende.
Vamos fazer uma analogia com o projeto de um circuito eletrônico: procurando uma solução eletrônica para uma necessidade que temos, primeiro mentalizamos de modo muito objetivo as funções que nosso circuito deverá ter. Então rascunhamos numa folha de papel os blocos básicos desse circuito que idealizamos. Cada bloco poderá vir a ser um circuito funcional que deverá se comunicar com os circuitos dos outros blocos; e assim vamos abstraindo até chegarmos a um circuito único e o mais simples possível. Normalmente o projeto da fonte de alimentação é a última etapa do nosso projeto.
Por fim, montamos todo ou em partes o circuito final; e testamos fisicamente cada estágio numa protoboard, ou de modo virtual num simulador de circuitos em nosso PC. É nessa fase, da prototipagem, que os problemas (as falhas ou erros no projeto) podem surgir; como componentes eletrônicos (resistores, capacitores, transistores e outros) mal dimensionados ou com defeito, incompatibilidade entre partes do próprio circuito, e tantos outros.
Assim também é quando estamos desenvolvendo um programa de computador: a partir de uma necessidade, a mãe da invenção, segundo o filósofo Platão,abstraímos uma possível solução; agora não com componentes eletrônicos, mas com componentes da sintaxe da linguagem de programação que dominamos. Aqui, igualmente, desenhamos num papel os blocos básicos de construção do programa na forma de um fluxograma e depois os abrimos em seus componentes funcionais menores: as variáveis, os operadores lógicos e matemáticos, os laços de repetição, as funções e as bibliotecas que precisamos importar. Tudo isso já vimos nos artigos anteriores.
Depois de montar todo o sistema num editor de textos (a nossa ‘protoboard’), ou numa plataforma de desenvolvimento integrada (IDE), como o Colab que até aqui temos usado, é hora de testar cada parte ou o todo no interpretador (ou no compilador) da linguagem escolhida. É aqui que também vão aparecer as falhas e os erros de projeto do nosso programa, que precisamos corrigir. Esses erros também podem ser de qualquer natureza, desde o mais comum, como erros de sintaxe e acesso a memória com dados corrompidos, a conexão remota incompatível ou ausente, ou mesmo entradas de informações incorretas pelo usuário.
Quase todas as linguagens modernas têm seus próprios métodos de correção de erros, chamados de depuração (debuging, em inglês). O Python tem um sistema robusto de detecção desses erros e falhas durante a compilação (translação) do código fonte em código objeto; ou depois da compilação, quando da execução do programa.