AXForum  
Go Back   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search

 
 
Thread Tools Search this Thread Display Modes
Old 05.03.2020, 12:42   #1  
mira is offline
mira
Участник
mira's Avatar
 
140 / 25 (1) +++
Join Date: 18.03.2007
Location: Москва
Троичная логика и двоичная логика
Добрый день!

Горю возмущением!


В последнее время при определении переменных-флагов не хватает значений да-нет, разрешено-запрещено, необходимо ещё значение "не определено". Поэтому использую (0,1,2) - не определено, разрешено, запрещено.

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

С двумя вариантами (и булевой переменной) алгоритм или излишне сложный (я так и не додумала..), или , на мой взгляд, не надежный.

Коллеги, есть опыт? Поделите, пожалуйста, мнениями!
А то сгорю дотла
Old 05.03.2020, 13:26   #2  
Sancho is offline
Sancho
Administrator
Sancho's Avatar
Лучший по профессии 2017
Лучший по профессии 2009
 
1,294 / 221 (10) ++++++
Join Date: 11.01.2006
в MS Access гаечка закрашивалась сереньким, если не определена.
а так - опшн вам в помощь: <пусто>,Да,Нет
This post has been rated by: mira (1).
Old 05.03.2020, 14:08   #3  
mira is offline
mira
Участник
mira's Avatar
 
140 / 25 (1) +++
Join Date: 18.03.2007
Location: Москва
Санчо, вопрос у коллеги не к типу данных (опшен, целое).

Вопрос в том - что незя! Надо сделать алгоритм, чтобы было "да" и "нет" и поэтому булева переменная.

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

То, что, побарахтавшись в логике "да-нет", перешла к "не определено- да-нет", не аргумент.
Мне и самой хочется понять, когда ситуация сводится к да-нет, а когда к не определено-да-нет.
Во имя воспитания точности мышления. Человечья логика хитрая вещь, поэтому хочется не перекричать (и не убить ..ой, убила бы этих гнусных ревьюеров), а раз и на всегда разобраться.
Old 05.03.2020, 14:09   #4  
mira is offline
mira
Участник
mira's Avatar
 
140 / 25 (1) +++
Join Date: 18.03.2007
Location: Москва
Quote:
Originally Posted by Sancho View Post
в MS Access гаечка закрашивалась сереньким, если не определена.
Вот!
Old 05.03.2020, 14:27   #5  
mira is offline
mira
Участник
mira's Avatar
 
140 / 25 (1) +++
Join Date: 18.03.2007
Location: Москва
Выпускник Бауманки : "Алгоритм по схеме "да-нет-или" ветвится быстрее, чем просто по дихотомии да-нет"
Подробнее пока у него нет времени мне рассказывать. Может потом скажут, где почитать..
Old 05.03.2020, 14:52   #6  
mira is offline
mira
Участник
mira's Avatar
 
140 / 25 (1) +++
Join Date: 18.03.2007
Location: Москва
погуглила, есть описательные статьи на эту тему

«Лишняя» переменная Недвухзначность логики восходит к основоположнику первой законченной логической теории — Аристотелю, который между утверждением и антиутверждением помещал третье «привходящее» — «может да, а может нет». В последующем развитии логика была упрощена за счет отказа от этого третьего состояния и в таком виде оказалась необычайно живучей, несмотря на свое несоответствие нечеткой, не всегда раскладывающейся на «да» и «нет» действительности. В разные века «расширить» логику пытались Оккам, Лейбниц, Гегель, Кэрролл и некоторые другие мыслители, в конечном же виде трехзначную логику разработал в начале XX века польский ученый Ян Лукасевич."

"Двухзначная математическая логика, которая повсеместно царит в мире компьютерной и прочей «интеллектуальной» техники, по мнению создателя троичного компьютера Николая Брусенцова, не соответствует здравому смыслу: «закон исключенного третьего» отрезает иные заключения, кроме «истины» и «не-истины», а между тем процесс познания реальности человеком отнюдь не сводится к дихотомии «да/нет». Поэтому, утверждает Брусенцов, чтобы стать интеллектуальным, компьютеру следует быть троичным."
Old 05.03.2020, 14:53   #7  
mira is offline
mira
Участник
mira's Avatar
 
140 / 25 (1) +++
Join Date: 18.03.2007
Location: Москва
NULL, кстати, в sql
Old 05.03.2020, 15:42   #8  
mira is offline
mira
Участник
mira's Avatar
 
140 / 25 (1) +++
Join Date: 18.03.2007
Location: Москва
"В двоичной логике возможны парадоксы, а в троичной нет.
Замечу, шины у компьютера троичные.
Еще в троичной логике нет ошибок округления"
Old 05.03.2020, 16:10   #9  
Krasher is offline
Krasher
Участник
Krasher's Avatar
 
48 / 37 (2) +++
Join Date: 14.05.2005
Quote:
Originally Posted by mira View Post
"В двоичной логике возможны парадоксы, а в троичной нет.
Замечу, шины у компьютера троичные.
Еще в троичной логике нет ошибок округления"
Вы бы эту тему в Курилке открывали бы, что ли... отсюда же прямой путь в холивар - куда пойдёт развитие ИИ. Через квантовые компьютеры с кубитамии (53-х кубитный компьютер уже вроде как работает) и их запутываемыми облаками. И против него старый добрый кремниево(предел технологии?)-транзисторно-двоичный, но имитирующий создание связей наподобие нейросетей, по аналогии того, как матушка природа нам мозг организовала... А может быть нас ждёт что-то ещё... Но как-то это отрывается от темы NAV: Программирование?
This post has been rated by: Sancho (1).
Old 05.03.2020, 17:41   #10  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,449 / 1792 (66) ++++++++
Join Date: 28.04.2007
Location: Калуга
Quote:
Originally Posted by mira View Post
NULL, кстати, в sql
не только в SQL. Почитайте про nullable типы (https://docs.microsoft.com/ru-ru/dot...le-value-types)

Quote:
Originally Posted by mira View Post
Может в новых языках каких-то есть конструкции с троичной логикой и можно почитать обоснование, в каких ситуациях можно использовать троичную логику?
есть https://docs.microsoft.com/ru-ru/dot...scing-operator

Но не всем это нравится
вот например https://habr.com/ru/post/309462/

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

Кстати а как вы относитесь к тому что в аксапте нет NULL в значениях табличных полей?

Last edited by S.Kuskov; 05.03.2020 at 17:44.
This post has been rated by: mira (1).
Old 10.03.2020, 13:32   #11  
mira is offline
mira
Участник
mira's Avatar
 
140 / 25 (1) +++
Join Date: 18.03.2007
Location: Москва
S.Kuskov, большое спасибо! Я всё почитаю.

Тем более, вернула ревьюеру вопрос:
для моего варианта - одна переменная Integer - я возвращаю параметр из процедуры g_bool_Editable := l_cu_хх.SetTo; это просто;
в его варианте - две логические переменные - g_bool_IsInitialized придется передавать параметром в процедуру SetTo. А как иначе? (все это в OnAfterGetRecord).

И повод подумать над "гранями" null, и о троичной логике.


Quote:
Originally Posted by S.Kuskov View Post
Кстати а как вы относитесь к тому что в аксапте нет NULL в значениях табличных полей?
Не работаю с Аксаптой. Честно говоря, даже немного ужасаюсь ее ООП. В Наве типов 5 объектов (теперь больше)), это .. уменьшает энтропию , остающуюся от поколений разработчиков.

Меня послали в курилку. По размышлении : этот раздел не вообще о программировании в Наве, а технические аспекты Нава? Хорошо.
Old 10.03.2020, 13:54   #12  
mira is offline
mira
Участник
mira's Avatar
 
140 / 25 (1) +++
Join Date: 18.03.2007
Location: Москва
Quote:
Originally Posted by S.Kuskov View Post
Думайте не только об эффективности создания алгоритма но и о поддержке его в будущем. Вы же разрабатывате не разовый скрипт а продукт у которого в перспективе будет сколько-нибудь продолжительный жизненный цикл?
Да, не первый раз сталкиваюсь с ограниченностью boolean, не первый раз делаю алгоритмы с переменными "не определено, да, нет", не первый раз спорю об этом с ревьюером. Не первый раз и осознанно, не разовый скрипт.

Имхо, надежность кода вызывает вопроса. Пишут оптимисты, которых пофиг, что там в данных. Видит качество данных только разработчик sql. И вот ему не позавидуешь. Логика интерфейсов в Наве скрывает ошибки, иначе пользователи сообщают. А разработчику sql приходится потрудиться, чтобы исхитриться написать условия и из данных+мусор выделить для RS отчетов чистые данные. Это тааакой итерационный процесс с вопросами юзеров : а что это? а это зачем? а это откуда? Может, я мудрю. Но привыкла отвечать за качество кода. Отсюда и мои вопросы.
Old 13.04.2020, 18:24   #13  
mira is offline
mira
Участник
mira's Avatar
 
140 / 25 (1) +++
Join Date: 18.03.2007
Location: Москва
В книге Сергея Моисеенко есть параграф "Трехзначная логика и предложение WHERE"
Как раз те нюансы, которые когда-то были не понятны. А теперь



p.s. Трехзначную логику в алгоритм в итоге вернула
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 17:47.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.