パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

Hello, Worldに潜むバグ」記事へのコメント

  • by Anonymous Coward

    putsの実行結果戻り値をハンドリングせずにプログラムを常に正常終了するようなコードなんだから、putsが成功しようが失敗しようが正常終了するのが当たり前に思えるんですけど。

    • by Anonymous Coward

      「俺の思う最強のhelloworldの仕様を満たしてないから、この実装はバグってる!」って主張してるだけだよな。
      Bashはバグってないとか言ってるけど、Cの実装に寄せて
      function helloworld {
      echo "Hello World"
      return 0
      }
      hwlloworld > /dev/full
      ってやれば、終了ステータスは0になるだろうし。

      • by Anonymous Coward

        Hello Worldの仕様書とかあるのかな。

        • by Anonymous Coward

          K&R第2版には「Cでは,hello, worldと印字するためのプログラムは,次のようになる。」として書いてある。
          ということは、書き込みが行われない場合はプログラムの目的は果たせてないのでエラーなのかな。

          • by Anonymous Coward on 2022年03月26日 15時37分 (#4221926)

            K&Rでの記述は簡素な例示であって、完全なエラー処理や「どう書くべき」とかまではいちいち踏み込んでないからな。
            プログラマの目的は果たせてないかもしれないが、プログラムからしたら「0を返せと言われているから0にしてるやろ。おたくの目的なんて知らんがな。わては書かれたとおりに実行してまっせ」となるだろう。
            bashだってexit 0やreturn 0で抜けると終了ステータスは0だぞ。
            ~$ bash -c 'echo "Hello World";exit 0' > /dev/full; echo $?
            bash: 0 行: echo: 書き込みエラー: デバイスに空き領域がありません
            0
            ~$ function helloworld() { echo "Hello World";return 0;}; helloworld > /dev/full; echo $?
            bash: echo: 書き込みエラー: デバイスに空き領域がありません
            0

            逆にperlで、exit 0で終了ステータスが1になる理由が判らない。"exit 2"だと2になるんだけどな。

            親コメント

普通のやつらの下を行け -- バッドノウハウ専門家

処理中...