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

「世界一IQの低い」ソースコード」記事へのコメント

  • by Anonymous Coward on 2014年08月05日 8時25分 (#2651001)

    「プログラム」の初心者向けということなら、まず if else の羅列を見せてうんざりさせてから switch を教えるというのはありだと思う。
    大昔、私が初めて「プログラム」という仕掛けを知った時の本(多分ブルーバックス)での BASICの説明がこんな調子だった、多方向分岐も条件ループも IF文とGOTO文だけのプログラムで動きを示してから、ON だの FOR だのそれぞれの構文を示していた。

    • ややズレますが、switch文 という話だと、『単純に置き換えていい』と思わせちゃっていいのかな? と:
      Stringとかオブジェクト類 だと、ちょっと意図と変わりますよね (中身でなく、同一インスタンスかどうか の比較だから)。

      こういう状況で 文字列比較したいわー というとき よくありますけど、
      Javaのswitchだと その周りの理由で 正しく中身の比較 にならなかったと思います。
      //まあ、『==』をまんま置き換えてるだけなので、Javaの『==』の仕様ですが。
      //JavaScriptだと 比較とか型とか適当だから 勝手に合わせて 中身の比較にしてくれたりしたような。

      比較周りの話で教えるべき かもしれませんけど、意外とswitch あんまり簡単でもないよなー、と。

      //数ページずらー が ないわー;とは思います(;^ω^)

      親コメント
      • Java の switch では、Java6以前だと 整数とenumだけでそれ以外のオブジェクトは使えなかったと思います。
        7 で String が使えるようになり、equals による中身の比較を行うようです。
        ついでに言えば、一つの switch の中で 整数やStringを混ぜて使うなんてこともできないです。

        むしろ、JavaScript の switch の方が、=== のまんま置き換え、となるようです。
        (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch)
        === による比較なので、== とは違って、型を勝手に変換したりもしないみたいです。
        文字列同士の場合に中身の比較になるのは、JavaScriptの === の仕様ってことになるのでしょうね。

        --
        svn-init() {
          svnadmin create .svnrepo
          svn checkout file://$PWD/.svnrepo .
        }
        親コメント
      • by Anonymous Coward

        最近のバージョンだとString にswitch文を つかうと、同一インスタンスかの比較ではなく、文字列の内容を比較するようになったのでは?7だか6だかから。

      • by Anonymous Coward

        そーゆー話じゃないと思います
        たとえ話にツッコミ入れて本題とは関係ない議論を繰り広げる会議を思い出した

      • by Anonymous Coward

        関係ないけど、1行目の

        と思わせちゃっていいのかな? と:

        が三項演算子に見えてしょうがない
        //if(と思わせちゃっていい)
        // return と;

    • >「プログラム」の初心者向けということなら、まず if else の羅列を見せてうんざりさせてから switch を教えるというのはありだと思う。

      それでも3回繰り返したらわかりそうっすね。

      親コメント
      • by Anonymous Coward on 2014年08月05日 9時31分 (#2651072)

        なるほど
        だからsync; sync; syncと3回繰り返すんですね(多分違う)

        親コメント
        • そして "halt"へ

          親コメント
        • by Anonymous Coward

          たいした理由もないのにsyncは3回と教えてた人たちもあれだったなあ。

          • by frea (6286) on 2014年08月05日 11時09分 (#2651190)

            2回までは理由あります。
            1回目のsyncがブロッキングコールなので、2回目が走るときは1回目が終わってることが保証されたはず。
            3回目の理由は知りません。おまじない?
            #これ、特定の実装に依存して「3回」じゃないのかなぁ?
            #STOP-A sync は書き込み終わるまで帰ってこなかったような

            親コメント
        • by Anonymous Coward
          一つは私のため、もう一つはあなたのため、最後の一つは神様のため、ですね。
          • by Anonymous Coward

            紅茶の茶葉をポットに入れるとき、
            1杯目は自分のため、2杯目はあなたのため、3杯目はポットのため、
            てのを思い出したわ。

        • by Anonymous Coward

          そういえば、先日 sync 2回派の人に遭遇して、なんか新鮮でした。

      • by Anonymous Coward

        条件の定義が同時に発生していない時なんかは、if elseが続く事は散見される。
        忘れた頃に使用追加が行われ、その為のコードレビューを省くためにその事象のみを追加。

        を、何度も何度も何度も何度もやっていると、そういうソースになる事も。

        そして、気を利かせた奴がコッソリ直したつもりで動かなくしちゃうっての迄見た事有り。

    • by Anonymous Coward

      えとすいません今21世紀なんですが

      • by Anonymous Coward

        21世紀になると何か変わったんですか?
        もしかして人間の知能が向上したとでも?

      • by Anonymous Coward

        > えとすいません今21世紀なんですが

        つまり#2651008のAC氏は車輪の再発明を延々と繰り返しかねないお利口さんと言う話で?

        • by Anonymous Coward

          発見学習という言葉あるから、再発見は学習効果が高く有効なんだろう。

          • by Anonymous Coward

            単なる勉強不足、もの知らずでしょ。

            • by Anonymous Coward

              知らないから勉強してるんだろ、そのための発見学習なんだから
              それを勉強不足とか言い出すのか頭がおかしい。

              • by Anonymous Coward

                そうだね。その通り。発見学習なんて言葉を持ち出す時点で、ボクはもの知らずなんですって言っている様なもんだからね。

                でだ、発見しなければならないのは勉強する対象じゃない。自身の勉強不足と言う現在の状態なんだよ。それに気が付かないのがお利口さんだし、延々と車輪の再発明を繰り返すのもやっぱお利口さんなんだよね。

    • by Anonymous Coward

      昔使ってたBCのコンパイラはswitchのcaseの数に
      上限があって(128個位だったかな?)
      なんだかんだで結構苦労した気がします。
      そもそも当初設計したときにはそこまで増えるとは想定してなくて
      不具合出るのが嫌なので誰も改善しようとせずにcaseだけ増えていくという
      綱渡り状態でした。

      制御系の電文とかだと意外とこんなんになったりするかも。

    • by Anonymous Coward

      http://developers.srad.jp/comments.pl?sid=637690&cid=2651341 [srad.jp]

      switch 文では何一つ解決にならない。

    • by Anonymous Coward

      イベントループやタスクシステムと呼ばれる構造を理解してもらう事が目的なら、仰るとおりです。
      でも、元のコードをよく見てください。分岐の中でイベントプロシージャを呼んでるわけじゃないんです。if文自体が不要なんです。4ページ全部要らないんです。

あつくて寝られない時はhackしろ! 386BSD(98)はそうやってつくられましたよ? -- あるハッカー

処理中...