自作の覚悟 - 皆さんの使うそれもだれかの自作です
急にshyouheiさんのtumblrの記事を思い出した。なんか、Hashを自作するな、◯すぞ〜と言っていた記憶があったが、今見返すとその通りだった。
それはそれとしてこの記事にはいくつかの示唆があって、
- 1. ある程度実績のあるデータ構造やアルゴリズムを自作する場合であっても、表層的な理解であると普通に罠を踏み使い物にならない
- 2. データ構造やアルゴリズムを支えるのはシンプルなアイデア(HashMapの場合、ハッシュ値を計算して情報量を圧縮して格納すること)であるが、実用に足るには泥臭い実装(HashMapの場合、bucketの再計算と再配置)が必要になる。それら全体に複数のアルゴリズムの理解と組み合わせが必要になる
- 3. ぶっちゃけshyouheiさんが面倒か紙幅がないかで書いていないだけで、現実の世界でHashMapを自作して使う場合にはここには書かれていないような罠がこの10倍はあることがほぼ確実である。それらの罠を出てくるたびに継続的に潰し続ける覚悟はあるか
◯すぞ〜 をネタとかマンスプとか冗談と捉えるのはあまりにも浅いのではないかと思っていて、これは自分でコンピュータの世界を切り開く覚悟を問うているのかなと勝手に思っている。
こんな15年前の記事にそもそも今更言及するなよって言われたらそうなんだけど、僕も少しだけ反論すると、こんなインパクトがありすぎる記事を書く方も悪いですよ。
で、さらにいうと、個人的にはやってみて痛い目にあってもいいじゃんとも思う。痛い目にあったら反省しろよ?
というか、逆に言えば、上述したような「覚悟」がある人がミドル以下を自作していくのは止められないし、何か得られるものも、あるかと。
ちなみに
この記事の補遺であるが、「意味と構造は違うよ」というのは言語学の基本的な考え方であるように思えるので、やはり言語学も大事だねって思った。まずは個別の言語をやろう。
ワードサラダ記念日
よく、(申し訳ないんだけど)ジュニアな人のPull Request(PR)の説明とかで、やったことの内容がワードサラダみたいになっていることがある。
曰く:
- 目的
- 変えたこと
- 変更したファイル
- やった内容
- 追加したテスト
みたいな...
ところでPRの説明をなんで頑張るかっていうと、人間(将来はAI)に、そもそも自分が何をしたくて、実際に何をしたかということを **伝える** ためである。
伝えることが目的なので、伝わっていない場合価値を生み出していないと言える。
伝えることのテクニックについては大量に書籍もあるので適宜読んで欲しいが。少なくとも、いくら頑張ってワードサラダを作り出してもあまり意味がない。あるいは、受け取り側に負担を押し付けていてずいぶん非生産的なように思える。
つまり、人は意味が構造化されているものでないと簡単に理解することができないという点を伝えたい。
- * - -* -
ここまでワードサラダはダメと言ってきたが、一方で、ワードサラダは伝えるコンテンツの第一歩でもある。
ワードサラダの場合、個々の単語の間に繋がりが見えないので、読む側としては丸暗記の項目が並んでるのかな? みたいな印象を与え、何かを伝えるのは難しい。
一方で、個々のワードサラダのelementには本当に伝えたい「事実」が転がっている感じになるのかなと思うので、その「事実」に論理的なつながりを作ってあげればいい。よく起承転結とか序破急とか言っているやつで、PRなら、たとえば僕がこの場で適当に考えただけでもこういう構造が考えられる:
- なぜ、このPRを作ったのか?
-- 何が問題で、何を変えたいか
- そのために何をしたのか?
-- 〜という実装を変更した
-- その変更は〜というファイルがある
- その変更を確実なものとするために何をしたのか?
-- 〜という実装についてXXという自動テストを追加した
-- 手動で〜が動作することを確認した
- 読む人に、何をして欲しいのか?
-- 変更内容を把握して、変えていいか自体に意見が欲しい
-- 変更内容が正しいか確認してほしい
一例に過ぎないが、よくあるPRテンプレートのようになったのではないだろうか? テンプレートを作るのはそういうこと、事実のワードサラダを構造に落とし込む手助けということである。
また、これは単に箇条書きをするという話でもない。箇条書きの作る構造が文章の構造に自然に一致していないとあまり意味がない。場合によって、箇条書きを作ってもう一回構造を見直したりする必要があるだろう(というか、構造を直しやすいというのが箇条書きのメリット)。
なんというか、読む人の疑問点に寄り添うような形で、まず〜を知りたい、〜を知ったら次はXXが知りたいだろう、というふうに相手の立場をシミュレートするイメージで作るといいかと思う。
最後に全体を見直して、作られた論理的なつながりが自分の言いたいことと概ね合致しているか確認するのも大事。
なお、この文章もわざと散文的に書いてるので読みづらい、受け取り側に負担を押し付けていくスタイルです。
今週も生き延びた
個人のムーブとしては「もっとできるはずなので頑張ります...」でいいけど、ただ、なんかやっぱ外から強要されるもんじゃないな(現職ではそういう人は一切いません、という前提で)
バラの話
藤谷治の『二都』(二都物語じゃないよ)という小説があるのだけれど、その途中で夫婦が家でバラを育てるという描写があり、バラというのはとにかく水がたくさん必要でめちゃくちゃ大変という印象が強い(が、最近は意外と難しくなくなったという情報が入ってきた)。
僕の父は植木が好きだけど、バラは育てていない(ラン、特にエビネランが好きでやっている)。
ランも調べてみると生態が極めて面白い、おもしろ植物ではある。
植木はいいよなあとこの歳になってくるとちょっとわかってくる...。しかしやるなら戸建てで庭があるところでやりたくて、ハードルがなかなか。
僕はこの『二都』結構好きだったんだけど、ブクログとかだとめちゃくちゃ評価低いな...。
* - * * - *
もうちょっと心を取り戻したらまた純文学を読む余裕が生まれる気がしている、が。