You can indeed consider a context plus a term to be reduced as a program, which is executed by term reduction. But the unit of code in Leibniz is the context, not the context + term-to-be-reduced. If you want to compare to programming languages, a context is more like a library.
The difference is in the focus rather than in the principles. Leibniz is a Turing-complete language, so you can use it for programming. But that's not what Leibniz is designed for. Term reduction is more a way of exploring the definitions in a context than a way to run code.
The difference is in the focus rather than in the principles. Leibniz is a Turing-complete language, so you can use it for programming. But that's not what Leibniz is designed for. Term reduction is more a way of exploring the definitions in a context than a way to run code.