Principal orientation of Lava

There are two rather different principal orientations or philosophies to which a programming language may adhere, and it is primarily a matter of taste and personal experiences which of these you prefer. They can be characterized by two basic, conflicting notions or ideas which they would particularly emphasize:

Clarity-centric languages would emphasize ...

Flexibility-centric languages would emphasize ...

Clarity and flexibility certainly aren't completely incompatible, but ...

experience shows that most programming languages can be easily classified as putting more emphasis on "freedom" or more emphasis on "discipline". Admittedly and understandably, most programmers would prefer freedom. But today a program is no longer a dialog between a single programmer and a computer. To an increasing degree programs are joint intellectual property of a group of programmers whose membership may fequently change.

Therefore it is of increasing importance that a program can be easily understood not only by its author but also by other programmers having different preferences and habits. Consequently ...

Lava is oriented towards the clarity goal ...

since we believe that comprehensibility, ease of maintenance and modification by different programmers, a clear and natural, more standardized structure and representation of programs in the small and in the large and comprehensive support by structure-oriented programming tools, static checks and early error reporting are those things that we need most urgently today.

They should have priority over tricky, sophisticated, hard to understand, specialized or highly dynamic features, personal programming styles, and superficial simplicity/shortness of expressions whose actual effect is highly dependent on the respective static or even run time context and can be understood only after an arduous analysis.

See also

Complete static initialization checks

Object-Oriented Problem Separation

Using Lava for object-oriented analysis and design