KisoJava 5

改訂版基礎Javaを執筆するにあたって意識した事 その5

KisoJava 4」ではPart 1のサンプルについて考えた事を述べました。今回は、数値の表現や文字の表現について説明した理由について述べます。

プログラミングを意識するまでは、なぜ2進数しか扱えないコンピュータが文字を表示することができるのかを考えた事もない人が多いはずです。そのせいか、コンピュータ画面に表示される「1」は、内部でも1の値だと勘違いしてしまう人が多いようです。何を言っているのか難しいですね。説明がしにくいのですが、文字としての「1」と数値としての「1」は違うものなのですが、それがなかなか理解できないのです。

プログラミングを理解するにあたり、このことについて理解することは、実は必須ではありません。計算ができればいいということなら、JavaであればIntegerなどを使って計算すれば何の問題もなく計算できますから、わざわざコンピュータ内で数値や文字がどのように表現されているのかというのは知らなくても、とりあえず、こう書けばいい、と覚えてしまえば、なんとかなるのです。

では、なぜわざわざ書いたのかというと、日本語を扱うにあたっては必ず文字の表現方法については理解が必要となる場面に会いますし、そのときに文字コードの原理だけでも知っておけばずいぶんと違うだろうと思ったのと、整数や小数点数もどうやって2進数で表現しているのかを原理的に知っておけば応用がききますから、避けて通るべきではないと考えたのです。こういった表現方法がいろいろあるということを理解できると、データ型がなぜ存在しているのかも理由がわかるはずです。データ型を導入することにより、メモリをどうやって使うのか、どの領域に文字をいれるのか、数値をいるのか、といった計算を人間がしなくても済むようになりました。こういった計算は、ソースコードをコンパイラがコンパイルするときに行って、問題がないかチェックしてくれるようになったのです。

また、単純なプログラムを使う事で、2進数の世界を簡単に表現できるのも、ぱっと見は地味なのですが奥が深くて良い例題だと思っています。「ファイルにどんな値が入っているのかをバイナリデータとして表示するプログラム」というのは、ファイルを生成するプログラムなどで文字化けが発生していた時に確認のために使えたりします。もちろん便利な既存のツールを使ってチェックすることもできますが、そういったツールがどうやって実装されているのか想像できるようになるという点が重要だと考えています。

問題解決のためにダンプデータをとるといった作業を、学習の最初の方で経験しておけば、次にそれが必要な場面に出会ったときに、それほど難しい作業だとは思わないのではないでしょうか。そういったプログラムはプログラミング学習とは別の機会に勉強すればいいのかもしれませんが、せっかくプログラムを作るのだから、後でも役に立つプログラムをと思ったのです。もちろん、プログラム自体よりは、アイデアというか、考え方が後でも役に立つというのが重要だと思っています。そういう意味で、地味ですがいいプログラムをサンプルとして提示できていると自負しています。

ところで、残念だったのは、画像ファイルを解析するプログラムも提示したかったのですが、都合により採用にいたらなかったという点です。ここのブログで、BMPファイルを解析するためのCで書かれたプログラムを紹介しているのですが、それのJava版も紹介したかったのです。ところが、そこまで気力がでなかったり、紙面の都合もあったりで、ボツとなりました。画像ファイルのフォーマットは、それはそれで面白いので、また機会があったら紹介してみたいところです。

KisoJava 5」への1件のフィードバック

  1. ピンバック: hiro345

コメントは停止中です。

同じカテゴリの記事: Java
同じカテゴリの記事: KisoJava
同じカテゴリの記事: Program