A language that puts the needs of the compiler and computer over the needs of programmers. While there is no defined list of traits that Hard Languages must
possess, they can often be recognized by a rather verbose syntax, manifest typing, and the sort of 'momentum' they impart onto programs over the course of their construction. For many of these languages, they are also close to the metal, which results in problems like undefined failures instead of well-defined exceptions. Very informally, if it's painful to go back and change things or to debug those changes, it's probably a HardLanguage
For Context: AlternateHardAndSoftLayers
Why is Lua, an interpreted language, in the list?
Because it offers blazing performance in exchange for a difficult object model that makes objects hard to write. Hence, users like it, even when they don't know it's there!
... I'd argue that Lua is a soft language in that it's primarily a scripting language, used to dynamically mould and modify the behavior of a program written in a 'hard' language like C or C++. The ObjectModel it offers isn't horrible, either... it's just a little different; it is better suited to prototype based objects than to classes and such.
BTW, Lua's ObjectModel
is called "MetaTables?
Perhaps you're talking about an older version of Lua (Lua 5.1 improved the language quite a bit). While Lua doesn't have an object model per se, the one used by convention (and described in ProgrammingInLua?
) is a simple PrototypeObject?
model. -- ScottVokes
(original wording) A language that puts the needs of the user above the needs of the programmer.
One can argue that the needs of the programmer are
the needs of the user. After all, software that does not satisfy the needs of the user is useless, by definition of "use". (And the ambiguous application of the phrase applies also - the user of a programming language
is always a programmer.) Perhaps a better definition of "soft" languages are languages that allow the developer to ignore peripheral concerns such as speed and compile-time safety in favour of focusing specifically on expressing the concept at hand. After all, the C++ philosophy was "you only pay for what you use" - which was important if the user needed speed.
Note: Please MakeRoomForAllViewpoints
Some languages seem to cross the boundary. Where do MlLanguage
Across the boundary, if you're correct. A language that can cross boundaries at both runtime and compile time can probably be used to AlternateHardAndSoftLayers all on its lonesome.