非常にあります深いと普及ロジックとコンピュータ科学の間の接続が。それらが何であるかを理解する際、コンピューターサイエンスは「情報技術」または「情報学」とも呼ばれ、コンピューターシステムが情報をキャプチャ、処理、および配信することを意味することに留意してください。まあ、ロジックも似たようなものです。情報が文にどのように取り込まれ、あるステートメントが別のステートメントの結果になる可能性、つまりその情報内容が別のステートメント(またはステートメントのコレクション)にどのように存在するかを研究します。その意味では、ロジックとコンピューターサイエンスは本質的に同じですさまざまな側面に焦点を当てた規律。論理学者(チャーチ、クリーネ、チューリング、ポスト、およびその学生と同僚)がコンピューターサイエンスの分野を作り上げ、多くの論理学者がコンピューターサイエンス、特にジャンイブジラードとその学生に貢献し続けています。
コンピューターサイエンスのロジックの標準的なアプリケーションを次に示します。
デジタル回路の設計は完全に提案ロジックに基づいているため、エンジニアは「回路設計」ではなく「論理設計」と呼んでいます。コンピュータプログラムを書くことでさえ、その「論理」を考案することを伴うとしばしば考えられます。(後者の意味での「論理」は、プログラムを通る情報の流れと、それが正しく処理されているかどうかを参照するために使用される正式な論理ではなく、非公式のアイデアであることに注意してください。)
述語論理とその数学的いとこである集合論は、さまざまな計算言語、たとえばリレーショナルデータベースクエリの言語SQLで使用されます。「ロジックプログラミング言語」と呼ばれるロジックに基づくプログラミング言語もあります。
既に述べた知識表現には、論理に基づいた多くの形式があります。非論理形式を使用している場合でも、それらの多くは依然として論理的な意味を持っているため、論理に基づいています。
ステートメントが真/偽の値だけでなく、確実性/不確実性のレベルを持つ確率論的ロジックは、ますます機械学習システムの基盤となります。
プログラムが何をするのかを正式に述べたい場合、つまりプログラム仕様を指定したい場合は、何らかの形の論理言語を使用することになります。実際、ZやBのような、述語論理と集合論に基づいた多くのプログラム仕様言語があります。カラマツなどの等式論理に基づく仕様言語もあります。コンピューターサイエンティストは、コンピューターサイエンスのニーズを表すために、Hoare LogicやSeparation Logicなどの新しいロジックを発明することがよくあります。
プログラムが意図したとおりに動作するかどうかを検証する場合は、論理の言語だけでなく、論理の機械全体(証明理論、モデル理論、決定手順)を使用することになります。検証技術は飛躍的に成長しており、今後10年程度で、ほぼすべてのソフトウェア開発に日常的に使用されるようになると期待しています。
実際、ロジックとコンピューターサイエンスの関係は非常に深く浸透しているため、ロジックを完全に理解しないと優れたコンピューターサイエンティストになるのは難しいと思います。
現時点で一部のAI科学者がロジックを過小評価している理由は、AIの初期の開発者の一部が市販のロジックをツールとして提案していたためです。基盤ではなく。AIは、その性質上、魔法を届けることを約束します。結果を出すために、プログラミングシステムの苦労をする必要はありません。彼らは「インテリジェント」であるため、ソリューションの作成方法を自分で理解することができます。コンピュータシステムがロジックを理解し、ロジックのルールを使用して情報を処理する方法を知っていれば、魔法を届けることができるため、ロジックは道を指し示しているように見えました。そのような論理への信仰は、振り返ってみると見当違いだった。そもそも、既製のロジックは強すぎますし弱すぎます。論理のルールが一般的すぎて効果的な手順を考案できないという意味で強すぎます。また、数学者が数学のニーズに合わせて考案した論理であり、そうではないため、弱すぎます。AIシステムが処理しなければならない他の多くの種類の実世界の情報(不確実性、時間、変化、知識、代理店などのコンテキスト情報など)を処理するために必要な語彙があります。そのため、AIは現在、ロジックに対する反発を受けています。しかし、私は、彼らがその反発を乗り越えるとき、AI科学者はすべての新しい方法がまだに基づいていることに気付くと思います広く解釈されるロジック。