日記と言えばタイトルは日付だよね。(クソどうでもいい)
まあ、日記というのはクソどうでもいいことが書けなければいけない。
今日はクソ不毛な一日を過ごした。
8時ごろ起きて(昨夜は早く眠れた)、昼までダラダラして、昼食を食べて、夕方までダラダラして、プールに行って夕食を食べて今に至る。
まあ休日を怠惰に過ごすことは特に問題とは思っていないのでこれでいいのだが(休日はちゃんと休まないと体力の回復ができない)、何か熱中できることでもあればいいのにとも思う。
そういえば、終業後や休日に何かする気がなかなか起きないほど仕事で疲れてしまうというのもひとつの問題だな…。
ツイッターのTLでは乱数の話が出ていた。
その流れで?(どれくらい流れと関係があるかわからないが)@niamさんが
Cのrand()よりmt19937の方が速いことがあるという話 - 計算論的メンタルレキシコン という記事を書いていて、その中に少し疑問点があったのでレスをした。
@niam ちょっと気になったところが。1. std::rand() から 1 を引くのではなく(マイナスになる)、割るほうを RAND_MAX+1 にするべきでは?
— Hiroshi MANABE (@takeda25) 2013, 8月 17
@niam 2. 1. の処理を否定することになりますが、modulo_bias は実数にして掛け算しても解決しないのでは? RAND_MAX=5 の例では、0,1,2,3,4をそれぞれ3/5して整数にすると0,0,1,1,2になり2が少なくなります。
— Hiroshi MANABE (@takeda25) 2013, 8月 17
@niam modulo bias のリンク先にあるように、割り切れないところは捨ててやり直すというのが簡単でいいと思います。
— Hiroshi MANABE (@takeda25) 2013, 8月 17
そういえば、「RAND_MAX+1 で割って整数を掛けて一様分布のつもり」というのはぼくもやったことがあるな…。
しかし、上のツイートで書いたように、これではバイアスが解決できない。
実用的に問題が出るということはあまりないだろうけど、この方法ではバイアスが解決できないということはアスペ日記のほうで書こうかな(一応他人向けになるので)。
明日は新宿でイタリア語の体験レッスン(個人)を受けることに。
14:30から。
今回は体験レッスンなので500円だけど、正規の料金は2000円。
毎週受けるとなると、金銭的負担がかかるなぁ。
ぼく個人のお金から出すことになるけど、今のところ収入はすべて家計に回っていて、個人の口座には一円も入らない。
今の職場は給料がそれほど高くない。
特に贅沢もしていないのに家計が赤字になってしまう。
贅沢しないで赤字になるというのは凹む。
生きているだけで赤字なんだから死んだほうがいい気分になる。
家賃が高い。
住むところを選ぶとき、妻は前職(グーグル)の給料を基準にして選んだんだそうだ。
ぼくはあまり気にしていなかったけど。
そういうわけで、今は給料の半分以上が家賃で消えてしまう。
分相応の生活をするなら、もっと安いところに引っ越さないといけないんだろうな。
しかし、それには「引っ越し」という恐ろしいイベントが伴うな…。
(引っ越しほど面倒なことはなかなかない)
辞めたこと自体は後悔していない。
そもそも、ぼくの実力が今の年収程度だとしたら、それを上回る金をもらうというのはある意味会社に「恩」を受けている状態ということになる。
そういう状態は不安定だ。
一般的に、誰かに恩を受けるということは可能な限り防いだほうがいい。
で、自分のプログラマとしての市場価値だけど。
正直言うと、もう少しもらえてもいいんじゃないかと思う。
というのは、自分のことをスーパーハカーだと思っているというわけではなく、友達を通して「一般的なプログラマ」の話を見聞きすることが多いからだ。
ぼくはこの前 JavaScript で 有効数字 28桁の Decimal 型を書いた。
かかった時間は、だいたい10時間ぐらいだろうか(それでも長い気がするが)。
これを書いたきっかけは、友達と話していて、会社で JavaScript の浮動小数点の誤差で問題を抱えているのだが、何もわかっていない人間がああでもないこうでもないと見当外れなことを言うだけで全然進展がないという状況を知り、人間の時間の浪費されっぷりにもどかしい気持ちになったということ。
まあ、ぼくのライブラリが使われるかどうかはわからないけど。
その会社で二人の人間が二週間ぐらいかけて書いたという十進演算ライブラリを見せてもらった。(シュヒギムッとかは? まあここで名前を挙げずに書くのは問題ないだろう)
0.1 → 1 * 10^-1 のように、10^x 倍することで小数点のない整数にして誤差のない演算をしようという簡単な実装。
ちょっと触って、(1/3)*(1/3) を実行するとエラーを吐いた。
1/3 → 0.3333333333333333 → 3333333333333333 * 10^-16 のように持っているので、整数部同士を掛けると整数の範囲に収まらなくなるというのがその原因。
浮動小数点周りのことをわかっていたら、すぐにわかるはずのところだ。
そういうわけで、たとえば「浮動小数点がわかっていないプログラマ」とかに比べたら最低でも二倍程度は「できる」はずだし、そうである以上そういうプログラマに比べて二倍ぐらいの報酬をもらってもいいんじゃないかという。
まあ、世間は厳しい。
それにしても、今後自分の市場価値を確保するためにはどうしたらいいんだろうなぁ。
というか、これこそが本当に考えないといけないところだ。
ぼくは機械学習や統計の知識がほとんどないし、プログラミングも(一般よりはできると思うけど)ガチ勢に比べると全然だし…。
というわけで、「市場価値を確保するための生存戦略」というのがここのところ一大テーマなのだが、ちょっと大きすぎるので今後じっくり考えることにして、今日はこのぐらいにしておこう。
継続して考えるべきテーマ:
- 仕事がしんどくて終業後や休日に何かをする気があまり起きない問題
- 市場価値を確保するための生存戦略