Paradigm | object-oriented, functional |
---|---|
Designed by | Gilad Bracha |
Developer | Gilad Bracha, Peter von der Ahé, Vassili Bykov, Yaron Kashai, Ryan Macnak, William Maddox, Eliot Miranda |
First appeared | 2006 |
Stable release | Prototype
/ February 2013 |
Typing discipline | dynamic, optional |
License | Apache |
Website | newspeaklanguage |
Influenced by | |
Smalltalk, Self, BETA, E, Nineteen Eighty-Four |
Newspeak is a programming language and platform in the tradition of Smalltalk and Self being developed by a team led by Gilad Bracha. The platform includes an integrated development environment (IDE), a graphical user interface (GUI) library, and standard libraries.[1] Starting in 2006, Cadence Design Systems funded its development and employed the main contributors, but ended funding in January 2009.[2]
Newspeak is a class-based language. Classes may be nested, as in BETA. This is one of the key differences between Newspeak and Smalltalk. All names in Newspeak are late-bound, and are interpreted as message sends, as in Self.
Newspeak is distinguished by its unusual approach to modularity.[3] The language has no global namespace. Top level classes act as module declarations. Module declarations are first class values (i.e., they may be stored in variables, passed as parameters, returned from methods, etc.) and are stateless.
The name Newspeak is inspired by the Newspeak language appearing in George Orwell's dystopian novel Nineteen Eighty-Four. The heading on the programming language's website says "It's doubleplusgood". The motive for the name is that Orwell's Newspeak language grew smaller with each revision;[4] Bracha views this as a desirable goal for a programming language.
The language icon is supposed to be Big Brother's eye, as seen in page 3 of the documentation.
It should not be confused with the safety critical programming language of the same name designed by Ian Currie of RSRE in 1984 for use with the VIPER microprocessor. Its principal characteristic was that all exceptional behaviour in programs must be dealt with at compile time.[5][6]
HelloBraveNewWorld usingPlatform: platform = (
platform Transcript open show: 'Hello, Oh Brave new world'.
)