Причина вивчити логіку пропозицій та предикат


14

Я можу зрозуміти важливість того, що комп'ютерні вчені або будь-які інженери, пов'язані з розробкою програмного забезпечення, повинні розуміти вивчення основних логік як основу.

Але чи є якісь завдання / завдання, які явно вимагають знань про них, крім завдань, які вимагають використання будь-якого виду знань Knowledge Base? Я хочу почути типи завдань, а не концептуальні відповіді.

Причина, яку я прошу, це лише з моєї цікавості. Хоча студентам CS доводиться витрачати певну кількість часу на цю тему, деякі курси, що займають практику (наприклад, AI-клас ), цілком пропустили цю тему. І мені просто цікаво, що, наприклад, знання predicate logicможе допомогти малювати, ER diagramале не може бути вимогою.


Оновлення 27.05.2012) Дякую за відповіді. Тепер я думаю, що я повністю розумію і погоджуюся з важливістю logicCS в його величезній кількості застосувань. Я просто вибрав найкращу відповідь по-справжньому з вражаючості, яку я отримав у вирішенні проблеми з Windowsсинім екраном.


4
Коли я писав свою відповідь, я вважав, що обсяг вашого запитання є неясним. Ви обмежуєте себе CS, або галуззю, або обома, чи, можливо, взагалі скасовуєте?
Дейв Кларк

@Dave Кларк Так, я виявив, що недостатньо ясно. Перше, що я хотів знати, - в якій галузі потрібна грамотність певної логіки (хоча я ціную вашу відповідь лише для того, щоб переконати себе, що будь-який інженер, пов'язаний із програмним забезпеченням, не повинен пропускати цю тему).
IsaacS

Було б добре, якби ви могли змінити своє запитання, щоб зафіксувати те, що ви насправді шукаєте.
Дейв Кларк

Як саме можна написати ifумову без пропозиції логіки?
edA-qa mort-ora-y

Відповіді:


22

Я, як правило, люблю Об’єднання і все, що з цим пов'язано. Якщо ви не знаєте пропозиційної та предикатної логіки, то ви пропускаєте основи логіки. Якщо у вас є інтерес до чогось перерахованого , то це було б як інтерес до математики та пропускання додавання та множення. Логіка не тільки для AI.

В якості практичної відповіді згадайте проблему Intel з плаваючою точкою і як ви їх більше ніколи не бачите? Завдяки використанню доказів теореми вони є минулим. Пам'ятайте синій екран смерті Microsoft . Завдяки вирішувачам SAT, перевірки моделей та іншим логічним рішенням вони є зникаючим видом.


3
вимираючий вид [цитування ні - погіршення сегментації. Ядро скинуто.
JeffE

@JeffE Якщо ви шукаєте цитування, я натомість представляю фактичні докази. Коли ви востаннє бачили його? :)
Гай Кодер

3
Я ніколи його не бачив. Я використовую Mac.
JeffE

1
@JeffE Mac - це тісно пов'язані системи, де все, від архітектури машини до прикладних програм, вирішує одна команда / організація. Системи Windows відкриті, де різноманітні виробники та команди пропонують рішення, які з'єднуються між собою, спираючись лише на визначені стандарти (інтерфейси і часто). Вони набагато більше є викликом для інформатики. Команди Microsoft, які розробили методи теоретичного / статичного аналізу, щоб зробити це безпечно, зробили фундаментальний прогрес у нашій галузі.
Удай Редді,

1
@UdayReddy: Я не сумніваюся, що дослідники Microsoft досягли кардинального прогресу, або що BSOD набагато рідше, ніж раніше. Але "зникаючий вид" - це непідтримувана гіпербола; несправний код - не єдине джерело збоїв.
JeffE

22

Між логікою та інформатикою існують надзвичайно глибокі та всепроникні зв’язки. Розуміючи, якими вони можуть бути, майте на увазі, що інформатику також називають "інформаційними технологіями" або "інформатикою", тобто комп'ютерні системи фіксують, обробляють та доставляють інформацію. Ну, логіка - це подібна річ. Він вивчає, як інформація фіксується у реченнях і як можливо, що одне твердження є наслідком іншого, тобто, як його інформаційний зміст вже присутній в іншому висловлюванні (або збірці тверджень). У цьому сенсі логіка та інформатика є по суті однаковимидисциплінованість, орієнтація на різні аспекти. Логіки (Church, Kleene, Turing, Post та їхні студенти та колеги) створили дисципліну "Комп'ютерні науки", і багато логіків продовжують робити внески в інформатику, особливо Жан-Ів Жирар та його студенти.

Ось декілька стандартних застосувань логіки в інформатиці:

  • Дизайн цифрових мікросхем повністю базується на логіці пропозиції, настільки, що його інженери називають це "логічним дизайном", а не "схемою дизайну". Навіть написання комп’ютерної програми часто вважається продуманням її "логіки". (Зауважте, що "логіка" в останньому сенсі - це неформальна ідея, а не формальна логіка, яка використовується для позначення потоку інформації через програму та того, чи правильно вона обробляється.)

  • Логіка предиката та його математичний родич, теорія множин, використовуються в різних обчислювальних мовах , наприклад, мові SQL для запитів реляційних баз даних. Існують також мови програмування на основі логіки, які називаються "мовами логічного програмування".

  • Представлення знань , про яке ви вже згадували, має багато формалізмів, заснованих на логіці. Навіть якщо він використовує нелогічні формалізми, багато з них все-таки мають логічне значення , а значить, засновані на логіці.

  • Імовірнісна логіка, де висловлювання мають не просто істинні / хибні значення, а рівні визначеності / невизначеності, все більше є основою для систем машинного навчання .

  • Якщо ви хочете офіційно заявити, що робить програма, тобто даючи специфікацію програми , ви в кінцевому підсумку використовуєте певну форму логічної мови. Дійсно, існує багато мов специфікації програм, як Z і B, які засновані на логіці предиката та теорії множин. Існують також мови специфікацій на основі рівняльної логіки, наприклад, модрина. Вчені-комп’ютери часто вигадують нову логіку, щоб представити потреби інформатики, наприклад, логіка Хоара та логіка розділення, або вони підбирають і розробляють різні не використовувані форми традиційних логік, такі як часова логіка та модальна логіка, і розвивають їх далі.

  • Якщо ви хочете перевірити, чи програма виконує те, що вона повинна робити, то ви в кінцевому підсумку використовуєте не лише мову логіки, але й всю техніку логіки: теорію доказів, теорію моделей та процедури прийняття рішень. Технологія перевірки зараз зростає як невдовзі, і я сподіваюся, що ще через десятиліття вони будуть регулярно використовуватися майже для всієї розробки програмного забезпечення.

Насправді, зв’язки між логікою та інформатикою настільки глибокі та всепроникні, що, я б сказав, важко бути хорошим комп'ютером без глибокого розуміння логіки.

Причина, яку в цей час деякі вчені АІ недооцінюють логіку, - це те, що деякі з перших розробників AI запропонували логіку поза штатом як інструмента не фундамент. ШІ за своєю суттю обіцяє доставити магію. Нам не потрібно робити важку роботу програмних систем, щоб досягти результатів. Вони зможуть самостійно зрозуміти, як виробляти рішення, оскільки вони були б "розумними". Логіка, здавалося, вказує шлях, тому що якби комп'ютерні системи розуміли логіку і знали, як обробляти інформацію, використовуючи правила логіки, вони змогли б доставити магію. Така віра в логіку була ретроспективно замінена. По-перше, логіка поза штатним надто сильною і водночас занадто слабкою. Це занадто сильно в тому сенсі, що правила логіки занадто загальні для розробки ефективних процедур. Він також занадто слабкий, оскільки це логіка, розроблена математиками для потреб математики, і це не так не мати словниковий запас, необхідний для роботи з багатьма іншими видами реальної інформації, з якою мають працювати системи AI (такі як невизначеність, контекстна інформація, наприклад, час, зміни, знання, агентство тощо). Отже, AI зараз зазнає зворотного зв'язку проти логіки. Але я думаю, що, коли вони перейдуть цей люфт, вчені ШІ зрозуміють, що все новіші методи все ще базуютьсялогіка, широко витлумачена .


Додайте реляційні бази даних!
reinierpost

Дуже приємна і повна відповідь, згадайте про Жана-Іва Жирара. Чи вважаєте ви ймовірнісну логіку тим самим полем дослідження, що й нечітка логіка? У літературі ми зустрічаємо два терміни, і я хотів би дізнатися, чи позначають вони однакову область дослідження.
zurgl

@zurgl. Я розумію, що не існує єдиного формалізму, який би твердо названий "імовірнісною логікою". Нечітка логіка справді є одним з таких формалізмів, але є й інші. Формою імовірнісних міркувань, найбільш успішною в штучному інтелекті сьогодні, є байєсівський висновок. Однак її логічні основи ще не міцно закладені.
Удай Редді

17

Логіка є основою для всіх теоретичних інформатик. Не вивчивши їх, ви не зможете належним чином зрозуміти семантику мови програмування, машини Тьюрінга, логічне програмування, обчислюваність тощо. Навіть міркування про ваші програми буде складніше без цього. Звичайно, намагатися зробити математичне підтвердження якоїсь концепції CS неможливо практично неможливо.

А може, ви запитуєте про використання в промисловості. Логіка навчання є основою для того, щоб навчитися чітко міркувати і бачити дірки в аргументах інших людей. Логіка є основоположною, використовуєте ви формальні символи чи ні.


Вам не вистачає алгоритму.
Yuval Filmus

4
Це входить у "і так далі".
Дейв Кларк

9

Одне з повторюваних завдань, з яким стикаються практикуючі та теоретики ЦС, - це здобуття впевненості у правильності свого коду.

Є два основні підходи:

  1. Доведення: Сформулюйте логічне підтвердження того, що частина системи має певні властивості, можливо, допомагають передумови, дизайн-договір, перевірки коду.
  2. Тестування: Перевірте, чи певні властивості містять для різних входів, а потім спонукайте до цього властивості для інших входів.

Перший, заснований на логічних методах, часто є єдиним варіантом, коли

  1. Типового вводу немає. Наприклад, під час тестування властивостей безпеки ви повинні турбуватися про нетипові входи, якщо ви не зможете логічно пояснити, які входи є нетиповими, ви навряд чи отримаєте хороше висвітлення.
  2. Простір конфігурації дуже великий, тому вам доведеться розкласти його на частини, логічно міркуючи про те, які частини можуть впливати на інші частини, перш ніж тестувати локально.
  3. У вас є лише документація, що описує поведінку кращих випадків систем, які не є вашими. Можливо, ви зможете імітувати їх, але не можете перевірити те, що відбувається, коли зовнішня залежність виходить з ладу, оскільки ви не можете з правових чи етичних причин спричинити її збій.

Емпіричне тестування за відсутності доказів є в основному заміною доказування. Коли ви проектуєте систему, яку можна перевірити, ви створюєте ескіз доказів, де ви заповнюєте частини доказу з "тут тестуйте X, Y і Z". Здатність до логічного міркування є надзвичайно важливою для того, щоб мати можливість створити тестувальну систему. Якщо система не перевірена або перевірена, тоді її дизайнер / архітектор не має жодної справи, яка каже, що вона придатна для її використання.


6

Дві найважливіші сфери, в яких логіка відіграє життєво важливу роль:

  1. Офіційна специфікація мови та перевірка .
  2. Фіксовані параметри класів, що відстежуються .

Z

Якщо коротко: 1. Визначення мови потребує логіки, 2: Справедливість її процедур потребує логіки, 3. Процедури перевірки потребують логіки.

Я мушу зазначити, що це відрізняється від дизайну компілятора чи ..., Це "формальне" визначення мов, головна причина цього - доведення правильності мови чи моделі, а також формальне підтвердження. Це можна використовувати для перевірки моделей програмного забезпечення, пошуку помилок перед впровадженням, пошуку знову тупиків перед реалізацією, ...., Про програмне забезпечення, яке моделює це, ви можете подивитися на NModel .

Тепер, чому в проблемах з виправленими параметрами потрібно працювати з логікою, Ви можете розділити класи простежуваності параметрів фіксованого параметра з різними рівнями логіки, вони можуть бути перетворені один в одного: логіка до автоматів, автомати до графіку та віце-вірш, але якщо якщо ви фахівець з логіки, ви можете розділити і вирішити їх просто, найважливіша теорема (після теореми Робертсона і Сеймура ), в цій галузі - теорема Курсерлла . для отримання додаткової інформації читайте опитування теоретики Meta Algorithmic .


Хоча логіку можна використовувати для визначення мов, це навряд чи є "життєво важливою роллю" в моєму досвіді. Я взагалі не бачу, як логіка стосується FPT.
Рафаель

@Raphael, я бачу, що відповідь на ваш коментар займає більше рядків, я оновив свою відповідь. Я думаю, що я відповів вам, але якщо ви все ще вважаєте, що це не нормально, скажіть, про мою "формальну" частину, я думаю, що моє перше посилання на вікі було недостатньо хорошим, я додав більше інформації. Також для другої частини я додав гарний папір і якщо ви хочете дізнатися більше про нього, можете прочитати.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.