En lisant sur constraint-logic programming, je ne peux pas m'empêcher de remarquer une relation apparente avec la programmation SQL. SQL est-il un exemple de "programmation logique par contraintes" en action?Quelle est la relation entre CLP et SQL?
Répondre
Ils sont très similaires à partir d'un niveau élevé. Les deux sont déclaratifs ou basés sur des ensembles plutôt que sur des itérations (ce qui signifie que vous demandez ce que vous voulez - vous ne faites pas une boucle et ne traitez pas les éléments individuels un par un).
CLP peut être modélisé en SQL mais il s'agit de trouver une meilleure solution à un problème. SQL est utile pour trouver des réponses dans un ensemble de données déjà défini explicitement. CLP est bon pour trouver des réponses dans des domaines qui sont vaguement ou même parfois même pas complètement définis.
À titre d'exemple. Si je voulais retourner tous les nombres pairs entre 1 et 10 millions en utilisant SQL, j'aurais besoin d'une table avec tous les nombres listés pour en faire un choix (un ensemble de données existant). En utilisant CLP, j'aurais juste besoin d'un bound (10M) mais je n'aurais pas besoin de créer explicitement tous les enregistrements.
En interne, les moteurs CLP (problèmes CSP) peuvent également déduire des contraintes pour les rendre plus rapides. SQL vous auriez à comprendre ces règles et à les énoncer explicitement. Par exemple, si votre SQL est où A = B et B = C, un moteur CLP pourrait comprendre que A = C et l'utiliser pour courir plus vite là où SQL ne le ferait pas. Ils peuvent également déduire des domaines afin d'optimiser le temps d'exécution (si je sais que les nombres pairs ne sont jamais retournés, un CLP les rejettera - SQL les considèrera toujours mais ne les renverra pas comme une "solution").
J'espère que cela aide - je peux obtenir plus technique si vous en avez besoin. Le point clé à retenir est que les deux sont similaires mais que vous utilisez dépend du modèle de problème. Si vous pouvez dire "ce sont mes variables, et ce sont les interrelations, donnez-moi une solution valable" alors CLP est un bon candidat. Si vous pouvez dire "il y a mes variables, et ce sont les spécificités, donnez-moi un sous-ensemble de mes données existantes qui correspond" alors SQL est un meilleur candidat.
Je n'ai pas de réponse complète, mais vous pourriez trouver intéressant de regarder Datalog et DLV. Ils sont peut-être le «chaînon manquant» entre la programmation logique (mais pas CLP) et SQL qui vous aidera à comprendre les choses plus clairement.
Comme il s'agit plus sur LP que CLP j'ai manqué quelque chose - si oui, désolé.
- 1. Quelle est la relation entre MIDP et JME (et Android)?
- 2. Quelle est la relation entre CRITICAL_SECTION et CCriticalSection?
- 3. Quelle est la relation entre GC, Finalize() et Dispose?
- 4. quelle est la relation entre COUPDAYSNC et COUPNCD
- 5. Quelle est la relation entre les réseaux bayésien et neuronal?
- 6. quelle est la relation entre Selenium RC et WebDriver?
- 7. Quelle est la relation entre bitbucket.org et bytebucket.org?
- 8. Quelle est la relation entre ghc-pkg et cabal?
- 9. Quelle est la relation entre DBD :: Mysql et ODBC?
- 10. Quelle est la relation entre z-index et css Position:?
- 11. Quelle est la relation entre un SPID et un serveur Connection in SQL?
- 12. Quelle est la relation entre SqlConnections ouvertes dans l'application cliente et les processus dans SQL Server?
- 13. Quelle est la relation entre .lib et .obj entre eux et mon projet en C++?
- 14. Quelle est la différence entre l'heure PHP et l'heure SQL?
- 15. Tables SQL Server: quelle est la différence entre @, # et ##?
- 16. Quelle est la relation entre la qualité et la convivialité du logiciel?
- 17. Unittest dans Django. Quelle est la relation entre la classe et la méthode de TestCase?
- 18. Quelle est la relation entre les types Unboxed et la rigueur?
- 19. Quelle est la relation entre MCPS (million de cycles par seconde) et la puissance consommée
- 20. Quelle est la différence entre dict() et {}?
- 21. Quelle est la différence entre "$^N" et "$ +"?
- 22. Quelle est la différence entre = et: =
- 23. quelle est la différence entre:.! et: r !?
- 24. Quelle est la différence entre ~ et! opérateur?
- 25. Quelle est la relation entre Rietveld de GvR et Gerrit d'Android?
- 26. Quelle est la relation entre les combinateurs d'analyseurs et les analyseurs de descente récursifs?
- 27. En nginx, quelle est la relation entre worker_connections, keepalive_timeout et connexion $
- 28. Quelle est la relation entre les pixels et les pixels mis à l'échelle
- 29. Quelle est la relation entre WebProxy et IWebProxy par rapport à WebClient?
- 30. Quelle est la différence entre Supprimer et Supprimer dans une relation plusieurs-à-plusieurs dans CoolStorage
Merci pour votre réponse! – bobobobo
Les deux sont intrinsèquement basés sur une vision relationnelle du monde. Le langage fondamental pour raisonner sur les relations est la logique classique. La programmation SQL et la programmation par contraintes (logique) sont toutes deux des implémentations spécialisées de la logique classique. – HolKann