Paradigmas de Linguagens de Programação em Python: Dominando programação (Part. 04)
- #Python
Antes de escrever código, aprenda como os dados, os sinais e o processamento trabalham dentro da máquina.
Você já parou pra pensar o que acontece por trás do print("Hello, world!")
?
Não só no sentido de o que aparece na tela, mas como os dados são armazenados, como as instruções são executadas, como a informação sai do seu teclado e chega até a memória do processador?
Neste artigo, vamos explorar algo como uma "alfabetização computacional". Isso significa entender como a linguagem Python interage com os fundamentos da computação — bits, bytes, lógica, memória, redes e arquitetura. É o tipo de conhecimento que transforma um programador iniciante em um pensador computacional.
🌐 Redes de Computadores: Como tudo está conectado
Imagine o seguinte: você está estudando Python e, de repente, quer instalar uma biblioteca com pip
. Isso parece banal, mas por trás existe um mundo de comunicação entre computadores.
- A Internet é uma rede de redes. Ela conecta milhões de dispositivos no planeta.
- Cada dispositivo na rede tem um endereço IP que funciona como seu “endereço residencial digital”.
- Quando você acessa
pypi.org
, o seu computador envia uma requisição via protocolo HTTP para o servidor remoto. - Roteadores e switches cuidam de transmitir esses dados de forma rápida, fragmentada e eficiente.
💡 Python na prática:
Você pode usar bibliotecas como requests
para simular esse tipo de requisição:
python
import requests
response = requests.get("https://api.github.com")
print(response.status_code)
🔢 Bits, Bytes e Bases Numéricas: A linguagem do computador
Tudo no computador — textos, músicas, imagens — é convertido para sequências de bits (0s e 1s). Um bit representa uma decisão: ligado (1) ou desligado (0). Oito bits formam um byte, que já pode representar caracteres ou pequenos números.
Múltiplos de byte:
- 1 KB = 1024 bytes
- 1 MB = 1024 KB
- 1 GB = 1024 MB
🔣 Sistemas de numeração
O ser humano usa base 10 (decimal), mas o computador usa base 2 (binária). Python lida com todas essas bases:
python
print(bin(10)) # 0b1010 (binário)
print(oct(10)) # 0o12 (octal)
print(hex(10)) # 0xa (hexadecimal)
E com booleanos?
Python trata True
como 1
e False
como 0
. Isso tem implicações lógicas e aritméticas:
python
print(True + True + False) # 2
🔤 Representação de Dados: Muito além dos números
Você sabia que até emojis são números para o computador?
Tudo é representação binária. Um caractere como A
é representado por 65
na tabela ASCII. Já a letra Ç
não existe no ASCII, mas sim no UNICODE, que é uma tabela muito mais ampla.
Esse entendimento é essencial para quando você precisar trabalhar com arquivos binários, manipular imagens com pixels ou criar estruturas otimizadas.
⚙️ Lógica Digital e Álgebra Booleana
Antes de existir o Python, existia a lógica booleana, a base de todos os circuitos digitais. Conhecer isso ajuda você a criar expressões lógicas eficientes e tomar melhores decisões no seu código.
Portas e operadores lógicos:
AND
→and
OR
→or
NOT
→not
python
a = True
b = False
print(a and b) # False
print(a or b) # True
print(not b) # True
Tabela-verdade simples:
🚀 Com o crescimento da demanda por desempenho, os computadores evoluíram para arquiteturas com múltiplos núcleos e processadores. Isso significa que hoje conseguimos executar várias tarefas ao mesmo tempo — o que chamamos de processamento paralelo.
Vamos por partes:
- Pipeline
- Imagine uma fábrica em que cada estação faz uma parte do trabalho. Enquanto uma estação monta uma peça, a próxima já prepara a seguinte. O pipeline é isso aplicado ao processador: uma instrução entra, e cada etapa do hardware faz um pedaço dela. Isso aumenta a eficiência, mesmo com uma única tarefa.
- Superpipeline
- É como ter ainda mais estações nesse processo, com estágios menores e mais rápidos, otimizando o tempo de execução geral. Funciona como uma linha de produção altamente segmentada.
- Superescalar
- Agora imagine várias linhas de produção rodando em paralelo. Essa é a ideia do superescalar: o processador busca e executa múltiplas instruções de uma só vez, em diferentes unidades.
- Hyper-threading
- Uma tecnologia que permite simular múltiplos "fios de execução" (threads) dentro de um único núcleo físico. Isso melhora o aproveitamento dos recursos da CPU, como se ela estivesse “ocupada o tempo todo”.
- Multithreading vs. Multiprocessing
- Multithreading: várias threads (tarefas leves) compartilham o mesmo processo. Em Python, o GIL pode limitar o uso real de múltiplas threads em CPUs.
- Multiprocessing: cria processos independentes que realmente rodam em paralelo. É ideal para cargas pesadas.
- Memória compartilhada vs. distribuída
- A forma como os núcleos acessam a memória influencia o desempenho. Se todos acessam a mesma (memória compartilhada), a comunicação é rápida, mas pode gerar conflito. Já na distribuída, cada núcleo tem sua própria memória, o que reduz conflitos, mas exige mecanismos de sincronização.
python
from multiprocessing import Process
def tarefa():
print("Executando em paralelo")
p = Process(target=tarefa)
p.start()
p.join()
Saber disso te ajuda a escolher o algoritmo certo e o estilo de programação adequado, especialmente em apps com muitos dados.
🏗️ Arquitetura CISC x RISC
A arquitetura do processador define como as instruções são executadas.
CISC (Complex Instruction Set Computer)
- Instruções complexas, poucas linhas de código
- Ex: Intel x86
RISC (Reduced Instruction Set Computer)
- Instruções simples, muito mais rápidas
- Ex: ARM (usado em celulares)
Python, por ser interpretado, é menos sensível a essas diferenças. Mas conhecer isso ajuda a escrever código mais leve e adaptado ao ambiente em que será executado.
🔚 Conclusão
Programar é conversar com a máquina. Mas essa conversa só flui quando você entende a linguagem dela: bits, lógica, rede, instrução.
Ao dominar esses conceitos, você não apenas escreve código — você pensa como um computador. Isso te prepara para criar funções melhores, entender bugs mais rápido, otimizar seu código e crescer como desenvolvedor Python.
Vamos pro próximo artigo sobre Paradigmas de Linguagens de Programação em Python...
👉 No próximo artigo, vamos explorar Python Estruturado.