ToDo:
https://note.com/ruiu/n/n9948f0cc3ed3
のエッセイについて、うえやまさん本人に苦情(?)を言えたので、書く。苦情というのは、冗談で、もちろんこの文章は面白いと思っているし、書かれていることには同意している
今のチーム、コードコピペに寛容すぎる、という問題があり、日々ぐちぐちと言っている。ある日、会社のミーティングで、だいぶ前なのでニュアンスは忘れたんだけど、「コピペしても良いと思っている」的な意見を聞き(まぁもちろん昔の激ヤバ SIer の関数なんか作らずコピペだけでコードを書く、みたいなノリではない)、なんとなく既視感がある主張だな、と、このエッセイを思い出した。で、 slack にリンクをはり、「この文章の影響ってあるのかな?」と書いたところ、「ありそう」との意見と、実際影響を受けていると言ってくれた人がいた
つまり、冗談で言った苦情というのは、「若者に悪影響が!」みたいな話。それはしょうがないし、責任取れない、と言われ、ぼくもそう思う。じっさい、誤読とも言えないように思うので、書き手読み手双方に非はないかな、と。「過度の抽象化は良くない」は書いてあることで、「過度」をどの程度にとらえるか、みたいな話だと思うので
関係ある気がして、あまり関係ないと気がついたけど、「波よ聞いてくれ」のこのコマが大好きなのではっておく
「過度」の度合いについて、エッセイの背景が、多少知識が必要なのかもとも思った。 Linux,Windows,Mac はそれぞれ ELF,PE,Mach-O というバイナリフォーマットを使っていて、これらはかなり違うし、採用すべきアルゴリズムが変わる程度には違うと思う。ぼくはかなり共通化したい寄りの派閥なので、「そうは言ってもコードベース共有してユーティリティの共有くらいはした方が良いのでは?」とも思うんだけど、とはいえプラットフォーム依存の判断は妥当に感じる。 llvm+lld の該当部分のコードは知らないのだけど、 GNU 側の libbfd は見たことがあって、あれは ELF,PE,Mach-O どころか、太古の全然違うフォーマットまで共通コードで扱おうとしていて、とんでもないことになっていた
一方で、 mold とか眺めると、むしろ関数やテンプレートで共通項くくり出してて、ターゲット CPU 方向の軸では、かなり強く抽象化されている。ほとんどのコードがテンプレートの中にいるか、アーキごとのコード、くらいの印象。なので、「抽象化は悪」というほど強い主張ではなく、「抽象化は常に善ではなく、場合によっては似たコードを書いた方がうまくいく場合もある」みたいな話かな、と。僕たちのチームのコピペというのは、 x86 と arm の差異より大きいか小さいかわからないくらいの差異に対してコピペしているので、やはり、良くないと思う
この話って、守破離の守と破みたいなもんで、グッドプラクティスは良いものだから広まっているわけで、基本的にはとりあえず守れば良くて、とはいえ教条主義的に守るのではなく、「ぼくたちの実情にはあっていないような?」と感じたら、自分たちで考えて、適切なアプローチを選択しましょうね、という学びが得られる話なのかな、と
最適解は環境に依存するというのも重要なところで、同じプログラムを作る場合でも、会社の文化や、開発者の能力や人数で、都合が良いやりかたは変わるのかな、と。たとえば、一人で作っていればコピペした場所を覚えてるかもしれなくて、全部の箇所をなおすのがしやすいけど、複数人いると、コピペした場所の片方だけに改善を入れてしまう、という事故が起きやすくなる、など
余談
「うえやまさんが僕たちのチームのケース見たら、こういうレベルは抽象化しろと思うと思うけどねえ」と思ったのだけど、人の意見を推測して代弁するのも微妙だよなぁ、と思って自分の理屈で説得を試みたりしていた
「人の真意を推測」はたぶん失敗したと思ってる話があってですね。一時期、だいぶ昔だけど「富豪的プログラミング」という言葉が、界隈で流行った。これ
http://www.pitecan.com/fugo.html
貧乏性プログラマたる僕は、ちょっとひっかかりもありつつも、まぁ正しいと思っていた。とはいえ、当時の世間では、 O(NlogN) で書けるものを O(N^2) で書いてたりするのを、「富豪的プログラミング」と主張するような例がチラホラあり、具体的な内容は覚えていないのだけど、それは著者の「富豪的プログラミング」の意図を越えているのでは?みたいなケースが結構あった。「使い勝手が優先されるべき」など書かれてるわけで、さすがに遅すぎると使い勝手が損われるわけで
たまたま著者ご本人にお会いする機会があった時に、そういう話をして「微妙じゃないすか?」と聞いたところ「まぁ、別に動くならいいんじゃない?」的な感じで、つまり真意を掴めていないのは、僕だったっていう
富豪は思ったより富豪だったというか。なんで、あまり偉い人の真意の推測とかはせず、自分の理屈を作る方が良いのだろうな、と。真意推測、好きなので、継続的にときどきやらかしてるけど
(09:47)
前 | 2025年 7月 |
次 | ||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。