Pular para o conteúdo

Os dez princípios, medidos

Cada princípio com a frase do documento, o que ela significa aqui, o veredito e uma prova que roda — duas delas chamam o analisador e uma abre um interpretador.

A referência fecha com dez princípios de design. Uma lista de princípios é o texto mais fácil de escrever num projeto e o mais fácil de não cumprir: ninguém a executa, e por isso ela nunca reprova.

Aqui cada princípio carrega cinco coisas, e a terceira é a que muda o gênero do texto:

CampoO que é
no_documentoa frase como a referência a escreve
aquio que ela significa nesta implementação
vereditocumprido, parcial ou nao-se-aplica — e a lista é fechada
provauma medida que roda, e o número que ela deu
custoo que foi entregue em troca
bash
dataforge principios             # os dez, medidos
dataforge principios --tensoes   # so onde dois se contradizem
dataforge principios --json      # como dado

O veredito não é dez de dez, de propósito#

Cinco cumpridos, quatro parciais, um que não se aplica. Um relatório que aprovasse os dez seria a prova de que ninguém o leu.

dataforge
adopt Arcane.Principios as Prin

v := Prin.veredito()
assert v["total"] is 10
assert v["cumprido"] bigger 0
assert v["parcial"] bigger 0

// A prova RODA: ela nao repete o texto, ela mede
p := Prin.conferir("compile-time-first")[0]
assert p["veredito"] is "parcial"
assert "4 de 4" in p["medido"]
out p["medido"]

As provas que rodam de verdade#

Três das dez não consultam tabela nenhuma: elas executam o analisador ou o interpretador, porque "verificação antes de rodar" e "custo zero quando desligado" não são frases — são coisas que se demonstram ou não se demonstram.

PrincípioO que a prova fazO que ela mediu
compile-time-firstroda o check sobre quatro trechos com defeito conhecido — índice fora do alcance, chave ausente, laço que nunca roda, igualdade impossível4 de 4 acusados antes de rodar
custo-zerocria um blueprint sem contrato, invariante nem modificador e olha o que ele carrega3 de 3 sentinelas em None, 2 de 2 atalhos de acesso ligados
seguranca-por-padraoroda o check sobre um thread que escreve num nome de fora e olha a severidadesai como warning — e não como error
interoperabilidadeadota um módulo do Python de verdadea ponte resolve
runtime-modularabre um interpretador sem nenhum adopt0 módulos carregados, 0 dependências externas

O que "custo zero" quer dizer aqui — e por que o veredito é `nao-se-aplica`#

O documento diz: abstrações de alto nível devem compilar para código equivalente a implementações manuais. Não havendo compilação para código nativo, a frase não tem como valer, e forçá-la a valer seria redefini-la em silêncio.

Então o veredito é nao-se-aplica — e há outra leitura que vale, é cobrada e foi medida: uma abstração custa zero para quem não a usa.

LeituraComo é cobrada
contrato, sobrecarga, exclusiveDFAction.extras é None
invariante na linhagem, metaclasse com ganchoDFBlueprint.vigias é None
congelado, travado, lazy, readonly em construçãoDFInstance._estado é None
propriedade, descritor, __getattribute__leitura_simples e escrita_simples continuam ligados

Os dez, em resumo#

#PrincípioVereditoO limite
1segurança por padrãoparcialo analisador é otimista: a escrita concorrente é aviso, não erro
2custo zeronao-se-aplicanão há compilação nativa; vale a leitura "custa zero quando desligado"
3controle explícito de recursoscumpridocontrola-se o protocolo e o coletor, não a alocação
4compile-time firstparcialquando não consegue provar, cala — e os silêncios estão listados
5interoperabilidadecumpridodepende de tratar objeto estranho por protocolo, em todo o caminho
6portabilidadeparcialé herdada do CPython: é o que dá ARM de graça e o que põe o teto
7performance observávelcumpridomedir e ler erram de formas opostas, e por isso existem as duas
8extensibilidadecumpridopalavra nova entra como contextual, ao custo de complexidade no parser
9runtime modularcumpridozero dependência: criptografia e formato de arquivo escritos aqui
10escalabilidade técnicaparcialkernel, bare-metal e microcontrolador estão fora, e são nomeados

Cada linha da tabela aponta um arquivo. É o que a próxima página usa: onde dois princípios se contradizem, e qual venceu.