Seeing what it gives I see several huge advantages:
- Better approach to bug-free programming. Example. If you have to enable/disable a menu item with imperative programming, you should not only remember on what condition this item is enabled, but also don't forget to track all the moments where this piece of the code should be executed. In LP the latter (I suppose) is not necessary
- Potentially a great to way to write program that starts faster. Since everything is packed in dependencies, the actual code that is necessary, runs only when it is necessary. Generally many pieces of codes take much time during the start not because it is needed right now, but because it would be needed sometimes in the future.
- Also seems a great way to automatically apply concurrency. This is because if we can track all the dependencies of the items, we can theoretically see that some branches of the graph can be evaluated in parallel.
This is just my speculation, since I really didn't write any program with a logic programming language, but it seemed like very impressive concept. So are there disadvantages or my positive items not really true in real life?
Thanks
Max