アカウント名:
パスワード:
凡人が何年考えてもたどり着けないコードってどんなコードなんだろう?だれか教えてください。
http://local.joelonsoftware.com/wiki/%E3%82%BD%E3%83%95%E3%83%88%E3%82... [joelonsoftware.com]
から引用----------------芸術における高音域が、ソフトウェアでも問題になるのだろうか? 「場合によってはそうなのかもしれないが、私はただ医療廃棄物業界向け会計システムのユーザインタフェースを作っているだけだ」。それは結構。ここで議論しているのはパッケージソフトを作るソフトウェア会社のことであり、そこではコードのクオリティが直接、会社の成功失敗に結びつくのだ。----------------
古くからある議論ではあるね。
そうか、WinAMPが凡人が100年かかっても作れない、天才の作ったプログラムだったのか。WinAMPのコードを見れば、天才のみが作り出せるコードのすばらしさというものがわかるのかもしれない。
Java並行処理プログラミングhttp://www.amazon.co.jp/dp/4797337206 [amazon.co.jp]って本に書いてあったロックフリーを実現するためのコード、何やってるかは辛うじて読みとれたんだけど、どうやったらそれに到達できるのかさっぱりわからんかった。
凡人は真似したりコピペはするけど、考えたりしない。
考えたりしますよ、つかずっと考えている。ただ結果にならないだけ。
考えるだけ無意味なことは解ってるんだけどね。
考えるとは、知っているもの同士を結びつけること。そもそも、知っているものが少なければ、どんな風に結び付けようと答えにはたどり着かない。「考える」という行為の前に、本当は情報収集と分析が必要になる。※ 最近流行の、ビックデータ解析が成果を上げていることから、情報収集と分析の重要性はわかるでしょう。
天才と呼ばれる人は、本を読み漁ったり、四六時中研究テーマのことを考え続けている。そういう意味で、凡人は天才と比較して考える前段階にも達していないのではないでしょうか。
天才プログラマーが敢えて無駄なコードを書くとはないでしょう。そうすると、凡人にとっての天才プログラマーのコードは、凡人の異業種の分野(その分野特有の技術や取り決めがある)で、その道のベテランが書いた無駄のないコードと大して変わらないと考えて差し支えないと思います。
天才は、思考として認識される以前の無意識下の組み合わせパターンの柔軟さ・最適度と、その結果の中から「使えそうなもの」として意識上に掬い出される判定回路の品質が凡人と一線を画す程度に違うのではないか、と思う。
それで、凡人達が時間を掛けて辿り着くか、あるいは整理が追い付かず辿り着く可能性が著しく低下してしまう究極を早期に喝破できてしまうのではないか、と思う。
ベテランは長年培った知識で人に望まれるものを作るが、天才は相対的に少ない情報から凡人の想像を超えるものを作る。
盗む
天才というのは既存の概念に囚われず物事を考える人、だと思っている。よって、出てきたものをみても結果だけ取り出せば平凡なものが多いと思う。簡単に引用できるもので、最近自分が出会ってすごいと感じたのはJavascriptになんで排他論理和の論理演算子がないのか?というstackoverflowの回答。
(!X ^ !Y)
と書いたらいい。だそうだ。実際はこうなる過程もちゃんと説明されている、ぜひ元記事を読むことをお勧めする。共感した人が多かったらしく、この回答か結構賛同票を集めている。
できたものが問題じゃないんだよ、そこにたどり着くことが天才の天才たる所以だ。
これかな http://stackoverflow.com/questions/4540422/why-is-there-no-logical-xor... [stackoverflow.com]
>(というか、Xが0001で真, Yが0010で真のときに真になっちゃう気がする)ビット演算?
実際動かしてないからわかんないけど、論理値の計算にビット演算子が出てくるのに違和感がある。ECMAScriptの言語仕様みてないけど、この動作って保証されてるの?素直に「(x && !y) || (!x && y)」とかでいいし、ビット演算なら「^」でいいような。
そもそもの
それ、排他的論理和の定義を説明しなおしただけでは?論理学の教科書で見た記憶があるけど…
ああ、凡人は教科書を読まないのか
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
人生の大半の問題はスルー力で解決する -- スルー力研究専門家
天才プログラマーってどんなコード書くの? (スコア:0)
凡人が何年考えてもたどり着けないコードってどんなコードなんだろう?だれか教えてください。
Re:天才プログラマーってどんなコード書くの? (スコア:1)
http://local.joelonsoftware.com/wiki/%E3%82%BD%E3%83%95%E3%83%88%E3%82... [joelonsoftware.com]
から引用
----------------
芸術における高音域が、ソフトウェアでも問題になるのだろうか? 「場合によってはそうなのかもしれないが、私はただ医療廃棄物業界向け会計システムのユーザインタフェースを作っているだけだ」。それは結構。ここで議論しているのはパッケージソフトを作るソフトウェア会社のことであり、そこではコードのクオリティが直接、会社の成功失敗に結びつくのだ。
----------------
古くからある議論ではあるね。
Re: (スコア:0)
そうか、WinAMPが凡人が100年かかっても作れない、天才の作ったプログラムだったのか。WinAMPのコードを見れば、天才のみが作り出せるコードのすばらしさというものがわかるのかもしれない。
Re:天才プログラマーってどんなコード書くの? (スコア:1)
Java並行処理プログラミング
http://www.amazon.co.jp/dp/4797337206 [amazon.co.jp]
って本に書いてあったロックフリーを実現するためのコード、何やってるかは辛うじて読みとれたんだけど、どうやったらそれに到達できるのかさっぱりわからんかった。
Re: (スコア:0)
凡人は真似したりコピペはするけど、考えたりしない。
Re: (スコア:0)
考えたりしますよ、つかずっと考えている。
ただ結果にならないだけ。
考えるだけ無意味なことは解ってるんだけどね。
Re:天才プログラマーってどんなコード書くの? (スコア:1)
考えるとは、知っているもの同士を結びつけること。
そもそも、知っているものが少なければ、どんな風に結び付けようと答えにはたどり着かない。
「考える」という行為の前に、本当は情報収集と分析が必要になる。
※ 最近流行の、ビックデータ解析が成果を上げていることから、情報収集と分析の重要性はわかるでしょう。
天才と呼ばれる人は、本を読み漁ったり、四六時中研究テーマのことを考え続けている。
そういう意味で、凡人は天才と比較して考える前段階にも達していないのではないでしょうか。
天才プログラマーが敢えて無駄なコードを書くとはないでしょう。
そうすると、凡人にとっての天才プログラマーのコードは、
凡人の異業種の分野(その分野特有の技術や取り決めがある)で、
その道のベテランが書いた無駄のないコードと大して変わらないと考えて差し支えないと思います。
Re: (スコア:0)
天才は、思考として認識される以前の無意識下の組み合わせパターンの柔軟さ・最適度と、
その結果の中から「使えそうなもの」として意識上に掬い出される判定回路の品質が
凡人と一線を画す程度に違うのではないか、と思う。
それで、凡人達が時間を掛けて辿り着くか、あるいは整理が追い付かず辿り着く可能性が著しく低下してしまう究極を
早期に喝破できてしまうのではないか、と思う。
ベテランは長年培った知識で人に望まれるものを作るが、天才は相対的に少ない情報から凡人の想像を超えるものを作る。
Re: (スコア:0)
盗む
Re: (スコア:0)
天才というのは既存の概念に囚われず物事を考える人、だと思っている。
よって、出てきたものをみても結果だけ取り出せば平凡なものが多いと思う。
簡単に引用できるもので、最近自分が出会ってすごいと感じたのはJavascriptになんで排他論理和の論理演算子がないのか?というstackoverflowの回答。
(!X ^ !Y)
と書いたらいい。だそうだ。実際はこうなる過程もちゃんと説明されている、ぜひ元記事を読むことをお勧めする。
共感した人が多かったらしく、この回答か結構賛同票を集めている。
できたものが問題じゃないんだよ、そこにたどり着くことが天才の天才たる所以だ。
Re:天才プログラマーってどんなコード書くの? (スコア:2)
stackoverflowで、Javascript logical xor で検索しても、(!X ^ !Y) の式が出てくる記事が見当たりませんでした。
(というか、Xが0001で真, Yが0010で真のときに真になっちゃう気がする)
よく出てくるのは、こっちの式で、こっちはちゃんと動きそうな感じですね。
((boolean1 && !boolean2) || (boolean2 && !boolean1))
Re: (スコア:0)
これかな
http://stackoverflow.com/questions/4540422/why-is-there-no-logical-xor... [stackoverflow.com]
>(というか、Xが0001で真, Yが0010で真のときに真になっちゃう気がする)
ビット演算?
実際動かしてないからわかんないけど、論理値の計算にビット演算子が出てくるのに違和感がある。
ECMAScriptの言語仕様みてないけど、この動作って保証されてるの?
素直に「(x && !y) || (!x && y)」とかでいいし、ビット演算なら「^」でいいような。
そもそもの
Re:天才プログラマーってどんなコード書くの? (スコア:2)
そもそも、私のコメントでは、! をビット否定と勘違いしていましたが、論理否定なので、一応辻褄は合うんですね。
(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)」 の方が素直で読み間違いが無いので、私も書くならこっちで書きますが。
Re: (スコア:0)
それ、排他的論理和の定義を説明しなおしただけでは?
論理学の教科書で見た記憶があるけど…
ああ、凡人は教科書を読まないのか