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.