Some of the reasons, of course, are the roots in logic programming and the clean semantic foundations of concurrent constraint programming. Of course, constraint programming is not a panacea. Research in the last decade has also identified a number of limitations. I mention some of them in this section and suggest ways to address them while trying to preserve the features that made constraint programming successful in the first place. Many of these limitations came from criticisms I have heard from users and, as you will see, they are not always coherent.
Constraint programming is too high-level.
There is a need for constraint programmming to be more open and extensible. There is little support in many existing languages to define new constraints, new constraint solvers, and new heuristics. How to achieve this goal is a fundamentally open question. Ilog Solver offers low-level mechanisms to define new constraints. Each of these approaches achieves different tradeoffs among expressiveness, ease of use, and efficiency.