Modifica: la mia lingua consente l'ereditarietà multipla, a differenza di Java.
Ho iniziato a progettare e sviluppare il mio linguaggio di programmazione per scopi educativi, ricreativi e potenzialmente utili.
Inizialmente, ho deciso di basarlo su Java.
Ciò implicava che tutto il codice sarebbe stato scritto sotto forma di classi e che il codice fosse compilato in classi caricate dalla VM.
Tuttavia, ho escluso funzionalità come interfacce e classi astratte, perché non ne ho trovato bisogno. Sembrava applicare un paradigma e mi piacerebbe che la mia lingua non lo facesse. Volevo mantenere le lezioni come unità di compilazione, perché mi sembrava conveniente implementarle, familiari e mi piaceva l'idea.
Poi ho notato che sostanzialmente sono rimasto con un sistema di moduli, in cui le classi potevano essere usate come "spazi dei nomi", fornendo costanti e funzioni usando la static
direttiva, o come modelli per oggetti che devono essere istanziati (scopo "effettivo" delle classi in altre lingue).
Ora mi chiedo: quali sono gli aspetti positivi e negativi di avere classi come unità di compilazione?
Inoltre, qualsiasi commento generale sul mio design sarebbe molto apprezzato. Un post informativo sulla mia lingua è disponibile qui: http://www.yannbane.com/2012/12/kava.html .