トップ «前の日記(2009-12-09) 最新 次の日記(2009-12-14)» 編集

はじめてのにき

ここの位置付け

2004|11|
2005|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|

ToDo:


2009-12-13

_ LRUMap

だいたいわかった!

でまぁ list が必要かという話で slist じゃダメなのだろうかと kinaba さんに聞いたら大丈夫じゃねとの返答のすぐ後に やっぱダメじゃねとのこと。 後ろ向きのリンクが無いと古いヤツ使った時に 移動が O(1) でできないからねー。

じゃあどうするかなーと考えたのは、

  • slist
  • アップデート時は前向きポインタに |1 した値を入れておく
  • だからリンクをたどる時は必ず下位 1 bit は落とす
  • でまぁ同じ要素を指すものを末尾にもつける
  • 古いヤツを回収してる最中に (next&1)==1 な要素を見つけたら、その要素は消さないで次を消す

とか。 新しい要素が追加されずに 同じ要素が参照されまくったりするとたくさんメモリを使ってしまうので、 たまに O(N) の GC を走らせるといいかもしれない。

なんかもっと賢くやって欲しいよなー

(12:45)

_ coroutine

http://d.hatena.ne.jp/melpon/20091212/1260584012

結構聞きたかったけど遅れていったので スライドを見た。

最後の3つの質問は全部問題無いように思う。 pthread_kill だけうざそうだけど そもそも pthread_kill は根本的に使ってはいけない気がするので、 根本的にどうでもいいんではないかと思う。

(16:36)

_ Boost勉強会

色々思うところがある感じだった。

asio

よくできてそうだなーと思った。 複数スレッドでタスクキュー的に使えるのーとか思ってたらちゃんとあったし、 なんか strand というのを使うと synchronized 的なこともできるみたいだった。

http://www.boost.org/doc/libs/1_41_0/doc/html/boost_asio/tutorial/tuttimer5.html

preprocessor

個人的に Boost.Preprocessor 使わずに プリプロセッサプログラミングを最近ちょっとやってたので、 いくつか参考になった。

バグベアード

個人的にはこういうのコンパイラがやってくれると 結構うれしいんだけどなぁ。 たぶん実行がむっちゃ遅くなったりリビルドが必要になったりで、 デバッガの方がマシかなぁ的になっちゃうのかなぁ。

SmartPtr

いいハナシだなーという話だった。 あとの雑談でよく喋ってたんだけど、 ただ、個人的には shared_ptr って滅多なことではいらんと思ってるんだよな。 適当な議論で適当な会話をしていたと思うので、 なんでそう思うかを書いておこうと思う。

結論的には、たぶん ownership の概念は本当に重要だってのは激しく納得していて、 そのことからいらんと感じてるんだと思う。

というのは ownership の情報というのは プログラムを読む人からすれば大変大変貴重で重要で大事で無いと しんじゃうそういう大事な情報で、 たぶんヘタしたら public/protected/private とかより重要なんじゃないかと そういうこうなるべくとにかく重要な情報で。

ところでどこでもかしこでも shared_ptr を使ってるプログラムは 明確に何かを誰かが持っている、そういうのがあるとしても さっぱりわからなくて、このオブジェクトの生死に一番関係してる子は 誰なのーてのが不明瞭になっちゃう気がするという話。

単に auto_ptr って書いてあれば あーこの子がこのオブジェクト持ってるんだなーとわかるけど、 shared_ptr だったらわからないじゃないですか! それは困ります本当にわからないんです

ここで文句言ってるのは 「なんでもかんでもとりあえず shared_ptr 使っとけプログラミング」 であって、まぁ weak_ptr と使いわけてる人とかは まぁ別にいいんじゃないかと思う。

あとまぁ所有権が本当の本当に複数のオブジェクトに渡っているってのは、 そもそも設計が間違ってるケースも多いんじゃないかなぁ。 もちろん僕が思い出せる範囲で言うとツリー関係の処理とかだと 本質的に誰が何持ってるかさっぱりわからんくなるので、 まぁ必要なケースもたくさんあるとは思う。 ただ大多数のケースでは本当はいらないよね、という。

同じことは GC にたいしても言えると思う。 書いてるプログラマは楽になってるんだけど、 書かれたコードからは結構大事な情報が落ちちゃってる感があるのよね。

あとはまぁ shared_ptr ってたぶん統計的に GC より遅いんでしょ それ微妙じゃね…っていう貧乏症的感情と、 手軽に書きたいような書き捨てに近い C++ コードは そもそも free しないでもいいことにしているという 個人的事情も関係があるとは思う

しかしお前そろそろ大丈夫かという日本語力だな…

MPL

それ D なら…とか思っちゃう時点で 僕のこういう方向についての C++ への愛というのは 一体本当にどこに行ってしまったのか!

懇親会で kik さんに この関数定義されてますかーてのを調べる方法があるとかいう話をしていて、 「ええそれまさにどうやってやってるんか気になったんですよね」 とか言ってて kik さんにそのコードを見せてもらったら 「あーうん前 kik さんのコード読んだ時にそのやり方を覚えたんだけど忘れてますた」 みたいな感じで記憶やばいね。

メモっておこう。

http://github.com/shinh/test/blob/master/is_defined.cc

しかしこれも D なら…

微妙な感覚について

これ 7 年くらい前ならむっちゃたのしかっただろうなー とか思いつつ、そのくらい前というと… という感じで思い出すのは kinaba さんのこれだなぁ

http://kmonos.net/wlog/22.html#_2112020801

「C++のtemplateについて3日間くらい夜を徹して誰かと語り合いたい気分」というやつ。 当時の僕はこれに激しく同意していた気がする、が、 今はそう思っちゃいないわけだ。

一つはやはりこう当時は template すごくねヤバイ可能性無限超広い。 って感じがあったんだけど、 まぁなんか一通りできることとできないことを大雑把に把握できて、 ほげほげの部分はふがふが言語の何々とちょっと似ていて、 とかまぁそういうのがある程度整理されちゃったのがあるかなぁ。

そうなっちゃうと、明らかな制限が色々ある C++ よりは、 D とかみたいに必要ならガンガン機能を 足していく考えかたの方が正しい気がしちゃうようになったんだよな。 C++ template はこう、実用品としての側面とは別側面として、 どういう言語機能が未来あればいいだろうかー的な実験として 色々な実験ができたっていうのもすごいところだと思うんだけど、 しかしそろそろその実験結果を元に言語作った方がいいんじゃないかなーと 思うようになっていった、というかんじか。

ていうかその後もうプログラム言語とかどうでもよくね、 と嗜好が変化していったのがあって、 まぁどんなプログラム言語でもとりあえず 俺の生産性をひゃく倍とかにはしないとか そういうことをなんとなく思っていったからだと思う。 あとなんか、言語の違いなんかより、 ライブラリであるとか、 OS のインターフェイスであるとか、 デバッガであるとか、 printf という一関数であるとか、 そいうとこの方が生産性に影響与えてるよなーとかそいうのも。

意味不明な比較だけど、例えば C++ の template と printf なら僕は printf をえらぶと思う。

さて Boost 。 Boost 自体はこう、ユーザとしては、あまり好きじゃないんだよな。 あまりに Boost を作るために Boost が作られているというか、 実用品としての何かが色々無い気がする。 コンパイルがあんだけ遅くなるとか実用品として致命的じゃね? あーでも最近はこう実用方向のコンポーネントも増えたと思う。

一方で次の C++ に入れるライブラリの選定とか実験とか そいう意味あいでは好きで、まぁあの人たちは メタメタしいことをやっていればいいんだと思う。

C++ 自体は今でも好きで、それは単に C++ の実用品としての側面が あまりにこうやはり好きだということだと思う。 C++ template とかは僕の中で無限の世界ではなくなってしまったので、 今は多少キツくても色々遊んでみてちょっと無理して実用に供して、 何か面白いものを見つけよう! 的なアレはなくなってしまったけど。

あとは Cryolite さんが言ってたと思うけど、 C++ 標準委員会に出されてる論文なのかよくわからんアレとか、 そいうのはとても面白いと思う。 それは C++ のユーザ数バカみたいにいるという側面の副作用で、 よく使われてるものだから、色んな偉い人が色々集まって アレコレ議論していて、その議論は色んな蓄積に基いた 面白いものであるというような、 そういう、プログラム一般についての教訓とかを学ぶ場所としての C++ も、まだ好きだと思う。

やまぁしかし Boost 勉強会は面白くて こいうのまた勉強するのも楽しそうだなーと 久しぶりに思った。

(17:56)

_

というような状態を圧縮して説明すると、 「C++とかどうでもいい」 という感じになるのはどうかと思った。 説明ゴルフ。

あとはまぁ興味を失なった部分はあるものの、 かといって勉強したことが意味がなかったかというと 別にそうではないと思っていて、 C++ から学んだものは本当に多いと思う。 それが他の言語からも得られると言われればそうかもしれないし、 もっと効率の良い方法があると言われればそうかもしれないけど。

(18:49)

_ かわせさん

とりあえずネットとかの記録と勝負しようとしても 絶望的な差にへこたれるだけなので、 身近でやる人いないかなーと色々声かけてみたら 結構会社でやる人が多くてしかもそれなりに速くて エンジニヤとかゲームやる子多いんだなーと思った。 しかし僕の求める僕よりちょっとうまい目標的な 感じには今のところなってないようなので困る。 しかもたいていの人と比較して僕の方が暇人なので、 なかなかたやすく追いついてきてもらえないかもという予想もある。

というわけで頭おかしい記録群と比較してみる…

http://eventer.jp/kawase/personal.php?name=

全体的に絶望的なんだけど、 無茶苦茶短いヤツはあまり意味が無いから無視して、 一応どうしようもない大差がついてないのを見ると…

  • F0=>F1: 4:52.31 (4:54.21): これはまぁ基本ということでたくさん頑張った。扉の高さに振り上がりつつ扉につっこむのはできる気がしない。いったん斜面にルアーかけてつっこむヤツはできそうに思えるんだけどどうも全然いい感じの長さにならん
  • F2=>F5: 4:53.71 (4:54.58): さっきなんか奇跡が起きた。たぶん再現できない。
  • F35=>F24: 4:55.13 (4:55.51): 最初のところは意外と簡単なんだな…
  • F37=>F39: 4:54.00 (4:54.40): ベストなコースが別に難しくないから…

つー感じか。 後者2つはあんま意味があるものでもないしきついなー

(21:18)

お名前:
E-mail:
コメント:
人生、宇宙、すべての答え
本日のリンク元

2009年
12月
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
1.shinh(2014-05-24 03:16) 2.kinaba(2014-05-24 03:16) 3.shinh(2014-05-24 03:16)
search / home / index

全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。

shinichiro.hamaji _at_ gmail.com / shinichiro.h