見出し画像

プログラミングと法律の相違点 _ 演算子(5) 優先順位でわかる職業病2

前提としての優先順位

あなたがプログラミングをたしなむならまずどの言語においても
演算子の優先順位の規定があったはずです。
ここで一番重要なのは単項演算子である!(否定)の優先順位は大抵の言語で
&&(論理積)||(論理和)より高く設定されていることです。

見えない()を明示的に書くか書かないか

だからこそ、わかってて言語デフォルトの優先順位を使っているのか。それとも知らずに書いているのか。を区別するためにほとんどの場合において
明示的に()を書くことで優先順位をはっきりしなさい。というコーディング規約相当のものがあったのではないでしょうか。何が言いたいかというと
つまり、
1. 法律の条文ではプログラミング言語にある優先順位を操作する()が無い。
2. 優先順位がプログラミング言語と異なる

のです。

ボーっと読んでると混乱する!

法律の条文では、否定形が来た場合は直前の文言だけにかかるわけではありません。
&&(論理積)||(論理和)より!(否定)の優先順位は低いのです!
だからボーっと読んでるとよくわからなくなってくるときがあります。
少なくとも私は最初のころ混乱しました。勉強する中でスイッチの切り替えができるようになりましたが。

事例 - 長い条件文章で混乱する・・・かも

例えば、司法書士の過去問の会社法という問題において以下のようなリード文と呼ばれる注意事項が記載されてる場合があります。


なお指名委員会等設置会社及び監査等委員会設置会社でないものとする。

これは、指名委員会等設置会社をA, 監査等委員会設置会社をBとすると

if( !(A && B) ){
    //処理あれこれ
}

であって

if( A && !B ){
    //処理あれこれ
}

という意味ではない。ということです。

終わりに - 暗黙的了解というルール

明示的な()なんて特にないので、これは勉強する中で身に着けていくしかないと思います。
それ以外にも民法と不動産登記法においてプログラマ的感覚から言えば
そこは明示的に書かないと混乱しませんか?といったところが(暗黙的了解なのか)記載が省略されていたりする箇所があり、そこもつまずくポイントとなりました。これについてはまた別記事で書いていこうと思います。

この記事が気に入ったらサポートをしてみませんか?