Antes de tudo, a zuera é essa mesmo. Cowgol é uma linguagem de programação, fortemente baseada em Ada, com foco em sistemas pequenos, como o 6502, o Z80, entre outros. A meta da linguagem é que o compilador da linguagem funcione normalmente em um micro com um desses processadores, o que em tempos atuais, é um grande desafio. Descobrimos esse item peculiar quando resolvemos nos aventurar no Hackaday.
Logo, tem algumas características, como:
- Ser uma linguagem moderna e segura em termos de tipagem, inspirada na linguagem Ada.
Um backend orientado por tabelas, para tornar a linguagem fácil de portar.
- Tem remoção de código morto e alocação estática de variáveis, conduzindo a binários pequenos e eficientes.
- Ser rápido: Segundo o autor, ele compila o compilador no PC dele em 80 milissegundos.
- Ser pequeno: O executável para 8080 tem 58 Kb (dividido em duas partes), e a versão para 80386 tem 70 Kb.
Os ports para processadores incluem:
- Z80 e 8080 (CP/M).
- 6502 e 65c02, ou seja: Roda num BBC Micro com o segundo processador, o Tube.
- 6303, e na versão específica para o Fuzix.
- Bytecode interpretado para o 6502. Fica menor, mas mais lento – pois a linguagem é interpretada.
- 80386, ARM Thumb2 e PowerPC (Linux).
- 68000 (Atari ST TOS e Linux m68k – se você achar uma máquina que rode esse sistema).
- 8086 (DOS).
- PDP11 (Unix V7).
É possível gerar binários grandes e horrorosos em C, justamente para facilitar o port do compilador para aquela nova plataforma: Pega o código transformado em C, e aí… “É só compilar!“. Ah, também é possível gerar código em Basic, mas o autor disse que foi só uma piada – mas funciona.
Ficou curioso? A linguagem é simples, lembra vagamente o Basic estruturado, tem documentação (não o bastante, mas tem!), é código aberto (licença BSD de 2 cláusulas) e pode ser algo interessante para mexer num final de semana chuvoso, de tarde. Vai lá e dá uma força pro David Given, e deixemos as vacas voarem.