In teaching, there have always been three basic programming paradigms: imperative, functional and logic programming. But only two of them have found their way into software industry. Or not?
Logic programming has always been the stepchild of programmers when it comes to programming paradigms. Imperative programming languages are the most native way to write code for computers / CPUs / processors since a processor consists of a set of registers (variables) that are changed through the side effects of instructions. Functional programming is the native way of thinking of mathematicians since it abstracts away from programs to formulas and expressions. But what exactly is logic programming?
A short overview of logic programming
Logic programming basically consists of two parts: knowledge and deduction. A logic programming system offers something like a knowledge base where the user or the programmer can store what he knows about the world. Then he adds some rules what additional knowledge can be derived from that knowledge base and asks the logic interpreter about the world. It was the forefather of AI – with the difference that modern AI is self-learning and mimics our „intuitive“ thinking like image recognition while the first AI approaches with prolog rather aim for „artificial“ human skills like language, mathematics and logic reasoning.
But logic programming has not died out. It has rather emerged into daily used subsystems like:
- Turing Complete Type systems (TypeScript, Scala, Haskell)
- Dependency management of software package managers
- Any database system
Artificial Intelligence in its early form
Prolog from the 90s is one of the early forms of artificial intelligence. It was capable of logic reasoning and knowledge building. The thing is that it only reasons information that is safe which is – in contrast to modern AI – both a strength and a drawback at the same time.
A true drawback is that logical programming is not a self-learning system. The user has to write every reasoning rule by hand. But in the case of developing software, this is exactly what we want.
Low Code programs are knowledge bases
Low Code programs are knowledge bases. They fit into a fixed data scheme and you can generate the output code from reasoning over the data stored in the knowledge base.
These software models can be modeled in a graphical form which makes software development easier and less error prone.
Low Code + Logic Programming allows for Feature Oriented Programming
Behind the „Feature Oriented Programming“ paradigm lies the dream of creating software by just switching features on and off. This can be seen both the intuitive way with a software that enables and disables whole modules, but the real strength lies in the fine graned feature models: For instance classes that can enable the feature „Object Relational Mapping“ which will generate the necessary helper code to synchronize an object from and to the dabase.
We at LAUNIX invented a whole feature oriented programming language called FOP. It allows the programmer to define features in an injective way such that existing classes are extended by a feature in a feature library. A project is an instantiation of a bunch of features. This is possible both in textual and the graphical way.
Programming the FOP way means that instead of just modeling the whole datascheme from scratch like the low code tools require us, we can instantiate several features like „a person datascheme“ as a template. In contrast to Low Code templates, the templates in FOP are not copied but used injective. This means, in case of an update, the customized software will be upgraded, too. This allows for the creation of complex ERP projects that need to be updatable.
If you wonder why this article ends so apruptly, you have to consider that it is easter vacation and I’m resting now. If you want to know more about FOP, concat us at firstname.lastname@example.org