明けましておめでとうございます / OLYMPUS OM10

明けましておめでとうございます

スクリーンショット

明けましておめでとうございます。本年もよろしくお願いします。

さっき撮ったばかりの写真を元に年賀画像を作って掲載しました。

OLYMPUS OM10

OLYMPUS OM10

三脚を探していたらアナログ一眼レフカメラも見つけました。

OLYMPUS OM10という機種のようです。

写真はEOS Kiss Digial Nで撮影。加工はリサイズのみ。

最終更新時刻: 2008年11月11日

一日ビデオカメラマン / [wish]ポートレートを撮るときの持ち物

一日ビデオカメラマン

今日はビデオカメラマンをやってきた。スチールカメラマンの方がいて、写真の撮影風景を撮影する。

始めてのビデオカメラだったが、結構楽しかった。あとでチェックしての反省点としては、メリハリの無さ。

チェックの時に客観的に見ていると

  • 今、もっと近寄って欲しい。
  • そろそろこの角度見飽きてきた。別の角度からも見たい。

と思うシーンがしばしば。撮影の邪魔になったらいけないというのもあったんだけど。もし次回があったらこの辺を気をつけたい。

ポートレートを撮るときの持ち物

今回は野外での撮影。カメラマンの方が使用していたのはこれらの道具。

  • Nikon D100
  • レフ版
  • グレーカード
  • ストロボ

レフ版は人物に反対方向から光を当てるため、グレーカードはホワイトバランスの調整に使用。

ストロボは日中シンクロで使用した。日中シンクロとはCDのジャケットとかでよく見かける写真で、逆光で人物の上斜め45度からストロボを発光して撮影する手法らしい(かなり大雑把)。液晶画面で見せてもらって感動した。

グレーカードを貸してもらってホワイトバランスを調整したところ、調整前と調整後でまったく色合いが違う。調整前は夕焼けなのに昼間みたいな写真。調整後は綺麗に夕焼けの色。ホワイトバランスは後からでもPhotoshopで調整できないことはないが、より自然。

とてもよい経験になりました。とりあえずグレーカードは買っとこう。

最終更新時刻: 2008年07月25日

[C/C++] DIB Library / Windows環境で文字コード絡みのプログラミングメモ / 無料の3Dゲーム開発環境 / 移植性を高めるためのコーディング / [wish]新しいノートPCが欲しい / ノートPC関連で早く実用化&普及して欲しい技術

DIB Library

DIB Library

Windows環境で文字コード絡みのプログラミングメモ

無料の3Dゲーム開発環境

徒然なる開発誌 無料の開発環境

3DエンジンのIrrlichtが面白そう。

移植性を高めるためのコーディング

HP-UX STK: 移植性を高めるためのコーディング

off_tでぐぐって見つけたページ。off_tは直接関係無し。

職業としてのプログラミング バグを潜伏させない工夫

新しいノートPCが欲しい

2006年はノートPCの買い替えにはいい年になるかもしれない。

前回購入したPCは、ThinkPad Xシリーズで始めてCentrinoを搭載したThinkPadであるX31。発売日当日に迷わずIBM直販で購入した。

迷わず購入した理由は、Centrinoが技術的な分岐点だと思ったからだ。Centrinoテクノロジ搭載であるかどうかで明らかな性能差(バッテリ持続時間/無線LAN/USB2.0)が出る。

Centrinoという新技術を搭載した機種なら3年は持つだろうと予想していたが、大体その通りになったと思う。購入してからもうすぐ3年。その間にデスクトップ分野では64ビットCPU、PCI-Express、シリアルATAなど、様々な新技術が普及した。これらはどれも魅力的で物欲をそそられるが、ノートPC分野においてはそのような技術革新がない。(少なくとも僕が魅力的だと感じる技術革新はない)

だが、下記の記事を読む限り2006年は期待が持てる。Centrino Duoが投入されるだけでなく、モバイル面でも強化されているであろうWindows Vistaの登場に後押しされて、ExpressCardなどノート用の新技術が普及するかもしれない。そうでなくても、個人的にはCentrino Duo搭載のThinkPadが出たら物欲をそそられる。

ノートPC関連で早く実用化&普及して欲しい技術

欲しい順。

  • 燃料電池
  • フラッシュメモリ等を利用した高速ブート
  • ExpressCard
  • intel製64ビットCPU

これらを載せたThinkPad Xが早く出ないかな。ExpressCardは既にTシリーズに載っているから実現は早そう。フラッシュメモリを利用した高速ブートはデスクトップもi-RAMとか出始めたばっかりだし、燃料電池はまだテクニカルプレビューの段階?と思ってググってみた。

三洋電機と日本IBM、燃料電池を使ったPC用ハイブリッド電源を共同開発へ - CNET Japan

両社はハイブリッド電源のコンセプトモデルを開発しており、サイト上ではデモの様子を動画で紹介している。2008年頃の実用化を目指しており、 ....

2008年頃か・・・。高速ブートのほうが早そう。

追記:

  • 背面電子ペーパー or 背面ディスプレイ
最終更新時刻: 2008年08月05日

喫茶店でランチを / 不良システムを作らないプロジェクトの枠組み

喫茶店でランチを

今日は一人だったので静かな喫茶店でランチ。コーヒーをおいしいと感じたのは久しぶり。

そのお店は16時までは喫茶店で、それ以降はバー。開店は11時で、特にランチサービスはなし。今日は14時に行ったが、お客さんは僕一人だけ。この時間がちょうどいい時間だと思う。

こういうところで仕事とか勉強したらはかどりそう。今度試してみたい。

最終更新時刻: 2008年10月19日

[C/C++] C/C++の正規表現ライブラリ / [水泳]水泳

C/C++の正規表現ライブラリ

  • Boost.regex
  • PCRE
  • 鬼車(oniguruma)
  • ICU(boost.regexと組み合わせても使える)
  • WWWCやnPopの作者Nakkaさんが公開している正規表現ライブラリLibrary
  • CAtlRegExp

Shift-JIS(できればUCS-2も)だけしか対応してなくていいから、.h/.cppをプロジェクトに追加するだけで気軽に使える信頼性が高くて軽めのライブラリが欲しかったんだけど見つからない。よく見てないけどonigurumaかNakkaさんのが一番思ってたものに近い。

あとは昔のrubyとか、SJIS対応されてるgrep/sed等(あるかどうか不明)からregex部分だけ引っこ抜いてくるとか。

水泳

水泳再開。一昨日は1000mで今日は時間が足らなくて900m。

最終更新時刻: 2008年06月04日

背面電子ペーパー付きノートパソコン / 会議をうまくやる10の方法 / [book][buy]WEB+DB PRESS Vol.30 / [book][buy]MdN 2006年2月号 / [book][buy]ORACLE 10g DATABASE Linux版【インストールキット】

背面電子ペーパー付きノートパソコン

Life is beautiful: 欲しい!背面電子ペーパー付きノートパソコン

これに似たようなものとして、Windows Vistaでは背面ディスプレイをサポートするみたい。

B・ゲイツら、CESで「Windows Vista」をデモ - CNET Japan

ビデオ中ではガジェットが背面ディスプレイで動作している様子が紹介されている。

MdN 2006年2月号

月刊 [MdN]

最終更新時刻: 2008年10月19日

カフェでマッタリ / [wish][book]プログラミングのための線形代数

カフェでマッタリ

カフェでノートPCを開く

図書館で勉強する予定だったけど、ランチで寄ったカフェが居心地が良かったので、そのままマッタリ。

ただ、作業するには机が遠くていまいち。でも窓際でコンセントもあるのでその点は○。

プログラミングのための線形代数

プログラミングのための線形代数(平岡 和幸/堀 玄)

最終更新時刻: 2008年11月11日

[C/C++] doxygenの文字化け対策 / [wish]ほぼ日ホワイトボードカレンダー2006

doxygenの文字化け対策

[観] doxygen 日本語文字化け対策

ほぼ日ホワイトボードカレンダー2006

ほぼ日刊イトイ新聞 - ほぼ日ホワイトボードカレンダー

卓上カレンダーが欲しい。ロフトにも売ってるみたいなので今度見てこよう。

最終更新時刻: 2008年07月15日

Wikka Wiki / [水泳]750m

Wikka Wiki

Wikka: Welcome to Wikka Wiki

やる気向上作戦: やる気向上作戦より。見慣れないWikiだと思って見つけたWikiエンジン。

公式ページもシンプルで好感が持てる。

What is Wikka?

WikkaWiki is a flexible, standards-compliant and lightweight wiki engine written in PHP, ...

すごく良さそう。要調査。

750m

時間切れで750mだけ。次回からちょっと早めに出よう。

それから、半年分の回数券を購入。

最終更新時刻: 2009年01月11日



KISSの法則

Keep It Simple, Stupid.

僕が何かを作るときに大事にすることの一つ。

最終更新時刻: 2008年07月29日

FileMakerのインストーラは厳しい / ソースコード公開 / VC++のウォッチウインドウでコンテナの中身を表示

FileMakerのインストーラは厳しい

FileMaker Pro 8 AdvancedをWindows XP SP1のPCにインストールしようとしたら「このバージョンのWindowsでは、FileMakerのインストールまたは削除を行うことはできません。」と言われた。

以前もFileMaker Pro 7 ServerをWindows XP HOMEにインストールしようとしてだめだったことがある。

警告だけ出して、とりあえずインストールさせてくれてもいいのに。でもSP2を入れる口実にはなった。

ソースコード公開

Googleの中の人のコードが読める。

ひげぽん OSとか作っちゃうかMona- - Google Talkのライブラリのソース公開

それから、GPL抵触でソースコードを公開することになった例のアレのコードレビュー。個人的には、GPL抵触発覚からこれだけの短期間でソースを公開したことで企業イメージはむしろ好印象。(コードの品質は別として)

NDR置き場 某VN系のソースコード公開の件

どちらのコードも別の理由で読みたい。

VC++のウォッチウインドウでコンテナの中身を表示

[00024966] Re[2]:STLのデバッグの通りすがりさんの発言より。

動的要素数をウィッチウィンドウで調べるときは

motor._Myfirst,4

と、カンマと要素数を定義すると、指定した数の[+]展開ができます。

知らなかった。便利。 ちなみに、CArrayだとこう。

array.m_pData,4

要素数も渡せないだろうか、と思って試してみたけど駄目だった。

array.m_pData,array.m_nSize ← エラー
最終更新時刻: 2008年07月11日

いいシステム / 文章力 / [book] 博士の愛した数式 / 得意科目、好きな科目 / プログラミングしてるときの自分 / COMのProdID - Adobe Illustratorの場合 / COMのProdID ‐Adobe Photoshopの場合 / バージョン命名規則 / いいシステム(2) / いいシステム≒シンプルなシステム / シンプルなシステム≠不自由なシステム / 今日の更新は過去最高回数かも

いいシステム

もう4年くらい前にPostgreSQLで構築したWEB/DBシステムがまだ動いている。

そのDBはテーブル数こそ少ない(10個くらい)ものの、メインとなるテーブルには毎日数百〜数千件のデータがインポート(INSERTおよびUPDATE)され、他のテーブルとの外部結合や全文検索を含むSELECT文が毎秒数回〜数十回走る上、同じくらいUPDATE文も走る。

その上、どうやら僕の手を離れてからはデータが溜まる一方らしく、メインのテーブルのレコード数は少なく見積もっても数十万〜数百万件にはなっている。

にも関わらず、未だにレスポンスに変化なく高速稼動しているPostgreSQLは本当に凄い。

DB設計/構築面で気をつけたことは下記の通り。

  • EXPLAINで確認しながら適切なインデックスを作成。(重そうなSQL文に対しては特に念入りに)
  • 毎日データ更新後にVACUUM。(PostgreSQL 7.xなので。8.xだとそんなに頻繁にやらなくてもよい?)
  • 速度が優先されるテーブルは、あえて第三正規化を行っていない

データベースにおいて速度を決定するのはハードウェアとDB設計とDBエンジンだ。しかし、そのデータベースを維持するのは日々の運用だということを忘れてはいけない。日々、面倒を見るシステム管理者という縁の下の力持ちがいるからこそデータベースは動くのだ。システム管理者マンセー。

それはともかく、教科書通りのそこそこの設計と、いいハードウェアと、いいDBエンジン、それにいいシステム管理者に恵まれたそのシステムは「いいシステム」だと思う。

というのは開発者視点の自分が見た「いいシステム」。ユーザ視点での「いいシステム」はまた今度(といって書いたためしはないけど)。

文章力

起承転結もへったくれもない駄文を書き散らすこの文章力の無さをなんとかしたい。最近切にそう思う。思うだけではなんともならないので、できるだけ本を読むことから始めることにした。

博士の愛した数式

博士の愛した数式(小川 洋子)

昨日から読み始めた。今190ページ。

今のところ一番印象に残ったのはルートの

「ママが博士を信用しなかったからだよ。博士に僕の世話は任せられないんじゃないかって、少しでも疑ったことが許せないんだ。」

という台詞。なぜだかちょっとだけ目頭が熱くなった。

得意科目、好きな科目

得意科目は数学だったけど、それは得意なだけで好きではなかった。今考えてみると、好きな科目は国語だったのかもしれない。

一学期が始まってすぐに国語の教科書を読み終わっていたし、他の教科の授業で暇なときには国語の便覧を眺めていた。小学生のころは図書室でルパンとかシャーロックホームズとか偉人伝なんかを読んでいたし、技術書しか読まないが未だに図書館には良く行く。そういえば、本を読まなくなったのは中学に入る前にパソコンを始めてからだ。

とはいえ、作文は何を書けばいいのかわからなかったし、古文漢文は読めないのでつまらないし(感情移入できるくらいに読めれば別かもしれないけど、「いとおかし」とか言われても感情移入できない)漢字も苦手で文法も面倒で嫌いなので、やっぱり得意科目ではない。

得意なことが好きなこと、なら良いんだけど。なかなか上手くいかない。

プログラミングしてるときの自分

プログラミングしてるときの自分は、よく「楽しそうだね」と言われる。

「得意」で「好き」だから?

多分、それほど「得意」でもなく、それほど「好き」でもないが、両者のバランスがいいんだろう。

COMのProdID - Adobe Illustratorの場合

Adobe Illustrator 9.0のScripting PluginによってインストールされるCOMのProdIDは「Illustrator.Application.1」。Adobe Illustrator CSの場合は「Illustator.Application.2」だった。

これって、たまたまその順番でインストールしたからそれぞれ「.1」「.2」になってるだけなんじゃ…。アプリ側から「Illustrator.Application」で呼び出すと9.0のCOMが使われる。

COMのProdID ‐Adobe Photoshopの場合

電波…とどいた? [200401 中旬]より

PhotoShop 5.0 から COM コンポーネントだそうな。これ、インストールが適切にされてないようで、OLE View から TypeLibrary の中身が見れない(^^; タイプライブラリ自体はインストールフォルダにおちてます。 "Photoshop 7.0 Application" という名前のものがこっち。使い方は SDK に記述されてるとのこと。 Scripting Support をいれると、これとは別に "Photoshop Application" という名前の別オブジェクトが登録かかります。"PhotoShop.Application" というアプリケーション名はこちらが奪ってしまうので、旧版の COM でアクセスする人は、"PhotoShop.Application.7" とフル名でアクセスする必要あり。新版のフル名は "PhotoShop.Application.7.1" です。 Photoshop CS ではどうなってるのかな?

Photoshop 5.0なのにフル名は"PhotoShop.Application.7"で、Photoshop 7.0のフル名は"PhotoShop.Application.7.1"らしい。

"Photoshop.Application.7"というのはProgIDである"PhotoShop.Application.7.1"からデフォルトのバージョン番号「.1」を除いたVersionIndependentProgidである(ややこしい)ような気がするんだけど、COMについて不勉強なのでまだよくわからない。

バージョン命名規則

バージョン命名規則で思い出したのでメモ。

japan.linux.com | バージョン番号の衰亡

わかりにくいと思うバージョン番号

追記:よく考えたらどれもバージョン番号じゃなくて製品名なわけだけど。ま、いいや。

  • Intel CPUのプロセッサナンバー
  • Adobe製品のCS/CS2
  • Macromedia製品のMX/MX 2004

Macromediaは最新バージョンになって番号に戻した。

マクロメディア「Studio 8 日本語版」はケータイやビデオなどに注力--RSSもサポート - CNET Japanより

「どのバージョンを自分が使っているかわからないなど、ユーザーをだいぶ混乱させていることがわかった。それからずっとバージョン番号を付与してきたFlash Playerのバージョンと、Flashオーサリングツールのバージョンとの混乱もあって、シンプルにすることがもっともいいと考えて単純にバージョン番号を付けることにした」(Guerard氏)

まったくもってその通りだと思う。というか「MX 2004」て。まぁ、製品名にも流行廃りがあるからマーケティング的にしょうがないんだろうけど。

でも、MacromediaはAdobeに買収されてしまった。新バージョンはMacromedia Dreamweaver CS3だったりして?(嫌杉)

いいシステム(2)

ぱっと思いつくそれぞれの立場の「いいシステム」

  • ユーザにとっては「使いやすい」
  • 管理者にとっては「手間がかからない」
  • 経営者にとっては「コストが安くて効果が高くて、リスクが低い」

東証とか銀行などの金融系のシステムはわずかなバグがクリティカル。冗長性がないとリスクが高い。「ソフトウェアは二重化できない」というのは何か違うと思う。

いいシステム≒シンプルなシステム

いいシステム(2)を書いていて、昨日のKISSの法則を改めて考えてみる。

  • シンプルならば使いやすい
  • シンプルならば手間がかからない
  • シンプルならばコストが安い
  • シンプルならば(ちょっとの効果でも)効果が高い(と言える。ような気がする)
  • シンプルならばリスクが低い(操作をミスる可能性が低いから)

効果については一考の余地あり。

シンプルの逆はポジティブな言い方をすれば多機能(なシステム)、ネガティブな言い方をすれば複雑(なシステム)、だろうか。それぞれに多機能を当てはめてみる。

  • 多機能ならば使いやすい?
  • 多機能ならば手間がかからない?
  • 多機能ならばコストが安い?(間違いなく高い)
  • 多機能ならば効果が高い?
  • 多機能ならばリスクが低い?(もしかしたら、熟練のオペレータが様々な機能を駆使してリスクを低く・・・できるか?)

複雑を当てはめると明らか。

  • 複雑ならば使いにくい
  • 複雑ならば手間がかかる
  • 複雑ならばコストが高い
  • 複雑ならば効果は低い
  • 複雑ならばリスクは高い(操作をミスる可能性が高いから)

追記:多機能と複雑はニュアンスだけじゃなく意味も違うな・・・。

シンプルなシステム≠不自由なシステム

シンプルを褒めすぎたので、シンプルなシステムの暗黒面(?)について考えてみる。

シンプルなシステムを作るのは難しい。なぜならば本当に必要な機能だけを見極めることが必要になるからだ。ユーザにとって必要な機能が一つでも欠ければ、それは「使えない」システムになってしまう。

だから本当に必要なものを慎重に検討する。設計段階においては機能を追加することよりも機能を削減することに時間をかける。あれば便利だから機能追加、というのは設計段階においては怠慢だ。重要なのは優先度。

先のエントリにおいて多機能、という言葉は適切ではなかったかもしれない。よりポジティブにとらえれば、機能が多い=汎用的であるとも言える。

今日の更新は過去最高回数かも

今日の「いいシステム」から始まるエントリは20日23時から今(21日2:50)までの4時間で書いている。時間当たりのエントリ数としてはこのメモでは最高かも。さすがに疲れて最後のほうは今読み返しても「?」だ。

最終更新時刻: 2008年11月26日

システム=道具

「システム」というとどうも曖昧なイメージです。システム屋が開発する「システム」というものの実態はPCとネットーワークで構成されているだけで、それは目的を為すための「道具」であると僕は考えています。

つまりシステムエンジニアやプログラマーの仕事は、相手が必要とする道具を発明する発明家と言えると思います。とはいえ毎度、相手に合わせてカスタマイズしたものを開発していてはコストがかかって仕方がありません。なので状況によっては既存の道具を組み合わせて提供する、道具屋さんみたいなこともします。

最終更新時刻: 2008年05月20日

Unicodeについてのあれこれ

Unicode、といって一番メジャーな文字符号化方式は多分UTF-8。大抵の場合コレだけ知ってればなんとかなる。

が、それ以外のものも使い出すと混沌としてくるのでメモ。

  • UTF-7/8/16/32
  • UCS-2/UCS-4
  • BOM
  • サロゲートペア
  • C言語におけるUnicode

まず、UnicodeとUCS-2/UCS-4は文字集合(character set)のことでUTF-7/8/16/32は文字符号化方式(character encoding)である。

UnicodeとUCS-2/4は策定団体が違った(それぞれUnicode ConsortiumとISO)らしいが、利用する上ではあまり関係ないので言及しない。

UCS-2/4は1文字をそれぞれ2バイトまたは4バイトで表す文字集合。当初2バイトで収まると思ってたけど、やっぱり無理だったから4バイトに拡張しました。という説明をよく見かける。

で、それらの文字集合はただの「集合」でしかないので、実際のデータとして使うためには文字符号化方式が必要になる。それがUTF-7/8/16/32。つまりUCS(Universal Multiple-Octet Coded Character Set)あってのUTF(Unicode Transfer Format)。

UTF-8は1バイトから6バイトまでの可変長コードでUCS-2/UCS-4を表現できる。また、US-ASCIIと互換性があるため、ASCII文字のみで構成されたUTF-8データ(BOMなし)はASCIIデータと一致する。

UTF-16は当初2バイトの固定長コードでUCS-2コードと等価の扱いやすい符号化方式になるはずだったように見える。が、UCS-4を表現すべく「サロゲートペア」というものが導入され、2バイトまたは4バイトの可変長コードになってしまった。それから固定長であったためにエンディアンの影響を受ける。UTF-16LE/BEと表記されるのはそれぞれリトルエンディアン/ビッグエンディアンのUTF-16である。また、エンディアンを判定するために先頭2バイトにBOM(Byte Order Mark)と呼ばれるエンディアン判定のダミーコードが挿入されることがある。

よってUTF-16はBOMあり/なし、LE/BEの4種類存在する。

UTF-32はUCS-4を表現できる4バイト固定長コード。これもUTF-16と同じくエンディアンの影響を受けるためBOMあり/なし、LE/BEの4種類存在する。

UTF-7については使わないので調べてない。多分メールなんかで使うために8ビット目を使わない可変長コードなのでは。(適当)

ちなみにエンディアンの影響を受けないはずのUTF-8においてもBOMは存在する。仕様によるとつけてもつけなくても良いことになっている。つけたら間違い、というわけではない。また、BOMなしのUTF-8をUTF-8nを表記することがある。

ちなみにC/C++におけるワイド文字表現であるwchar_tは、仕様ではエンコードに関する記述はない。VC++における実装は2バイトで、gccは4バイト。

VC++においてはwchar_tにはUTF-16ではなくUCS-2を入れることを想定してるんだろうか?マルチバイト系関数の実装を見てみないとなんともいえないが、サロゲートペアが意識されてればUTF-16だし、されてなければUCS-2だろう。

参考サイト

最終更新時刻: 2008年09月04日

Unicodeについてのあれこれ(2) / Unicodeについてのあれこれ(3)

Unicodeについてのあれこれ(2)

いろいろUnicodeについて調べていてわかったこと、わからないことメモ。パート2。

Unicodeについて文字集合だと書いたけど、文字集合と文字符号化方式を含めた規格名と捉えたほうが正しそう。

とりあえず、unicode.orgのFAQ読んでみよう。

と思ってFAQ - Basic Questions見てたら

Q: What is Unicode?

A: Unicode is the universal character encoding, maintained by the Unicode Consortium.(以下略)

とか書いてあって余計に混乱した。

参考サイト

Unicodeについてのあれこれ(3)

調べてみてややこしそうだと思った点。

  • 合成文字(combining characters)
  • 全角/半角(Fullwidth/Halfwidth)

参考サイト

最終更新時刻: 2009年02月03日

[水泳] 先週650m、火曜日1000m、金曜日900m / [programming]WindowsにおけるUnicodeサポート / [programming]Writing Secure Code 第2版<上> / [book][buy]Effective STL―STLを効果的に使いこなす50の鉄則

先週650m、火曜日1000m、金曜日900m

今週は火曜日に1000m、本日900m泳いだので週2回のノルマ達成。先週は1回しかいけなくて、しかも650mだったのでノルマ達成できず。

今日は泳いでから戻ってきて仕事。

WindowsにおけるUnicodeサポート

開発に関係することとしてまず、WindowsはOSレベルでサロゲートペアおよび補助文字をいくつかのAPIにおいてサポートしている。

Surrogates and Supplementary Characters

で、それってつまりどのUnicodeバージョンをサポートしてるってこと?という回答となるっぽい文書。

Dr. International : Which Unicode Version Is Supported by Windows XP and Windows 2003 Server?

どちらもMSDNなので最も信用に足るソースだ。が、どっちもまだよく読んでない。

参考サイト

最終更新時刻: 2008年11月28日

覚えておきたいプログラミング言語 / [wish][book]Windowsプログラミング関係で欲しい本

覚えておきたいプログラミング言語

プログラマーとして、知っている言語が多いことはいいことだ。と思う。ではどんな言語がいいのかちょっと考えてみる。

きっかけになったのはmixiに端を発する次の論争

昔ながらの工場みたいな製造業的IT企業と、最近流行(?)のサービス業的IT企業のプログラミング言語からみた文化の断絶のお話だろうか?よく読んでないので論争自体には言及しない。

気になったのは元ネタとなった記事の面接官の一言

業務経歴書や得意な言語でPerlと答えると馬鹿にされる傾向がありませんか?

....(中略)...

「うちは Javaで飯食ってるので、そういう低レベルな言語を得意げに話されても困ります」 と言われました。(´・ω・`)ショボーン

突っ込みどころは多いが、とりあえず2点疑問を感じる。

  1. Javaで飯食ってるからperlが必要ない、というのは違うのでは?
  2. perlは高レベル言語(高級言語)であって低レベル言語(低級言語)ではない。低レベル言語とは機械語のような言語を指すのだ。

2は言葉遊びなので置いといて。(つ´∀`)つ

要するに、Java使いでもperl等のスクリプト言語は使えたほうがいいでしょ。と言いたい。

一般に言われる覚えておくといい言語として3つ挙げられる(どっかに書いてあったけどソース紛失)。

  • C/C++、VB、Java等のメインとなる言語
  • マシン語(デバッグ等いざというとき役に立つ)
  • スクリプト言語(ちょっとしたテキスト操作、ツール作成に使える)

ちょっとしたツールを作るのにスクリプト言語なら数行で済むものをJavaとかC/C++使って時間使うのは効率が悪い。

また、C/C++でコンパイラやAPIの内部でバグが発生してるような状況でマシン語が役に立つ。プロジェクトに一人そういう人がいると安心する。

Java使う会社ならJava使えるのは当たり前として+αの言語知ってるほうがうれしいと思う。マシン語は覚えるのにコストがかかるけど、スクリプト言語くらいなら一人一人が知ってるほうがいい。

Windowsプログラミング関係で欲しい本

Windowsプログラミング(特にマルチスレッド)関係で欲しい本が溜まってきたのでここらで整理。どれも内容が被る。「Advanced〜」を買ってから、マルチスレッドについて物足りなければ「Win32マルチスレッドプログラミング(Addison Wesleyの方)」で補完するのが良さそう。オライリーのはレビューによると独自ライブラリらしいのでちょっと躊躇う。

どれもお値段が張るので、立ち読みしてから決めよう。

Advanced Windows 改訂第4版(ジェフリー リッチャー/Jeffrey Richter/長尾 高弘/ロングテール)

Win32マルチスレッドプログラミング (Ascii Addison Wesley programming series)(ジェームズ ビバリッジ/ロバート ウィナー/James E. Beveridge/Robert Wiener/インフォビジョン)

Win32/C++ マルチスレッドプログラミング詳説(アーロン コーエン/マイク ウッドリング/Aaron Cohen/Mike Woodring/鈴木 慎司/金森 玲子)

最終更新時刻: 2008年12月29日