4. Como funciona seu computador (versão rápida)
CPU, memória, disco
Toda máquina onde código roda tem três partes essenciais. Pense numa cozinha:
- CPU (Central Processing Unit) - o cozinheiro. É quem executa cada instrução, uma após outra, milhões de vezes por segundo. Quanto mais rápido o cozinheiro, mais pratos por hora.
- Memória RAM - a bancada de trabalho. É onde os ingredientes ficam enquanto o cozinheiro está usando. Quanto mais bancada, mais coisas você prepara em paralelo. Mas se a luz acaba, a bancada some - RAM é volátil.
- Disco (HD ou SSD) - a despensa. Onde os ingredientes ficam guardados quando o cozinheiro não está usando. Sobrevive a desligamento. É mais lento de acessar que a bancada, mas tem muito mais espaço.
Programar é coreografar o cozinheiro. Você diz onde pegar ingredientes (do disco para a memória), o que fazer com eles (instruções na CPU), e onde colocar o resultado (de volta no disco, ou na tela).
Sistema operacional
A CPU sozinha não sabe nada. Não sabe abrir arquivo, não sabe imprimir na tela, não sabe ler teclado. Quem ensina é o sistema operacional: macOS, Linux ou Windows. Cada SO é uma camada gigantesca de software que coordena tudo.
Quando você “roda” um programa, o que acontece é: o SO encontra o arquivo no disco, copia partes dele para a memória, configura a CPU para executar a partir da primeira instrução, e fica monitorando. Se o programa tentar fazer algo proibido (acessar memória de outro programa, por exemplo), o SO mata o processo. Se o programa precisar imprimir algo na tela, o SO faz isso por ele (programa não fala direto com a tela).
Você não programa o SO. Programa em cima dele, usando funções como print() que delegam para o SO o trabalho sujo.
O terminal
O terminal é uma janela de texto para o sistema operacional. Em vez de clicar em janelas e ícones, você digita comandos. Cada comando é uma instrução: “liste os arquivos desta pasta”, “mude para outra pasta”, “execute este programa”.
Por que terminal importa para programar? Três razões:
- Mais rápido para tarefas repetitivas. Renomear 200 arquivos no Explorer é um inferno; no terminal são duas linhas.
- Necessário para ferramentas de programação.
dart run,git, compiladores, etc - tudo é comando de terminal. - Te ensina que o computador é uma máquina, não uma interface bonita. Programador é gente que conversa com a máquina; terminal é a sala dessa conversa.
Onde abrir o terminal:
- macOS - aplicativo Terminal (Cmd+Espaço, digite “Terminal”).
- Linux - depende da distribuição. gnome-terminal, konsole, xterm. Atalho geralmente Ctrl+Alt+T.
- Windows - PowerShell (built-in) ou, idealmente, WSL (Windows Subsystem for Linux), que dá um terminal Linux dentro do Windows. Tutorial oficial Microsoft - vale a pena instalar.
Arquivos e pastas
O disco é organizado em árvore. Pastas dentro de pastas, arquivos dentro de pastas. A raiz no macOS/Linux é /. No Windows é C:\.
Conceitos a memorizar:
- Caminho absoluto - começa da raiz.
/Users/kleber/projetos/jogo/lib/main.darté absoluto - aponta para o arquivomain.dartexatamente onde ele está, vindo do topo da árvore. - Caminho relativo - começa de onde você está agora. Se você está em
/Users/kleber/projetos, o caminho relativojogo/lib/main.dartaponta para o mesmo arquivo, mas a partir da sua posição atual.
No terminal:
pwd- mostra onde você está (qual pasta atual)ls(Linux/macOS) oudir(Windows) - lista os arquivos da pasta atualcd nome-da-pasta- entra naquela pastacd ..- sobe uma pastacd ~- vai para sua pasta de usuário
Programas também são arquivos. Programas executáveis têm uma “permissão de execução” no Linux/macOS, e extensões como .exe no Windows. Quando você executa, o SO lê o arquivo e cria um processo na memória.
O que acontece quando você roda um programa
Imagine que você digita no terminal: dart run ola.dart.
A sequência de eventos é mais ou menos esta:
- Você digita o comando e aperta Enter.
- O terminal passa o comando para o shell (bash, zsh, PowerShell), que interpreta.
- O shell encontra o programa
dartno disco e pede ao SO para executar. - O SO carrega o arquivo
dartdo disco para a memória, cria um processo, e coloca a CPU para executar. - O programa
dartlê o arquivoola.dart(passa para o compilador), traduz para instruções de máquina, executa. - O programa em execução chama funções como
print(), que pedem ao SO para escrever na tela. - O SO desenha as letras na janela do terminal.
- O programa termina. O SO recupera a memória, e o terminal volta a aceitar o próximo comando.
Tudo isso em alguns milissegundos. Cada um dos passos é um pedaço de software escrito por alguém - inclusive partes que você poderia, em tese, escrever.
Você não precisa memorizar essa sequência. Mas saber que ela existe te dá uma intuição correta de onde os erros podem aparecer. Se algo falha, o problema está em um desses passos. Saber em qual passo te ajuda a debugar.