「プログラミング言語C++第四版」について気が付いたことなど (1)

分かりにくい訳


12.1.6.1 constexprと参照

constexpr 関数 は、 副作用 が 認め られ て い ない ので、 局所 オブジェクト 以外 の 値 は 変更 でき ない。 その ため、 変更 し ない 限り は、 非 局所オブジェクトを利用できる。


原文:

A constexpr function cannot have side effects, so writing to nonlocal objects is not possible. However, a constexpr function can refer to nonlocal objects as long as it does not write to them.


試訳:

constexpr関数は副作用はもてない。従って非局所オブジェクトに対する書き込み操作は出来ないが、書き込まない限り参照することは出来る。


要するに

割と当たり前のことを言っているのに「そのため」のせいで分かりにくくなっているという … 。

「プログラミング言語C++第四版」について気が付いたことなど (0)

C++98(もう30年も前の規格ですね)で止まっている知識のアップデートをはかるべく「プログラミング言語C++第四版」(ビャーネ・ストラウストラップ著、柴田望洋訳)を読みました。この本はC++11が対象で最新のC++17より6年も前の規格を対象にした本なんですけど、ストラウストラップによる教科書は今のところこれ(4th Edition)が一番新しいですし実用的にはそろそろこの2011年規格が普通に使えるようになってきたくらいなもんじゃないかと思ってますもので、まあ、今齧るにはこの辺りが適当かな、と。この邦訳本が出たのも2015年ですし。

少々古いとは言っても、C++11にはこれまで見たことない書き方やライブラリが沢山追加されていて、一体誰がこんなマニアックな言語仕様やライブラリのサポートを必要としているのだろうと怪訝に思う反面、何も律儀に全機能を使う必要は無いのですし、これまでは制約があって素直に書けなかったところやごちゃごちゃ長々と書くしかなかったところなど、古いやり方にこだわらないで使えるところは柔軟に使っていこうと思います。autoや範囲for文は素直に便利ですし、マルチスレッドのサポートが標準に組み込まれたので(ロックフリープログラミングは難解ですが)マルチプラットフォームなプログラムを書くのが楽になりますし、なにより他人の書いたものが読めないようでは困りますしね。

さて、邦訳は全体的にはスムーズな翻訳だと思います。他の方による初期のエディションの翻訳に比べたらもう雲泥の差ですが、それでも、大部な本ということもあって学生さんの手でも借りたのか監訳者の目が届いていないのか、原文と比べるとどうも怪しいところが幾つかあるように思われます。柴田さんのWEBページに正誤表でもあればと思ったのですけれども、見当たらないので、ならばこの本を読まれる方の参考にでもなればと思い、その辺りを中心に気が付いたことなどメモ代わりに(そっと)書いておこうと思います。

誤解して欲しくないのですが、邦訳は全体的にはスムーズな読み易い訳です。このような良質の日本語の教科書があるのはとても幸せなことです。またもし、指摘の方が間違っているというようなことがあれば、記事にコメントして頂ければ幸いです。

タンゴレンバグ情報:「ファイル」→「閉じる」のショートカット

現象:「ファイル」→「閉じる」のショートカットキー(”C”)による操作が効きません。

対処法:当面マウスで選択して下さい。

修正予定:次期バージョン(Version1.1を予定)で対応します。

ご迷惑をお掛けして申し訳ありません。

 

adminというアカウント名はヤバい

WordPress のデフォの admin というアカウントは乗っ取りの対象になりやすいという話を聞いて、なるほどそりゃそうだなと思いました。このブログサイトを作った時にはそんなこと気にしないでほいほい初期設定のままでやっちゃいましたけど、 “adminというアカウント名はヤバい” の続きを読む

WideStudio Programming (5-2)
~WSCnwbase

本家のクラスライブラリレファレンスによれば WSCnwbase クラスは、

このクラスはウィンドウ資源を持たないクラスの基本となるサブクラスです。このサブクラスを基底とすると、ウィンドウ資源を持たないにもかかわらず、ウィンドウ資源を持つものと同じように振舞うことができます。

ということですが、実際には多くの「これウィンドウ資源持ってるよね」なクラスもここから派生されています。どういう事かというと、 “WideStudio Programming (5-2)
~WSCnwbase” の
続きを読む

WideStudio Programming (5-1)
~WSCbase

WSCbaseは、基底クラスを持たないデータ型クラスのようなものを除き、WideStudioで使われるすべてのパーツの基底クラスです。

WSCbase自体が持っている機能で重要なのは、まず何と言っても WSCbase という名前のクラスが存在することです。 “WideStudio Programming (5-1)
~WSCbase” の
続きを読む

WideStudio Programming (5)
~基本パーツの使い方

マニアックな話ばかりではつまらないと思いますので、しばらく基本的なパーツの使い方とノウハウを書いてみます。(WideStudioを取り上げているというところで既に充分マニアックかも知れませんけど) “WideStudio Programming (5)
~基本パーツの使い方” の
続きを読む

Windows8でChangeKey

日本語キーボードのオリジナル配列には何点か気に入らないところがあります。

まず一つ目はおなじみ、CAPS LOCKキーとCTRLキーの位置です。あと個人的に、Altキーの位置も気に入りません。Altは親指で押したいのですけど、ちょっと端っこ過ぎるのです。真ん中寄りの「無変換」とか「変換」なんてキーはまず使わないので、ここをつぶしてAltにするのが流儀です。 “Windows8でChangeKey” の続きを読む

NULの消し方

何かの拍子でNULという名前のファイルができてしまうことがあります。バックアップユーティリティにしてもWinZipにしても、NULという名前のファイルがあるとエラーになっちゃいますし、これ Explorer でも消せないしコマンドプロンプトのDELコマンドでも消せなくて往生こきます。 “NULの消し方” の続きを読む