読んだ
面白かった。
というか読んであまり印象に残ったのは取り上げたりしないんだけどw
「これからの正義の話をしよう」のともそうだったと思うのですが、
何かに対する明解な回答なり処方箋があるわけではないのですよね。
でまあ今回も様々な事例が取り上げられたわけなんですが、
自分が一番興味を持ったのが第5章。
メジャーリーグに関する話でいろいろ。なのですが、たとえば
「マネーボール」にあるように「経済学的手法」を活用して
オークランドアスレチックスというチームが躍進しました。
が、つい最近を見るとそれほど成績が振るってはいない。
なぜか? 資金豊富なチームも同様の手法を使うようになったから。
そしてゲームはどうなったかというと、
「マネーボール」の手法で高く評価されたものが目立つようになる。
つまり、フォアボール狙いの待球、盗塁などの「見合わない」プレーをしない…
でも、そんなゲームを観たい? と。
まあゲームの内容云々は別に資料を当たってみたいところだけど
ありそうな展開ではありますよね。
最後の最後の二行がとっても印象的でした。
ついったーでもかなり目にするので(観測範囲偏ってる?w)
知っている人も結構いると思いますが、
表紙で判断せずに読んでみるのをオススメ。
入門書的な雰囲気の本なのですが、解説している題材が良いです。
第1講 アルゴリズムと計算量
第2講 データ構造 初級編
第3講 ソート
バブルソート
選択ソート
挿入ソート
マージソート
クイックソート
ヒープソート
第4講 グラフと探索
A* 探索
第5講 データ構造 上級編
AVL木
赤黒木
ユニオンファインド
ハッシュテーブル
第6講 最短経路問題
ベルマン・フォード
ダイクストラ
ワーシャル・フロイド
第7講 グラフの上級アルゴリズム
最小全域木
プリムのアルゴリズム
クラスカルのアルゴリズム
残余ネットワーク
エドモンズ・カープのアルゴリズム
第8講 NP完全問題
第9講 暗号(前編)
カエサル暗号
DES
第10講 暗号(後編)
RSA暗号
楕円曲線暗号
ま、抜けもありますがその辺はご勘弁。
翻訳書でないものでこの本の後半で取り上げられているような
アルゴリズムをきちんと書いているものはほとんどないと思いますし
常々それを不満に感じていました。
アレがないコレがないと言えば切りがないのは確定なので
きっちりこれだけのものをまとめたのはすばらしいと思います。
サンプルプログラムの記述は Java を使っています。
これについて一言二言言いたい人もいるでしょうが悪い選択ではないと思います。
自分が一番ショックを受けたもの
p251 の楕円曲線のグラフ。
えええ、「楕円曲線」のグラフってこんなんなの~?!
とこれだけでも買った分の価値はあったかもしれない :)
もうでているっぽい Safe C++ - O'Reilly Media
Released: May 2012
Pages: 142
Pre-Order Print: $24.99
June 2012 (est.)
Ebook: $19.99
Formats: ePub, Mobi, PDF
紙の本も注文しとくかねえと思ったものの、
電書とのセットが Print & Ebook: $27.49 なんだけど、
International Express Arrives within 2-5 business days. Ships via DHL International Express ($22.50)
送料が…○| ̄|_
ジュンク堂…は無理そうだけど(洋書棚の面積が…)、
新宿のブックファーストには入りそうな気がするので
そこで見かけたら買うか、Amazonさん待ちかなあ。
Safe C++ - O'Reilly Media
It's easy to make lots of programming mistakes in C++—in fact, any program over a few hundred
lines is likely to contain bugs. With this book, you'll learn about many common coding errors
that C++ programmers produce, along with rules and strategies you can use to avoid them.
Author Vladimir Kushnir shows you how to use his Safe C++ library, based in part on programming
practices developed by the C++ community. You'll not only find recipes for identifying errors
during your program's compilation, runtime, and testing phases, you'll learn a comprehensive
approach for making your C++ code safe and bug-free.
Get recipes for handling ten different error types, including memory leaks and uninitialized variables
Discover problems C++ inherited from C, like pointer arithmetic
Insert temporary and permanent sanity checks to catch errors at runtime
Apply bug prevention techniques, such as using separate classes for each data type
Pursue a testing strategy to hunt and fix one bug at a time—before your code goes into production
オライリーさん色々出すねえ
Playful Design - O'Reilly Media
いやまあ誤変換なんですけどね
よくphpは下降稽古だよぉ(^.^)と、言われてますが - Yahoo!知恵袋
よくphpは下降稽古だよぉ(^.^)と、言われてますが
それでも求人はトップクラスに多いです。
Cはプログラミング利用者?ランキングでは、一位ですが、求人数は断トツに低いです。phpの勝ちでは?
同じようなのを以前にも見た覚えがあるんだけど
Signs that you're a good programmer - Software Engineering Tips
Signs that you're a good programmer
The most frequently viewed page on this site is Signs you're a bad programmer, which has also
now been published on dead trees by Hacker Monthly, and I think that behoves me to write its
antithesis. "Bad programmer" is also considered inflammatory by some who think I'm
speaking down to them. Not so; it was personal catharsis from an author who exhibited many of
those problems himself. And what I think made the article popular was the "remedies"--I
didn't want someone to get depressed when they recognized themselves, I wanted to be constructive.
Therefore if you think you're missing any of the qualities below, don't be offended. I didn't
pick these up for a while, either, and many of them came from watching other programmers or
reading their code.
1. The instinct to experiment first
(まず試してみようという本能?)
The compiler and runtime can often answer a question faster than a human can. Rather than seek
out a senior programmer and ask them "will it work if I do this?", a good programmer
will just try it and see if it works before bringing their problem to someone else.
コンパイラーやランタイムはしばしば人がするよりも早く疑問に答えます。
良いプログラマーは seinior プログラマーを探して「これをやったらうまくいきますか?」
と尋ねるのではなく、とにかく試してみるものです。
Symptoms
(兆候)
Side projects
Dabbling in other programming languages, especially ones from a different "family" (procedural, stack-based, concurrent, etc.)
Knows what you're talking about when you mention "Arduino"
Old, uncommitted code that duplicates other code's functionality but isn't referenced elsewhere in the project
A tendency to suggest wacky and unrealistic solutions in meetings
A cubicle or desk populated with toys that came from ThinkGeek
How to acquire this trait
Are you excessively cautious? Are you only comfortable when you have permission? Has anyone
ever said that you were passive aggressive? You might consider inviting some friends to visit
the local Six Flags or some other roller-coaster park. If you want baptism by fire, then make
your first ride the scariest (for me, it was the "Drop Zone" at King's Dominion, with
some reinforcement a few years later on the Kingda Ka at Six Flags). If you consider yourself
ready to get off the kiddie rides you might try your hand at hang gliding and windsurfing,
which have the benefit of teaching you what you can and cannot control.
Much of what makes people timid to experiment is chemical--your brain has a small number of
adrenergic receptors, so a little bit of adrenaline excites your fight-or-flight reflexes too
much. But consider why people grow tolerant to coffee: the caffeine's byproducts force their
brain to grow more adenosine receptors. So if you force your brain to grow more adrenaline
receptors then the same amount of "fear juice" will trigger a lower percentage of
them. Find some experience that scares the shit out of you, do it a few times, and you will
lose your fear of venture on a physical level.
Note: A programmer who "suggests wacky and unrealistic solutions" is not
always a bad programmer. It can be a sign of creative thinking from someone who
assumes confirmation or correction will come from somewhere else down the line.
2. Emotional detachment from code and design
(以下略)
google-blockly - A visual programming language - Google Project Hosting
Blockly is a web-based, graphical programming language. Users can drag blocks together to build an application. No typing required.
なんかこう、既視感があるんだけど