Je peux comprendre l'importance que les informaticiens ou tout ingénieur spécialisé dans le développement de logiciels aient compris comme base d'étude de la logique de base.
Mais y a-t-il des tâches / emplois qui nécessitent explicitement la connaissance de ceux-ci, autres que les tâches qui nécessitent tout type de représentation des connaissances à l'aide Knowledge Base
? Je veux entendre les types de tâches, plutôt que les réponses conceptuelles.
La raison pour laquelle je pose cette question vient de ma curiosité. Alors que les étudiants CS doivent consacrer un certain temps à ce sujet, certains cours intensifs pratiques (par exemple AI-Class ) ont complètement ignoré ce sujet. Et je me demande simplement que, par exemple, la connaissance predicate logic
pourrait aider à dessiner ER diagram
mais ne serait pas une exigence.
Mise à jour 27/05/2012) Merci pour les réponses. Maintenant, je pense que je comprends parfaitement et suis d'accord avec l'importance de logic
CS avec sa grande quantité d'application. Je viens de choisir la meilleure réponse vraiment de l'impressionnante que j'ai obtenue avec la solution pour Windows
le problème d'écran bleu.
if
condition sans logique propositionnelle?Réponses:
J'ai tendance à aimer l' Unification et tout ce qui s'y rapporte. Si vous ne connaissez pas la logique propositionnelle et prédictive, vous ignorez les bases de la logique. Si vous vous intéressez à tout ce qui figure sur la liste , ce serait comme si vous vous intéressiez aux mathématiques et si vous sautez l'addition et la multiplication. La logique n'est pas réservée à l'IA.
Comme réponse pratique, vous vous souvenez du problème des virgules flottantes Intel et comment vous ne les voyez plus? Grâce à l'utilisation de prouveurs de théorèmes, ils appartiennent au passé. N'oubliez pas l' écran bleu de la mort de Microsoft . Grâce aux solveurs SAT, à la vérification des modèles et à d'autres solutions basées sur la logique, ils sont une espèce en voie de disparition.
la source
Il existe des liens extrêmement profonds et omniprésents entre la logique et l'informatique. Pour comprendre ce qu'ils peuvent être, gardez à l'esprit que l'informatique est également appelée «technologie de l'information» ou «informatique», ce qui signifie que les systèmes informatiques capturent, traitent et fournissent des informations. Eh bien, la logique est une chose similaire. Il étudie comment les informations sont capturées dans les phrases et comment il est possible qu'une déclaration soit la conséquence d'une autre, c'est-à-dire comment son contenu d'information est déjà présent dans une autre déclaration (ou collection de déclarations). En ce sens, la logique et l'informatique sont essentiellement les mêmesdiscipline, en se concentrant sur différents aspects. Les logiciens (Church, Kleene, Turing, Post et leurs étudiants et collègues) ont créé la discipline de l'informatique, et de nombreux logiciens continuent de contribuer à l'informatique, notamment Jean-Yves Girard et ses étudiants.
Voici quelques applications standard de la logique en informatique:
La conception des circuits numériques est entièrement basée sur la logique de proposition, à tel point que ses ingénieurs l'appellent "conception logique" plutôt que "conception de circuits". Même l'écriture d'un programme informatique implique souvent de concevoir sa «logique». (Notez que la "logique" dans ce dernier sens est une idée informelle plutôt qu'une logique formelle, utilisée pour faire référence au flux d'informations à travers le programme et si elles sont traitées correctement.)
La logique des prédicats et son cousin mathématique, la théorie des ensembles, sont utilisés dans divers langages informatiques , par exemple le langage SQL pour les requêtes de bases de données relationnelles. Il existe également des langages de programmation basés sur la logique, appelés "langages de programmation logiques".
La représentation des connaissances , que vous avez déjà mentionnée, a de nombreux formalismes basés sur la logique. Même s'il utilise des formalismes non logiques, beaucoup d'entre eux ont encore une signification logique et sont donc basés sur la logique.
La logique probabiliste, où les énoncés n'ont pas seulement des valeurs vraies / fausses, mais des niveaux de certitude / incertitude, est de plus en plus le fondement des systèmes d'apprentissage automatique .
Si vous voulez déclarer formellement ce que fait un programme, c'est-à-dire donner une spécification de programme , vous finirez par utiliser une certaine forme de langage logique. En effet, il existe de nombreux langages de spécification de programme, comme Z et B, qui sont basés sur la logique des prédicats et la théorie des ensembles. Il existe également des langages de spécification basés sur la logique équationnelle, comme le mélèze. Les informaticiens inventent souvent de nouvelles logiques pour représenter les besoins de l'informatique, par exemple, la logique de Hoare et la logique de séparation, ou ils prennent et développent diverses formes sous-utilisées de logiques traditionnelles, telles que la logique temporelle et la logique modale, et les développent davantage.
Si vous voulez vérifier si un programme fait ce qu'il est censé faire, vous finissez par utiliser non seulement le langage de la logique, mais l'ensemble de la machinerie de la logique: théorie des preuves, théorie des modèles et procédures de décision. La technologie de vérification se développe maintenant à pas de géant et je m'attends à ce que, dans une dizaine d'années environ, elle soit utilisée de façon routinière pour presque tous les développements logiciels.
En fait, les liens entre la logique et l'informatique sont si profonds et omniprésents que je dirais qu'il est difficile d'être un bon informaticien sans une compréhension approfondie de la logique.
La raison pour laquelle certains scientifiques de l'IA sous-estiment la logique à ce moment-ci est que certains des premiers développeurs de l'IA avaient proposé la logique standard comme outilplutôt qu’une fondation. L'IA, de par sa nature même, promet de délivrer de la magie. Nous n'avons pas à faire le dur travail de programmation des systèmes pour produire des résultats. Ils seraient en mesure de déterminer par eux-mêmes comment produire des solutions car ils seraient «intelligents». La logique semblait montrer la voie car si les systèmes informatiques comprenaient la logique et savaient comment traiter les informations en utilisant les règles de la logique, ils seraient capables de fournir de la magie. Ce genre de foi dans la logique était, rétrospectivement, déplacé. En premier lieu, la logique standard est trop forte et trop faible à la fois. Elle est trop forte en ce sens que les règles de logique sont trop générales pour concevoir des procédures efficaces. C'est aussi trop faible parce que c'est la logique conçue par les mathématiciens pour les besoins des mathématiques et ça ne marche pas. Nous n'avons pas le vocabulaire nécessaire pour traiter de nombreux autres types d'informations du monde réel que les systèmes d'IA doivent gérer (tels que l'incertitude, les informations contextuelles telles que le temps, le changement, les connaissances, l'agence, etc.). Ainsi, l'IA subit actuellement un contrecoup contre la logique. Mais je pense que, quand ils surmonteront ce contrecoup, les scientifiques de l'IA se rendront compte que toutes les nouvelles méthodes sont toujours basées surlogique, au sens large .
la source
La logique est fondamentale pour toute informatique théorique. Sans les apprendre, vous ne pourrez pas saisir correctement la sémantique du langage de programmation, les machines de Turing, la programmation logique, la calculabilité, etc. Même le raisonnement sur vos programmes sera plus difficile sans cela. Certes, essayer de faire une preuve mathématique d'un concept CS avec être pratiquement impossible.
Ou peut-être vous posez des questions sur les utilisations dans l'industrie. La logique d'apprentissage constitue la base pour apprendre à raisonner clairement et à voir les trous dans les arguments des autres. La logique est fondamentale, que vous utilisiez ou non les symboles formels.
la source
L'une des tâches répétitives auxquelles sont confrontés les praticiens et les théoriciens du CS est de gagner en confiance dans l'exactitude de leur code.
Il existe deux approches principales:
La première, basée sur des méthodes logiques, est souvent la seule option
Les tests empiriques en l'absence de preuve sont essentiellement un substitut à la preuve. Lorsque vous concevez un système à tester, vous créez une esquisse de preuve où vous remplissez des parties de la preuve avec "test X, Y et Z ici". La capacité de raisonner logiquement est essentielle pour pouvoir concevoir un système testable. Si le système n'est pas testable ou prouvable, son concepteur / architecte n'a aucune raison de dire qu'il est apte à l'usage auquel il est destiné.
la source
Les deux domaines les plus importants que la logique joue un rôle vital sont:
En bref: 1. La définition de la langue a besoin de logique, 2: La justice de ses procédures a besoin de logique, 3. Les procédures de vérification ont besoin de logique.
Je dois mentionner que cela est différent de la conception du compilateur ou ..., Il s'agit d'une définition "formelle" des langues, la raison principale pour cela est de prouver l'exactitude du langage ou du modèle, ayant également une preuve formelle. Cela peut être utilisé pour la vérification des modèles de logiciels, la recherche d'erreurs avant l'implémentation, la recherche de blocages à nouveau avant l'implémentation, ...., Pour les logiciels qui simulent cela, vous pouvez jeter un œil à NModel .
Maintenant, pourquoi dans les problèmes traitables à paramètres fixes, vous devez travailler avec la logique, vous pouvez diviser les classes de tractabilité à paramètres fixes avec différents niveaux de logique, ils peuvent être convertis les uns aux autres: logique en automates, automates en graphique et vice-versa, mais si vous êtes un expert en logique, vous pouvez les diviser et les décider simplement, le théorème le plus important (après le théorème de Robertson et Seymour ), dans ce domaine est le théorème de Courcelle . pour plus d'informations, lisez le levé du Théorème Méta Algorithmique .
la source