Logika matematyczna to jedna z bardziej przydatnych w programowaniu (i ogólnie informatyce) dziedzin matematyki. Dzięki prawom logiki działają wszystkie układy elektroniczne. W codzienności programisty może przydać się zwłaszcza podczas optymalizacji warunków logicznych.
Przykładowo, inspekcja kodu Ruby w środowisko IntelliJ za błąd uważa sterowanie przepływem za pomocą negatywnego warunku typu: if !condition ...
. Taki pojedynczy warunek wystarczy w takim przypadku zamienić na: unless condition ...
. W przypadku bardziej rozbudowanych warunków przydają się znane z liceum prawa de Morgana.
I prawo de Morgana (zaprzeczenia koniunkcji)
~(p ^ q) <==> (~p v ~q)
Poniższy kod sprawdza, czy jest widoczny nagłówek. Nagłówek powinien mieć tytuł oraz podtytuł. Jeżeli obydwa tytuły są widoczne, uznajemy ze jest wyświetlony poprawnie. I tak następujące instrukcje warunkowe:
if !is_title_displayed || !is_subtitle_displayed puts 'Header not visible!' end
można zamienić na:
unless (is_title_displayed && is_subtitle_displayed) puts 'Header not visible!' end
Zobaczmy, jak to działa.
def check(p, q) if !p || !q puts 'Header not visible!' else puts 'Header is displayed.' end end def check_morgan(p, q) unless p && q puts 'Header not visible!' else puts 'Header is displayed.' end end