Leibniz is not a programming language
Since it is possible to implement algorithms in Leibniz and run them (see Heron's algorithm for computing square roots for a simple example), Leibniz may seem to be just another programming language, differing from others mainly in its extreme emphasis on literate programming. However, Leibniz is at the same time more than, less than, and different from a programming language.
Leibniz is more than a programming language
A programming language lets you write executable programs, and nothing but executable programs . You can of course write incomplete programs, or pieces of programs, but then there is nothing you can do with them before adding more code, enough to make an executable program.
Leibniz lets you write mathematical equations (see Lotka-Volterra equations for a simple example), without necessarily
doing
anything with them. You can use Leibniz much like traditional mathematical notation, but with the benefit of consistency checks (in particular consistency of Sorts) and with the benefit of being machine-readable, meaning that you can feed your equations as input to a computational tool, such as a simulator or a data analysis program. An example is the use of RESequence
, a computational tool written in Pharo, for solving the Lotka-Volterra equations efficiently.
Leibniz is less than a programming language
Leibniz code doesn't do anything. You can write algorithms, but they can only transform values. That's of course the core of any scientific algorithm, but to write programs, tools that have effects, you need more. For example, you must read and write files, retrieve data over the network, prepare graphics for display, etc. Leibniz cannot do any of this.
Leibniz is different from a programming language
Programming languages are used to write programs. You cannot write programs in Leibniz. There is no compiler or interpreter for Leibniz code. All there is is an authoring system (you are using it right now to read this text), which lets you interact with Leibniz code. In a sense, Leibniz code isn't really code as it is commonly understood. It's more useful to view Leibniz code as data that can be processed by computational tools .