タグ

ブックマーク / takeda25.hatenablog.jp (6)

  • プログラマの生産性と報酬 - アスペ日記

    追記: 続編を書きました。マッチョとの戦い 最近、プログラマの生産性が話題です。 いろんな意見があるものの、個人的には 10〜100倍の生産性の違いはあると思います。 いや、それは違う、生産性の高いエンジニアは生産性の低いエンジニアに作れないものが作れるのだからそういう話ではない、という意見もあります。 しかし、実際には生産性の低いエンジニアができもしないことをしようとして結局できないで終わるということがあったりしつつも、何らかの貢献をするというのが普通だと思いますので*1、最終的には 10〜100倍の違いといった形に落とし込めると思います。 で、この生産性の違いはどこから来るのか。 個人的には才能だと思っています。 ぼく自身は、自分のことを中間レベルのエンジニアだと認識しています。 平均の 3〜10 倍できて、トップより 3〜10 倍できないくらい。 でも、自分が平均から抜け出るために何

    プログラマの生産性と報酬 - アスペ日記
  • ビット逆転ループ - アスペ日記

    注意: この記事は読んでも役に立ちません。頭を無駄に使いたい人向け。 普通のループは、たとえば 0 から 255 までなら、0 -> 1 -> 2 -> ... というようにループする。 そういう普通のループじゃなくて、ビットを逆転させた数字でループできたらいいのになぁということが最近あった。 0 -> 128 -> 64 -> ... のように。 探してみると、そういうページが見つかった。 さすがネットは広い。 コードは以下の通り。 int r = 0; // counter int s = 0; // bit-reversal of r/2< int N = 256; // N can be any power of 2 int N2 = N << 1; // N<<1 == N*2 do { printf("%u ", s); r += 2; s ^= N - (N / (r&-r)

    ビット逆転ループ - アスペ日記
  • いつからその方法で偏りのない乱数が得られると錯覚していた? - アスペ日記

    私はつい最近まで勘違いしていました。 ここのページに書いてあるような方法で、一様分布する整数が得られると。 int random(int n) { return (int)(( rand() / (RAND_MAX + 1.0) ) * n); } この方法、一見すると実に一様分布が得られそうに見えるんですよね。 どういう思考回路を通っているかというのを自己分析すると、次のような感じです。 1. rand() では 0〜RAND_MAX のランダムな整数が得られる。 2. それを RAND_MAX + 1 で割ると、[0, 1) に一様分布する実数が得られる。 3. [0, 1) の一様な実数を n 倍して小数点以下を切り捨てたら、0 から n-1 に一様分布する整数が得られる。 これの罠なところは、1 と(特に)3 が正しいというところだと思います。 ただ、2 がダウト。 思いっきりダウ

    いつからその方法で偏りのない乱数が得られると錯覚していた? - アスペ日記
  • JavaScript で有効数字 28桁の Decimal 型を書いた - アスペ日記

    JavaScript の Decimal 型を書いて、GitHub と npm で公開した。 https://github.com/hiroshi-manabe/JSDecimal https://npmjs.org/package/jsdecimal C# (っていうか .NET)には Decimal型 というのがあるらしい。 十進数で 28〜29桁(なんだその「28〜29桁」ってのは…後述)の精度を保証するとのこと。 それで、お金の絡む計算にはよく使われるそうだ。 で、人から聞いた話だけど、そういう計算をサーバ側でしていたのをクライアント側でもしたいということがあるようだ。 Ajax でも使って、サーバ側で計算させたものを取ってくればいいと思うのだが、そうもいかないこともあるらしい。 何に使うかというと、ちゃんとした計算はサーバでやるものの、プレビューみたいなものをユーザに見せたいとか

    JavaScript で有効数字 28桁の Decimal 型を書いた - アスペ日記
  • 簡潔データ構造 LOUDS の解説(全12回、練習問題付き)

    日本語入力を支える技術」(通称「徳永」)や「高速文字列解析の世界」(通称「岡野原」)で紹介されている LOUDS というデータ構造を、12回に分けて解説しました。 友達に教える時に使ったもので、練習問題付きです。 実際に紙に書いてやってみるとわかりやすいと思います。 詳解 LOUDS (1) LOUDS とは 詳解 LOUDS (2) ビット列を作ってみる 詳解 LOUDS (3) 0番ノード 詳解 LOUDS (4) ビットの意味 詳解 LOUDS (5) 木構造の復元 詳解 LOUDS (6) インデックスでノードを表す 詳解 LOUDS (7) ノード番号からインデックスを得る 詳解 LOUDS (8) インデックスからノード番号を得る 詳解 LOUDS (9) 子ノードから親ノード 詳解 LOUDS (10) 親ノードから子ノード 詳解 LOUDS (11) 木の検索 詳解

    簡潔データ構造 LOUDS の解説(全12回、練習問題付き)
  • 情報系修士にもわかるダブル配列 - アスペ日記

    最近話題の「日本語入力を支える技術」を途中まで読んだ。 3章がものすごく気合いが入っている。 trie(トライ)というデータ構造の2つの実装、「ダブル配列」と「LOUDS」について詳しく説明がされている。 ダブル配列については、ぼくは以前論文を読んで勉強しようとしたのだが、その時は難しくてあきらめた覚えがある。しかし、このの説明を読むことで理解ができた。 ありがたい。 感銘を受けたので、このを教材に友達と2人勉強会をした。 この2人勉強会というのは、ぼくが復習を兼ねて友達に教えるというのがだいたいのスタイル。 しかし、いざやってみるといろいろと難しい。 次のようなところでひっかかるようだ。 例のサイズが小さく、イメージを喚起するのが難しい。 最初の図のノード番号と、最終的なダブル配列上の位置が異なるため、混乱する。 単語終端について言及がないので、どのノードが単語を表しているかがわから

    情報系修士にもわかるダブル配列 - アスペ日記
  • 1