Долой биты! (Интервью с конструктором троичной ЭВМ)

Не знаю, насколько интересно читать мои статьи, посвященные истории становления компьютерной отрасли, одно я знаю точно: писать их во сто крат интереснее. В процессе длительных поисков исходной информации для очередной статьи и исследований всегда находится что-то такое, что заставляет воскликнуть: «Ух ты!», но, к сожалению, далеко не все может уместиться в журнале. После статьи о Льюисе Кэрролле и трехзначной логике я стал собирать материалы о реально созданной в СССР троичной ЭВМ «Сетунь», главным конструктором которой был Николай Петрович Брусенцов. Случайно мне попался его номер телефона. Без особой надежды -шутка сказать, человек 1925 года рождения, прошел войну — набрал номер. К моему удивлению, трубку взял сам Брусенцов. Узнав, что я звоню по поручению журнала Upgrade, он сказал: «А, как же, Upgrade, знаю. Там еще статья была про троичную логику какого-то Румянцева». Короче, познакомились, договорились о встрече. И вот я иду по коридору здания факультета вычислительной математики и кибернетики МГУ. Надо сказать, что мне нередко приходится бывать в разных ВУЗах, и самое мрачное впечатление на меня производит факультет ракетостроения МАИ -такого ужасающего разгрома я нигде не видел. В МГУ у меня тоже вечно как-то сжимается сердце. Повсюду следы того, что когда-то это был один из главных храмов мощного государства… Здесь что-то ремонтируют, укладывают полы — и то слава Богу. Подхожу к двери с надписью «Лаборатория ЭВМ» и лихорадочно вспоминаю, что мне, собственно, известно о человеке, к которому иду, и о его детище.

Год рождения — 1925, на войне с 1943 года, служил радистом в отделении разведки. В 1948 году поступил в Московский энергетический институт. Во второй половине 50-х годов в МГУ создал троичную ЭВМ «Сетунь», аналогов которой не существует и поныне. Всего было выпущено 50 таких машин. Элементарная единица информации — трит, страничная двухуровневая организация памяти, пороговая реализация трехзначной логики на электромагнитных элементах и все в таком духе. Открываю дверь, вхожу и… удивляюсь: никаких компьютеров. За столом годов, наверное, 60-х сидит скоромно одетый человек — простая рубашка и джинсы (компьютерная традиция, однако). Честно говоря, у меня были подготовлены разные дурацкие вопросы, типа того, какую ОС он использует и какой процессор в его компьютере. Брусенцов сразу задал другую тональность разговора, отчего мне с моими пигмейскими домашними заготовками стало немного неловко. И все же больше всего меня интересовало, почему он решил строить троичную машину, когда все вокруг делали двоичные?

Upgrade: Так, собственно, почему троичная машина?

Николай Брусенцов: Тогда задача была очень простая: мы должны были для МГУ получить машину М-2, которую сделали в лаборатории Брука. Но получилась неувязочка. На выборах академиков Сергей Львович Соболев -наш руководитель — проголосовал не за Брука, а за Лебедева. Брук обиделся и машину не дал. Я пришел к Соболеву и спросил: чем же я теперь буду заниматься? Он мне отвечает: «А давайте свою машину сделаем». Это было в конце 1955 года.

В то время транзисторы были еще недоступны, но было ясно, что машина не должна быть ламповой. Лампы имеют короткий срок службы, и машины на ламповой базе большую часть времени простаивали, потому что их вечно чинили. Ламповая машина работала в лучшем случае в течение нескольких часов, потом нужно было искать очередную неисправность. Юлий Израилевич Гутенмахер строил машину ЛЭМ-1 на феррит-диодных элементах. Мне пришла в голову мысль, что раз транзисторов нет, то можно попытаться делать ЭВМ на этих элементах. Соболев, которого все очень уважали, договорился, чтобы я побывал на стажировке у Гутенмахера. Я все детально изучил. Поскольку по образованию я радиоинженер, то сразу увидел: не все нужно делать так, как делают они. Главное, что я увидел: они используют пару сердечников под каждый бит — рабочий и компенсационный. И мне пришла в голову идея: а что, если заставить компенсационный сердечник работать. Тогда каждая ячейка становится трехзначной. В результате получилось, что в «Сетуни» количество сердечников было в семь раз меньше, чем в ЛЭМ-1. При этом «Сетунь» имела почти вдвое большую разрядность.

Тогда в МГУ как раз собирались получать большую машину «Стрела», создали вычислительный центр. Сергей Львович предусмотрел в нем отдел электроники — мой отдел. И мы должны были создать машину с нуля. Условия такие: машина должна быть небольшой, надежной, простой в освоении и использовании — короче, машина широкого назначения, для учебных заведений, лабораторий и т. п. Когда я выяснил, что можно воспользоваться троичной системой счисления, я сказал об этом Сергею Львовичу. Он полностью все одобрил. Уверен, что другой на его месте сказал бы: «Да ты что, все делают двоичные, а ты куда?»

UP: Он фактически дал полный карт-бланш?

Н. Б.: Да. В нашей лаборатории никогда не работало более двух десятков человек, считая девочек, которые мотали сердечники. А в начале у меня вообще было три-четыре сотрудника. Я должен сказать: для того, чтобы разрабатывать компьютеры, совершенно не нужны тысячные институты. Мы работали в компании с нашим программистским отделом, который возглавлял Е. А. Жоголев. То, что затем получило название «архитектура машины», создавалось нами вместе. Он предлагал программистские идеи, а я думал, насколько их можно реализовать на аппаратном уровне. В конечном итоге мы создали всего 24 машинных команды. Многие до сих пор в это не верят. И в дальнейшем архитектура «Сетуни» не подверглась никаким изменениям. Все серийные машины были архитектурно точно такими же, ну, может, слегка адаптированы под производство. Начав в 1956 году, мы уже через два с половиной года, в 1958 году, сделали образец, который работал. И вот тут-то началось нечто несуразное.

Осенью 1959 года нас пригласили на Коллегию Государственного Комитета Радиоэлектроники — ГКРЭ. И там мы узнали, что наша машина не нужна. И Госплан, и ВСНХ заняли отрицательную позицию. На Коллегии нас записали в черный список закрываемых разработок. Мы никогда никаких дополнительных денег на создание машины ни копейки не получали. Мы работали только за зарплату здесь, в МГУ. Использовали оборудование, списываемое заводами при снятии изделий с производства. Тем не менее, ради экономии средств нас решили закрыть.

UP: Но какое-то объяснение этому должно быть?

Н. Б.: Соболев спросил: «А вы хотя бы видели эту машину, ведь она уже существует?» Директор СКБ-245 В. В. Александров ответил: «Нам не надо ни видеть, ни знать — должна быть авторитетная бумага с печатями и подписями». После Коллегии Сергей Львович пошел в ЦК КПСС. Уже вечером к нам приехал сотрудник отдела ЦК Ф. К. Кочетов и привез с собой М. К. Сулима — начальника восьмого управления ГКРЭ. «Сетунь» нормально работала и производила необыкновенно хорошее впечатление. Обычно ведь как было: на выставке стоят машины, а сзади люди в белых халатах что-то там налаживают. У нас все работало как часы. Ну, понятно, после этого закрывать нас не стали, ведь машина уже сделана. Было принято решение провести ее межведомственные испытания. Испытания были проведены в апреле 1960 г. На них «Сетунь» показала 95% полезного времени. А в то время, если машина показывала 60%, это считалось очень хорошим результатом.

UP: А что значит термин «полезное время»?

Н. Б.: Вы включаете машину, прогоняете тесты, начинаете решать задачу, происходит сбой, все повторяете. И так до тех пор, пока задача не будет решена. Полезное время — это все то время, которое машина занята решением задач, а не тестово-наладочными работами.

После этих испытаний было принято постановление Совмина об организации серийного производства. Мы не очень удачно выбрали Казанский завод, лучше бы Астраханский. Астраханцы потом взялись делать элементы к этой машине и делали их превосходно. Элемент стоил 3,5 руб. Конечно, никаких высоких технологий там не было. ЭВМ «Сетунь» выпускали по 10-12 штук в год, то есть вроде бы выполняется постановление Совмина СССР, а на самом деле -нет. Притом, что было очень много заявок не только внутри страны, но и из-за рубежа. Во-первых, разумеется, из соцстран, но также и из таких стран, как США и Англия, где разработчикам было очень интересно посмотреть, что это за троичная штука.

UP: Американский аналог «Сетуни» — это PDP-8, на которой тинэйджер Билл Гейтс составлял свои первые программы?

Н. Б.: Да. Кстати, интересно сравнить «Сетунь» и PDP-8. Процессор PDP-8 — восьмибитный. У «Сетуни» процессор в пересчете на биты был 30-битным. PDP-8 стоила 20 тысяч долларов без всякой периферии, только один процессорный блок. Считалось, что это рекордно низкая цена.

«Сетунь» стоила 27,5 тысяч рублей со всей периферией. Чехи считали, что могли хорошо продавать «Сетунь» в соответствии с рыночными ценами и получать порядка полумиллиона долларов прибыли с каждой машины. По их приглашению я ездил в Чехословакию, мне показали завод, который планировалось использовать для производства машины «Сетунь», — «Зброевка Яна Швермы». Этот завод, кстати, во время войны делал самые лучшие пушки для немецкой армии, вроде нашей ЗИС-3. Завод меня просто восхитил. Они уже приготовили для «Сетуни» магнитные барабаны, печатающее устройство, устройство ввода. В общем, все было готово для производства «Сетуни». И они мне задают вопрос: «Ну, когда же, наконец, мы получим документацию? Нам обещали еще в декабре, а ее до сих пор нет». А я молиться готов был на такой завод — настоящая высокая культура производства.

Когда я вернулся в СССР, меня вызвал референт Косыгина и попросил передать чешским товарищам, как тогда говорилось, что документацию на «Сетунь» они получат сразу после освоения крупносерийного производства этой машины в Советском Союзе. Но какое к черту крупносерийное производство, когда принимались все возможные меры, чтобы заморозить «Сетунь». Понятно, что тут не обошлось без ГКРЭ. Тот же самый Сулим был заместителем главного конструктора М-20. А с М-20 в КБ провозились 2,5 года, прежде чем передать ее на завод. Для «Сетуни» никакого КБ не дали — завод указан, езжайте и выпускайте. Хорошо В. М. Глушков предложил свое КБ за символическую плату в сто тысяч рублей, чтобы выпустить конструкторскую документацию.

UP: Сто тысяч рублей — это символическая плата?

Н. Б.: Ну конечно! Те 2,5 года, которые в КБ разрабатывали М-20, обошлись в десятки миллионов рублей, Что такое КБ того времени? Это несколько сот человек с высокой оплатой по первой категории и т. д.

Позднее я узнал, что чехам говорили: все равно мы эту машину снимем с производства, так что вы ее не заказывайте. Вот так все и закончилось с «Сетунью». В начале 70-х нас из главного корпуса ВЦ переселили на чердак. «Сетунь», несмотря на то, что она была полностью исправной и загруженной задачами, через пару лет была уничтожена — ее разрезали и выкинули на свалку.

UP: А «Сетунь-70»?

Н. Б.: К 100-летию со дня рождения Ленина все должны были делать всякие производственные подарки. Разумеется, и мы взяли обязательство к этой дате сделать «Сетунь-70». Но это уже совсем другая машина. Это была стековая машина, вроде наших «Эльбрусов». Но у «Эльбруса» был всего один стек — стек операндов. У PDP-11 также был всего один стек — процедурный. А «Сетунь-70» имела два стека — команд и операндов. Надо сказать, что эти стеки мы сделали независимо от PDP-11, которая появилась позднее. Когда Дейкстра выступил с идеей структурного программирования, мы увидели, что сделали машину как раз для реализации его идеи. Программирование на «Сетунь-70» было даже не структурированное, а структурирующее. Программы получались легко читаемыми и осваиваемыми, легко модифицированными. Главное, что программы не подвергались отладке, а делалась так называемая контрольная сборка. После того как программу сверху вниз написали, ее проходили снизу вверх. В хороших КБ всегда так делается — типичный конструкторский прием. После этого программа оказывается, как правило, безошибочной. Позднее «Сетунь-70» была эмулирована на двоичных машинах в форме диалоговой системы структурного программирования ДССП.

UP: И все-таки, Николай Петрович, кому мешала «Сетунь»?

Н. Б.: Людям с косным мышлением, которые, тем не менее, занимали высокие руководящие посты. Как показала практика, «Сетунь» была работоспособна без всякого сервиса. Те, кто душил ЭВМ «Сетунь», раскидали ее по всей стране.

UP: А смысл?

Н. Б.: Видимо, для того, чтобы удаленность от сервисного центра и разброс климатических зон максимально выявили конструктивные недочеты. Но вся штука в том, что их практически не было. «Сетунь» была очень простой машиной. Я, как инженер, считаю, что простота вещи — это главное ее качество. В природе все то, что удалось ей выработать в простой форме, оказывается самым надежным, самым устойчивым. География обитания «Сетуни»: Якутск, Иркутск, Красноярск, Душанбе, Ашхабад, Махачкала, Калининград и т. д. Причем часто она попадала к людям, которые впервые видели цифровую технику. И несмотря на это, практически всюду машина нашла существенное применение. В Якутске «Сетунь» была в астрофизическом институте. У них была какая-то сложная задача, которую они в течение двух лет не могли поставить на большой машине ^Урал-2». Потом кто-то сказал:

«Давайте попробуем на «Сетуни». Все решили, что это шутка. Однако через полтора месяца задача была решена. Дело в том, что «Сетунь» была естественной машиной. Там нет этого идиотского дополнительного кода для отрицательных чисел. И положительные, и отрицательные числа задаются естественно. Потом всего 24 команды. Освоить такую машину и программировать в машинном коде было ничуть не сложнее, чем, скажем, осваивать «Алгол» или «Фортран».

UP: Но программист фактически должен был работать в пространстве трехзначной логики?

Н. Б.: А что значит трехзначная логика? Знак числа — это какая функция? Трехзначная! Число может быть положительным, отрицательным, а может быть равным нулю. Это совершенно естественно, и это понятней, чем то, что мы имеем в двоичных машинах, когда, чтобы разобраться, какого знака результат, нужно сделать два шага. Но, строго говоря, в самой «Сетуни» логическая часть была не особенно развита. Правда, та трехзначная логика, которая была в «Сетуни», с избытком покрывала то, что было в двоичных машинах. Но аристотелевских суждений там, конечно, не было. Мы в то время собственно логикой не занимались. Я уже после создания «Сетуни» стал понимать, что логику как таковую не знаю, стал читать книги. Оказалось, что у меня были предшественники. И у них, кстати, путь тоже не был устлан розами. Еще в XIII веке был такой Раймунд Луллий (1235-1315 гг.). Он создал логическую машину, правда, на бумаге, в виде круговых диаграмм с секторами. Эта машина была троичной. Этого Луллия забили камнями. Был Вильям Оккам, он тоже предложил трехзначную логику, значительно более реальную, чем та, которую изобрел Ян Лукасевич в 1920 году. Далее всех продвинулся Льюис Кэрролл. Он нигде не говорит, что у него трехзначная логика. Но диаграммы Кэрролла из его «Символической логики», кроме красных и белых фишек, допускают еще пустые клетки. Это и есть трехзначная логика. Кэрролл на Аристотеля не ссылается и свою силлогистику создал как реализацию логики естественного языка. Поразительно, что Гарднер — популяризатор информатики — охарактеризовал Кэрролла посредственным логиком и посредственным математиком. И это притом, что Кэрролл в сущности создал систему — у него были очень незначительные неувязки, — решающую задачу, над которой бились логики последних полутора столетий.

UP: Николай Петрович, после статьи в журнале Upgrade я получал письма, в которых читатели интересовались, как именно удалось реализовать троичный компьютер? Было даже письмо, где автор выразил сомнение в том, что такой компьютер когда-нибудь существовал.

Н. Б.: Буквально на днях я получил письмо из США, где также спрашивают, как удалось реализовать троичную логику? К нам постоянно приходят по e-mail письма с запросами. Надо сказать, что наибольший интерес проявляют такие страны, как Бангладеш, Пакистан, Индия. У меня такое ощущение, что там сейчас главный центр компьютерного развития. Но на сегодня все попытки повторить троичную машину не удаются. Причина не технологическая — все-таки по сравнению с тем периодом технологии ушли далеко вперед. Дело в другом: людям, оболваненным двузначной логикой, войти в трехзначную логику не дано. По традиции считается, что та логика, которую мы сегодня исповедуем, — аристотелевская логика. Это совершенно неверно. Дело в том, что аристотелевская логика трехзначная. Естественно, что трехзначная логика в двузначную вписаться не может. Конечно, можно симулировать: парами битов задать триты, но не в этом дело.

Та логика, которую сегодня называют математической, основана на нелепости. Допустил ее Гильберт. В его совместной с Аккерманом книге «Основы теоретической логики» сказано так: «Мы отклоняемся от Аристотеля в истолковании суждения «Все А суть В». По Аристотелю, это суждение может быть истинным, то есть выполняется только лишь в случае, когда существуют какие-то А. Мы считаем это нецелесообразным». Что в результате получилось? В результате получилось то, что выполняется «Все А суть В» и в то же время не выполняется «Некоторые А суть В». Это нелепость! Вместо аристотелевского следования, которое во всех естественных языках выражается словами «Все А суть В», — и Аристотель очень точно это в своей системе воспроизвел, — они подсунули так называемую материальную импликацию. Дело в том, что суждение «Все А суть В» у Аристотеля трехзначно, в двузначной логике оно не выразимо. В результате возникли так называемые парадоксы материальной импликации, с которыми вот уже сто лет как логики пытаются справиться.

В 1918 году Кэрролл предложил строгую импликацию, потом Аккерман разработал исчисление сильной импликации, была предложена релевантная импликация, и, тем не менее, логика остается без естественного содержательного следования. То есть то, что называется следованием логике, не соответствует тому, как мы это понимаем. Обычно говорят: не соответствует нашей интуиции. Но это очень мягко сказано. На самом деле оно не соответствует не интуиции, а тому, как вещи связаны между собой в том мире, в котором мы живем.

Аристотель не признавал закона исключенного третьего. Даже речи о нем не было. Гильберт считал, что аристотелевское понимание суждения «Все А суть В» не нужно принимать, потому что это неприемлемо с точки зрения математических применений. А абсурд приемлем? Вся история говорит о том, что этот абсурд существует.

Вот почему столько раз тщетно логику пытались ввести в школы? Казалось бы, ведь числовую алгебру уже даже в начальной школе осваивают, а булеву алгебру освоить не могут. Дело в том, что двузначная логика противоестественна. Вместо того чтобы изучение логики развивало интеллект человека, оно его подавляет. У нас в МГУ на философском факультете, да и на нашем факультете, изучают математическую логику, и что вы думаете — люди от этого становятся умнее? Они вызубривают доказательства теорем, сдают экзамены и все.

Единственное адекватное применение двузначной логики -двоичные цифровые схемы. Но это особый мир двоичных компьютеров, и только в нем эти правила работают, не требуя понимания. Я поинтересовался у студентов: что такое конъюнкция? А мне в ответ: да это такая табличка, в которой единичка и три нуля… Ну, а по смыслу что это такое? Переведите на русский язык латинское слово «конъюнкция». Никто не может. То есть эту логику усваивают чисто формально, в точном соответствии с ее названием — формальная логика. При синтезе схем возможности ограничены. Минимизировать произвольную схему наука не в состоянии. В трехзначной логике минимизация осуществляется, а в двузначной универсального алгоритма нет.

Я бы эту проблему сформулировал так: если мы хотим обрести нормальное мышление, мы должны уйти из двузначного мира и освоить трехзначную логику в том виде, как ее создал Аристотель. Не совсем, конечно, так. Не нужны его фигуры. Все это сегодня с помощью алгебры можно будет изящно изложить и легко воспринимать. Но важно понимать, что, кроме ДА и НЕТ, есть еще и НЕ-ДА и НЕ-НЕТ.

Сейчас двузначную логику в школу ввести удалось под названием «информатика». Я должен сказать, что после этого школа уже не будет воспитывать таких людей, как наши ученые прошлого века. Почему в то время было так много творческих ученых? Где-то в 1936 году в образовании был примерно такой же бедлам, как наступил сейчас в России. Потом, по-видимому, сам Сталин обратил на это внимание. Кстати, Сталин был поразительно трудолюбивым в плане обучения человеком. Сохранилось его письмо к жене, в котором он, находясь на отдыхе, просит ее прислать ему учебник по электротехнике. Он понимал, что все нужно знать «в натуре», а не в виде каких-то теоретических схем. Тогда в школу были возвращены учебники Киселева по алгебре и геометрии. Киселевские учебники — это евклидова математика. А Евклид — это математик с философией Аристотеля, и, судя по всему, он Аристотеля понимал верно.

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

UP: Николай Петрович, вы создали уникальный компьютер, который, возможно, опередил время. Но всю свою жизнь вынуждены были преодолевать невероятное сопротивление, косность бюрократической машины и видеть, как ваше детище уничтожается. С другой стороны, скажем, в США, тот же Стив Джобc, который в гараже сделал свою первую и довольно убогую персоналку, сегодня мультимиллионер. По-человечески вам не обидно?

Н. Б.: Да нет. Я понимаю, что, увы, так устроено человечество. И, в общем, оно обречено, если ничего не изменится. К сожалению, все попытки как-то исправить ситуацию, сделать ее более соответствующей естественному порядку вещей проваливаются. Давайте посмотрим: действительно ли мы так много имеем от того, что компьютеризировали этот мир. Теперь компьютеры везде. Причем система устроена таким образом, что каждые три-четыре года нужно покупать новый компьютер и новый софт.

UP:…делать upgrade.

Н. Б.: Да, делать upgrade. Но почему? Да потому, что в самом начале заложены неверные принципы. Если вы в основу заложите простые, естественные принципы, то и все развитие происходит просто, логично, естественно.

Я не обижен судьбой. Не в деньгах счастье, тем более не в миллиардах. Когда все сведено к деньгам, жизнь людей утрачивает смысл, становится абсурдом. На войне не могло быть радости от того, что грохнувший вблизи разрыв сразил не тебя, а находящегося рядом твоего товарища. Радостью, счастьем было наше духовное единство. То труднейшее, отмеченное беспросветностью утрат и страданий время озарено вместе с тем не ярким, но вечным светом бескорыстного согласия людей. «Но только крепче мы дружили под перекрестным артогнем». Похоже, что такое согласие возникает у людей, объединенных общностью цели, увлеченных реализацией рациональной идеи.

Мы еще долго разговаривали, даже после того, как пленка в моем диктофоне закончилась. Это, знаете ли, как машина времени — окно в неведомую эпоху начальной компьютеризации. Сегодня Брусенцов по-прежнему продолжает выполнять свою миссию. На базе ЭВМ «Сетунь-70» еще четверть века назад была создана обучающая система «Наставник», которая задумывалась как система, контролирующая реальное усвоение студентом тех знаний, которые даются ему в течение семестра. Результаты были показаны весьма впечатляющие. Сегодня у Брусенцова есть идеи дальнейшего совершенствования этой системы с использованием мобильных телефонов, которые имеются практически у каждого студента. Есть мысли о создании троичного процессора, но проблема заключается в том, что сейчас в России нет предприятий, которые могли бы выполнить его заказ. Они этого уже не умеют делать — разучились.

История — маятник. Сегодня мы находимся, возможно, в самой нижней точке его траектории. Но очень хочется верить, что время брусенцовых в России еще наступит. Как было сказано в одной старой книге: «Достаточно Энергетического центра, чтобы началась Эра Чудес».

Источник материала
Настоящий материал самостоятельно опубликован в нашем сообществе пользователем Лука на основании действующей редакции Пользовательского Соглашения. Если вы считаете, что такая публикация нарушает ваши авторские и/или смежные права, вам необходимо сообщить об этом администрации сайта на EMAIL abuse@newru.org с указанием адреса (URL) страницы, содержащей спорный материал. Нарушение будет в кратчайшие сроки устранено, виновные наказаны.

You may also like...

67 Комментарий
старые
новые
Встроенные Обратные Связи
Все комментарии
Gena
Gena
1 год назад

Вкусная статья, респект!

Proper
Proper
Администратор
для  Gena
1 год назад

Статья вкусная, как большинство статей про сумасшедших. А троичная арифметика — ахинея.

Gena
Gena
для  Proper
1 год назад

Но написано-то увлекательно!

Proper
Proper
Администратор
для  Gena
1 год назад

Конечно. Одобряю обоими руками. Аффтар, пеши исчо!

Hmm4
Hmm4
для  Proper
1 год назад

Арифметика может быть любой. Вот у человека 10 пальцев на руках — и арифметика десятичная. И что, это кого-то напрягает?

ZIL.ok.130
ZIL.ok.130
1 год назад

True, false, undefined.
Причём андефайнд здесь в смысле неполного соответствия — не правда, но и не ложь.
И уже можно оценивать — насколько андефайнд ближе к правде чем к лжи(или наоборот)?

ZIL.ok.130
ZIL.ok.130
для  ZIL.ok.130
1 год назад

Псевдокубиты?

Proper
Proper
Администратор
для  ZIL.ok.130
1 год назад

Особенно впечатлил пассаж:

Сегодня у Брусенцова есть идеи дальнейшего совершенствования этой системы с использованием мобильных телефонов, которые имеются практически у каждого студента.

ZIL.ok.130
ZIL.ok.130
для  Proper
1 год назад

Да, это хорошо, но я как то отметил про себя и не акцентировал.
А как те пассаж шо Гей Тс — тожы на троичном начинал?

Proper
Proper
Администратор
для  ZIL.ok.130
1 год назад

Не, ну прямо-то они об этом не говорят. Товарисч гений там так скромно умалчивает про PDP-8 и ее архитектуру, пристраивая сбоку свою Сетунь.

Между тем — это вот такая вот штучка:

http://www.columbia.edu/cu/computinghistory/PDP8e.jpg

Представлен 22 марта 1965 года, в общей сложности продано более 50 тысяч экземпляров — самое большое количество для компьютерной техники для того времени.

Ранняя модель PDP-8 (неофициально называвшаяся «Straight-8») была построена на диодно-транзисторной логике, упакованной на картах Flip Chip, и достигала размеров холодильника. Далее последовала модель PDP-8/s для настольного использования. Она была меньше по размеру, менее дорогой, но и значительно более медленной машиной. Системы среднего класса (PDP-8/I, /L, /E, /F, /M и /A) были достаточно производительными, при этом использовали менее дорогую транзистор-транзисторную логику MSI.

Это 12-битная машина на классической бинарной логике. Процессор мог адресовать (причем не самым простым способом — переключая 8 банков по 4К слов) только довольно крохотную по нынешним меркам память в 32768 12-разрядных слов (48 Кб).

Машина PDP-8 была создана по заказу канадской энергетической компании для управления ядерным реактором. В своих воспоминаниях Олсен пишет, что, получив этот заказ, он решил отказаться от традиционного подхода, предполагавшего создание специализированной машины, и спроектировать универсальную, для которой задача данного заказчика была бы одной из возможных.

У PDP-8 — ставшая классической Принстонская архитектура (фон-неймановская). То есть память команд и данных — одна и та же, данные выбираются по командам программы. Могу заметить, что в те времена многие (и не только в СССР) надрачивали на Гарвардскую архитектуру (с разделением памяти программы и памяти данных), даже микропроцессор Intel 4004 сделан в гарвардской архитектуре (к счастью, в Интеле потом быстро одумались).

Первые машины DEC имели открытую архитектуру, и потому совместимые с PDP-8 машины выпускались не только как ОЕМ внутри США, но и другими странами. Например, с 1969 года эту машину делала Венгрия. В совке ее клон — Электроника-100.

Hmm4
Hmm4
для  ZIL.ok.130
1 год назад

Ещё забыто contradiction. Но это так.

camel
camel
1 год назад

То ТС — в журнале «ИР», когда-то писали про изобретателя Буденного, который сделал схему сразу для десятичного исчисления. Есть какая нибудь информация о дальнейшем?

camel
camel
1 год назад

Кстати, давно есть схемы с тремя логическими уровнями ДА-НЕТ- 0, плюс, минус, ноль.

Proper
Proper
Администратор
для  camel
1 год назад

Третье состояние логики, между ДА и НЕТ — это ОЙ, ВСЁ. Это вам любая женщина продемонстрирует.

ZIL.ok.130
ZIL.ok.130
для  Proper
1 год назад

Кстати тут наткнулся в сети — чел ставит напоминалку Алисе на 19-00. Время 19-05 — Алиса, в чём дело? А я забыла, сорри.
Это точно ИИ?

camel
camel
для  Proper
1 год назад

Навскидку —
В.Л. Шило, Популярные цифровые микросхемы, 28 стр. рис. 1.13. EQ схема с третьим состоянием…

Proper
Proper
Администратор
для  camel
1 год назад

Товарисч, «третье состояние» там — это отключение от шины. В смысле логики — там уровней на шине всё те же два, ноль и единица (ну или высокий и низкий).

camel
camel
для  Proper
1 год назад

Т.е. религия не позволяет считать третье состояние за логический сигнал…

Proper
Proper
Администратор
для  camel
1 год назад

Это вообще не сигнал. Это отключение сигнала. Вентиль отключился от шины, и его состояние неизвестно.

Простой пример со светофором:
comment image

Светофор выдает два сигнала, два рабочих состояния — «идите» (зеленый) и «стойте» (красный). А когда он выключен — он ничего не выдает.

Именно так и построен вентиль с выходом с «третьим состоянием». На входе у него состояний два — 0 и 1. И на выходе тоже два — 0 и 1, а третье — это он отключился от шины. Как выключенный светофор. И состояние шины при этом тоже неопределенное — пока ее не захватит другой вентиль.

camel
camel
для  Proper
1 год назад

Есть три состояния на выходе микросхемы, четко определяемые по приведенной таблице вариантов состояний. Принимать или не принимать эти состояния за логические сигналы дело хозяйское.

camel
camel
для  Proper
1 год назад

Ннндааа… старею… три состояния на выходе операционника с двухполярным питанием элементарная вещь, о чем тут разговаривать?

i РобаД〄
i РобаД〄
для  camel
1 год назад

А если взять ЛАТР, то у него на выходе будет столько состояний, шта и не сосчитать)

camel
camel
для  i РобаД〄
1 год назад

Если любое из этих состояний ЛАТРа достигается за один такт, на здоровье. Тут-те и n — ричная система, кака хошь, все быстрее, чем единички и нолики отщелкивать.

Hmm4
Hmm4
для  Proper
1 год назад

Zil правильно выше отметил — НЕОПРЕДЕЛЕНО. Очень помогает в системах с логическим выводом.

Proper
Proper
Администратор
1 год назад

Долой биты — нахваливай кубиты! За восемь битовых одного байтова дают! Ударим третьим состоянием шины по немаскируемому прерыванию! Когда в процессорах троится — надо меньше наливать спирта разработчикам.

i РобаД〄
i РобаД〄
для  Proper
1 год назад

Даёшь третье состояние поршня в двс!!11

i РобаД〄
i РобаД〄
для  i РобаД〄
1 год назад

Даей ёж синусоиду по кривонусоиде!!

Kokunov
Kokunov
1 год назад

Хехе. Наши похоже пошли немного дальше, и стали ковырять фотонику. Как вам восьмиричная логика?

ZIL.ok.130
ZIL.ok.130
для  Kokunov
1 год назад

Блдлинн, нет третичной, восьмеричной и т.д. логики.
Есть системы счисления.
Логика — одна — алгоритмы разные.
Избу можно построить топором в топорной логике(по твоему) и можно — ножовкой в ножовочной логике?
Неа — логика строения не изменится от слова совсем — алгоритмы и инструменты будут разные.

Kokunov
Kokunov
для  ZIL.ok.130
1 год назад

Ну конечно, оптимизация современным программистам чужда…
Логика говоришь одна? Ну-ну.

ZIL.ok.130
ZIL.ok.130
для  Kokunov
1 год назад

А шо ну ну?
Оптимизация чего?
Будь добер — раз’ясни подробнее.

Kokunov
Kokunov
для  ZIL.ok.130
1 год назад

В данном случае как раз слово логика имеет отношение к транзистору. Именно он определяет тип логики. Именно по этому цифровая техника двоична. В зависимости от напряжения на затвора у тебя на стоке или плюс или минус.
А если у тебя на условном «спектральном транзистора» «истоке» спектр, который меняется в зависимости от входного спектра на «затвор»?
Что же до оптимизации приведу пример. Сейчас начал встречать много где тупое использование double там, где можно было бы обойтись byte.
Я к чему это — если у тебя разрядность бита выше, ты можешь обрабатывать больший обьем данных при тех же условных затратах. Яркий пример этому приводил Гланге с твердотельной памятью. А до этого был переход с 8и битой шины на 16 битную, теперь до 64 битной добрались.

ZIL.ok.130
ZIL.ok.130
для  Kokunov
1 год назад

Виш ле — есть геометрия.
Она может быть Евклидовой и геометрией Лобачевского-Римана.
Но от этого она не перестаёт быть геометрией.
Алгебра не перестанет быть алгеброй в тензорах.
И так далее.
А знаешь чем связывается воедино логика?
Принципом причинности.
В нашей Вселенной вот так это реализовано.
Иначе было бы так — ты послал сигнал на реле(транзистор) на открытие, а он вместо открытия — вообще ничего не сделал бы. Или например — после получения сигнала он превратился бы в резистор или в апельсин.
Вот тогда это была бы другая логика.

ZIL.ok.130
ZIL.ok.130
для  ZIL.ok.130
1 год назад

Тут вообще всё это очень глубоко «сидит» — такое выражение как аристотелева логика например есть.
И выражение это — бред.
Ибо Аристотель предложил принцип, алгоритм, но никак не всю логику целиком.
Чем плох аристотелевский принцип/алгоритм от частного к общему?
Да тем, что он нарушает принцип более высокого порядка — минимизации затрат.
Согласно его принципу — нужно сначала изучить всё множество частностей и лишь потом начинать выстраивать общие для этих множеств частностей закономерности.
А согласно общей логики мы сначала выявляем общие закономерности для множества частностей и на основании этого — делаем в случае надобности деталировку множества частностей.
Нетрудно заметить, что во втором случае — от общего к частному — тупо экономятся силы и средства.
Потому что в каждом отдельном случае — ты выявляешь общее по одному или по группе признаков и детализируешь не всё множество, а только его часть с выявленными совпадениями/аналогиями.
В случае Аристотеля этого сделать не удастся — до тех пор пока ты до конца не изучишь всё множество частностей — ты тупо не сможешь выявить общего принципа/закономерности.

ZIL.ok.130
ZIL.ok.130
для  ZIL.ok.130
1 год назад

Ты сам в повседневной жизни пользуешься принципом общей логики.
Чтобы что то купить ты понимаешь что нужно «идти» на торговую площадку. Следующим шагом ты начинаешь деталировку в зависимости от того что именно ты желаешь купить.
Ты же не начинаешь бегать по всем магазинам подряд?
И в магазине ты сначала ищешь общее — «Фрукты-овощи» к примеру, а дойдя до этого отдела ты начинаешь дальше детализировать — ищешь морковку.
И — о, чудо! — Ты её находишь!

ZIL.ok.130
ZIL.ok.130
для  ZIL.ok.130
1 год назад

Причём сам же Аристотель в своей «Политике» — прямо об этом говорит: << Первичным по природе является государство по сравнению с семьей и каждым из нас; ведь необходимо, чтобы целое предшествовало части. Уничтожь живое существо в его целом, и у него не будет ни ног, ни рук, сохранится только наименование их, подобно тому как мы говорим «каменная рука»; ведь и рука, отделенная от тела, будет именно такой каменной рукой.

Xenophob
Xenophob
для  Kokunov
1 год назад

А мат. аппарат под эту логику имеецца?

Kokunov
Kokunov
для  Xenophob
1 год назад

Есть даже уже такой термин как оптоинформатика

Xenophob
Xenophob
для  Kokunov
1 год назад

Да, там исчо и фотоника п(р)оявилась =) Ток к мат. аппарату применительно к троичной логике, вернее, его отсутствию, это какое отношение имеет?

warnak
warnak
1 год назад

Не страшно когда ты 1 страшно когда ты 0 /шутка программистов/

Kokunov
Kokunov
для  warnak
1 год назад

Страшно когда путают nil и null

Proper
Proper
Администратор
для  Kokunov
1 год назад

Куда страшнее, когда не понимают смысла конструкции

void some(void)

Тут и до суицида недалеко.

Vic
Vic
1 год назад

(Вспомнилось)… Как-то разбирая состояние крана для анализа потоков в SCADA системе, придумал такие состояния:
открыт, не закрыт, в промежуточном положении, не открыт, закрыт. Для насоса: остановлен, включен вперёд, включен назад.

Kokunov
Kokunov
для  Vic
1 год назад

Будете смеяться но в любой СУБД булевы переменные могут иметь значения true, false и null. И я видел код, в котором это используется, бггг
«На ребро встанет — пойдем на пары… » (С) анекдот.

Gena
Gena
для  Kokunov
1 год назад

Тебе прикольно, а мню не смешно. Две разы так было на третием курсе.. ПричОм, обе разы — сдача лабораторных…

Proper
Proper
Администратор
для  Kokunov
1 год назад

Ну да — состояние «неопределенность». Это разумно именно для ЛОГИЧЕСКИХ переменных. Да, Нет, и «не знаю».

А вот для арифметики троичность — это адская ахинея.

Видите ли, бамбино — естественная для человеков система исчисления — десятичная. Методом редукции (упрощения) от нее получена самая минимальная система — двоичная, в которой у условной «цифры» (разряда) есть всего два состояния, 0 и 1. Меньше уже некуда.

Порождать же промежуточные системы между этими двумя — означает плодить лишние сущности. Что очевидная глупость.

camel
camel
для  Proper
1 год назад

Упрощение до двоичного, дало простоту и надежность исполнительного аппарата. До транзисторной эпохи.

ZIL.ok.130
ZIL.ok.130
для  Kokunov
1 год назад

Булева переменная — null?
Беги скарей в M$ — тибе ждйот уеликае будющие.

Proper
Proper
Администратор
для  ZIL.ok.130
1 год назад

Тем не менее такая трактовка есть. То есть булева переменная может иметь одно из двух значений (например, 0 или 1), но ведь может и не иметь значения вовсе. Не присвоено значение. И эту ситуацию с «не присвоено значение» вообще-то надо отделять.

Другой вопрос, что это не имеет никакого отношения к троичной арифметике.

ZIL.ok.130
ZIL.ok.130
для  Proper
1 год назад

Ненене — значение null нужно присвоить переменной. Иначе в этой ячейке будет мусор.
Или если переменная вообще не определена/не объявлена — андифайнд.
А булевы значения — два — истина и ложь.
Всё.

ZIL.ok.130
ZIL.ok.130
для  ZIL.ok.130
1 год назад

А то, что высокоуровневые языки автоматом инциируют объявленные переменные значением null — дела не меняет.

Proper
Proper
Администратор
для  ZIL.ok.130
1 год назад

Это ты говоришь уже о реализациях. А в теории алгоритмизации действительно есть такой прикол — что булева переменная может быть «не присвоена», и эту ситуацию вообще-то надо бы отслеживать, именно для того, чтобы не прочитать оттуда «мусор».

Действительно, булевы значения — два — истина и ложь (или 0 и 1, или да и нет, короче — ЛЮБЫЕ ДВА РАЗНЫХ). Но это никак не отменяет проблему неприсвоенной переменной.

Инициализация всех булевых переменных (да и вообще всех переменных) нулем — это костыль. Так сделать просто, но это создает проблему на этапе отладки — ты не можешь поймать ситуацию, что читаешь и используешь для какого-то решения значение переменной ДО ТОГО, как в переменную занесли валидное значение. От этого пипецома и глюки.

По-хорошему, при фон-неймановской архитектуре все переменные должны иметь некое дополнительное состояние «не присвоено значение». В целях контроля логики программы. Потому что раз данные пишутся и читаются сугубо по командам программы — надо контролировать, что данные записаны ДО чтения, это простейшая проверка логики программы, такая же, как исключительные ситуации деления на ноль и оверфлоу в арифметике.

Контроль присвоения переменных до использования пытались перенести в компиляторы — но это, во-первых, не всегда возможно, а во-вторых это не решает проблему интерпретируемых языков.

Но реализация состояния «не присвоено значение» обычно накладна. Поэтому когда нужна максимальная эффективность кода — либо на это вообще плюют и читают мусор, либо ставят зануление всего массива переменных на старте программы.

Loki
Loki
для  ZIL.ok.130
1 год назад

Вы с Глагне слегка о разном глаголете.. — есть выделенная память под хранение булевой переменной и Если это бит — есть два значения 0 или 1 — Фсе — в компьютерах чудес не бывает. Но под нее может быть выделено больше, скажем захотелось :) или в языке реализованном, чтобы забить в БД эту самую переменную, допускается на стадиях вычисления иметь неопределенное значение для буля — например, галочка на форме проигнорирована… — так можно и марсианскую пи-логику вполне употреблять..)

ZIL.ok.130
ZIL.ok.130
для  Loki
1 год назад

Бери шыре — еси не в стеке а в куче ты сам назначаешь размер памяти.
Сопсно наскоко я понял — эти две пронблемы удовлетворительно и не решены — утечка/переполнение и проверка инициализации.

Proper
Proper
Администратор
для  Loki
1 год назад

По понятным причинам ячейки памяти адресуются процессором даже не байтами, а целым словом. То есть минимальный размер «переменной» с произвольным доступом — это и есть машинное слово.

Разумеется, в некоторых процессорах в системе команд имеются извращения, позволяющие адресоваться к половинке слова или даже четвертинке. Но при этом всё равно происходит чтение целиком слова из ячейки памяти, и запись тоже целиком слова.

Работа же с отдельными битами в большинстве процессоров организована не напрямую, а через всякие AND и OR с битовой маской для выделения отдельных битов из слова. То есть с точки зрения производительности работа с битовым флагом — НАКЛАДНА. Да, компилятор может наэкономить памяти, если будет упаковывать несколько булевых переменных в один адрес — но такая экономия лишь снизит скорость работы, потому что ради произвольного доступа к биту все равно придется выполнять чтение целого слова.

Теперь рассмотрим расточительную реализацию булевой переменной, в которой под нее отведено целое слово (гулять так гулять). Примем для простоты FFFF за логическую True, 0000 за логический False, а АА55 за состояние «не определено».

Теперь сравним, как работает код простого присвоения bool a = true в случае реализации через биты и «расточительной».

Через биты — процессору сначала придется прочитать слово по адресу (а), сформировать битовую маску для выделения из слова нужного бита, операцией с маской изменить бит в слове, записать слово в адрес (а).

Расточительно — просто записать слово FFFF в адрес (a).

Ну и кто быстрее?

При этом в «расточительной» реализации булевой переменной ты имеешь возможность добавить код, проверяющий ПЕРЕД ЧТЕНИЕМ прямо в процессе исполнения программы — а было ли присвоено значение переменной, или мы пытаемся читать случайную грязь? Естественно, этот код добавляется компиляцией с ключиком DEBUG, а в релизе его уже не будет.

В реализации через биты ты уже ничего не проверишь. И работает эта реализация МЕДЛЕННЕЕ — несмотря на все попытки ее ускорять, усложняя систему команд. Единственный выигрыш — ты используешь меньше памяти под переменные. Но это было актуально во времена PDP-8, а не сейчас, когда у тебя в телефоне 6 гигов оперативки.

Proper
Proper
Администратор
для  Vic
1 год назад

>>открыт, не закрыт, в промежуточном положении, не открыт, закрыт

Отдает отсутствием системности.

Если вентиль не бинарный (открыт/закрыт), а имеет промежуточные состояния открытости — вам придется вводить градации его открытости. Потому что «в промежуточном положении» — это ниочем. «Открыт на 1%» и «открыт на 99%» — это всё «в промежуточном положении», но между этими состояниями — гигантская разница.

Как только ты понимаешь, что для такого вентиля надо указывать степень его открытости — так ты сразу забываешь об этом маразме «открыт, не закрыт» и вводишь численный измеритель. Скажем, от 0 до 100. Или с какой там тебе надо степенью точности.

Gena
Gena
для  Proper
1 год назад

Да. нет, да ну его нах….

i РобаД〄
i РобаД〄
для  Gena
1 год назад

КаркадилО не вино ватт.

Vic
Vic
для  Proper
1 год назад

Речь, например, может идти о наличии потока сквозь кран: «не закрыт» и «открыт» разрешает двигаться потоку, а «закрыт» — запрещает. Бинарный результат получается из трёх возможных состояний. Или: «открыт» — гарантирует наличие потока, а «не открыт» и «закрыт» — не гарантирует. Промежуточные положения можно отображать только при наличии датчика положения, что не всегда бывает. Чаще всего имеем дело только с концевиками.

Proper
Proper
Администратор
для  Vic
1 год назад

То есть системотехнику в вашем ВУЗе не преподавали. Печально.

Отдельно можешь рассказать, как из двух концевиков получаются пять состояний заслонки.

>>«открыт» — гарантирует наличие потока, а «не открыт» и «закрыт» — не гарантирует

Чота ржу.

Vic
Vic
для  Proper
1 год назад

Это не пять состояний заслонки, а пять возможных результатов анализа состояний концевиков. Ещё есть и шестой результат: одновременно «открыт» и «закрыт», который можно интерпретировать как неисправность.

Gena
Gena
для  Vic
1 год назад

А теперь переходим в n-мерность, и Лобачевский пошёл за когняком…))

Loki
Loki
для  Vic
1 год назад

Гм. Это как? Если концевик дает два вида сигнала (П\НеП) и имеется в количестве опять же два — это банально 4 комбинации. Если сигналов 3 — 9 комбинаций — хотя что это за третий сигнал хз — потому как если это ТипаПоток:) — матрица вырождается опять в 2х2 в ваших вводных. Anyway -как вы из 4 комбинаций сбацали 6 состояний -??

Vic
Vic
для  Loki
1 год назад

Есть 4 разных состояния. По этим состояниям в некоем алгоритме возможны 4 ветвления типа:
if( a== false && b== true) goto Closed;
if( a== false && b== false) goto Middle;
if( a== true && b== false) goto Opend;
if( a== true && b== true) goto Broken;
Но кроме этих вариантов возможны такие:
if(( a== false && b== true) || (a== false && b== false)) goto NotOpend;
if(( a== true && b== false) || (a== false && b== false)) goto NotClosed;
Или проще:
if( a== false) goto NotOpend;
if(b== false) goto NotClosed;

Loki
Loki
для  Vic
1 год назад

Вы прикалываетесь??? Если нет, и я узнаю, что вы программировали автопилот, слезу нехрен с такого самолета.. :)) Есть 4 ветвления и НЕТ никаких других вариантов — а то что вы написали — де факто, порождает возможность исполнения кода меток NotOpend and NotClosed не по факту реальной инфы от концевиков, а от порядка расставленных операторов условия — сегодня так, завтра этак.. и блин Opened а не Opend :)))

Vic
Vic
для  Loki
1 год назад

Есть задача реагирования на состояние концевиков, которая решается только четырьмя ветвлениями, а есть задача решения, например, наличия или отсутствия протока, где состоянию «true» удовлетворяют два варианта состояний концевиков. Opened — принимается, а Opend и NotOpend — злоупотребления сокращениями для личного употребления.

Loki
Loki
для  Vic
1 год назад

Так об этом и речь — есть первичка с 4 вариантами, и есть две отдельных задачи на ней с 4 и 2(f(4)) вариантами — а если мешать в кучу 6 вариантов — ну это просто может аукнуться..

Чтобы добавить комментарий, надо залогиниться.