Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
Re:天才プログラマーってどんなコード書くの? (#2755842) | 偉大なソフトウェア開発者になるには何が必要か | スラド
[go: Go Back, main page]



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

偉大なソフトウェア開発者になるには何が必要か」記事へのコメント

  • 凡人が何年考えてもたどり着けないコードってどんなコードなんだろう?だれか教えてください。

    • by Anonymous Coward

      天才というのは既存の概念に囚われず物事を考える人、だと思っている。
      よって、出てきたものをみても結果だけ取り出せば平凡なものが多いと思う。
      簡単に引用できるもので、最近自分が出会ってすごいと感じたのはJavascriptになんで排他論理和の論理演算子がないのか?というstackoverflowの回答。

      (!X ^ !Y)

      と書いたらいい。だそうだ。実際はこうなる過程もちゃんと説明されている、ぜひ元記事を読むことをお勧めする。
      共感した人が多かったらしく、この回答か結構賛同票を集めている。

      できたものが問題じゃないんだよ、そこにたどり着くことが天才の天才たる所以だ。

      • ちなみに、それの元記事ってどこでしょうか?

        stackoverflowで、Javascript logical xor で検索しても、(!X ^ !Y) の式が出てくる記事が見当たりませんでした。
        (というか、Xが0001で真, Yが0010で真のときに真になっちゃう気がする)

        よく出てくるのは、こっちの式で、こっちはちゃんと動きそうな感じですね。
        ((boolean1 && !boolean2) || (boolean2 && !boolean1))
        • by Anonymous Coward

          これかな
          http://stackoverflow.com/questions/4540422/why-is-there-no-logical-xor... [stackoverflow.com]

          >(というか、Xが0001で真, Yが0010で真のときに真になっちゃう気がする)
          ビット演算?

          実際動かしてないからわかんないけど、論理値の計算にビット演算子が出てくるのに違和感がある。
          ECMAScriptの言語仕様みてないけど、この動作って保証されてるの?
          素直に「(x && !y) || (!x && y)」とかでいいし、ビット演算なら「^」でいいような。

          そもそもの

          • ありがとうございます。読んで、やっと理解出来ました。

            そもそも、私のコメントでは、! をビット否定と勘違いしていましたが、論理否定なので、一応辻褄は合うんですね。
            (javascriptでの整数->boolean変換は、0が偽で非0が真。boolean->整数変換は真が1で偽が0。!は論理否定なので、xが10だろうと100だろうと、xが真なら !xは、0。xが0ならxが偽なので、!xは1になるため、ビット排他的論理和を取っても、正しく動作する)

            (!x ^ !y) だと、戻り値が0/1になるので、!!(!x ^ !y)みたいに、頭に!!をつけて、booleanへ変換できるみたいなことも書いてあって興味深かったです。

            まあ、おっしゃるとり、「(x && !y) || (!x && y)」 の方が素直で読み間違いが無いので、私も書くならこっちで書きますが。
            親コメント

身近な人の偉大さは半減する -- あるアレゲ人

処理中...