Quando si progetta un linguaggio di programmazione compilato, è una cattiva idea richiedere un ordine specifico di compilazione di unità separate, in base alle loro dipendenze?
Per illustrare cosa intendo, considera C. C è l'opposto di quello che sto suggerendo. Esistono più file .c
, che possono tutti dipendere l'uno dall'altro, ma tutte queste unità separate possono essere compilate da sole, senza un ordine particolare - solo per essere collegate insieme in un eseguibile finale più tardi.
Questo è principalmente dovuto ai file di intestazione. Consentono a unità separate di condividere informazioni tra loro e quindi le unità possono essere compilate in modo indipendente.
Se una lingua dovesse disporre di file di intestazione e mantenere solo i file sorgente e oggetto, l'unica opzione sarebbe quella di includere effettivamente le meta-informazioni dell'unità nel file oggetto dell'unità.
Tuttavia, ciò significherebbe che se l'unità A dipende dall'unità B, allora l'unità B dovrebbe essere compilata prima dell'unità A, quindi l'unità A potrebbe "importare" l'oggetto dell'unità B file, ottenendo così le informazioni richieste per la sua compilazione.
Mi sto perdendo qualcosa qui? È davvero l'unico modo per rimuovere i file di intestazione in lingue compilate?