なぜか忘れないうちに書いておこう。 さいきん、PHP (プログラミング言語のことである、幸いなことに新山はまったく縁がない) が なぜこれほど批判されるのかという理由について、「PHPをいじる人間というのは基本的に Webデザイナーあがりの初級プログラマが多いから、ますます悪しき風習が増えるのだろう」 という推測があった。これは、あるかもしれない。 かつてLinusが言っていたつぎのような台詞を思い出す:
C++はひどい言語だ。 これは多くの平均以下のプログラマが使っているせいで、環をかけてひどくなっている。
しかし「ダメなプログラマ→ダメな言語」という構図は成り立つものの、 その逆は成り立たない。つまり 「エリート・プログラミング言語さえ使えば、あなたもエリート・プログラマに!」 というような規則は存在しないのだ。ダメなプログラマはどんな言語を使おうがダメなプログラマである。 残念ながら、Haskell なぞを使いたがっているほとんどの人々はこの単純な事実を理解してないように見える。 ただ、そう思っただけ。 そんたけ
追記。そういえば前に ブードゥー・プログラミングとか、カーゴ・カルト・サイエンスとかいうことについて 書こうと思ったんだった。結局これらは「ある人のやっていることを真似しようとして、 本質的でない、表面的な部分だけを見て模倣する」ということである。 なぜなら、「デキる人」が本当にやっていることというのは実に 地味なことだと思うからだ (見てきたわけではないが)。 しかし多くの人はそれではあまりに地味すぎると思い、 目立つ部分の特徴を追い求めたがる。かくしてブードゥー・プログラミングにはまり、 おかしな言語ばかり学習したがり、肝心の品質や納期はちっとも改善されない。 この業界はこれにはまっている人々がじつに多い。見たところ。
(追記) zsh ってまだ「デキる奴のシェル」だと思われてるのか??
そういやー Pygame Reloaded ってどうなったん??
今日はすこし目がカユくなった。気のせいか?
「合理的に考えること」と「杓子定規に考えること」はまったく違うということについて。 つまるところ合理性とは、『知的誠実さ』であると新山は思っている。 本来はっきりとはわからないことを無理やり白黒つけてしまうのは、 ちっとも合理的な態度でない。そこんところを間違えている人が多い。
これって、iPhoneを砂時計として使うようなもんだな。
(何が??)
新山はつねに自分の頭の上にでっかい矢印 (↓) がついているような気分でいる。
ブードゥー・プログラミングについて、なんか書け。
今日、へええ、と思ったこと。
$ ls | xargs -I {} echo foo {}
それにしても思うのんだが、
なぜ xargs
はつねにデフォルトで改行をセパレータにしないのだろう?
新山はいつも xargsn
という関数をつくりそれを使っている。
function xargsn { xargs -d '\n' "$@"; }
そろそろ周囲では花粉症っぽい人が増えてきたのだが (うちの親も長野でひどい目にあってるそうな)、 なぜか新山はまだ症状が出ない。多少、目がショボショボする程度。なんで?
きょうは職場に13歳ぐらいのモンスターが何匹も大挙して押しよせてきて、 そこいらじゅうを見学してった。どうやら新山のキーボード音は目立つらしく、 うしろに立って「おお、すげえ!」などと言ってじっと見ている連中がいたので、 わざとキーをたくさん打つような (それでいて「それっぽい画面に見える」) テキトーなコードを書いてみせようとしたが、なかなか難しいもんだ。 速く打っているようでも、実際には行と行のあいだで結構考えてる時間が入るらしい。 まったく何も考えずにすらすら書けるコードというのはそんなにない。 とりあえず、思いついたのは C で double linked list を操作するような部分だけど、 ほかにもなんかありそうだな。
おっと。気がついたらもう2月だった。
おや、いつのまにかもう金曜日だ。
数学的な原則。ひとりの人間が矛盾する2つの言明をいったら、どちらかひとつはウソである。 (しかしたいていの人は自分が矛盾したことを言っていることに気づいてない、それは問題だ)
きょうはただでさえイヤなことがあったのに…ぶつぶつ。 まったく、いい歳して何やってんだか、と思う。 (それはオレも同じか)
きょうは某所へ行き、展示会 (のような、営業セミナーのようなものといえばいえるもの) を見てきた。 そして感想だが、
ゆうべは小学生のときにリコーダーを強制的に学習させられるのが 世界的な現象であることで盛り上がっていた。欧米ではどこでもやるらしい。 ところで、リコーダーといえば当然 このビデオである。
うちの前に、先週あたりに降った雪がまだ氷になって残っている。 もしかしたらこれは万年雪になる前兆かもしれないと思い、 興味ぶかく観察しているしだいだ。しだいさ。さて…
新山は職場でいつも処理を分離しろ、分離しろとうるさい奴なのだが、
あるとき必ずしも一方的に分離するだけがいいわけではないことに気がついた。
物事は切り離しすぎてもくっつきすぎてもだめで、
その時々の状況にあった「ほどほどの分離」が必要なわけだ。
例をあげると、int は 32ビットかそこらのバイナリだが
ほとんどの場合、人は int を int としてまるごと処理したいのであり、
32個のビット配列として受けとりたいわけではない。
しかし場合によっては、int を int ではなく、
固定長のビット配列として扱いたいときもある。
つまり、ある処理を分離するときの決まった基準というものは存在せず、
つねにタスクによって時と場合によりけりなのだ。
しかし基準が存在しないというのは、たいへんイヤーな状況である。
この手の問題が解決しない限り、ソフトウェア高額工学は科学にはなりえない。
最近、子供のころと好奇心の対象が逆転してきている印象がある。 好奇心が減ったわけではないのだが、子供のころはどちらかといえば世の中の物理的な現象に対して 興味をもっていたのに、世の中の社会については「こういうもんなんだ」と思っていて 特に疑問を感じたりはしなかった。それが今では逆で、物理的な現象に対しては もはやそれほど驚かなくなったが、社会的なことについては逆に疑問ばかり抱いている。
追記。 新しいノーパソ (←あまりにアバンギャルドな省略で誰も推測つかないだろうが、 「ノートパソコン」の意である) を買ったので、 ケーブル (←これまた違いすぎて想像がつかないだろうが、「LANケーブル」の略!) が ゴチャっと (←「ゴチャゴチャと」の意) なって、 シューツカイムラキブクロバキューアホイイウィヒョージダ (←「収拾がつかなくなったのでいい加減に無線LANに切り換えようと思って池袋まで行ってきた。 Buffaloの980円のアダプタを買ってhostapdとiptablesとdhcpdとインストールして完了。 でも今の Windowsではこんなのも標準でできるみたいね。時代は変わったもんだ。」の略、 こんなの誰でもわかるから説明する必要もないと思うけど、一応)。
「自分の常識が世間の常識だ」と思っている人はつねに醜い。 htnfrmtwgfrnws (人のふり見て我がふり治せ)
二次的な情報を疑え、なぜなら二次的な情報はつねに価値判断が入っているから。 一次情報を追うべし。
世の中の影響力のでかい決定は、ほとんど liability によってなされる。
このことに気づいたオレは大人だ。
新山がなぜ日本語のweb記事を、とくにIT関連の記事をいっさい読まないかといえば、 それは日本のIT関連記事はほとんど100パーセントが「ゴシップ」だからである。 純粋な技術情報である場合も、たいていはそれよりよくできたページが英語ですでに存在している。 なにより日本語の記事はもったいをつけすぎだ。 …なぜこれほどゴシップが多いのかについてはいくつか仮説をもっているが、正直いってよくわからない。 確実に言えることは、フェアな判断ができないような情報はまともな情報ではないということだ。 そしてフェアかつ公正であろうとすることはプロとしてのなけなしの良識である。 (新山にとっては)
車が通るたびに外でバリバリ言ってる。ばりばり
あるいは手をたたきなさい、パチパチと。
きのうはスウパアで「雪の宿(46枚入り)」が 258円だった。
wa? また雪とか言ってるよ。 ところでうちの会社はいまだに夏時間のままなのだが、 1年を通して夏時間 (より正確には、チャモロ標準時) を使うことの欠点は、 8時っていってもまだ暗いことだ。そして寒い。 われながらよくやるよなあ。
おいおいトウキョーーの冬はカラっとしているのじゃなかったのか!
新山は javascript をオフにしていたので、 ずっと Wikipedia が見れなくなっていることに気づかなかった。 しかしこれってもともと言いだしたのは reddit なのに、 nytの記事では言及すらされてない始末。 ま、新山は reddit なんて使わないからドーでもいいけど…。
どうでもいいけど (どうでもよろ)、最近 TF2 をやりだしたというのは秘密である。
いまの時代。
$ pacman -Qdtq
前にも書いたが、eメールのことを片仮名で「メイル」って表記する人は、
物事の比較は、その背後にひそむバカさ加減を明らかにする。
やはり型名と変数名を同じにできる言語は嫌いだと思った。
たとえば、以下のようなクラス A
があるとき、
class A { public void P() { } public static void Q() { } }
これを同じ A
という名前の変数に入れて使うとする:
class X { public A A; public void Doit() { A = new A(); A.P(); A.Q(); } }
ここまではいい。しかしその後、なんらかの理由で
変数名を A
から A1
に変えることになったとき、
なんも考えずに式中の A
を A1
に置換したのではダメなのだ:
class X { public A A1; public void Doit() { A1 = new A(); A1.P(); A1.Q(); ← まちがい } }
なぜなら A.Q();
の A は、
変数名ではなく型名だからである。
たしかに不注意といえばそれまでだが、
こういう不注意を誘発するような仕様はまずい。
そもそもの原因は、A に2通りの解釈を許していたことにある。
もし型名と変数名を同じ名前にするのを禁止していれば、
どの名前がどれに対応するのかは単純にスコープだけから判断できるので、
こうした間違いはなくなる。新山は視覚的な手がかりを頼りに
コードを修正することが多いので、こうした
「意味的な差異と表層の差異が対応している言語仕様」ってのは重要なのだった。