Scribble at 2023-08-16 16:48:30 Last modified: 2023-08-16 16:53:48

添付画像

[...] long before I got to Etsy and started my first code reading group I had in hand several pieces of evidence that should have suggested to me that this was the wrong way to look at things.

CODE IS NOT LITERATURE

code reading は、古典的な著作物のタイトルにもなっているし、もちろんよくご存知の方は多いと思うのだが、実際に何をどうするか知ってる人は多くない。なぜなら、もちろん経験がないからだ。上の記事で筆者が書いているように、実は code reading をスキル・アップとか後学のためとして毎日のように取り組んでいる人は、実際のところ殆どいないのだろう。僕も、コードのサンプルをテキストや演習書が眺めた経験は少ない。PHP を必要に迫られて三ヶ月ほどで習得した20年くらい前に、コードのサンプル集を何冊か買って、それを参考に応用して色々と組んでみたという経験はあったので、その頃が最もよく他人のコードを眺めた時期だったろう。いまは、ちょうど C Shell について調べているからビル・ジョイの書いたコードを眺めるという、考えようによっては「良い勉強」と言える経験を積んでいるところだが、しかし別の人たちからすれば勧められないことかもしれない(その成果である C Shell を「出来損ない」だと非難するひとは、やはり多いからだ)。

PHP のコードは、もう随分と他人の書いたコードを見ていない。見たとしても、さほど興味深いわけでもないだろう。特にオンラインで調べたときに出てくるコードの実例なんてものは、もう積極的に無視した方がいいくらいだ。なにせ、実際に動かしてみたことすら無いだろうと思うようなコードが山のようにある。たとえば、複数の配列に含まれる要素を全て使った組み合わせからなる新しい配列を作るということを考えたときに、オーソドックスな考え方では配列の個数(フォームでカンマ区切りの1行を一つの配列に見立てたりする)を最初にセットして、その数だけ foreach を回して全ての組み合わせを新しい配列に入れていくといったやり方を考えるが、たまに「直積」といった数学用語を使ってコードを紹介していたりするページがある。でも、そういうコードの多くは全く期待した動作をしない。入力した複数の配列をそのまま返すだけのクズみたいな関数を定義しているだけである。

こういうのをいちいち切り捨てる工数こそ、企業のエンジニアにとって浪費以外の何物でもない。寧ろ、オンラインに公開されているコードは無視するという「偏見」のもとに行動する方が合理的でもあるし、良い結果になることが多い。もちろん GitHub に公開されていて、多くのコミッタが参加しているようなコードまで無視する必要はないが、たとえば Qiita に掲載されているコードなんて全て無視しても、われわれの世界や文明と言うと大きすぎるが、少なくとも僕らの仕事にとって何の遠回りにもリスクにもなりはしない。結局、読むに値するコードなんて限られているのだ。

そしてさらに、そういう価値のあるコードがあるとしても、それを実際に読むかと言えば難しいというのが記事の主旨であろう。確かに、価値のあるコードに限って大きなプロジェクトであるため、main() が書かれたソースを読むだけでは何のことかまるで分からないだろう。そして、それ以前のこととして、とりあえず code reading を文学作品の読解であるかのような、僕は最初からそんなことは同意していないのだが、そういう比喩を持ち込むのは危険であろう。PHILSCI.INFO でも何度か書いているように、僕は類推とか比喩が想像力にとって何らかの効用があることを否定するつもりはないが、はっきり言って現代の文章表現やものの考え方や人々の会話には、あまりにも軽率で安易な比喩とか喩え話が多すぎるという印象を持っている。もっと直截に語ったり議論すればいいものを、まるで全員が京都人やイギリス人であるかのように、遠回しで、陰湿なものの言い方が風雅で上品で文明的であるという、「知性という点での田舎者」に典型的な錯覚に陥っている。

  1. もっと新しいノート <<
  2. >> もっと古いノート

冒頭に戻る


※ 以下の SNS 共有ボタンは JavaScript を使っておらず、ボタンを押すまでは SNS サイトと全く通信しません。

Twitter Facebook