http://nice.sourceforge.net
The
NiceLanguage is an extension of the
JavaLanguage. It has advanced features like
ParametricPolymorphism,
MultipleDispatch,
HigherOrderFunctions,
DesignByContract, tuples,
KeywordParameterPassing and
OptionalParameters. Unique features also include
AbstractInterfaces and a type system preventing
NullPointerExceptions at compile time. The compiler is
OpenSource, and the design of the language is open to public review and contributions.
Like many
OtherLanguagesForTheJavaVm, allows full access to the Java libs.
nice
Clever. It feels a lot like the
DylanLanguage, but with static typing,
ParametricPolymorphism, and
JavaVirtualMachine integration. Not a bad language, as such things go, but some of the syntax feels a bit more verbose than necessary. Not the ultimate language, but nice. So to speak.
A design decision for Nice is to stay close to Java, except when introducing a difference provides a clear advantage. This is supposed to make learning the language easier, but also comes with the price of some legacy, especially in the syntax. Is this what you are referring to, or is the verbosity in the syntax of the Nice-specific features? Could you give examples? --
DanielBonniot
Interesting. An especially unique feature is the idea of an
AbstractInterface. As everyone knows, a normal interface tags an object as having a given set of methods and is part of the object's type, but doesn't provide the methods. In Nice, an abstract interface doesn't affect the object's type; rather, it simply tags the object as having the methods. This becomes uniquely useful with method generics. See the Nice manual. In short, it provides something that looks very much like
AspectOrientedProgramming.
It looks like an
AbstractInterface is like the "Concepts" which were proposed for (and removed from) C++0x? --
RonRomero
I guess this is generally known as a MixIn ?
CategoryProgrammingLanguage