2014年2月23日日曜日

ファイル

ハードディスクなどのストレージ上のデータを扱うのにファイルを使用するというのは多くの人が知っていることだと思います。

プログラミングにおいては、ファイルはもっと大きな意味を持っています。何度かコンピュータの基本は、CPUとメモリとI/Oという話をしていますが、ファイルはI/Oを抽象化して理解しやすくするために使います。

I/Oはディスプレイや、キーボードやハードディスクなどのデバイスが繋がっており、これらのデバイスとデータのやりとりをするのに、ファイルという概念を使用します。

例えば、C言語において、printf()の画面表示は、fprintf()でstdoutのファイルに書き込みをするのと同じ意味をもっています。このように画面表示もファイルとして扱っています。

Windowsでも似たような概念はありますが、Linuxではデバイスをファイルとして抽象化することが徹底されています(Plan9というOSの影響が大きいそうです)。

例えば、/dev/sdaはハードディスク自体で、/dev/sda1はパーティション、というようにファイルで表現されています。CPUも/proc/cpuinfoというファイルになっており、このファイルの中身を見ることでCPUの色々な情報を見ることができるようになっています。

そういう事もあり、ファイルという存在はコンピュータにとって非常に重要な存在であり、そのファイルを扱うソフトウェアのExplorer(Windowsの場合)は重要な役目を持っていました。



しかし、プログラマにとっては理解しやすいように作られたファイルも、コンピュータに詳しくない人には理解がしづらいものらしく、Explorerを使うことができない人もいるようです。

一時期アプリ中心からファイル中心の考え方にシフトしようとした時期がありました。例えばワープロで文書を作る場合に以下の二通りの作り方があります。
  • メニューからワープロソフトを起動する→文書を保存する
  • 文書ファイルを作る→文書ファイルからワープロソフトを起動する。
この後者の考え方にしようとしたのです。しかし、結局はうまく行かず、今では完全に前者が主流となっています。最近のスマホやタブレットでは、ファイルの存在をユーザーには見えないようにしていきつつあります。

プログラマにとっては必須のファイルは、今後はユーザー視点からは消えていくことになりそうです。

0 件のコメント:

コメントを投稿