Using ShapeLogic for general declarative programming
The declarative logic system is being refined substantially in ShapeLogic 0.9.
While the declarative logic system in ShapeLogic is geared towards image processing and computer vision, the logic system is not dependent on the vision system and it is possible to use ShapeLogic for other purposes.
This page considers possible other uses.
Current declarative programming system
Here is a look at current systems using declarative programming sorted by popularity. This was done in a highly unscientific way, and the popularity grouping is not meant to judge the quality of the systems.
Highly popular
- SQL
 for storing and retrieving uniform data
 
- Spreadsheet
 for simple calculations
 
- Mathematica
 for advanced mathematics
 
- Make
 for compiling C and C++
 
- Ant
 for compiling Java
 
 
Somewhat popular
- Hibernate
 and other ORM are starting to pick up steam
 
- List comprehension
 from Haskell
 is starting to make its way into main stream programming languages: Python, Scala, C#.
 
- IoC, Inversion of Control frameworks
 like Spring
 and Google Guice
.
 
 
Not a lot of momentum
- Expert systems
 popular in the 80ies
 
- RETE engines
 e.g. Jess
 and Drools
 get a little press coverage now
 
- Prolog
 popular in the 80ies
 
- Oz
 experimental functional and logic language
 
- CYC
 maybe the most advanced and ambitious system for declarative logic and programming
 
 
 
Is there room for another declarative programming system?
Here are a few observations
- Declarative programming is not a one size fits all field
 
- The more powerful systems are not the most popular
 
- Simplicity seem to be a big factor in success, but not exclusively, Prolog is very simple, but lost momentum
 
- There is a place for custom systems
 
 
Goal for declarative programming in ShapeLogic
ShapeLogic is not a general purpose system.
It is meant as a simple system that will be able to do real work and be simple to learn and use.
 
Domains suitable for ShapeLogic
Domains where there are a limited number of objects with somewhat constant and limited sets of features.
 
Is there room for ShapeLogic as a general declarative programming system?
It is a long shot.