アカウント名:
パスワード:
falseが正解と書いてる人が居るので念のために言っておくが"true"が正解。これは論理学的には「Vacuous truth」で「全ての集合は空集合を部分集合として含む」「前提が偽なら命題は真(爆発律)」のように正当化される。空の場合は「全てが条件を満たす」で日本語的にもあってる。要素数が1兆・1億・1まで真な関数が0になると急に偽を返すのも直感に反する。プログラマーとしても最初はtrueで宣言したboolに&=したり、while(){}内でreturn false、外で`return true`したり、どう考えてもtrue。
論理学なんかクソくらえと思うかもしれないが、論理学的にそうなら実務でも一貫してる。具体的な状況は、
おおむね同意。ただし、「関数の定義」と「論理式の評価」を混同している点でいただけない。なので少し補足。
今回の関数の目的が、論理式の評価ではなく、数学的な証明手段だった場合は、ご自身で書かれている通り「前提が偽」なので、空集合のときは前提不十分、それ以外の場合には…と条件ごとに解を書かないと正しくない。一般的には、数学なら、問題の前提条件に、∃x、つまり空集合ではない、と明記する。これをプログラミングで言うと、あなたが結語にまとめた通り、前提が不十分だから未定義例外を飛ばす位置付けだろう。
論理学・数学の問題かどうかで、プログラミングの目的も変わるのであって、ソフトウェアとしては(≠プログラミング)、この関数の目的が、式の評価か、解を求めることか、どこにあるかを明確にする必要があり、それこそが仕様。だから、ソフトウェア的には仕様の不備、と考えることが出来て、あなたの最後の1段落の主張の根拠となる。発注側のほかの指示次第で、論理式の評価に使うことが関数の目的であることが明確ならば、trueで返すのが自然と裁判で判断される可能性は高いし、逆にこの関数がUI表示に用いられて、画面表示として異常を返す方が適切と判断される可能性のどちらの可能性もある。…この辺りの設問設定が現実のソフトウェア開発に即してないので、枝葉だけ切り出してtrue/falseを聞いてくる、元ネタの記事自体がちょっとズルい。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
アレゲはアレゲを呼ぶ -- ある傍観者
trueが正解 (スコア:2, 参考になる)
falseが正解と書いてる人が居るので念のために言っておくが"true"が正解。
これは論理学的には「Vacuous truth」で「全ての集合は空集合を部分集合として含む」「前提が偽なら命題は真(爆発律)」のように正当化される。
空の場合は「全てが条件を満たす」で日本語的にもあってる。
要素数が1兆・1億・1まで真な関数が0になると急に偽を返すのも直感に反する。
プログラマーとしても最初はtrueで宣言したboolに&=したり、while(){}内でreturn false、外で`return true`したり、どう考えてもtrue。
論理学なんかクソくらえと思うかもしれないが、論理学的にそうなら実務でも一貫してる。具体的な状況は、
Re:trueが正解 (スコア:0)
おおむね同意。ただし、「関数の定義」と「論理式の評価」を混同している点でいただけない。なので少し補足。
今回の関数の目的が、論理式の評価ではなく、数学的な証明手段だった場合は、ご自身で書かれている通り「前提が偽」なので、空集合のときは前提不十分、それ以外の場合には…と条件ごとに解を書かないと正しくない。一般的には、数学なら、問題の前提条件に、∃x、つまり空集合ではない、と明記する。これをプログラミングで言うと、あなたが結語にまとめた通り、前提が不十分だから未定義例外を飛ばす位置付けだろう。
論理学・数学の問題かどうかで、プログラミングの目的も変わるのであって、ソフトウェアとしては(≠プログラミング)、この関数の目的が、式の評価か、解を求めることか、どこにあるかを明確にする必要があり、それこそが仕様。だから、ソフトウェア的には仕様の不備、と考えることが出来て、あなたの最後の1段落の主張の根拠となる。
発注側のほかの指示次第で、論理式の評価に使うことが関数の目的であることが明確ならば、trueで返すのが自然と裁判で判断される可能性は高いし、逆にこの関数がUI表示に用いられて、画面表示として異常を返す方が適切と判断される可能性のどちらの可能性もある。…この辺りの設問設定が現実のソフトウェア開発に即してないので、枝葉だけ切り出してtrue/falseを聞いてくる、元ネタの記事自体がちょっとズルい。