Grazie

· sons of the silent age

Heroes riprende idee da altri linguaggi e da lavori di ricerca. Qui trovi gli autori e il contributo di ciascuno.

I crediti indicano le persone e i gruppi che hanno progettato questi linguaggi. Non sono stati consultati sul progetto Heroes e non sono responsabili del modo in cui ne usa le idee.

Le basi e gli strumenti

Il compilatore traduce Heroes in C11 e usa clang per produrre gli eseguibili e verificare le dichiarazioni delle librerie C sui loro header, i file che ne descrivono funzioni e tipi. Il primo compilatore, usato per arrivare a quello scritto in Heroes, era in Rust.

Il modello dei valori

In Heroes, modificare una copia non cambia l’originale. Non si possono creare cicli di riferimenti tra valori, quindi la memoria può essere liberata contando i riferimenti ancora in uso. Non serve un garbage collector che cerchi cicli. Questo modello si basa sui lavori citati qui sotto.

Sicurezza senza garbage collector

Heroes punta a impedire gli accessi non validi alla memoria e la corruzione dei dati. I progetti qui sotto hanno studiato come ottenere sicurezza senza un garbage collector, il sistema che cerca e libera dati inutilizzati.

Mantenere piccolo il linguaggio

I linguaggi di Wirth hanno fornito un riferimento per mantenere breve la specifica. Per il compilatore Heroes, il limite riguarda invece la lunghezza dei singoli file: devono restare comprensibili a chi li legge.

I tipi e le alternative valutate

Che effetto fa usarlo

Questi linguaggi hanno influenzato la sintassi, i controlli e i comandi di Heroes. Chi li conosce troverà molte scelte familiari.

Messaggi d’errore e codice incompleto

Immutabilità su larga scala

Generare codice C

Heroes genera C e affida a un compilatore C il lavoro necessario per ciascuna macchina. I linguaggi citati qui sotto hanno seguito questa strada prima di Heroes.

Dove Heroes incontra il C

Un programma Heroes chiama direttamente le librerie C, e gira sopra un runtime scritto in C, il pezzo di programma che sta sotto e tiene in funzione le cose mentre gira. Le regole qui sotto, su che cosa passa fra Heroes e il C, vengono da progetti che avevano lavorato su quel confine prima.

Qualcuno c’era arrivato prima

Heroes è arrivato da solo a ciascuna delle regole qui sotto, e solo dopo ha scoperto che qualcuno c’era arrivato prima. Il merito è loro.

Le scelte da valutare con cautela

Il progetto ha studiato anche i limiti e i costi delle scelte di altri linguaggi. Questi precedenti aiutano a capire quali soluzioni adottare e quali evitare. Quello che qui è stato rifiutato, e chi lo ha rifiutato, ha una pagina sua: i no di Heroes →

E il nome

David Bowie, per “Heroes” (1977), la canzone e l’album. Il nome conserva le virgolette dell’album. Da Bowie viene anche il libro da cui è nato il linguaggio. I riferimenti musicali restano nei testi del progetto e non compaiono nei messaggi d’errore o nei nomi delle librerie.

  1. hunky dory l’album stesso, 1971
  2. changes Hunky Dory, 1971
  3. quicksand, avoided Quicksand, su Hunky Dory, 1971
  4. five years Ziggy Stardust, 1972
  5. moonage daydream Ziggy Stardust, 1972
  6. lady stardust Ziggy Stardust, 1972
  7. rebel rebel Diamond Dogs, 1974
  8. speed of life Low, 1977
  9. sound and vision Low, 1977
  10. a new career in a new town Low, 1977
  11. heroes “Heroes”, 1977
  12. sons of the silent age “Heroes”, 1977
  13. fashion Scary Monsters, 1980

Le righe in oro accanto ad alcuni titoli di sezione sono canzoni di Bowie. Sono tutte e dodici qui sopra, dal disco più vecchio al più recente, insieme a quella che dà il nome al linguaggio. Ogni titolo apre la registrazione su YouTube; quando il titolo è di un album, il link apre la voce del disco su Wikipedia.

Poi: il panel, dove cinque giudici valutano le proposte e discutono come adattare queste idee a Heroes.