Chapter 10

あとがき的な

dec9ue
dec9ue
2021.12.18に更新

C++は「最低限のリテラシー」のしきい値が不明確なプログラミング言語で、人によって理解のレベルにかなりばらつきがあります。C++を読み書きするにあたって、最低限度のムーブセマンティクスに対する理解は必須だと思います。しかし、実際問題として、2021年時点で「C++が書けますか?」という質問に対して「書けます」と回答する人の多くはムーブセマンティクスを理解していないと思われます。

日々、我も彼もプログラミング言語以外の問題に忙殺される中で、こういった言語に関する基本的理解のギャップを埋めていくのはなかなかに大変です。「C言語が書けるならC++も書けるだろう」といった邪悪な推測があることも考えると、コードのメンテナンスを人にお願いする際などは不安でたまりません。

そして、いっぽうで、C++を学ぶ上では雑音も多いと感じます。そもそも言語機能が細かく、多く、難解です。それから、意図的かどうかは別として、いきなり本人の理解から遠く離れたキーワード(たとえば、「完全転送」とか、prvalue/xvalueが、とか)を投げつけて混乱させてしまっている例も多々見受けられます。

プログラミング言語の習得の鍵になるものはメンタルモデルの確立ではないか、ということをずっと以前から考えていました。構文からはじめて習熟しながら覚えていく、という外国語学習のようなやり方は効率が悪いのではないかと考えていました。このようなやり方自体を否定するわけではないのですが、少なくとも、既存のコーディング経験者が他の言語を覚えるときにはこの手順よりももっと近道があるのではないかと思っていました。

このガイド(の前半)の記載にあたっては、「C++のコーディングに最低限必要なメンタルモデル」に絞って短時間で読めるように配慮しながら書いたつもりです。この試行が実際にうまく、みんなをハッピーにできる、一つの解になれば良いなと考えています。