クラスや関数を設計するにあたって、「共通性」と「可変性」というものを分析する必要がある。
共通性(commonality)とは、あらゆる目的に同じ使い方ができる性質。
可変性(variability)とは、状況によって使い方が変わる性質。
これらを分析し、可変性を何らかの形でパラメータ化できれば、あらゆる目的に再利用可能なクラス・関数を設計できる。
書籍『マルチパラダイムデザイン』は、共通性と可変性の分析、設計、実装方法の解説に一冊を使っている。
これは設計の非常に重要な考え方なので、プログラマのみなさんには、ぜひ買って読んでもらいたい(ただし絶版)。
合わせて読みたい:
マルチパラダイムデザインに欠けているもの - Cry's Diary
Boost.Polygon.Voronoiライブラリを例に、堅牢かつ効率的多倍精度アルゴリズムの設計について
2013年11月27日水曜日
2013年11月23日土曜日
言語は思考を規定する
「言語は思考を規定する」
これは日本語や英語のような自然言語に対して言われた言葉ですが、プログラミング言語にも当てはまります。
私たちは普段自分が使っている言語で思考しているため、長く使っていると思考がその言語の常識範囲で規定されてしまいます。これは考えが偏ってしまう原因になるので、1年に1言語くらいは何か学ぶといいと思います。
似たような言語ばかりやっていても得られるものは多くないので、全然違う考え方の言語にするとなおよいです。
頭がやわらかいうちに、パラダイムシフトをどんどん経験しましょう。
普段C系言語を使っている人にお勧めの言語は、Haskell、Scala、Erlang、Ruby、Schemeあたりですね。
また、それらの言語の設計思想にも触れるとおもしろいですよ。『C++の設計と進化(a.k.a. D&E)』、『Masterminds of Programming (のHaskell、UML、SQL、Forth、AWK、C#、Perl)』、『Coders at Work (のHaskellとErlang)』あたりがとてもおもしろいのでオススメです。
これは日本語や英語のような自然言語に対して言われた言葉ですが、プログラミング言語にも当てはまります。
私たちは普段自分が使っている言語で思考しているため、長く使っていると思考がその言語の常識範囲で規定されてしまいます。これは考えが偏ってしまう原因になるので、1年に1言語くらいは何か学ぶといいと思います。
似たような言語ばかりやっていても得られるものは多くないので、全然違う考え方の言語にするとなおよいです。
頭がやわらかいうちに、パラダイムシフトをどんどん経験しましょう。
普段C系言語を使っている人にお勧めの言語は、Haskell、Scala、Erlang、Ruby、Schemeあたりですね。
また、それらの言語の設計思想にも触れるとおもしろいですよ。『C++の設計と進化(a.k.a. D&E)』、『Masterminds of Programming (のHaskell、UML、SQL、Forth、AWK、C#、Perl)』、『Coders at Work (のHaskellとErlang)』あたりがとてもおもしろいのでオススメです。
2013年11月18日月曜日
Welcome broken Japanese
そういえば、長野に行ったとき、おもしろいことがありました。
Twitterに「長野さむい!」と書いたら、「温度は何ですか?」と知らない人からメンションがありました。びみょうにへんな日本語だなーと思いつつ何度かやりとりして、あとでその人のプロフィールを見たら、GCCという世界的に有名なオープンソースプロジェクトの開発者で、チェコ人でした。
https://twitter.com/cpp_akira/status/381541917273509888
「世界は壊れた英語でつながっている」
というようなことはよく言われていて、私自身も海外のオープンソースプロジェクトに拙い英語で参加しています。
しかしその逆に、英語ネイティブな人が拙い日本語で活動してるのはあまり見ません。私のブログにもたまに「おもしろそうな記事だね!英語で書いてほしい!」みたいな趣旨のコメントを英語でもらいますが、英語圏からの歩み寄りももっとあっていいんじゃないかと思います。
今回その歩み寄りの一つを体験でき、こういうのが増えてくれるといいなーと思いました。
壊れた日本語歓迎です。
参照:
Japanese for Programmers
Boost開発者MLに初投稿 - Faith and Brave - C++で遊ぼう
酷い英語をもっとお願いします
Twitterに「長野さむい!」と書いたら、「温度は何ですか?」と知らない人からメンションがありました。びみょうにへんな日本語だなーと思いつつ何度かやりとりして、あとでその人のプロフィールを見たら、GCCという世界的に有名なオープンソースプロジェクトの開発者で、チェコ人でした。
https://twitter.com/cpp_akira/status/381541917273509888
「世界は壊れた英語でつながっている」
というようなことはよく言われていて、私自身も海外のオープンソースプロジェクトに拙い英語で参加しています。
しかしその逆に、英語ネイティブな人が拙い日本語で活動してるのはあまり見ません。私のブログにもたまに「おもしろそうな記事だね!英語で書いてほしい!」みたいな趣旨のコメントを英語でもらいますが、英語圏からの歩み寄りももっとあっていいんじゃないかと思います。
今回その歩み寄りの一つを体験でき、こういうのが増えてくれるといいなーと思いました。
壊れた日本語歓迎です。
参照:
Japanese for Programmers
Boost開発者MLに初投稿 - Faith and Brave - C++で遊ぼう
酷い英語をもっとお願いします
2013年11月11日月曜日
C++ポケットリファレンスの打ち上げをしました
2013/11/10(日)
5月に出版した書籍『C++ポケットリファレンス』の打ち上げをしました。
趣旨としては、お世話になったレビュアーさんたちに肉を奢ろう!ということで、渋谷でしゃぶしゃぶとすき焼きを食べに行きました。
なにげに、執筆が始まってから著者全員が集まることはなかったので、初の全員集合でした。
何度も会ってるメンバなので真新しい話はとくになかったですが、きちんとした形で打ち上げができてよかったです。C++ポケリもコミュニティも、私たちの情報発信もこれで終わりではないので、またちょくちょく成果を出して打ち上げしてーを何度でもやっていきましょう!
今回来れなかった方々も、また別の機会に!
5月に出版した書籍『C++ポケットリファレンス』の打ち上げをしました。
趣旨としては、お世話になったレビュアーさんたちに肉を奢ろう!ということで、渋谷でしゃぶしゃぶとすき焼きを食べに行きました。
なにげに、執筆が始まってから著者全員が集まることはなかったので、初の全員集合でした。
何度も会ってるメンバなので真新しい話はとくになかったですが、きちんとした形で打ち上げができてよかったです。C++ポケリもコミュニティも、私たちの情報発信もこれで終わりではないので、またちょくちょく成果を出して打ち上げしてーを何度でもやっていきましょう!
今回来れなかった方々も、また別の機会に!
プログラミングをはじめて10年目です
「プログラミングを独習するには10年かかる」
そういえば、今年で10年目かな。
10年かかるプログラミングレベルがどこなのか、というのが「特定領域で最大のパフォーマンスを発揮する」だとしたら、5年目くらいには本書いてたのでどうなんだろうなーという感じはする。
しかし幅も深さも広くて際限がないのがプログラミングなので、仮に10年勉強したとしても、仮に特定領域で最高の技術を身に付けたとしても、自分を常に成長させることを止めないのが最も大事なことだと思います。
そういえば、今年で10年目かな。
10年かかるプログラミングレベルがどこなのか、というのが「特定領域で最大のパフォーマンスを発揮する」だとしたら、5年目くらいには本書いてたのでどうなんだろうなーという感じはする。
しかし幅も深さも広くて際限がないのがプログラミングなので、仮に10年勉強したとしても、仮に特定領域で最高の技術を身に付けたとしても、自分を常に成長させることを止めないのが最も大事なことだと思います。
2013年10月31日木曜日
ビーナスラインを走ってきた
9月22日(日)
すけさんと、長野のビーナスラインを走りに行ってきました。
初の長野県でございます。
朝5時に出発し、9時か10時くらいにはビーナスラインにいました。
寒かったですが、高原の中を走るのはすごい気持よかったですね。
ビーナスラインを抜けた先にある、白樺湖です。
美ヶ原美術館の駐車場。
美術館には行かず、休憩してました。バイクいっぱいいた!
そのあとはもう行くところがなかったので、宿の近くに何かないかなーと調べたら、龍神の滝というのがあったので行ってみました。
小さい滝でしたが、目の前まで行けました。
そのあとは、近くの宿で一泊。
9月23日(月)
この日は、岐阜県にある世界遺産、白川郷まで行ってきました。
今となってはめずらしい、茅葺屋根の家がたくさんあるところです。
しかし、私の父の実家が茅葺屋根だったので、あまりめずらしくはなかったという。
でもいいところです。
展望台から、白川郷を一望できます。
ここからはひたすら帰宅コースです。
来た道を戻って長野に入り、中央道を通って帰ってきました。
白川郷は何度も行くところじゃないので、来る機会はもうあまりないと思いますが、来れてよかったです。
ビーナスラインも楽しかったので、また行きたいですね!
すけさんと、長野のビーナスラインを走りに行ってきました。
初の長野県でございます。
朝5時に出発し、9時か10時くらいにはビーナスラインにいました。
寒かったですが、高原の中を走るのはすごい気持よかったですね。
ビーナスラインを抜けた先にある、白樺湖です。
美ヶ原美術館の駐車場。
美術館には行かず、休憩してました。バイクいっぱいいた!
そのあとはもう行くところがなかったので、宿の近くに何かないかなーと調べたら、龍神の滝というのがあったので行ってみました。
小さい滝でしたが、目の前まで行けました。
そのあとは、近くの宿で一泊。
9月23日(月)
この日は、岐阜県にある世界遺産、白川郷まで行ってきました。
今となってはめずらしい、茅葺屋根の家がたくさんあるところです。
しかし、私の父の実家が茅葺屋根だったので、あまりめずらしくはなかったという。
でもいいところです。
展望台から、白川郷を一望できます。
ここからはひたすら帰宅コースです。
来た道を戻って長野に入り、中央道を通って帰ってきました。
白川郷は何度も行くところじゃないので、来る機会はもうあまりないと思いますが、来れてよかったです。
ビーナスラインも楽しかったので、また行きたいですね!
2013年10月28日月曜日
ツインリンクもてぎに行ってきた
さぼっていたツーリング日記を書きます。
9月14日(土)
お盆に帰省して以来、1ヶ月くらいバイクに乗ってなかったので、どっか行こうかーということで、すけさんとツインリンクもてぎに行ってきました。
目的としては、HONDAの博物館を見たい、というものです。
朝は守谷SAで待ち合わせ。
その後いくつかのサービスエリアで休憩し、赤いFZ-1のお姉さんと話したりしつつ、ツインリンクもてぎに着きました。
ゴーカートに乗りました!
正面に写ってるのが私です。
Gがすごくて、脳がぐわんぐわん揺れました。
おもしろいけどけっこうきつい!
HONDAの博物館!
昔のバイクやレースカーなんかがたくさん展示されていました。
我が青春のモトコンポもありました。(小学校の頃、うちの駐車場で乗ってた。)
ASIMOがいた!
ASIMOのショーもやっていて、すごいはしゃいで見てました。
最近のASIMOは走るんですよ!
サーキットを一望できる道を通って帰りました。
いやー、サーキットって広いんですねぇ。
9月14日(土)
お盆に帰省して以来、1ヶ月くらいバイクに乗ってなかったので、どっか行こうかーということで、すけさんとツインリンクもてぎに行ってきました。
目的としては、HONDAの博物館を見たい、というものです。
朝は守谷SAで待ち合わせ。
その後いくつかのサービスエリアで休憩し、赤いFZ-1のお姉さんと話したりしつつ、ツインリンクもてぎに着きました。
ゴーカートに乗りました!
正面に写ってるのが私です。
Gがすごくて、脳がぐわんぐわん揺れました。
おもしろいけどけっこうきつい!
HONDAの博物館!
昔のバイクやレースカーなんかがたくさん展示されていました。
我が青春のモトコンポもありました。(小学校の頃、うちの駐車場で乗ってた。)
ASIMOがいた!
ASIMOのショーもやっていて、すごいはしゃいで見てました。
最近のASIMOは走るんですよ!
サーキットを一望できる道を通って帰りました。
いやー、サーキットって広いんですねぇ。
2013年10月14日月曜日
閃の軌跡終わった!のでネタバレ感想を書きます。
『閃の軌跡』クリアしました!
いつもながら素晴らしい作品でした。安心のファルコムクォリティです。
まず、『碧の軌跡』から一転して、いきなり近代的なバリバリの3D RPGになったからビックリしましたね。誰もがそう感じたと思います。
突然の技術転換で、中途半端な作品になるんじゃないかと3%くらい不安に思っていましたが、杞憂でした。そんな心配は全くありませんでした。
初回特典のビジュアルブックにもあったように、エキストラのキャラクターまで深く設定が決められていて、隅から隅まで愛のこもった作品になっていて、とてもすばらしかったです。
さて、ここからネタバレ込みで感想を書いていきます。宣言したので、ネタバレを見ても怒らないでください。
まず、『碧の軌跡』ほどの盛り上がりではありませんでしたね。それは物語が始まった段階から予測はできていて、「あ、これは1作じゃ終わらないな」と早い段階でわかりました。『閃の軌跡』は、帝国を舞台とした物語の序章にすぎないのです。なので、どこを落とし所にするんだろうー?というのをわくわくしながらプレイしていました。
6章までは、主人公たちの成長を見守りつつ、いい話だなーと思いながらプレイしていて、でもCは生きてるんだろうなー。そして鉄血宰相が撃たれて終わるんだろうなーと予想しながら進めていました。
そして最終章ですよ!またやってくれましたよ意外な黒幕!!意外な展開!!わからないよー!(歓喜) 最高です!!
途中からゲームがゼノギアスになりました!ロボット戦です。
これは『空の軌跡』をやってた頃から、そのうちそうなるんだろうなーとは思っていたので、それ自体は意外ではないです。どのタイミングでどういう形でそうなるかだけが重要です。結社製のロボットを奪うんだろうなーと思っていたらそんなことはなく、古くから伝承のあるロボットという設定で出てきてくれました。熱いぜ!
そしてロボット戦だと、殴る切る撃つくらいしかないと思っていたら、さすが伝承のロボットだけあって、奥の手まであってすばらしいですね。
物語は、ロボット戦をやって敗北離脱して終わりだったので、今後の展開がものすごく気になります。スタッフロールが終わって、タイトル画面に戻って、「え、ほんとに続きがまだないの?」と20分くらい画面を眺めていました。これでまた2年くらい待つのは、きっついですねぇ。待ち遠しくて仕方ないです!ハリー!ハリー!
時系列的に、碧の軌跡と同タイミングで終わったので、きっと次作は零/碧のキャラクターたちと何らかの接点を持ちつつ、仲間と再会して彼らもロボットを手に入れたりしつつ、熱い展開で結社たちと戦っていくのでしょうね。悶々と想像を膨らませつつ、次作を楽しみに待つことにします。
おもしろかった!
いつもながら素晴らしい作品でした。安心のファルコムクォリティです。
まず、『碧の軌跡』から一転して、いきなり近代的なバリバリの3D RPGになったからビックリしましたね。誰もがそう感じたと思います。
突然の技術転換で、中途半端な作品になるんじゃないかと3%くらい不安に思っていましたが、杞憂でした。そんな心配は全くありませんでした。
初回特典のビジュアルブックにもあったように、エキストラのキャラクターまで深く設定が決められていて、隅から隅まで愛のこもった作品になっていて、とてもすばらしかったです。
さて、ここからネタバレ込みで感想を書いていきます。宣言したので、ネタバレを見ても怒らないでください。
まず、『碧の軌跡』ほどの盛り上がりではありませんでしたね。それは物語が始まった段階から予測はできていて、「あ、これは1作じゃ終わらないな」と早い段階でわかりました。『閃の軌跡』は、帝国を舞台とした物語の序章にすぎないのです。なので、どこを落とし所にするんだろうー?というのをわくわくしながらプレイしていました。
6章までは、主人公たちの成長を見守りつつ、いい話だなーと思いながらプレイしていて、でもCは生きてるんだろうなー。そして鉄血宰相が撃たれて終わるんだろうなーと予想しながら進めていました。
そして最終章ですよ!またやってくれましたよ意外な黒幕!!意外な展開!!わからないよー!(歓喜) 最高です!!
途中からゲームがゼノギアスになりました!ロボット戦です。
これは『空の軌跡』をやってた頃から、そのうちそうなるんだろうなーとは思っていたので、それ自体は意外ではないです。どのタイミングでどういう形でそうなるかだけが重要です。結社製のロボットを奪うんだろうなーと思っていたらそんなことはなく、古くから伝承のあるロボットという設定で出てきてくれました。熱いぜ!
そしてロボット戦だと、殴る切る撃つくらいしかないと思っていたら、さすが伝承のロボットだけあって、奥の手まであってすばらしいですね。
物語は、ロボット戦をやって敗北離脱して終わりだったので、今後の展開がものすごく気になります。スタッフロールが終わって、タイトル画面に戻って、「え、ほんとに続きがまだないの?」と20分くらい画面を眺めていました。これでまた2年くらい待つのは、きっついですねぇ。待ち遠しくて仕方ないです!ハリー!ハリー!
時系列的に、碧の軌跡と同タイミングで終わったので、きっと次作は零/碧のキャラクターたちと何らかの接点を持ちつつ、仲間と再会して彼らもロボットを手に入れたりしつつ、熱い展開で結社たちと戦っていくのでしょうね。悶々と想像を膨らませつつ、次作を楽しみに待つことにします。
おもしろかった!
2013年10月3日木曜日
最近おもしろいマンガ
たまにTwitterでゲームの話をすると、「え、あのC++の人、ゲームとかするんだ」とか言われるのです。わたしこれでも年がら年中プログラムばっかりいじってるわけじゃないのですよ。むしろ最近ゲーム作ってるですよ。
何か変な心配をされそうなので、たまにはプログラムとか一切関係ないマンガの話でもします。
『ブレイクブレイド』
超オススメです。ロマンを感じる。
『銀の匙』
オススメです。大切なことを教えてくれます。
『キングダム』
マジでオススメです。中国の戦争ものは初めて読んだけど、これは熱い。
『獣の奏者』
オススメです。ファンタジーしててとてもいいです。
『テラフォーマーズ』
オススメはしないけどマジでおもしろいです。この人文章力めっちゃ高い。
何か変な心配をされそうなので、たまにはプログラムとか一切関係ないマンガの話でもします。
『ブレイクブレイド』
超オススメです。ロマンを感じる。
『銀の匙』
オススメです。大切なことを教えてくれます。
『キングダム』
マジでオススメです。中国の戦争ものは初めて読んだけど、これは熱い。
『獣の奏者』
オススメです。ファンタジーしててとてもいいです。
『テラフォーマーズ』
オススメはしないけどマジでおもしろいです。この人文章力めっちゃ高い。
推奨の心構え
人に何かを推奨するときは、「知らないと損するよ」ではなく、「知ると得するよ」と言いたい。無知は罪ではない。知らないことは知ればいいだけだ。みんなそうしてきた。
人に古くて汚いものを捨てさせたいときは、「こんなもん使うな」ではなく、より良いものを提示して推奨したい。使っていることを恥じさせるのはよくない。
人はなぜネガティブな方に走りたがるのか。いろいろ言説はあって、たとえば英語でも日本語でも、ポジティブな感情を表現する単語よりも、ネガティブな感情を表現する単語の方が圧倒的に多く、まるで人類の歴史が罵倒とともに成長してきたかのような辞書ができてしまっている、というのもある。
どちらにしても、ネガティブな性格というのは、先天的な人間の性質ではなく、後天的に変えていけるものだ。気づいたら教えてあげればいいし、私がそうなっていたら教えてほしい。無自覚にそうしている場合もきっとあるから。
人に古くて汚いものを捨てさせたいときは、「こんなもん使うな」ではなく、より良いものを提示して推奨したい。使っていることを恥じさせるのはよくない。
人はなぜネガティブな方に走りたがるのか。いろいろ言説はあって、たとえば英語でも日本語でも、ポジティブな感情を表現する単語よりも、ネガティブな感情を表現する単語の方が圧倒的に多く、まるで人類の歴史が罵倒とともに成長してきたかのような辞書ができてしまっている、というのもある。
どちらにしても、ネガティブな性格というのは、先天的な人間の性質ではなく、後天的に変えていけるものだ。気づいたら教えてあげればいいし、私がそうなっていたら教えてほしい。無自覚にそうしている場合もきっとあるから。
登録:
投稿 (Atom)








