- Artigo que defende a ideia de que, ao contrário da crença popular, C não é uma linguagem de baixo nível
- O autor, David Chisnall, sugere que as vulnerabilidades Meltdown e Spectre existem por causa da capacidade dos processadores de executar instruções além das verificações de acesso, e que esse recurso foi adicionado para fazer programadores em C acreditarem que estão programando em uma linguagem de baixo nível.
- Chisnall argumenta que estar "próxima do metal" significa fornecer uma máquina abstrata que possa ser facilmente mapeada para as abstrações expostas pela plataforma-alvo, e afirma que isso não acontece com C.
- O autor sugere que a causa fundamental das vulnerabilidades Spectre e Meltdown é que arquitetos de processadores tentaram criar processadores rápidos que expusessem máquinas abstratas como a PDP-11, permitindo que programadores em C continuassem acreditando que sua linguagem está próxima do hardware subjacente.
- Chisnall afirma que, para executar código C rapidamente, são necessárias transformações complexas de compilador e milhares de anos-homem para criar compiladores suficientemente inteligentes.
- O autor propõe que a propriedade central de uma linguagem de baixo nível é que programadores consigam entender facilmente como a máquina abstrata da linguagem se mapeia para a máquina física subjacente, e argumenta que isso não é verdade no caso de C.
- Chisnall conclui que talvez seja hora de parar de tentar tornar o código C rápido e, em vez disso, pensar em como deveria ser o modelo de programação em processadores rápidos. Ele sugere que processadores projetados puramente para velocidade provavelmente suportariam um grande número de threads, teriam unidades vetoriais largas e um modelo de memória muito mais simples.
1 comentários
Comentários do Hacker News
struct paddingesigned overflowserem comportamento indefinido parece construtiva.