Introdução ao Jech
Jech é uma linguagem de programação educacional, projetada para ser simples, intuitiva e fácil de aprender. O principal objetivo do projeto é servir como base para o estudo de como compiladores, interpretadores e máquinas virtuais funcionam.
O nome "Jech" é um jogo com as iniciais de seus conceitos fundamentais e do seu criador. Ela é implementada inteiramente em C e pode ser executada tanto nativamente quanto no navegador via WebAssembly.
📖 História do JECH
O Jech começou como uma curiosidade minha: eu queria entender como uma linguagem de programação é feita e como ela funciona por baixo dos panos.
Com isso, veio a ideia de abrir esse processo ao público, criando uma documentação onde pessoas com pouco conhecimento em C, compiladores e interpretadores possam acompanhar e entender como tudo funciona.
O nome JECH vem das iniciais dos meus filhos: Jonathan Edwards e Charles Haddon.
🚀 Instalação
Atualmente, a maneira mais fácil de experimentar Jech é através do nosso Playground Online. Nenhuma instalação é necessária!
Para rodar localmente, você precisará compilar o código fonte. No futuro, disponibilizaremos binários para os principais sistemas operacionais.
git clone https://github.com/joaoluke/jech
cd jech
make
./jech seu_arquivo.jc
🎨 Tipos de Dados
Jech suporta quatro tipos principais de dados. Vamos explorar cada um em detalhes:
1. Números (Numbers)
Jech trabalha com números inteiros e decimais. Não há distinção entre int e float.
// Números inteiros
keep age = 25;
keep quantity = 100;
// Números decimais
keep price = 19.99;
keep pi = 3.14;
2. Strings (Texto)
Strings são sequências de caracteres delimitadas por aspas duplas.
keep greeting = "Olá, Mundo!";
keep name = "Jech";
3. Booleanos (true/false)
keep isOnline = true;
keep hasPermission = false;
4. Arrays (Listas)
keep numbers = [1, 2, 3, 4, 5];
keep names = ["Ana", "Bruno", "Carlos"];
🔢 Operadores Aritméticos
Jech suporta as quatro operações matemáticas básicas.
keep sum = 5 + 3; // Adição → 8
keep diff = 20 - 8; // Subtração → 12
keep prod = 4 * 5; // Multiplicação → 20
keep quot = 100 / 4; // Divisão → 25
🔀 Condicionais (when/else)
Condicionais permitem que seu programa tome decisões baseado em condições.
Operadores de Comparação
x == y // Igual a
x != y // Diferente de
x > y // Maior que
x < y // Menor que
x >= y // Maior ou igual a
x <= y // Menor ou igual a
when/else
keep age = 16;
when (age >= 18) {
say("Você pode votar");
}
else {
say("Muito jovem para votar");
}
Múltiplas Condições (else when)
keep grade = 85;
when (grade >= 90) {
say("Nota A");
}
else when (grade >= 80) {
say("Nota B");
}
else {
say("Reprovado");
}
📋 Arrays
Arrays são coleções ordenadas de valores indexadas a partir de 0.
Acessando Elementos
keep fruits = ["Maçã", "Banana", "Uva"];
say(fruits[0]); // Exibe: Maçã
say(fruits[1]); // Exibe: Banana
Modificando Elementos
keep list = [10, 20, 30];
list[1] = 99;
say(list); // Exibe: [10, 99, 30]
Método map
keep numbers = [1, 2, 3, 4, 5];
keep doubled = numbers.map(* 2);
say(doubled); // Exibe: [2, 4, 6, 8, 10]
🛠️ Funções (do)
Funções permitem agrupar código
para reutilização. Em Jech, usamos a palavra-chave do.
Função Simples
do sayHello() {
say("Olá de dentro da função!");
}
sayHello();
Função com Parâmetros
do greet(name) {
say("Olá, " + name + "!");
}
greet("Alice"); // Exibe: Olá, Alice!
Função com Retorno
do double(n) {
return n * 2;
}
keep res = double(10);
say(res); // Exibe: 20
🎯 Exemplos Práticos
1. Sistema de Autenticação
keep username = "admin";
keep isAuth = false;
when (username == "admin") {
isAuth = true;
say("Usuário válido");
}
else {
say("Usuário desconhecido");
}
when (isAuth) {
say("Bem-vindo ao sistema!");
}
2. Calculadora de Área
do calculateArea(width, height) {
keep area = width * height;
say("A área é: " + area);
}
calculateArea(5, 10); // Exibe: A área é: 50
3. Carrinho de Compras
keep products = [100, 250, 50];
keep subtotal = products[0] + products[1] + products[2];
keep final = subtotal * 1.1;
say("Total com impostos: R$ " + final);
💡 Dica: Todos estes exemplos estão prontos para executar! Copie e cole no playground para ver como funcionam na prática.
⚠️ Importante: Jech está em desenvolvimento ativo. Algumas funcionalidades podem mudar em versões futuras.