Edit: my language allows for multiple inheritance, unlike Java.
I've started designing and developing my own programming language for educational, recreational, and potentially useful purposes.
At first, I've decided to base it off Java.
This implied that all the code would be written in form of classes, and that code compiles into classes, which are loaded by the VM.
However, I've excluded features such as interfaces and abstract classes, because I found no need for them. They seemed to be enforcing a paradigm, and I'd like my language not to do that. I wanted to keep the classes as the compilation unit though, because it seemed convenient to implement, familiar, and I just liked the idea.
Then I noticed that I'm basically left with a module system, where classes could be used either as "namespaces", providing constants and functions using the
static directive, or as templates for objects that need to be instantiated ("actual" purpose of classes in other languages).
Now I'm left wondering: what are the upsides and the downsides of having classes as compilation units?
Also, any general commentary on my design would be much appreciated. An informative post on my language can be found here: http://www.yannbane.com/2012/12/kava.html.