WindowsからGNU/Linuxに改宗した身として、WindowsとGNU/LinuxではBoostに対する感覚が違うことに気がついた。ここで問題にするのは、threadとかfilesystemとかの環境に依存した低級なライブラリの話である。regexなどの環境にあまり依存しない高級なライブラリは除く。
Windowsユーザーから見ると、BoostはWin32 APIの極めて限定的なサブセットをC++でラップしたライブラリである。WindowsでC++が必要な本物のプログラムが書きたければ、やはりWin32 APIを使わなければならない。どうせWin32 APIを直接使うなら、なぜ機能が削減されたBoostなど使う必要があるのか疑問だ。そのため、Windowsユーザーだった私は、Boostの低級なライブラリには興味を示せないでいた。移植性はあるだろうが、それ以外には魅力がない。STLに入ったライブラリは追いかけていたが、Boostまでは気にかける価値を感じなかったのだ。
ところが、GNU/Linuxユーザーから見ると、Boostは極めて高機能なライブラリである。もうこれなしではC++プログラミングなどできない。BoostはPOSIXの汚い設計を隠してくれるし、環境ごとの差異も隠してくれる。素晴らしいライブラリだ。
どうも、プログラマーとしてどっちが恵まれている環境なのか判断しかねる。Windowsは公式でスタイルが統一された高機能なAPIを多数提供している。GNU/LinuxがXを加えた環境で提供しているのは、機能は少ないしスタイルはバラバラで暗号的なAPIだ。ただし、今はWindowsでC++プログラミングなど冗談もいいところだ。WindowsではまともなC++コンパイラーは期待できない。GNU/Linuxの方が圧倒的にC++に恵まれている。
ああ、Windowsのように統一された低級から高級まで幅広くカバーするリッチなAPIに、GNU/Linuxの自由なソフトウェア文化と便利なパッケージシステムを兼ね備えたような環境が欲しい。世の中うまく行かないものだ。
Qtを試してみるのはどうでしょう?
ReplyDelete参考。
ReplyDeletehttp://www.hyuki.com/techinfo/knowhow.html
と、言うわけで X はグダグダではあるけれども「有益」とみなされているんでしょう。 きっと。