2017年9月8日金曜日

(書評)「C言語」ポインタが理解できない理由-2011年の本

「C言語」ポインタが理解できない理由
 



筆者はC言語のポインタを理解しているつもりですが、かといって今、この場でC言語のプログラミングをしてみろ、と言われたら、100%バグを組み込むだろうという確信があります。

普段仕事で使わない言語だとこともあります。とはいえ、さすがに今のご時世で、C言語は滅多に使わないので、気にしないことにしますが。

とはいえ、ポインタという概念そのものは、これだけ時代が進んでも、まぁまぁ使われる気がするので、覚えるに越したことは無いと思います。

多くのDBはCやC++でドライバ等が組まれていて、たとえどんなに小さなアプリケーションでも、DBを使わないものはそう滅多に無いと思います。

DB利用アプリで、メモリ系のトラブルがあった時、ポインタとメモリアドレスの様子をすぐにイメージできれば、プロセスのメモリがどこにアサインされ、どのプロセスのデータセグメント上にあって、それがスタックなのかヒープなのか、といった筋道を立てた推理がしやすくなります。その点、ポインタの概念は、今後変わらない普遍的なものであり、エンジニアが備えるべき教養とも言えます。

「C言語」ポインタが理解できない理由は、このポインタの事だけに焦点を当てた本です。
ポインタの概念を理解しようとする上で、つまづくポイントは人それぞれです。

「ポインタのポインタ」でつまづいた人もいれば、ほぼ基本となる「メモリの使い方」の段階で、つまづいた人もいるはずです。
こうしたつまづきを経験した人にとって、本書はうってつけの本です。

本書を読む際、自分のハマりどころに直接ジャンプして、そこから読みすすむのも良いのですが、冒頭から読み進めるのをオススメします。
これは、筆者の個人的な体験からくるオススメであり「分かったつもり」をできるだけ排除する意味があります。筆者もそうだったのですが、ポインタについて、ある程度の難度まで習得したと思っていても、実はそれより前の段階で、理解や認識のモレがあった為に、つまづいてしまっていることがあり得るからです。これが「冒頭から順番に」をオススメする理由です。
本書のサンプルコードを試していきながら、ステップバイステップを実践していけば、ポインタの理解が深まることでしょう。

なお、「今時、自分のPCにC言語の開発環境なんて無い」という方もおられるとおもいます。安心してください。
昨今はWeb上で、様々なプログラム言語によるコーディングができるサービスが公開されています。

C言語のコード補完機能付きREPL※で、オススメしたいWebサービスは「repl.it」です。
C言語を選択すれば、すぐにコーディング環境がWebから利用できます。(Githubアカウントが必要です)

※REPL:Read-eval-print loop-読む、評価する、表示する、ループさせる、という一連のお試しコーディングができる環境の事
また、「自分のローカル」でREPLを構成したいと言う向きには、弊ブログの過去記事にて、CERNが提供するClingというREPLについて記載してありますので、そちらを参考にしてください。

本書の完全クリアで、是非ポインタをしっかり理解していただければとおもいます。

0 件のコメント:

コメントを投稿