Нам всем знакомы понятия "логичный", "нелогичный", "истина", "ложь", "сомнение". Мы отлично знаем, что такое "одно ИЛИ другое", "одно И другое", "НЕ то". Мы используем эти понятия в нашей обычной повседневной жизни. Но не все догадываются, что тем самым мы занимаемся математикой и философией.
Более того, математика и философия являются важнейшей основой таких современных информатики и вычислительной техники. Так что садясь за компьютер или беря в руки смартфон мы пользуемся и трудами философов древней Греции, и трудами математиков средневековья, а не только достижениями самых современных технологий.
В начале были философы
Да, начиналось все с философов, с их размышлений об устройстве мира. Обычно считается, что это были древнегреческие философы, хотя такие мыслители были и у других народов. Что, впрочем, не является сегодня для нас определяющим.
Именно философы определили важнейшие понятия "истина" и "ложь", работали с этими понятиями осмысливая и изучая их. Конечно, сами понятия существовали и до философов, и независимо от них. Но философы дали им точное определение и вывели (открыли?) некоторые правила работы с этими понятиями. Причем эти правила и законы были выведены для такой абстрактной сущности, как "умозаключения".
То есть, для наших мыслей и рассуждений. Так появилась силлогистика, предшественница формальной логики и современной математической логики. Уверен, что практически все сталкивались с силлогистикой (псевдо-силлогистикой, если честно) еще в детстве, скорее всего в школьные годы. Помните, что то вроде такого?
-Давай докажу, что ты обезьяна?
-Не докажешь!
-Смотри! Ты это не я. Правильно?
-Конечно!
-А я не обезьяна. Правильно?
-Да.
-Но раз ты это не я, а я не обезьяна, значит ты обезьяна!
Конечно, это шутка! Более того, то типичный случай подмены понятий и передергивания. Но это именно "умозаключения", цепочка рассуждений.
Попытка строго описать процесс построения цепочек рассуждений и правил для их преобразований, причем максимально абстрактных и для абстрактных понятий (это же философы античности!), сохраняющих смысл привела к появлению формальной логики.
Сохранение смысла в понимании античных философов обозначало сохранение истинности. Аристотель, которому и приписывается создание формальной логики, называл ее аналитикой. Кстати, Аристотель ввел и понятие силлогизма.
Силлогистика породила еще и неформальную логику, которая возникла в ХХ веке. Однако, неформальная логика (аргументация вместо доказательства) не является темой сегодняшней статьи.
Иммануил Кант (философ!) сформулировал понятие логики как науки более четко, но в полном соответствии с точкой зрения философов античности. Логика - наука, обстоятельно излагающая и строго доказывающая одни только формальные правила всякого мышления.
Обратите внимание, что логика полностью абстрагируется от того, что стоит за ИСТИНОЙ и ЛОЖЬЮ, от всех деталей. В ней нет места эмоциям. Для нее не важно, идет речь о грузчиках в порту или происходящих на Олимпе (Древняя Греция) событиях. Она максимально абстрактна. Любой факт, любое событие реального мира превращаются просто в набор сущностей ИСТИНА и ЛОЖЬ, к которым применяются четко определенные правила действий.
Логика зародилась как часть философии, а не часть математики. И долгое время ей занимались именно философы. Но ведь, и мы все прекрасно знаем, математика - это царица наук. А значит, было совершенно неизбежным, что рано или поздно математика доберется и до логики.
Логика становится математической
Итак, логика уже была стройной и довольно строгой наукой. С четкими определениями и правилами. Но она все еще была лишь частью системы мировоззрения, философии. Она не умела разговаривать языком математики. Впрочем, это было лишь делом времени.
Первые попытки предпринимались еще в средние века (XIII век). Причем даже была попытка создания механизма облегчающего процессы логических выводов. Однако, введение символического языка в логику во многом является заслугой Лейбница (XVII век). Точнее, он рассматривал запись логических высказываний на специальном языке, символически, а не словесно. Но это было лишь рамках других исследований - комбинаторики.
Всерьез математики взялись за логику в XIX веке. Именно тогда Джордж Буль положил начало алгебре логики. А цепочки умозаключений и преобразование этих цепочек стало возможным записывать на языке математики, в виде алгебраических выражений - булевой алгебре.
Первоначальные предложения Буля были не во всем удачными, что нисколько не умаляет его заслуг. В дальнейшем идеи Буля развивались и дорабатывались многими учеными. В конечном итоге это и стало математической логикой, одним из разделов основ математики. При этом Платон Порецкий (Россия) дал хорошее описание различий между алгеброй и математической логикой (алгеброй логики)
Формы, изучаемые алгеброй, суть количественные, формы, с которыми имеет дело логика, суть качественные, то есть существенно отличные от первых.
Математическая логика по предмету своему есть логика, а по методу математика.
Алгебра логики
Итак, логика использует два качественных понятия - ИСТИНА и ЛОЖЬ. Обычно используют сокращенные обозначения:
- И - истина, T (true) в международной нотации
- Л - ложь, F (false) в международной нотации
В математике (алгебре) используется понятие "переменная". Естественно, в алгебре логики тоже используются переменные. Обычно их обозначают малыми буквами латинского алфавита.
Над переменными можно совершать различные операции, точно так же, как в обычной алгебре. Однако, эти операции будут иными. Впрочем, эти операции нам всем отлично знакомы. Темп не менее, давайте их кратко вспомним, но подробно рассматривать сегодня на будем.
- Операция ОТРИЦАНИЕ, ЛОГИЧЕСКОЕ НЕ, ИНВЕРСИЯ. В международной нотации NOT. Отрицание лжи даем нам истину, а отрицание истины дает ложь. В обычной алгебре этой операции можно сопоставить смену знака числа. В алгебре логики ОТРИЦАНИЕ обычно обозначается с помощью горизонтальной черты над переменной. Однако, в текстах такое обозначение может вызвать трудности, так как требуемый символ отсутствует. Поэтому используются и альтернативные обозначения. Например, знак операции смены знака -a обозначает НЕ а.
- Операция ДИЗЪЮНКЦИЯ, ЛОГИЧЕСКОЕ ИЛИ, ЛОГИЧЕСКОЕ СЛОЖЕНИЕ. В международной нотации OR. Результатом операции является ИСТИНА, если хотя бы один из ее аргументов является ИСТИНОЙ. В алгебре логики для обозначения дизъюнкции используется знак ⋁ (похож на латинскую букву V). Кроме того, иногда используется и знак | (вертикальная черта). Обратите внимание, что обозначение операции логическое ИЛИ символом вертикальной черты (используется в языках программирования) может вызвать неоднозначность! Дело в том, что алгебре логики за символом вертикальной черты закреплено обозначение операции "штрих Шеффера".
- Операция КОНЪЮНКЦИИ, ЛОГИЧЕСКОЕ И, ЛОГИЧЕСКОЕ УМНОЖЕНИЕ. В международной нотации AND. Результатом операции является ИСТИНА если оба ее аргумента являются ИСТИНОЙ. В алгебре логики для обозначения конъюнкции используется знак ⋀ (похож на русскую букву Л). Кроме того, иногда используется знак &.
Эти операции являются основными и с их помощью можно выразить все прочие операции. Примерами наиболее известных составных логических операций являются:
- Стрелка Пирса ↓. Это отрицание дизъюнкции. В более привычной для не математиков форме записи операция ИЛИ-НЕ.
- Штрих Шеффера |. Это отрицание конъюнкции. В более привычной для не математиков форме записи операция И-НЕ. Обратите внимание, что обозначение операции символом вертикальной черты в алгебре логики конфликтует с обозначением тем же символом операции логическое ИЛИ в языках программирования.
- Импликация →. Более редко встречающая операция, которую иногда сравнивают с выражением "если..., то...", что не совсем верно. Различают прямую импликацию (-a)⋁b и обратную a⋁(-b).
- Исключающее ИЛИ ⊕. Весьма полезная операция, которую еще можно назвать "операция ИЛИ-ИЛИ". Часто встречается название сложение по модулю два. Может быть реализована двумя способами ((-a)⋀(b))⋁((a⋀(-b)) или ((-a)⋁(-b))⋀((a)⋁(b))
- Эквиваленция ⬄. Является обратной к операции исключающего ИЛИ, то есть, это отрицание исключающего ИЛИ.
Давайте посмотрим, как можно записать с помощью алгебры логики логическое выражение
Можно пойти гулять в парк если сегодня выходной день и на улице хорошая погода или если сегодня рабочий день и работа окончена, дождя нет.
Кроме собственно обозначения логических операций существует и набор правил, как и в обычной алгебре. Это позволяет выполнять преобразования логических выражений, упрощать их, находить решения логических уравнений.
Истина есть ложь, а ложь есть истина
Это кажущееся противоестественным утверждение не выдумка. Так можно кратко охарактеризовать инверсную логику. Огастес де Морган исследовал взаимосвязь между логическими операциями через операцию отрицания. Результатом стали законы де Моргана, или формулы де Моргана.
Таким образом, возможна работа с инверсными значениями, когда вместо истины используется ложь, а ложь заменена истиной.
Логический базис
Ранее я сказал, что операции И, ИЛИ, НЕ являются основными, через них можно выразить все прочие логические операции. Эти три операции образуют базис (логический базис).
Однако, базис может быть образован и одной единственной комплексной логической операцией. Наиболее известны (и популярны) базисы И-НЕ и ИЛИ-НЕ. Используя любой из этих базисов можно получить любую логическую операцию, но для это придется использовать формулы де Моргана.
С точки зрения алгебры логики базис могут образовывать и другие операции, например, исключающее ИЛИ. Однако, с точки зрения практической применимости, использовать эти базисы не целесообразно.
Практическое применение в не технических сферах
Философия и математика считаются абстрактными, далекими от реальной жизни науками. При этом они находят и вполне реальное применение. Особенно, математика. Вот и логика, как часть и математики, и философии, нашла практическое применение.
И далеко не только в виде умозаключений и смысле жизни и происходящих вокруг событий. И не только в записях математиков. Это не всегда было наглядно видно, не всегда использовалась вся математическая строгость.
Одним из самых популярных и наглядных примеров использования логики являются розыск, доказательства правонарушения, суд. Знаменитый дедуктивный метод Шерлока Холмса основывался именно на логике. Несмотря на то, что в явном виде это и не заметно.
Другим, и куда более важным для нас, примером использования логики является процесс управления. Промышленная революция и бурный рост промышленности привели к необходимости как то формализовать и процессы управления производством и финансами. Речь об автоматизации еще не шла, речь шла лишь о формализации. Принятие решений лишь на основе интуиции и простых наблюдений стало неэффективным, требовалось учитывать множество факторов. Да и сама структура управления крупными предприятиями сильно отличалась.
И управление стало выделяться в отдельную сферу деятельности - менеджмент. Стали возникать различные теории управления. Считается, что начало научному подходу в управлении положил Адам Смит. Другими известными основоположниками являются Роберт Оуэн и Ричард Аркрайт. Обратите внимание, это все англичане, что неслучайно, так как именно в Англии началась промышленная революция. Можно назвать еще много имен, но поскольку статья не о политэкономии и не о менеджменте, я пожалуй не буду этого делать.
Эти теории управления затрагивали множество тем и вопросов. Логика среди них не значилась, но она незримо присутствовала. И обязательно, хоть и неявно, участвовала в построении выводов. Финансовые, политические, административные вопросы остались частью менеджмента и сегодня. А вот иерархический подход нашел свое отражение и в теориях автоматизации управления уже технологическими и техническими процессами. А это как раз наша тематика.
Техническое применение в механическую эпоху
Развитие техники, еще механической, привело к тому, что выполняемые машинами операции становились все более сложными. А это требовало и более сложных способов управления механизмами. Кажется, при чем тут логика? А вот посмотрите
Конечно, это весьма утрированная, притянутая за уши, иллюстрация. Но тем не менее, она показывает, что логика может быть реализована механически. Здесь есть две пилы приводимые в движение паром. Поступление пара к каждой пиле управляется двумя заслонками с механическим приводом. Первая открывается когда на пильном столе лежит бревно достаточного веса. Вторая открывается, когда на платформе рядом с пилой стоит рабочий. И пила начинает работать только если обе заслонки открыты.
Видите, что это механическая (да еще и паровая) реализация операции ЛОГИЧЕСКОЕ И?
пила_работает = бревно_лежит ⋀ рабочий_стоит
А поступление пара из котла это механическая реализация операции ЛОГИЧЕСКОЕ ИЛИ
пар_поступает = пила_1_ работает ⋁ пила_2_работает =
(бревно_1_лежит ⋀ рабочий_1_ стоит) ⋁
(бревно_2_лежит ⋀ рабочий_2_стоит)
Реальные механические системы управления, причем автоматического, гораздо сложнее. Но появились они еще в Древней Греции. Многие приписываются Герону Александрийскому. В частности, это различные автоматы, например, для смешивания воды и вина, когда знатный гость вкладывал чашу в "руку" механической "служанки". И даже автоматический кукольный театр. Да и станки в конце XIX века поражали своей сложностью.
Механические "логические" устройства могли использовать различные элементы: подвижные шестерни с вырезами, рычаги и тяги, кулисы, клапаны и задвижки, и т.д. И хотя механические автоматы нельзя по настоящему назвать логическими, логические функции все таки в них реализовывались.
Наиболее наглядным и известными примером, пожалуй, является ткацкий станок Жозефа Мари Жаккара, или Жаккардова машина. Причем эта машина управлялась лентой из связанных в кольцо табличек с отверстиями - перфокарт! Это конечно не ЭВМ, но это уже программируемый механический станок.
Давайте посмотрим, как можно реализовать логические операции на примере паровой (гидравлической) машины
Здесь логическим переменным соответствую механические заслонки (клапаны), которые могут быть только в двух состояниях открыта или закрыта. Операция НЕ становится возможной при добавлении промежуточной оси (показана точкой) в приводе заслонки.
Давайте рассмотрим эти реализации немного подробнее, тут есть один очень важный момент. У нас есть возможность прохождения пара по трубе, что мы можем считать ИСТИНОЙ. Но у нас есть и действие, движение заслонки при приложении внешней силы (воздействия) в направлении показанном стрелками с буквами a и b. И мы можем считать ИСТИНОЙ наличие этого воздействия. Какая же ИСТИНА будет настоящей?
У нас проблема? Отнюдь нет! Просто наши заслонки выполняют на самом деле функцию преобразования факта наличия воздействия в факт прохождения пара!
У нас на иллюстрации всего два типа заслонок. В случае операций И и ИЛИ у нас заслонки открывающие, то есть, они открывают путь пару при приложении воздействия. Можно записать работу такой заслонки
открывающая ( воздействие ) -> пар
Другими словами, если воздействие оказывается, то пар проходит, а если не оказывается, то не проходит.
открывающая ( И ) -> И
открывающая ( Л ) -> Л
В случае операции НЕ у нас заслонка закрывающая, то есть, она перекрывает путь пару при приложении воздействия. Работу такой заслонки можно записать
закрывающая ( воздействие ) -> -пар
Таким образом
закрывающая ( И ) -> Л
закрывающая ( Л ) -> И
А это и есть операция НЕ.
Описывая логическими выражениями работу машины, в нашем случае паровой, мы используем переменные, состояние которых соответствует положению заслонок. Но положение заслонок определяется событиями реального мира. Поэтому переходя от описания работы машины к описанию ее реакции на внешние события мы должны корректно отразить преобразование событий в состояние заслонок. Давайте посмотрим на простой пример управления условным паровым двигателем
Здесь у нас есть четыре заслонки, которые обозначены S1-S4. Три заслонки открывающие и одна закрывающая. "Главный вентиль" это действительно вентиль, который можно перекрыть поступление пара, например, при обслуживании двигателя. "Ручной" будем считать педалью, которую нажимает рабочий, например, при подготовке станка к работе. "Автомат" будем считать неким рычагом, который можно зафиксировать в положении "открыт", что позволяет не удерживать его вручную (в отличии от педали) при штатной работе станка соединенного с двигателем. "Стоп-кран" это тоже рычаг, который рабочий может потянуть при возникновении нештатной ситуации, что приведет к остановке двигателя.
И мы можем записать логическое выражение описывающее работу нашей простейшей системы управления
s1 ∧ ( s2 ∨ s3 ) ∧ s4
А теперь перейдем к описанию работы машины через реакцию на внешние события
двигатель_работает = главный_вентиль ∧
( ручной ∨ автомат ) ∧
-стоп-кран
Обратите внимание, что теперь у нас состояние заслонки s4 является инверсией воздействия стоп-кран, так как эта заслонка закрывающая.
Мы, в полном соответствием с требуемой логикой абстракцией от деталей, составили выражение описывающее работу нашей машины. Причем в двух вариантах. Первый, использующий положения заслонок, для инженера обслуживающего машину. Второй, использующий работу с органами управления (педали, рычаги) для работника работающего с двигателем.
Аналогично можно реализовать и логические операции в рычажных, штоковых, шестеренчатых механизмах. Только вместо заслонок будут использоваться стопоры.
Конечно, авторы механических машин не говорили, что они используют логические операции, они употребляли иные термины. Но за ними стояла та же самая логика, пусть и неявно. Таким образом были связаны логика и машина. И состояние и поведение машины стало возможным описывать алгеброй логики.
Конечно, не все аспекты поведения машины описывались логическими выражениями. Например, скорость вращения приводного шкива описана логическими выражениями быть не может. Сегодня мы бы сказали, что скорость вращения это аналоговая величина. Но сам факт вращается или нет приводной шкив является именно логической переменной, логическим состоянием.
Электрическая эра. Релейные автоматы
Начало использования электричества привело и к появлению электрических машин. И вместо механических способов управления стали использовать электрические. Аналогом заслонки (клапана, стопора) в электрической машине является выключатель/переключатель. Причем этим выключателем не обязательно будет управлять человек, он может быть и механизированным - электромагнитным реле
Я показал на иллюстрации переключающую контактную группу. Подвижный контакт может замыкаться на один из двух неподвижных. Пара контактов, которая при отсутствии тока в катушке реле оказывается замкнутой, называется нормально-замкнутыми. Пара контактов, которые при протекании тока через катушку реле оказываются замкнутыми (разомкнуты в отсутствии тока), называется нормально-разомкнутыми. Реле может иметь несколько контактных групп, причем различных, не только переключающих.
И мы можем, как и в случае механической машины, принять за ИСТИНУ протекание тока, а за ЛОЖЬ отсутствие тока. Таким образом мы получаем, что замкнутое состояние контактов соответствует ИСТИНЕ, так как ток протекать может. А разомкнутое соответствует ЛЖИ, так как путь протекания тока разорван.
Обратите внимание, здесь нет электроники, это обычная электрика. Еще нет электронных ламп, не говоря уже о полупроводниковых приборах, а выполнение логических операций при помощи электричества уже возможно.
Открывающей заслонке соответствует замыкающий выключатель (кнопка), а закрывающей размыкающий выключатель. Переключатель просто объединяет в себе два взаимозависимых выключателя с общим управлением. Воздействию на заслонку в электрических машинах будет соответствовать нажатие на кнопку/выключатель.
Не правда ли, все очень похоже на то, что мы уже видели для паровой механической машины? Все правильно, общие принципы и должны быть схожими.
И точно так же, как в механической машине, кнопка выполняет функцию преобразования нажатия в состояние контактов. А размыкающая кнопка будет соответствовать инверсии нажатия, операции НЕ. Для электромагнитных реле нажатию будет соответствовать протекание тока через обмотку реле. В остальном реле аналогичны переключателям.
А теперь давайте посмотрим, как можно реализовать простейший вариант включения, например, лампочки, одной кнопкой, а ее выключения другой. Да, подобные выключатели существуют и в чисто механическом варианте, но нас они сейчас не интересуют.
Я не сомневаюсь, что вам всем эта схема отлично знакома. Но сегодня она нас будет интересовать с точки зрения логических операций.
Давайте сначала разберемся с электромагнитным реле. Немного не очевидно, что обмотка реле и две его контактные группы можно описать всего одной логической переменной. Действительно, состояние обеих контактных групп однозначно определяется протеканием тока через обмотку реле. Ток протекает - контакты замкнуты. Не протекает - разомкнуты. А значит, нам достаточно одной логической переменной для хранения состояния реле и его контактов. Назовем эту переменную k1.
Теперь мы можем записать логическое выражение, которое описывает работу нашей релейной схемы, с точки зрения состояния контактов
k1 = (sb1 ⋁ k1.1) ⋀ sb2 ==> k1 = (sb1 ⋁ k1.1) ⋀ sb2
Давайте примем, что состояние лампочки описывается логической переменной hl1. Если hl1=И - лампочка горит. Нетрудно заметить, что
hl1 = k1.2 ==> hl1 ≡ k1 (тождественно)
А теперь рассмотрим работу схему с точки зрения логики. Но сначала я хочу обратить ваше внимание на то, что переменная k1 у нас встречается и слева, и справа, от знака равенства. То есть, состояние схемы зависит от ее предыдущего состояния. Такие схемы называются последовательностными. В общем и целом, наша релейная схема является обычным триггером.
В начальный момент времени у нас реле обесточено, а значит k1=Л. Кнопка SB1 не нажата, а значит sb1=Л. Кнопка SB2 тоже не нажата, но при этом ее контакты замкнуты (кнопка на размыкание), а значит sb2=И. Таким образом состояние нашей схемы
k1 = (Л ⋁ Л) ⋀ И = Л
Реле выключено и лампочка не горит. Состояние схемы устойчиво.
Если теперь нажать кнопку SB1, то состояние схемы изменится
k1 = (И ⋁ Л) ⋀ И = И ==> k1 = (И ⋁ И) ⋀ И = И
Ничего странного не заметили? После нажатия кнопки SB1 у нас результат вычисления логического выражения стал противоречить состоянию k1 справа от знака равенства (предыдущее состояние). Поэтому мы должны повторить вычисление подставив справа от знака равенства новое состояние k1. Именно это мы сделали. Теперь противоречия нет, состояние схемы опять устойчиво. Реле включено и лампочка горит.
Мы можем отпустить кнопку SB1, это никак не повлияет на состояние схемы
k1 = (Л ⋁ И) ⋀ И = И
Состояние действительно устойчивое. В классическом триггере кнопка SB1 соответствует входу установки (S). Повторные нажатия SB1 никак не будут влиять на состояние схемы.
Теперь нажмем кнопку SB2. Состояние нашей схемы станет
k1 = (Л ⋁ И) ⋀ Л = Л ==> k1 = (Л ⋁ Л) ⋀ Л = Л
Точно так же, как и при нажатии SB1 у нас состояние k1 изменяется в процессе обработки нажатия, поэтому мы выполняем повторный расчет. И убеждаемся, что состояние схемы стало устойчивым. Реле выключено, лампочка не горит.
Повторные нажатия на SB2 не влияют на состояние схемы. В классическом триггере копка SB2 соответствует входу сброса (R).
А теперь опишем работу схемы с точки зрения внешних событий
лампочка_горит = (ВКЛ ⋁ лампочка_горит) ⋀ (-ВЫКЛ)
Мы учли, что кнопка выключения размыкающая. Кроме того, горящая лампочка, которая является внешним проявлением реакции схемы на нажатия кнопок, тождественна включенному состоянию реле. И мы заменили переменную k1 на тождественную ей лампочка_горит, что бы осталась видна связь с предыдущим состоянием.
Обратите внимание, что мы, в полном соответствием с требуемой логикой абстракцией от деталей, составили уравнение описывающее состояние нашей релейной схемы (релейного автомата) и проанализировали ее работу. Нас не интересовали на напряжения, ни токи, в схеме. Нас не интересовали типы кнопок и реле. Было безразлично, какая лампочка и как она на самом деле подключена. Только логика, только логические операции.
Причем я специально взял не самый простой пример - последовательностную схему, когда последующее состояние зависит от предыдущего. Релейные автоматы могут быть очень сложными, с большим количеством реле и множеством переключателей, которые отслеживают положение различных механических элементов, например, станка. Используют релейные автоматы и поныне. Но зачастую уже в виде электронных схем и программ в контроллерах.
От релейного автомата к электронной логической схеме
Технологии развивались. Появились электронные лампы, а немного позже и полупроводниковые приборы. Естественно, и лампы, и транзисторы, стали использовать при построении логических схем. А тут есть свои особенности, которые мы сейчас и рассмотрим.
Электромагнитные реле и выключатели могут находиться только в двух состояниях: включено и выключено. У исправных другого состояния контактов быть не может. Лампа и транзистор, в отличии от реле, могут находиться в любом промежуточном состоянии между полностью закрытым и полностью открытым. И это роднит их больше с заслонками, которые тоже могут находиться в любом промежуточном состоянии, чем с электромагнитными реле.
Электронная лампа (триод, тетрод, пентод) и транзистор (как биполярный, так и полевой) по своей сути являются усилителями. Как и заслонки в рассмотренных ранее паровых машинах. Если быть более точным, то лампы и транзисторы не просто усилители, они являются преобразователями
- электронная лампа (триод) - преобразователь входного напряжения в выходной ток
- биполярный транзистор - преобразователь входного тока в выходной ток
- полевой транзистор (любой структуры) - преобразователь входного напряжения в выходной ток
И несмотря на всю разницу, эти элементы можно использовать при построении усилителей и напряжения, и тока, и мощности. По этой причине для нас нес принципиальной разницы между лампой, биполярным транзистором, полевым транзистором. Каким бы парадоксальным это не казалось.
Интересным вопросом является и выбор между током и напряжением для представления логических состояний ИСТИНА И ЛОЖЬ. Если помните, для релейных схем мы использовали представление в виде тока. Кроме того, Ампер является одной из основных единиц системы Си. Однако, для представления логических состояний в электронных схемах было выбрано напряжение.
Электронный ключ это усилитель
Да, это действительно так. Просто режим работы ключа отличается от режима работы усилителя. А поскольку для нас не важно, что именно используется для усиления, мы сделаем первый шаг в сторону логической абстракции - рассмотрим абстрактный усилитель напряжения
Красным цветом показан линейный участок передаточной характеристики, который и является рабочим для обычного усилителя. Однако, именно этот участок для логической схемы и не подходит, так как соответствует промежуточным, запрещенным, состояниям.
Для электронного ключа (переключателя) который является условным аналогом электромагнитного реле, рабочими будут как раз нелинейные начальный и конечный участки передаточной характеристики.
Начальный участок соответствует близкому к нулю выходному напряжению. А конечный участок напряжению близкому к максимально возможному для усилителя (реального), которое обычно близко к напряжению питания.
Таким образом, мы вполне можем принять начальный участок, с близким к нулю напряжением, за ЛОЖЬ. Это вполне соответствует выключенному состоянию реле, разомкнутым контактам, закрытой заслонке. А конечный, с близким к напряжению питания напряжением, за ИСТИНУ. Это вполне соответствует включенному состоянию реле, замкнутым контактам, открытому состоянию заслонки.
От усилителя к логическому элементу
Однако, мы пока все еще не можем считать электронный ключ/усилитель логическим элементом. Да, мы определились с тем, что будем считать ИСТИНОЙ, а что ЛОЖЬЮ. Но мы же не находимся в идеальном мире логики. А значит, нам нужны не только качественные, но и количественные параметры (вспомните Платона Порецкого).
Нам нужно определить четкие уровни напряжений для ИСТИНЫ и ЛЖИ. И вот тут нас ожидает небольшое осложнение. Дело в том, что при определении конкретных уровней напряжения мы уже не можем игнорировать внутреннее устройство усилителя. Но мы можем принять условные абстрактные уровни. И тем самым остаться в рамках логической абстракции.
- Ulow - пороговое напряжение низкого уровня. Любое напряжение в логической схеме меньшее (по модулю) этого порогового значения будет считаться ЛОЖЬЮ.
- Uhigh - пороговое напряжение высокого уровня. Любое напряжение в логической схеме большее (по модулю) этого порогового значения будет считаться ИСТИНОЙ.
Серым цветом показана запрещенная зона напряжений. Мы скоро к ней вернемся. В некоторых случаях пороговые уровни входного и выходного напряжений могут различаться. Однако, с точки зрения логики, это различие не является принципиальным. Передаточная характеристика на иллюстрации показана линейной, однако ее реальный вид значения не имеет. Более того, пороговые уровни напряжений совершенно не обязательно должны соответствовать точкам перехода от линейного участка к нелинейным.
Для пороговых уровней напряжения могут использоваться и другие обозначения. Например, вместо Ulow может использоваться Uf или Uf th. А вместо Uhigh - Ut или Ut th.
Поскольку, с точки зрения логики, внутренняя структура элемента не важна, ее и не изображают на условных обозначениях в схемах
Итак, мы пришли к достаточно абстрактному представлению логических операций в электронных схемах. В отличии от ранее рассмотренных схем релейных автоматов и паровых машин, где "начинка" каждого отдельного элемента "логики" изображалась, в электронных логических схемах ей внимания не уделяется вообще.
По сути, теперь это просто еще один, схемотехнический, способ записи логических выражений. Более того, раз нам не важно, что находится внутри элемента, мы можем использовать эти обозначения и для релейных схем, и для схем механических машин. Разумеется, для их логических схем. А если еще более абстрагироваться от деталей, то уже не принципиальных, не логических схем, а схем функциональных.
Суровая реальность реального логического элемента
Мы уже знаем, что пороговые уровни могут быть разными. Это неприятно, но в рамках одного типа логических элементов не так и страшно. А вот запрещенные уровни напряжений, которые соответствуют промежуточным состояниям, уже неприятность куда большая.
Сразу скажу, что логические элементы действительно могут работать как обычные усилители, каковыми они и являются, как мы уже видели. И можно найти схемы, где такой режим работы используется. Однако в логических схемах это является вредным явлением. А значит, нужно как то бороться с ним.
К счастью, в логических электронных схемах, при исправных элементах, уровни входных напряжений редко оказываются в запрещенной зоне. Если же такая возможность есть, а так же для входных сигналов схемы, можно использовать логические элементы с гистерезисом. Наиболее известным элементом с гистерезисом является триггер Шмитта. Однако, его рассмотрение выходит за рамки статьи. Использование триггера Шмитта позволяет исключить запрещенные уровни сигналов.
В реальном мире логические элементы обычно представлены в виде микросхем. И внутренняя структура элементом может быть различной. Говорят о разных типах логики, логических микросхем. Если вам интересно "а что там внутри?" можете почитать статью
Типы цифровой логики. Не только ТТЛ и КМОП
Логическая схема это не обязательно цифровая схема!
Обратите внимание, мы уже очень долго говорим о логике в различных ее воплощениях и применениях, однако, еще ни разу не использовали термин "цифровой". И это отнюдь не случайно. Давайте разбираться.
Микросхемы, реализующие логические функции, называются именно логическими микросхемами. Термин "цифровая микросхема" фактически является эндемичным в границах СССР (возможно, социалистического блока). Разумеется, речь не идет о процессорах, счетчиках, и прочих комбинированных элементах. Но у нас частенько и банальный элемент 2И-НЕ в составе, например, 155 серии, называют цифровым. А это неверно. Точнее, не совсем верно.
Логические понятия ИСТИНА и ЛОЖЬ не являются цифровыми. Цифры это количественная характеристика, а ИСТИНА и ЛОЖЬ качественные. Опять таки, вспомните Платона Порецкого. И операции И, ИЛИ, НЕ, применимы именно к качественным понятиям, но не количественным. Если говорить строго, конечно.
Откуда и когда у нас могут появиться цифры? Могут, если мы сопоставим каким либо образом количественные характеристики качественным. Например, мы можем считать ЛОЖЬ, которой соответствует низкий уровень напряжения (близкий к нулю), логическим нулем. А ИСТИНУ примем за логическую единицу. Так мы проложим мостик между миром логики и миром чисел.
Это те самые, всем известные 0 и 1, которые вместе составляют двоичную систему счисления. Однако, такая замена нам не дает ничего принципиально нового. Какая разница, используем мы для обозначения истины И (истина), T (true), H (high), или 1? Это всего лишь разные способы записи одного и того же качественного понятия.
От логики к цифре
Но мы можем использовать сгруппированный набор сигналов для представления действительно цифровой информации. Раз 0 и 1 образуют двоичную систему счисления, мы можем записать любое число в виде набора нулей и единиц. Но мы ведь можем взять группу сигналов (переменных), например А0, А1, А2, А3, каждый из которых является логическим, для представления всех разрядов четырехразрядного двоичного числа. А это позволяет представлять числа от 0 до 16 в виде набора логических переменных (сигналов).
Например, А0=1, А1=1, А2=1, А3=0, будет соответствовать двоичному числу 0111, или десятичному 7. А значит, использовать логику для представления чисел действительно можно.
И мы можем построить схему из отдельных логических элементов, которые будут сгруппированы семантически (по смыслу) для представления чисел и работы с ними. Вот так логическая схема становится цифровой. Поэтому каждая цифровая схема является и логической, но не каждая логическая является цифровой.
Например, мы можем построить из логических элементов 2И-НЕ триггер, счетный. А из таких триггеров построить счетчик. И этот счетчик уже будет цифровым элементом, но останется логическим.
От логических и цифровых элементов к ЭВМ
Комбинируя различные логические и цифровые элементы можно построить самые разные устройства. Точно так же, как из 7 нот получается бесконечное количество мелодий. И ЭВМ можно считать электронной логической симфонией. Причем ЭВМ является уже и качественно иным этапом логических схем. Ведь ее поведение уже не жестко заданно, а определяется заложенной в нее программой. Количество элементов (очень большое!) переходит в качество.
От ЭВМ к искусственному разуму
Один нейрон глуп и бесполезен. Объединение нейронов создает мозг. И этот мозг, в определенный момент времени и сложности, позволяет развиться сознанию. А сознание может создать разум. Считается, что отличительной чертой разума является стремление и возможность не просто познания, но самопознания.
Мы уже используем ЭВМ для познания мира. И пытаемся создавать программы обладающие способностью обучаться. Может ли таким образом родиться разум искусственный?
Человек, машина, разум. Сосуществование
Вопрос не так прост. Причем он выходит далеко за границы техники, вопросы которой мы и рассматривали сегодня в статье. Получается, что логика родилась как часть философии, прошла через разные этапы развития техники, и снова привела к философским вопросам.
Заключение
На сегодня пожалуй достаточно. Я стремился не показать в деталях какой то один этап развития логики и техники, а показать весь пройденный путь. От древних времен до наших дней. Что бы вы могли окинуть взглядом всю картину, во всем ее многообразии и взаимозависимости.
Это тем более полезно, что нередко раздаются возгласы "зачем изучать это старье, кому это нужно?". Но ведь все новое, так или иначе, опирается на то, что было открыто и построено раньше. Без былого не будет грядущего.
Вот так и современная вычислительная техника на поверку оказывается опирается на труды философов античности. На работы мыслителей средневековья. На изобретения механиков времен промышленной революции. На открытия ученых эпохи электричества.
Каким был бы мир сегодня, если бы один из этапов развития вдруг выпал?