Next: History
Up: Language Features
Previous: Planned Enhancements
Perhaps as important as what to include is what not to
include. For example, Nickle contains no Object-Oriented
Programming (OOP) features. Class-based OOP in the style of
C++ and Java is well understood and accepted. However, the
combination of this style of OOP with some of the current
and proposed features of Nickle, especially polymorphic type
inference and first-class functions and continuations,
verges on open research questions. In addition, the most
useful domains of application of OOP, such as large-scale
programming, easy reuse of opaque constructs, and graphics
and window system programming, are outside the intended
scope of Nickle's applicability.
Other features deliberately omitted from Nickle include:
- Support for graphics and GUI implementation. The
impact of this support on the portability and simplicity
of the Nickle implementation is potentially large, and
the perceived benefit for expected Nickle applications is presently
small. Nonetheless, this decision may be revisited in the future.
- Language-level support for interfacing with native code.
In actuality, as discussed below, it is quite easy to
integrate native code with Nickle programs, but only by
integrating the native code into the Nickle
implementation.
- Ad-hoc polymorphism, operator overloading, user-defined
operators, and related features. This is driven by
concern about the complexity and difficulty of
implementation of these features, and their perceived
negative impact on readability and portability of code.
The general philosophy of Nickle is that anything
important enough to require these features is important
enough to embed in the language definition.
Next: History
Up: Language Features
Previous: Planned Enhancements
Bart Massey
2001-04-19