by antonin
検索
最新の記事
記事ランキング
タグ
雑感(302)
雑談(151) 妄想(126) ニュース(96) 散財(77) web(65) おバカ(59) 検索(54) 親バカ(45) 日本語(41) PC(40) 季節(39) 昔話(35) 信仰(31) 政治経済(29) イベント(27) 言語(25) 音楽(24) 言い訳(22) ビール(15) 以前の記事
最新のコメント
ライフログ
ブログパーツ
ブログジャンル
|
今年の春に受験し、なぜか採点に2か月以上も要した資格を取得できたので、勤め先に申請してみた。この申請の受理にもまた半年掛かったが、報奨金があるというので、受験費用と、あわよくばテキスト代くらいは戻ってくるかな、などと思っていたら、案外に額が良かった。なので、Amazonのカートに入れたまま金額的な問題からカビが生えていた技術書を何部か購入してみることにした。 内容は、古いコードに新しい技法を導入する、高邁な理想を泥臭い作業に落とし込む系の図書になった。ただまあ、実際のコードに関わる書籍はこれで打ち止めかなぁ、などという気もする。四十男に期待される仕事というのは、そういうものではない。それは承知なのだが、人生回り道をしてきたので、もうちょっとコードや開発ツールと戯れていたいという希望がある。 その本探しの途中で、ちょっと悲惨なものを見てしまった。 本の虫 日本語のC++参考書の行く末 以前からC++0x関連の話題でときどき参照させていただいており、お世話になっていたのだが、C++11の解説書籍執筆に専念するため、Knuth先生のように退職して作業に当たられていたようだ。しかしこれが経済的に仇となり、色々とアレだということが上記サイトに書かれている。また、C++以外のネタも全般的に面白く、その中でcookie clickerを軽妙な文体で紹介した記事がPVを集めたのだが、これもまた仇となり、変な粘着が湧いている。 その解説書の初版(XHTML版)が販売されているのだが、最低価格が¥5,000に設定されている。労力から見て妥当な金額だと思うが、私個人にとっても¥5,000というのは安い金額ではない。が、ここは有料で購入したいと思っている。深夜に決断するのはなんなので、目覚めたら購入手続きをしてみようと思う。そういえばWikipediaにもいくらか落とさないと悪いと思っているのだが、散発的な寄付よりは定期的な収入にこそ意義があり、そして定期的な寄付は私自身にもダメージが大きい。どうしたものか。 ところで、C++という言語が随分と随分なことになりつつあるのを実感している。C++11でこれまでの荒削りな部分はかなり洗練されたが、同時に学者の趣味のような機能も随分多く追加されていて、もともと巨大だった言語仕様がさらに大きくなり、標準文法の範疇の理解でさえ、もはや学部の卒論テーマになるレベルの規模と濃度になっている。しかもC++にはまだまだ仕様の不具合があり、言語的な完成はC++14の制定を待つ必要がある。また、処理系の実装もGCCとclangはこれに追随しているが、後続がない。 C++は自由度が高すぎて、安全行動を知っていれば非常に強力だが、うかつな行動をするとすぐに大事故を起こす、回転部がむき出しの工業機械のような言語になっている。大型の発電機の回転子に鉛筆を当てて削るような馬鹿げた芸当もできる一方で、繊細な機械時計のようなコードも書ける。まあどの言語だって基本は同じかもしれないが、WindowsならC#、MacやiOSならObjective-C、リチウム電池で数年動くような本当にpoorなプロセッサ用ならCと、各用途にはより単純でより安全な言語がある。 そもそもCを大規模開発に使っていたという異常な時期があって、それに対してC++という新たな選択肢が生まれたが、そういう方向であれば今ならJavaやC#などがあるし、プロセッサの処理効率よりも抽象度の高い記述を目指す方向ならPythonやRubyなどがある。そして先祖返りしたような、狭いメモリ領域で極小コードを極小電力で動かすような分野なら、実はmallocすら使わないピュアなCが一番効率がいい。わかっている人がストイックに使うなら、今でもCはとても洗練された良い言語だ。代入演算子が =- と書けるので単項演算子の結果を代入するのと区別できなかったような仕様バグを除けば、黎明期のC++の影響を受けたANSI-Cよりも、K&R初版時代の文法の方がより洗練されていると感じるくらいだ。 Cならソースコードからコンパイラがどういうマシンコードを吐くかだいたい想像が付くし、オブジェクトのサイズもpaddingまで含めてだいたい正しく見積もることができる。STLすらモッサリして使えないような環境では、raw配列非推奨、std::vectorやstd::deque上等のC++は何かと鬱陶しい。単なる値キャストを(foo)barと書かずにstatic_cast もちろん、C++でもCのテクニックはひと通り使えるのだが、そうすると通常の書籍から手に入る一般的なベストプラクティスとの不整合が起こる。そこにはもちろん対象分野固有のrationaleがあるので正しいことなのだが、そういう低水準の作業と、一般的書籍の手法が成立する高水準の作業とで動的にコーディングルールを切り替えながら作業ができる器用な人も少ない。C++を使いつつCに近い水準でコーディングをしようとすると、C++の「便利な」部分がCのストイックなコーディングスタイルを乱す要因となってしまい、逆にプログラマの混乱と油断を誘ってしまう。 杓子定規にMISRA-Cライクなルールを適用するツールをクリアしないと製品コードとして認めない管理者もあるが、Cでは成立しても、C++ではそういう機械的で単純な判定というのは、なかなか妥当なものとはならない。そういう判定も参考にはなるが、最終的な結論について変な宗教論争にならないためには、問題のスコープとその解決について技術的な共通認識が必要になる。 JSF++などは非常に洗練されたルールだし、理工系の修士号くらい持っていれば楽に理解できるものだとは思うが、逆にいうとそれくらいの知性は要求されてしまう。ルール全体の規模も、決して小さくはない。また、JSF++は固有分野の固有技術を隠蔽するライブラリの作成を必須として、その外側に雑多な詳細実装を持ってくるような設計を前提にしているのだが、その独自ライブラリを正しく構成できるエンジニアというのは、より高い技能が求められる。戦闘機の開発プロジェクトくらいならそういう人材が売るほど集まるのだろうが、そこいらの小規模な組込ソフトウェア開発プロジェクトに簡単に真似できるようなものでもない。 で、まあ、C++標準の次期メジャーバージョンが出るという2017年ごろには、C++という言語はとてもニッチなものに成り下がってしまっているのかもしれない。面白い言語に育ったとは思うが、「言語学者」のオモチャにされてしまったという印象もある。これと心中するという未来も中年男にとってはまんざらでもないのだが、目先の生活が成り立たないようでは、子持ち男としてはやはり困る。 まあ、「本の虫」の江添さんも、「強制移住」によって新たな可能性に目覚めて素敵なことになっているらしいので、案外世の中なんとかなるのかもしれない。
by antonin
| 2013-12-25 04:23
|
Trackback
|
Comments(0)
|
ファン申請 |
||