Lava attempts to overcome the "ancient" programming technology that is based on text editors and that requires detailed knowledge and meticulous observation of the syntactic rules of the respective language.
Structure editing has many advantages over text editing and has the potential to considerably increase the programmers' productivity.
The conceptual framework of object-orientation can still be improved considerably in several respects:
Interfaces and implementations should be strictly separated. (Remember Modula-2 and Ada!)
Two categories of objects, state and value objects, should be distinguished.
A unified view of object- and component-orientation should be provided.
"Genericity" and design patterns should be supported properly.
The necessity of "type-casts" should be overcome.
The general conceptual framework of programming languages calls for additional improvements:
The data flow of programs can be clarified by "single-assignment" just as the control flow has been clarified by abandoning "go to".
We need an application-level pointer notion to distinguish "constituents" and "acquaintances" of objects.
"Embedded SQL" should be finally replaced by seamlessly integrated expressive means for database access,
Multi-threading, transactions, and synchronization should be treated in a purely declarative way.
Programming languages should become "organization-aware" and "security-aware".
For more details on all these issues see:
Urgent problems in current programming languages