Traduz antes de executar
Um compilador transforma o código em outra representação, muitas vezes um executável ou bytecode. C, Java e C# utilizam processos de compilação, embora seus caminhos sejam diferentes.
Labs
Módulo 02 Fundamentos
Antes de escolher Java, Python ou qualquer outra tecnologia, vale entender o que as linguagens têm em comum — e por que cada uma existe.
Começando do começo
É um vocabulário com regras que permite descrever instruções de forma compreensível para pessoas e traduzível para uma máquina.
Computadores executam operações muito simples. Uma linguagem permite combinar essas operações para representar regras, cálculos, interfaces e sistemas completos.
O arquivo que escrevemos é o código-fonte. Ele precisa ser traduzido ou executado por ferramentas antes de se transformar no comportamento que enxergamos.
Um compilador transforma o código em outra representação, muitas vezes um executável ou bytecode. C, Java e C# utilizam processos de compilação, embora seus caminhos sejam diferentes.
Um interpretador lê e executa o programa. Python é normalmente apresentado assim, mas implementações reais podem combinar interpretação, bytecode e compilação.
Uma história de abstrações
Cada geração tentou facilitar um tipo de trabalho. Algumas dessas linguagens continuam operando sistemas essenciais; antigas não significa necessariamente ultrapassadas.
{{ language.summary }}
{{ language.history }}
{{ language.shines }}
{{ language.code }}Ferramentas para contextos diferentes
Escolher somente por popularidade ignora bibliotecas, infraestrutura, experiência do time, custo de manutenção e o tipo de produto que será construído.
{{ language.intro }}
{{ language.shines }}
{{ language.code }}Palavras com significado especial
Termos que a linguagem separou para representar comandos e estruturas.
Você não pode usar livremente palavras como class, return ou if como nomes de variáveis, pois o compilador ou interpretador já atribui significado a elas.
As palavras variam entre linguagens, mas vários conceitos se repetem.
{{ group.explanation }}
{{ item.word }}{{ item.meaning }}
{{ item.languages }}* Alguns termos, como case em Python, são palavras-chave contextuais; self em Python é convenção; e certas linguagens expressam a mesma ideia com outra sintaxe. O importante aqui é reconhecer a intenção antes de decorar listas.
| Intenção | Java | C# | Python | JavaScript | Delphi |
|---|---|---|---|---|---|
| {{ row.concept }} | {{ row.java }} | {{ row.csharp }} | {{ row.python }} | {{ row.javascript }} | {{ row.delphi }} |
O código também comunica
Uma linguagem pode aceitar várias formas de escrever um nome, mas comunidades adotam padrões para o código continuar previsível. Convenção não é necessariamente uma obrigação da linguagem.
{{ item.sample }}{{ item.use }}
JavasalvarUsuario()C#SalvarUsuario()Pythonsalvar_usuario()JavaScriptsalvarUsuario()Que tipo de valor é esse?
Dizer que uma linguagem “não é tipada” costuma ser impreciso. A diferença está em quando os tipos são verificados, como são declarados e quais conversões são permitidas.
Variáveis e expressões possuem tipos conhecidos durante a análise ou compilação. Java, C# e Delphi são exemplos.
String nome = "Helena";O valor carrega seu tipo, e uma variável pode referenciar valores de tipos diferentes. Python e JavaScript são exemplos.
nome = "Helena"| Ideia | Java | C# | Python | JavaScript | Exemplo |
|---|---|---|---|---|---|
| {{ type.idea }} | {{ type.java }} | {{ type.csharp }} | {{ type.python }} | {{ type.javascript }} | {{ type.sample }} |
Modelando conceitos
Define quais dados e comportamentos um tipo de objeto terá.
É uma ocorrência concreta criada a partir de uma classe.
Representa uma informação ou estado mantido pelo objeto.
É um comportamento definido dentro de uma classe.
Prepara um objeto no momento em que ele é criado.
Define um contrato de operações sem decidir todos os detalhes.
{{ classExample }}Os pilares mais conhecidos
É comum falar em três pilares, mas a apresentação mais difundida utiliza quatro: encapsulamento, abstração, herança e polimorfismo.
{{ pillar.description }}
Um conjunto limitado de opções
Uma enumeração dá nomes claros a um conjunto fechado de valores possíveis.
Em vez de espalhar textos como "pago" e "Pago", o programa trabalha com membros conhecidos, como StatusPedido.PAGO.
Isso melhora legibilidade e reduz estados inválidos. JavaScript não possui um enum nativo equivalente; objetos congelados são uma aproximação comum.
{{ enumExamples[activeEnum] }}