|
05.03.2020, 12:42 | #1 |
Участник
|
Троичная логика и двоичная логика
Добрый день!
Горю возмущением! В последнее время при определении переменных-флагов не хватает значений да-нет, разрешено-запрещено, необходимо ещё значение "не определено". Поэтому использую (0,1,2) - не определено, разрешено, запрещено. А коллега на ревью не соглашается. Насколько я знаю, есть троичная логика, даже троичный компьютер. С двумя вариантами (и булевой переменной) алгоритм или излишне сложный (я так и не додумала..), или , на мой взгляд, не надежный. Коллеги, есть опыт? Поделите, пожалуйста, мнениями! А то сгорю дотла |
|
05.03.2020, 13:26 | #2 |
Administrator
|
в MS Access гаечка закрашивалась сереньким, если не определена.
а так - опшн вам в помощь: <пусто>,Да,Нет |
|
|
За это сообщение автора поблагодарили: mira (1). |
05.03.2020, 14:09 | #3 |
Участник
|
|
|
05.03.2020, 14:08 | #4 |
Участник
|
Санчо, вопрос у коллеги не к типу данных (опшен, целое).
Вопрос в том - что незя! Надо сделать алгоритм, чтобы было "да" и "нет" и поэтому булева переменная. Я математик по образованию, а не ит-шник. Может в новых языках каких-то есть конструкции с троичной логикой и можно почитать обоснование, в каких ситуациях можно использовать троичную логику? Питон, какой-нибудь? То, что, побарахтавшись в логике "да-нет", перешла к "не определено- да-нет", не аргумент. Мне и самой хочется понять, когда ситуация сводится к да-нет, а когда к не определено-да-нет. Во имя воспитания точности мышления. Человечья логика хитрая вещь, поэтому хочется не перекричать (и не убить ..ой, убила бы этих гнусных ревьюеров), а раз и на всегда разобраться. |
|
05.03.2020, 17:41 | #5 |
Участник
|
не только в SQL. Почитайте про nullable типы (https://docs.microsoft.com/ru-ru/dot...le-value-types)
Цитата:
Но не всем это нравится вот например https://habr.com/ru/post/309462/ Моё мнение - в чужой монастырь со своим уставом... лучше не надо. При разработке в любой системе стоит придерживаться правил этой системы. Под системой можно понимать как конкретный фреймворк или среду разработки, так и в целом инфраструктуру и сообщество специалистов разрабатывающих продукт. Если от какого-то нововведения вам лично станет хорошо, а в целом системе не очень, то выгода будет сомнительна. Думайте не только об эффективности создания алгоритма но и о поддержке его в будущем. Вы же разрабатывате не разовый скрипт а продукт у которого в перспективе будет сколько-нибудь продолжительный жизненный цикл? Кстати а как вы относитесь к тому что в аксапте нет NULL в значениях табличных полей? Последний раз редактировалось S.Kuskov; 05.03.2020 в 17:44. |
|
|
За это сообщение автора поблагодарили: mira (1). |
05.03.2020, 14:27 | #6 |
Участник
|
Выпускник Бауманки : "Алгоритм по схеме "да-нет-или" ветвится быстрее, чем просто по дихотомии да-нет"
Подробнее пока у него нет времени мне рассказывать. Может потом скажут, где почитать.. |
|
05.03.2020, 14:52 | #7 |
Участник
|
погуглила, есть описательные статьи на эту тему
«Лишняя» переменная Недвухзначность логики восходит к основоположнику первой законченной логической теории — Аристотелю, который между утверждением и антиутверждением помещал третье «привходящее» — «может да, а может нет». В последующем развитии логика была упрощена за счет отказа от этого третьего состояния и в таком виде оказалась необычайно живучей, несмотря на свое несоответствие нечеткой, не всегда раскладывающейся на «да» и «нет» действительности. В разные века «расширить» логику пытались Оккам, Лейбниц, Гегель, Кэрролл и некоторые другие мыслители, в конечном же виде трехзначную логику разработал в начале XX века польский ученый Ян Лукасевич." "Двухзначная математическая логика, которая повсеместно царит в мире компьютерной и прочей «интеллектуальной» техники, по мнению создателя троичного компьютера Николая Брусенцова, не соответствует здравому смыслу: «закон исключенного третьего» отрезает иные заключения, кроме «истины» и «не-истины», а между тем процесс познания реальности человеком отнюдь не сводится к дихотомии «да/нет». Поэтому, утверждает Брусенцов, чтобы стать интеллектуальным, компьютеру следует быть троичным." |
|
05.03.2020, 14:53 | #8 |
Участник
|
NULL, кстати, в sql
|
|
05.03.2020, 15:42 | #9 |
Участник
|
"В двоичной логике возможны парадоксы, а в троичной нет.
Замечу, шины у компьютера троичные. Еще в троичной логике нет ошибок округления" |
|
05.03.2020, 16:10 | #10 |
Участник
|
Вы бы эту тему в Курилке открывали бы, что ли... отсюда же прямой путь в холивар - куда пойдёт развитие ИИ. Через квантовые компьютеры с кубитамии (53-х кубитный компьютер уже вроде как работает) и их запутываемыми облаками. И против него старый добрый кремниево(предел технологии?)-транзисторно-двоичный, но имитирующий создание связей наподобие нейросетей, по аналогии того, как матушка природа нам мозг организовала... А может быть нас ждёт что-то ещё... Но как-то это отрывается от темы NAV: Программирование?
|
|
|
За это сообщение автора поблагодарили: Sancho (1). |
10.03.2020, 13:32 | #11 |
Участник
|
S.Kuskov, большое спасибо! Я всё почитаю.
Тем более, вернула ревьюеру вопрос: для моего варианта - одна переменная Integer - я возвращаю параметр из процедуры g_bool_Editable := l_cu_хх.SetTo; это просто; в его варианте - две логические переменные - g_bool_IsInitialized придется передавать параметром в процедуру SetTo. А как иначе? (все это в OnAfterGetRecord). И повод подумать над "гранями" null, и о троичной логике. Цитата:
Меня послали в курилку. По размышлении : этот раздел не вообще о программировании в Наве, а технические аспекты Нава? Хорошо. |
|
10.03.2020, 13:54 | #12 |
Участник
|
Цитата:
Имхо, надежность кода вызывает вопроса. Пишут оптимисты, которых пофиг, что там в данных. Видит качество данных только разработчик sql. И вот ему не позавидуешь. Логика интерфейсов в Наве скрывает ошибки, иначе пользователи сообщают. А разработчику sql приходится потрудиться, чтобы исхитриться написать условия и из данных+мусор выделить для RS отчетов чистые данные. Это тааакой итерационный процесс с вопросами юзеров : а что это? а это зачем? а это откуда? Может, я мудрю. Но привыкла отвечать за качество кода. Отсюда и мои вопросы. |
|
13.04.2020, 18:24 | #13 |
Участник
|
В книге Сергея Моисеенко есть параграф "Трехзначная логика и предложение WHERE"
Как раз те нюансы, которые когда-то были не понятны. А теперь p.s. Трехзначную логику в алгоритм в итоге вернула |
|