---
title: "Vibe coding: linguagens de programação para iniciantes"
locale: pt
category: knowledge_base
category_name: "Base de Conhecimento"
translation_status: reviewed
license: cc_by
author: "injoys"
source_url: https://injoys.com/en/articles/vibe-coding-programming-language-basics
published_at: 2026-10-29T14:25:12+09:00
---

# Vibe coding: linguagens de programação para iniciantes

> No vibe coding, é mais útil entender onde o código é executado e como os dados são processados do que saber os nomes das linguagens. Você pode conferir os fundamentos da programação, os critérios de escolha de cada linguagem e o escopo da validação do código gerado por IA.

## Key Points

- O desenvolvimento web começa pela distinção entre os papéis de HTML, CSS e JavaScript.
- TypeScript oferece verificação de tipos antes da execução, mas não valida automaticamente entradas externas.
- O conceito de propriedade do Rust se refere às regras de gerenciamento de memória, não a um mecanismo que impede todas as falhas de segurança.
- Mojo é uma linguagem voltada a cálculos de alto desempenho em CPU e GPU.
- O código gerado por IA deve ser executado e testado para verificar se atende aos requisitos.

O vibe coding exige uma base para distinguir o papel das linguagens e os ambientes em que o código é executado. Para a web, JavaScript e TypeScript são o ponto de partida. Para processamento de dados, considere Python. Rust e Mojo são usados no desenvolvimento de sistemas e em cálculos de alto desempenho.

Os números de desempenho se baseiam no anúncio da Microsoft de 11 de março de 2025.

## Por que é preciso conhecer os fundamentos das linguagens no vibe coding

Vibe coding é uma forma de desenvolvimento em que se cria código com a IA a partir de pedidos em linguagem natural. Os pedidos são ajustados conforme os resultados da execução do programa gerado. Mesmo os pedidos em linguagem natural precisam ser implementados como código que possa ser executado.

Os fundamentos das linguagens ajudam a descrever de forma concreta as funcionalidades desejadas. Também ajudam a identificar onde ocorreu um erro. No início, procure distinguir os papéis das linguagens, em vez de decorar a sintaxe de todas elas.

- Local de execução: navegador, servidor, smartphone, interior do sistema operacional
- Entrada: valores fornecidos pelo usuário ou dados recebidos de fontes externas
- Processamento: tarefas que o programa realizará, como cálculos, buscas e classificações
- Saída: exibição na tela, criação de arquivos, armazenamento de dados
- Condições de falha: entrada vazia, formato incorreto, perda de conexão

## Conceitos básicos que começam por variáveis e tipos

Variáveis e tipos são a base para explicar quais dados um programa manipula. Condicionais e laços de repetição definem a ordem do processamento. Funções agrupam tarefas relacionadas para permitir sua reutilização.

| Conceito | Definição simples | Exemplo ao descrever uma funcionalidade |
| --- | --- | --- |
| Variável | Meio de dar um nome a um valor para fazer referência a ele | Nome que armazena o termo de busca |
| Tipo | Regras sobre a categoria de um valor e as operações permitidas | Quantidade é número, título é string |
| Condicional | Estrutura que escolhe a tarefa a executar conforme uma condição | Recusar o salvamento se o título estiver vazio |
| Laço de repetição | Estrutura que aplica a mesma tarefa a vários elementos | Exibir cada item da lista na tela |
| Função | Código agrupado para realizar uma tarefa específica | Função que verifica a entrada |
| Estrutura de dados | Forma de organizar os dados | Lista ordenada, valor encontrado pelo nome |
| Objeto | Unidade que reúne estados e comportamentos relacionados | Título de uma publicação e função de edição |
| Tratamento de exceções | Forma de lidar com erros que ocorrem durante a execução | Avisar sobre o erro quando não for possível ler um arquivo |
| API | Convenção para a troca de funcionalidades ou dados entre programas | Solicitar resultados de busca ao servidor |
| Dependência | Código ou ferramenta externa que o programa utiliza | Biblioteca para manipulação de datas |

A verificação estática de tipos confere o uso dos tipos antes da execução. Linguagens de tipagem dinâmica também distinguem os tipos dos valores. Tipagem dinâmica não significa ausência de categorias de dados.

## Por que houve a passagem da linguagem de máquina para linguagens de alto nível

A evolução das linguagens é um processo de redução das tarefas detalhadas que as pessoas precisam expressar. A linguagem de máquina representa as instruções executadas pelo processador. A linguagem assembly atribui a essas instruções símbolos que as pessoas podem ler.

Assembly está intimamente ligado ao conjunto de instruções do processador. Trocar um componente não significa reescrever todo o código. O esforço de adaptação aumenta ao migrar para um conjunto de instruções incompatível.

| Linguagem ou abordagem | Problema que buscava resolver | Conceito a lembrar |
| --- | --- | --- |
| Linguagem de máquina e assembly | Transmitir ao hardware as tarefas a realizar | Ligação direta com o conjunto de instruções |
| Fortran | Expressar cálculos científicos de forma próxima às fórmulas | Cálculo numérico e compiladores |
| COBOL | Processar dados empresariais em um formato de fácil leitura | Expressão voltada a registros contábeis e processamento de transações |
| Lisp | Computação com símbolos e listas | Primeiras pesquisas em IA e expressão centrada em funções |
| C | Escrever software de sistema com eficiência | Controle de memória e portabilidade |
| SQL | Processar dados de bancos de dados relacionais | Consultas que declaram o resultado desejado |
| C++ | Estruturar programas grandes e gerenciar recursos | Classes e várias formas de programação |
| Java | Portabilidade entre sistemas com ambientes de execução diferentes | JVM e bytecode |

Fortran surgiu na IBM em 1957. Lisp se desenvolveu junto com as pesquisas em IA no final da década de 1950. COBOL surgiu de um trabalho conjunto de concepção iniciado em 1959.

C é uma linguagem que evoluiu junto com o desenvolvimento do Unix. Ela contribuiu para a transferência de software entre diferentes tipos de máquinas. No entanto, códigos que dependem do sistema operacional e do hardware precisam de adaptações específicas.

A orientação a objetos é uma forma de organizar dados e comportamentos relacionados em objetos. C++ é uma linguagem que oferece suporte à orientação a objetos. O conceito de orientação a objetos em si não foi criado pelo C++.

## Diferença entre compiladores e interpretadores

Um compilador é um programa que transforma código em outra representação. O resultado pode ser linguagem de máquina. Também pode ser um formato intermediário de execução, como bytecode.

Um interpretador executa código ou uma representação intermediária enquanto os interpreta. Na prática, as implementações de linguagens podem combinar compilação e interpretação. É impreciso dividir as linguagens apenas entre compiladas rápidas e interpretadas lentas.

| Conceito relacionado à execução | Papel | Exemplo representativo |
| --- | --- | --- |
| Compilação antecipada | Gerar o código de destino antes da execução | Geração habitual de executáveis em C e Rust |
| Bytecode | Formato intermediário de instruções processado pelo ambiente de execução | Bytecode de Java e de CPython |
| Interpretador | Executar código ou instruções intermediárias enquanto os interpreta | Execução de bytecode no CPython |
| Compilação JIT | Converter o código necessário em linguagem de máquina durante a execução | Diversas JVMs e mecanismos de JavaScript |
| Ambiente de execução | Fornecer os recursos necessários para executar o programa | JVM, Node.js |

CPython é uma implementação de Python amplamente utilizada. Ele compila o código-fonte em bytecode e o executa. É incorreto descrever Python apenas como uma linguagem que traduz o código-fonte uma linha por vez a cada execução.

A JVM de Java é um ambiente que executa bytecode. Essa estrutura ajuda a executar código mesmo em sistemas operacionais diferentes. A compatibilidade real também é afetada pela versão da JVM e pelas bibliotecas externas.

## Qual é a diferença entre a interface web e o servidor?

O front-end cuida das telas e das interações com as quais o usuário tem contato. O back-end processa as solicitações no servidor. O banco de dados tem o papel de armazenar e consultar os dados necessários.

HTML é uma linguagem de marcação que expressa a estrutura dos documentos. CSS define o estilo e a disposição dos elementos na tela. JavaScript implementa a avaliação de condições e o tratamento das ações do usuário.

| Nome | Classificação | Papel principal |
| --- | --- | --- |
| HTML | Linguagem de marcação | Estrutura do documento, como títulos, parágrafos e campos de entrada |
| CSS | Linguagem de folhas de estilo | Cores, espaçamento e disposição dos elementos na tela |
| JavaScript | Linguagem de programação | Interações no navegador e processamento no servidor |
| TypeScript | Linguagem que adiciona um sistema de tipos ao JavaScript | Verificação de erros antes da execução e manutenção do código |
| React | Biblioteca de interfaces de usuário | Construção de telas com componentes reutilizáveis |
| Node.js | Ambiente de execução de JavaScript | Execução de JavaScript fora do navegador |
| Next.js | Framework baseado em React | Organização das páginas e funcionalidades de servidor de aplicativos web |
| PHP | Linguagem de programação | Geração de respostas web dinâmicas no servidor |
| SQL | Linguagem de banco de dados | Consulta, inserção, atualização e exclusão de dados |

React, Node.js e Next.js não são ferramentas do mesmo tipo. Uma biblioteca é um conjunto de código do qual se aproveitam as funcionalidades necessárias. Um framework também fornece uma forma de estruturar a aplicação. Um ambiente de execução é onde o código é executado.

## Comparação de linguagens por finalidade

Escolha a linguagem com base no que deseja criar e no ambiente de execução existente. A tabela abaixo apresenta os principais pontos de partida para avaliar cada linguagem. Uma linguagem não se limita às tarefas indicadas na tabela.

| O que deseja criar | Linguagens a considerar primeiro | O que verificar antes de escolher |
| --- | --- | --- |
| Aplicativo web usado no navegador | JavaScript e TypeScript | Fundamentos de HTML e CSS e ferramentas de construção de interfaces |
| Organização de arquivos e automação de tarefas | Python | Formato dos arquivos de entrada e ambiente de distribuição |
| Análise de dados e uso de modelos de IA | Python | Bibliotecas necessárias para análise e modelos |
| Servidores de rede e ferramentas de operação | Go | Estrutura de processamento concorrente e integração com sistemas existentes |
| Sistemas empresariais baseados em JVM | Java e Kotlin | Compatibilidade com o código e as bibliotecas existentes |
| Aplicativo voltado principalmente para iOS | Swift | Ferramentas de desenvolvimento da Apple e recursos da plataforma |
| Aplicativo voltado principalmente para Android | Kotlin | Ferramentas de desenvolvimento para Android e estrutura do aplicativo existente |
| Sistemas que exigem controle de memória | C, C++ e Rust | Requisitos de desempenho e capacidade de verificar a segurança |
| Otimização de cálculos em CPU e GPU | Mojo | Hardware compatível e recursos de cálculo necessários |
| Processamento de dados relacionais | SQL | Diferenças de sintaxe entre produtos de banco de dados |

A utilidade de Python também está relacionada ao seu ecossistema de bibliotecas. NumPy usa código compilado para ganhar velocidade. Nem todo cálculo escrito em Python é executado apenas com código Python.

Go inclui o suporte à concorrência no projeto da linguagem. Concorrência é o conceito de organizar várias tarefas para que avancem em conjunto. Paralelismo é a situação em que várias tarefas são realmente executadas ao mesmo tempo. Escrever código concorrente não aumenta automaticamente a velocidade dos cálculos.

## Diferenças entre TypeScript, Rust e Mojo

TypeScript, Rust e Mojo buscam resolver problemas diferentes. TypeScript ajuda a verificar os tipos no código JavaScript. Rust estabelece regras rigorosas para o gerenciamento de memória. Mojo é voltado a cálculos de alto desempenho e ao aproveitamento do hardware.

| Critério de comparação | TypeScript | Rust | Mojo |
| --- | --- | --- | --- |
| Foco principal | Verificação de tipos e manutenção do código | Segurança de memória e controle do sistema | Cálculos de alto desempenho em CPU e GPU |
| Uso representativo | Aplicativos web e aplicações de servidor | Ferramentas de sistema e componentes voltados ao desempenho | Infraestrutura de IA e kernels de cálculo |
| Conceitos a entender primeiro | JavaScript e tipos de dados | Propriedade, empréstimo e tempo de vida | Tipos, memória e cálculos paralelos |
| Pontos a verificar separadamente | Entradas externas e regras de negócio | Código unsafe e erros de lógica | Integração com Python e suporte a hardware |

### Verificação de tipos no TypeScript

TypeScript adiciona verificação estática de tipos ao JavaScript. Isso ajuda a encontrar código que usa tipos de forma incorreta antes da execução. Com a inferência de tipos, ele determina automaticamente os tipos de algumas declarações.

Não é preciso escrever o tipo de cada variável manualmente. As anotações de tipo são removidas no processo habitual de conversão para JavaScript. A declaração de tipos, por si só, não cria verificações de entrada durante a execução.

### Propriedade e segurança de memória no Rust

Propriedade é o conjunto de regras que define quem gerencia a memória de um valor. Empréstimo é uma forma de fazer referência a um valor sem transferir sua propriedade. O compilador verifica as regras relacionadas para prevenir erros de memória.

As garantias de segurança do Rust pressupõem uma implementação correta. No código unsafe, o autor assume a responsabilidade por algumas condições de segurança. A linguagem não impede automaticamente erros em fórmulas de cálculo ou em permissões de acesso.

### Relação entre Mojo e Python

Mojo é uma linguagem distinta que usa uma sintaxe semelhante à do Python. Ela oferece suporte à escrita de código de alto desempenho para CPU e GPU. Também fornece recursos de interoperabilidade para se conectar a código Python.

Não se deve presumir que o código Python existente possa ser transferido sem alterações. Confira os recursos necessários na documentação da versão de Mojo que será instalada. Para usar a GPU, também é preciso atender aos requisitos de dispositivos compatíveis e drivers.

## Erros comuns ao explicar linguagens

Apresentações curtas de linguagens podem facilmente deixar de fora as condições de aplicação. Também é preciso distinguir fatos históricos de funcionalidades atuais. Os itens abaixo são equívocos que podem prejudicar a avaliação ao escolher uma linguagem.

| Explicação comum | Entendimento correto |
| --- | --- |
| JavaScript é a versão web de Java | São linguagens diferentes |
| HTML e CSS surgiram em 1991 | A recomendação do W3C para CSS1 é de 17 de dezembro de 1996 |
| Kotlin é uma linguagem criada pelo Google | A desenvolvedora é a JetBrains; o Google oferece suporte no Android |
| Código C roda em qualquer lugar se for recompilado | Partes dependentes do sistema operacional e do hardware podem precisar de alterações |
| Python ocupa atualmente o 1º lugar em popularidade | É preciso conhecer a instituição responsável pela pesquisa, a data e o método de apuração para avaliar |
| Usar Rust resolve todos os problemas de segurança | Segurança de memória e verificação de permissões de acesso são questões diferentes |
| Usar Mojo acelera todas as tarefas em Python | É preciso medir conforme a tarefa, a implementação e o hardware |
| O termo bug nasceu no incidente com um inseto | O incidente popularizou um termo que já era usado |

O famoso registro da descoberta de um inseto é o caso do Harvard Mark II, em 1947. O Smithsonian explica que o incidente contribuiu para popularizar o termo. É impreciso apresentá-lo como um caso do ENIAC ou como a origem do termo.

## Como interpretar os números de desempenho?

Os números de desempenho devem ser interpretados apenas no contexto da tarefa medida. O tempo de compilação e a velocidade de execução do aplicativo pronto são métricas diferentes. Uma ferramenta de desenvolvimento mais rápida não torna uma página web mais rápida na mesma proporção.

A Microsoft anunciou a migração das ferramentas de TypeScript para uma implementação nativa. O anúncio de 11 de março de 2025 apresenta medições por projeto. Abaixo está o caso da base de código do VS Code apresentado no anúncio.

| Objeto da medição | Implementação anterior | Implementação nativa | Ganho de velocidade anunciado |
| --- | --- | --- | --- |
| Processamento da compilação TypeScript da base de código do VS Code | 77.8 segundos | 7.5 segundos | 10.4 vezes |

Nas condições do anúncio, o tempo de processamento caiu para **7.5 segundos**. Calculando a diferença, houve uma redução de 70.3 segundos em um processamento. Isso não significa que todos os projetos terão o mesmo resultado.

Aplique o mesmo princípio às comparações de velocidade entre Python e C. É preciso verificar se foram usados a mesma entrada e o mesmo algoritmo. As opções de compilação e as bibliotecas utilizadas também fazem parte das condições de comparação. Números sem informações sobre o ambiente de execução dificilmente servem como uma proporção geral de velocidade.

## Verificação de tipos e validação de entradas externas

Mesmo quando o código passa pela verificação de tipos, o conteúdo dos dados externos precisa ser verificado separadamente. Essa diferença costuma passar despercebida na revisão de código gerado por IA. As declarações de tipo expressam a forma dos valores esperados pelo programa.

Imagine um aplicativo web em que a quantidade foi declarada como um tipo numérico. Uma API externa pode, na prática, enviar uma string. Atribuir um nome de tipo ou fazer uma asserção de tipo não valida o valor. É necessário código que verifique os dados durante a execução.

| Etapa de verificação | O que verificar | Problema que permanece mesmo após a aprovação |
| --- | --- | --- |
| Verificação de tipos | Uso dos tipos dentro do código | Valores que realmente chegam de fontes externas |
| Validação de entrada | Formato dos dados e intervalo permitido | Se a ação é permitida ao usuário |
| Verificação de permissões | Permissões de acesso de quem faz a solicitação | Se o resultado está de acordo com as regras de negócio |
| Teste funcional | Resultado real para as entradas previstas | Condições não testadas |

Esta tabela é uma estrutura de revisão que leva em conta os limites da remoção de tipos e da segurança de memória. Ela separa o que a linguagem garante do que o serviço precisa verificar. Ao fazer pedidos à IA, distinga a validação de cada etapa.

## Como explicar funcionalidades à IA

Ao solicitar uma funcionalidade, inclua a entrada e o resultado esperado. Definir apenas o nome do programa facilita a omissão das condições de funcionamento. Se houver um projeto existente, informe também a linguagem e a versão em uso.

1. Informe o ambiente que será utilizado.
2. Descreva o formato da entrada a ser processada.
3. Defina o resultado para uma entrada válida.
4. Defina como tratar valores vazios e entradas incorretas.
5. Peça também o motivo das alterações e como verificá-las.

A seguir, um exemplo de prompt que divide os requisitos. Adapte o conteúdo real do arquivo ao projeto. É preciso executar o resultado gerado para verificá-lo.

```text
Primeiro, verifique a linguagem e o ambiente de execução do projeto existente.
Leia as linhas que têm título em um arquivo CSV e mostre-as em uma lista.
Exiba uma mensagem de erro se faltar alguma coluna obrigatória.
Informe separadamente quais linhas estão com o título vazio.
Separe o código de validação de entradas externas do código de exibição na tela.
Verifique primeiro se é possível implementar com as dependências existentes.
Explique as partes alteradas e como testá-las.
```

Se ocorrer um erro, informe também as condições para reproduzi-lo. A mensagem de erro contém pistas para delimitar o local em que ele ocorreu. A documentação do Copilot no GitHub também exige a revisão do código gerado. Antes de adotar o código, é necessário verificar os resultados da execução.

## Critérios para começar a aprender e escolher um curso

O aprendizado inicial pode começar com um escopo limitado, de acordo com a tarefa que você deseja realizar. Para desenvolvimento web, tente primeiro conectar a estrutura da interface ao seu comportamento. Para automação, é melhor começar verificando a entrada de arquivos e o salvamento dos resultados.

1. Escolha uma linguagem adequada ao que deseja criar.
2. Aprenda variáveis, tipos, condicionais, laços de repetição e funções.
3. Escreva uma pequena funcionalidade e compare os resultados da execução.
4. Insira dados incorretos para verificar o comportamento em caso de falha.
5. Tente explicar com suas próprias palavras por que alterou o código.

Ao avaliar um curso, confira o conteúdo de verificação, além da tela de resultado. Veja se há exercícios para reproduzir e corrigir erros. Outro ponto a verificar é se as versões e o ambiente de execução utilizados estão especificados.

- Explicação do código: processo de explicar as entradas e saídas das funções geradas
- Tratamento de erros: exercícios de leitura de mensagens de erro e delimitação das causas
- Validação de dados: exemplos de tratamento de entradas externas e condições de falha
- Reprodutibilidade: orientações para executar novamente no mesmo ambiente

As definições das linguagens podem ser consultadas na documentação oficial de cada projeto. O TypeScript Handbook explica a remoção de tipos. O livro oficial de Rust explica separadamente propriedade e unsafe. No Mojo Manual, confira os recursos da linguagem e os limites da integração com Python.

## FAQ

### Preciso aprender todas as linguagens antes de começar com vibe coding?
Não é necessário aprender todas as linguagens. Primeiro, escolha uma linguagem adequada ao que você quer criar. Entender variáveis, tipos, funções e onde o código é executado permite formular pedidos mais específicos.

### No desenvolvimento web, devo começar por JavaScript ou Python?
Para criar o comportamento das telas no navegador, JavaScript é o ponto de partida. Aprenda também o papel de HTML e CSS. Python pode ser considerado um ponto de partida para automação de arquivos e processamento de dados.

### Se eu usar TypeScript, não preciso conhecer JavaScript?
Para entender como TypeScript se comporta durante a execução, é necessário conhecer os fundamentos de JavaScript. TypeScript acrescenta um sistema de tipos ao JavaScript. Entenda a diferença entre a verificação de tipos e a execução de fato.

### É preciso indicar o tipo de todas as variáveis em TypeScript?
Onde a inferência de tipos for possível, não é necessário indicá-los manualmente. As ferramentas determinam o tipo com base no valor atribuído e no contexto. Decida se um tipo explícito é necessário de acordo com o papel do código.

### React e Node.js também são linguagens de programação?
React é uma biblioteca de interfaces de usuário. Node.js é um ambiente de execução de JavaScript. Next.js é classificado como um framework baseado em React.

### Python traduz e executa o código-fonte linha por linha?
A principal implementação, CPython, compila o código-fonte em bytecode. Depois, executa o bytecode. É difícil explicar esse processo apenas dizendo que o código-fonte é traduzido linha por linha.

### Se eu usar Rust, não preciso fazer uma revisão de segurança?
A segurança de memória do Rust não significa que o serviço inteiro seja seguro. As permissões de acesso e as regras de negócio precisam ser verificadas separadamente. As condições de segurança do código unsafe também devem ser revisadas.

### Mojo é uma nova versão do Python?
Mojo é uma linguagem separada, com sintaxe semelhante à do Python. Oferece recursos de integração com Python. Confira a compatibilidade do código existente na documentação oficial da versão que você vai usar.

### É indispensável ter uma GPU para usar Mojo?
Com Mojo, também é possível escrever código para CPU. Uma GPU não é um requisito obrigatório para todos os programas. Se você for usar recursos de GPU, confira quais dispositivos e drivers são compatíveis.

### Concorrência em Go significa o mesmo que processamento paralelo?
Concorrência é o conceito de organizar várias tarefas para que avancem em conjunto. Paralelismo é o estado em que várias tarefas são de fato executadas ao mesmo tempo. A concorrência, por si só, não garante um aumento na velocidade de execução.

### Kotlin foi desenvolvido pelo Google?
A responsável pelo desenvolvimento do Kotlin é a JetBrains. O Google oferece suporte ao Kotlin no desenvolvimento para Android. É preciso distinguir quem criou a linguagem de quem oferece suporte a ela na plataforma.

### Se o compilador do TypeScript ficar mais rápido, o aplicativo também ficará mais rápido na mesma proporção?
O tempo de compilação e o tempo de execução do aplicativo são métricas diferentes. Os exemplos de desempenho da Microsoft se referem ao tempo de processamento das ferramentas de desenvolvimento. A velocidade de resposta do aplicativo precisa ser medida separadamente.

### Se o código gerado por IA passar na verificação de tipos, ele está pronto?
Não é possível determinar se uma funcionalidade está concluída apenas com a verificação de tipos. É preciso verificar as entradas externas e as permissões de acesso. Teste se os resultados esperados são obtidos em condições normais e de falha.

### Quais critérios usar para escolher um curso de vibe coding?
Verifique se há exercícios práticos para explicar e modificar o código gerado. Você também pode verificar se o curso aborda a reprodução de erros e a validação de entradas. Em cursos que especificam a versão utilizada e o ambiente de execução, é mais fácil verificar as condições de reprodução.

## Sources

- [Documentação oficial do TypeScript: TypeScript for JavaScript Programmers](https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html)
- [TypeScript Handbook: The Basics, verificação de tipos e apagamento de tipos](https://www.typescriptlang.org/docs/handbook/2/basic-types)
- [The Rust Programming Language: What Is Ownership?](https://doc.rust-lang.org/book/ch04-01-what-is-ownership.html)
- [The Rust Programming Language: Unsafe Rust](https://doc.rust-lang.org/book/ch20-01-unsafe-rust.html)
- [Mojo Manual: visão geral da linguagem e integração com Python](https://docs.modular.com/mojo/manual/)
- [Mojo System Requirements: requisitos de suporte a CPU e GPU](https://docs.modular.com/mojo/requirements/)
- [Glossário oficial do Python: bytecode e conceitos relacionados à execução](https://docs.python.org/3/glossary.html)
- [NumPy 2.0 Manual: Building from source](https://numpy.org/doc/2.0/building/index.html)
- [MDN: What is JavaScript?](https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Scripting/What_is_JavaScript)
- [Documentação oficial do Node.js: Introduction to Node.js](https://nodejs.org/learn/getting-started/introduction-to-nodejs)
- [Documentação oficial do React: biblioteca de interfaces de usuário](https://react.dev/)
- [Documentação oficial do Next.js](https://nextjs.org/docs)
- [PHP Manual: Introduction](https://www.php.net/manual/en/introduction.php)
- [FAQ oficial do Go: objetivos de projeto e características de execução](https://go.dev/doc/faq)
- [Blog oficial do Go: Concurrency is not parallelism](https://go.dev/blog/waza-talk)
- [FAQ oficial do Kotlin: responsáveis pelo desenvolvimento e plataformas de destino](https://kotlinlang.org/docs/faq.html)
- [Android Developers: Kotlin and Android](https://developer.android.com/kotlin)
- [Swift.org: About Swift](https://www.swift.org/about/)
- [Oracle Java Tutorials: About the Java Technology](https://docs.oracle.com/javase/tutorial/getStarted/intro/definition.html)
- [IBM History: Fortran](https://www.ibm.com/history/fortran)
- [John McCarthy: LISP prehistory](https://www-formal.stanford.edu/jmc/history/lisp/node2.html)
- [Howard Bromberg: The COBOL Conclusion, Datamation, março de 1967](https://bitsavers.computerhistory.org/magazines/Datamation/196703.pdf)
- [Dennis Ritchie: The Development of the C Language](https://www.nokia.com/bell-labs/about/dennis-m-ritchie/chist.html)
- [Bjarne Stroustrup FAQ: C++ e orientação a objetos](https://www.stroustrup.com/bs_faq.html)
- [IBM: What Is Structured Query Language?](https://www.ibm.com/think/topics/structured-query-language)
- [W3C: Histórico de publicação de Cascading Style Sheets, nível 1](https://www.w3.org/standards/history/CSS1/)
- [Smithsonian National Museum of American History: Livro de registros com bug de computador](https://americanhistory.si.edu/collections/object/nmah_334663)
- [Microsoft: Um TypeScript 10x mais rápido, 11 de março de 2025](https://devblogs.microsoft.com/typescript/typescript-native-port/)
- [GitHub Docs: Limitações das sugestões em linha do Copilot e responsabilidade pela verificação](https://docs.github.com/en/copilot/responsible-use/inline-suggestions)

## Images

![Um homem de meia-idade usa um notebook em aula enquanto uma mulher aponta para um celular sobre a mesa.](https://injoys.com/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzQ0NjEsInB1ciI6ImJsb2JfaWQifX0=--aa435b9d954b7e3cf19dca343a0d0fc5333fe68f/ai-73cc4d9e.webp)
![Uma mulher examina um servidor aberto com dissipadores de CPU e uma placa GPU em uma sala de servidores.](https://injoys.com/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzQ0NjcsInB1ciI6ImJsb2JfaWQifX0=--0a47db349b5b04ebfcd192a40d156aec0886d68c/ai-3af1935f.webp)