アカウント名:
パスワード:
「配列のすべての要素が条件を満たすなら真」という定義で「入力が空集合なら、返り値は真か偽か」ってのは数学・論理学やそこら辺の話で、現実のプログラミングでは「関数を書く者がその想定する用途にあわせて定義し、その定義を関数の説明に明示すること」、「関数を使う人はそういう極端なケースが起きた場合の振る舞いに気を付けること」と言うので済む話。
今回の件は明示されていないケースなので、数学や論理学に従うべきですね。ロジックを単純化できますし、後から関数を見たときに誤解することを避けられます。
いや、挙動を明示すべきじゃなかろうか。その関数の目的は数学的に正しい事を目指すものではないし、「配列のすべての要素が条件を満たすならtrueを返す」という動作だけを指定しているのがそもそもの過ちで、空の配列を渡した場合の動作も定義すべきだった。
そういう中途半端な事をしておいて「空の配列を渡したらfalseを返すかtrueを返すかが、良いプログラマかどうかの一つの境目だ」と」などと言い出すのが根本的に間違っていると思う。
さらに、「「メールのすべての添付ファイルが安全であれば受信箱に入れる」という処理において、添付ファイルのないメールはどうすべきかを考えれば、自然と答えがイメージしやすい」とか言ってるけど、添付ファイルが無いものに対して添付ファイルが安全であるかどうか調べる、という動作を想定するのがおかしい
添付ファイルが存在する場合、添付ファイルが存在しない場合、それぞれに対する挙動を指定すべきなのに、「どうすべきかを考えれば」じゃないだろう。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
犯人はmoriwaka -- Anonymous Coward
プログラミングは数学や哲学ではない (スコア:4, すばらしい洞察)
「配列のすべての要素が条件を満たすなら真」という定義で「入力が空集合なら、返り値は真か偽か」ってのは
数学・論理学やそこら辺の話で、
現実のプログラミングでは「関数を書く者がその想定する用途にあわせて定義し、その定義を関数の説明に明示すること」、
「関数を使う人はそういう極端なケースが起きた場合の振る舞いに気を付けること」と言うので済む話。
Re:プログラミングは数学や哲学ではない (スコア:0)
今回の件は明示されていないケースなので、数学や論理学に従うべきですね。ロジックを単純化できますし、後から関数を見たときに誤解することを避けられます。
Re:プログラミングは数学や哲学ではない (スコア:1)
いや、挙動を明示すべきじゃなかろうか。
その関数の目的は数学的に正しい事を目指すものではないし、
「配列のすべての要素が条件を満たすならtrueを返す」という動作だけを指定しているのがそもそもの過ちで、
空の配列を渡した場合の動作も定義すべきだった。
そういう中途半端な事をしておいて「空の配列を渡したらfalseを返すかtrueを返すかが、良いプログラマかどうかの一つの境目だ」と」などと言い出すのが根本的に間違っていると思う。
さらに、「「メールのすべての添付ファイルが安全であれば受信箱に入れる」という処理において、添付ファイルのないメールはどうすべきかを考えれば、自然と答えがイメージしやすい」
とか言ってるけど、添付ファイルが無いものに対して添付ファイルが安全であるかどうか調べる、という動作を想定するのがおかしい
添付ファイルが存在する場合、添付ファイルが存在しない場合、それぞれに対する挙動を指定すべきなのに、「どうすべきかを考えれば」
じゃないだろう。