2009/12/16

QtとC++に対するいろいろな思い

最近はよく翻訳の傍らGUIプログラミングについて勉強していて、QtとC++の組み合わせで作業しています。これに関してもいろいろと書いていきたいのですが、とりあえずこの2つについて雑感をてきとーに。
  • Qtは便利。あんまりオブジェクトの所有権や参照カウントなどを考えなくてもきちんとメモリ管理してくれる。deleteする必要があるのは親を指定せずに明示的にnewした場合とかだけ。
  • 文字列のエンコードに関して悩まなくなったこともグッド。
  • シグナルとスロット機構は従来のイベントドリブン形式よりも使いやすい。静的な言語なのに動的な機構を混ぜるなんて不思議なかんじ。
  • 後発のライブラリだけあって、やっぱり考え方は洗練されている印象。最近LGPLも可能になってより使いやすくなった。
  • 日本語の文献が殆どない。オライリー本は必須。
  • 時々意味不明のビルドエラーが出るときはmake cleanすると直ったりする(唯一の不満)。
  • C++の行数が多い。Qtのおかげでだいぶ削減されているけど、これで削減されているってどんだけー
  • もしMFCなんかで作業することを考えたら…おそろしやおそろしや
  • コンパイル速度が遅い。すごい遅い。これは自分のパソコンがヘタレなだけじゃない。C++が遅すぎるんだ。
  • アクセッサ関数を定義するのが面倒。_valを定義したらval()とsetVal()を定義しなきゃなんない。でも面倒ってだけでそんな悩んでない。
  • MyClass obj; みたいな文法でコンストラクタが呼び出されるのは怖い。気づかないところでエラー出る可能性がある。
    いや、禁止することはできるんだけど、いちいちそのコードを書かないといけない。普通こんな形で呼び出したい人いないでしょー
  • 参照にあまりエレガントさを感じない。だってあれポインタを隠蔽しただけじゃん。引数を変更禁止にしたいんだったらconstつければいいだけのような気がする。
  • リスト内表記使いたい。無名関数使いたい…これ使えればだいぶ行数減るのに
ということで、やっぱ整理してみたらQtにはあんまり不満はなくて、C++にはけっこうあることが判明しました。でも慣れれば不満は減っていくかもしれませんので、しばらくは続けていきたいと思います。

追記
  • λ式あるね
  • テンプレート、ジェネリック、メタプログラミングはもうすこし勉強する必要がありそう。C++は奥が深い