AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
NAV
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.03.2020, 12:42   #1  
mira is offline
mira
Участник
Аватар для mira
 
140 / 25 (1) +++
Регистрация: 18.03.2007
Адрес: Москва
Троичная логика и двоичная логика
Добрый день!

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


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

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

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

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

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

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

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

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

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

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

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

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

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

Последний раз редактировалось S.Kuskov; 05.03.2020 в 17:44.
За это сообщение автора поблагодарили: mira (1).
Старый 10.03.2020, 13:32   #11  
mira is offline
mira
Участник
Аватар для mira
 
140 / 25 (1) +++
Регистрация: 18.03.2007
Адрес: Москва
S.Kuskov, большое спасибо! Я всё почитаю.

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

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


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

Меня послали в курилку. По размышлении : этот раздел не вообще о программировании в Наве, а технические аспекты Нава? Хорошо.
Старый 10.03.2020, 13:54   #12  
mira is offline
mira
Участник
Аватар для mira
 
140 / 25 (1) +++
Регистрация: 18.03.2007
Адрес: Москва
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Думайте не только об эффективности создания алгоритма но и о поддержке его в будущем. Вы же разрабатывате не разовый скрипт а продукт у которого в перспективе будет сколько-нибудь продолжительный жизненный цикл?
Да, не первый раз сталкиваюсь с ограниченностью boolean, не первый раз делаю алгоритмы с переменными "не определено, да, нет", не первый раз спорю об этом с ревьюером. Не первый раз и осознанно, не разовый скрипт.

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



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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 04:57.