2012/09/24

文系のための「オペレーティングシステム」

よく、「やっぱり、Windows が良い!」とか、「いやいや、Macの方が良い!」、
っと言った会話を聞くことがある。結論から言うとどちらでも良いのであるが...。
まぁ、個人的には、「結局、Linuxが使いやすい。」という意見を支持したい。

さて、ここで出てきた、Windows とか、Mac とか、Linux というのは何なのだろうか?
本日の話題は、そのような話。役立つかもしれないし、役立たないかもしれない。
しかしながら、知っておいて損はしないような内容...にしたい。

この話題について議論するには、
コンピュータの仕組みについて、簡単に知っておく必要がある。

現在、私の前には、キーボードマウスディスプレイモニタ
そして、パソコンの本体が置いてある。当たり前の話であるが、
同等の装置類は、もちろん、ノートパソコンにも備わっている。

我々は普段意識することは無いのであるが、実は、パソコンの「」には、
様々な「装置」が詰まっていて、それらが同期することでパソコンは動いている。

」の役割を担うCPU
記憶」を担うハードディスク
脊髄」の役割を担うメモリ
仕草?」の役割を担うグラフィックボード
」と「」の役割を担うサウンドボード
...他にも色々な装置が詰まっている。

では、これら装置は、実際には、どのように動いているのか?

既に、述べたとおり、そもそも、コンピュータというのは「1」と「0」の信号を使って、
様々な情報をやり取りするのであった。もちろん、上で挙げた装置類も同様。
全て「1」と「0」の命令で動かしているのである。

言い方を変えると、コンピュータは「1」と「0」しか解らない、とも言える。
そして、コンピュータが理解できる言葉を「機械語」と呼ぶ。

一応、コンピュータとのやり取りは「会話」ということになっているので、
コンピュータへの命令文のことをプログラミング言語と呼ぶ。
もちろん、機械語プログラミング言語の一つ。もっとも、原始的ではあるけれど。

さて、残念なことに、私の周囲には、機械語プログラムを組んでいる人はいない。
私も機械語を使ったことは無い。何せ、全て「1」と「0」で記述するのだから。
機械が理解できる唯一のプログラム言語、それが、機械語

はっきり言って、「1」と「0」の羅列を入力するなど、正気の沙汰とは思えない
何らかのバグが発生し、プログラムを見直すとなれば...「1」と「0」羅列を見てできるか?
いやいや、無理無理。常人には、できません。そのような時代もあったらしいが...。

ということで、もう少し簡単に、と言う事で、4bitごとに区切って16進数で表現する。
この方法であれば、もう少し、見易くなるだろうし、なるほど、「1」と「0」よりはマシ
しかし、残念なことに、私の周囲では、16進数プログラムを書いている人もいない。

やはり、もう少し、人間にも易しい言葉コンピュータに命令を送りたい。
そういった状況があって、登場したのがアセンブリ言語
要するに、2進数あるいは16進数の命令をアルファベットのコマンドに置き換えたもの。

これは、もう少し楽。アセンブリ言語を使っている人は、意外に多い
実を言うと、私も素人ではあるけれど、必要に迫られて書くことがある。
仕組みが分かれば、なんとか、書けないことは無いし、色々と出来るのも事実。

以下は、ちょっとしたアセンブリ言語の例。
ちなみに、図中の「ldi」というのは、「Load Immediate」の略。
つまり、「値を入れてすぐに実行」ということ。人が見ても解りやすい


この例では、アセンブリ言語を使って、CPUに「1」と「0」の信号を送り、
一つの端子(ピン)に接続されたLEDライトを点灯させている。
ここには、8本のピンが並んでいるから、8bitの情報を送れるわけである。

これまでの話から、8bitの信号を送ることができれば、
グレースケール(灰色階調)の画像ASCIIコードも送れるし、
他にも色々な装置に命令を送ることができるのである。

なるほど。コンピュータはこのような仕組みで動いているのである。
この仕組みが分かれば、どのような装置でも動かすことができそうである。
また、実際に送信する信号以外はアルファベットなので、理解もしやすい。

ところが、アセンブリ言語にも限界がある。実は、文法がCPUに依存するのである。
CPUの種類によって異なる「動作の仕組み」を理解しないといけないし、
他の装置を繋げるのであれば、それらの装置の仕組みも把握しないといけない...

うん?CPUや機器によって処理が異なる?そうなの?

我々が日常で使っているパソコンは、CPU周辺機器が変わっても問題が無い
そうそう。確かに、前に使っていたパソコンのソフト、新しいパソコンに入れても動くし、
プリンタやモニタを変えても正常に動いている。困ったことは無い。

上の話と噛み合わない。どういうことか?

根本的な問題として、CPUコンピュータに接続される装置が変わる度に、
プログラムを書き直すというのは非常に大変であるから、
CPUやその他の装置類とのやり取りを「中継」させれば良い。

確かに、アセンブリ言語機械語CPUに依存していても、
やりたい処理は共通している。だから、CPUへのの命令以外を抽象化し、
各々の実行環境で、CPUに合わせた命令文に翻訳すれば良い。

そのようなアイデアの下で生まれたプログラミング言語の一つに、
C言語と呼ばれるプログラミング言語というのがある。
聞いたことがある人もいるかもしれない。

以下、厳密には、色々と問題がある説明ではあるが、「ざっくり」と説明。
そうそう。情報学関係、機械工学の向けの説明ではないので悪しからず...。

C言語で書かれたプログラムは、実行環境に合わせてアセンブリ言語に変換され、
さらに、そのアセンブリ言語機械語に翻訳されて「1」と「0」の命令が実行される。

C言語機械語直接変換したり、アセンブリ埋め込んだり…色々とあるのだが、
このブログの読者の中には、アセンブリ言語やC言語で開発する人は居ないだろうし
とりあえず、なんとなく、そのような認識があれば、良いことしておこう。

とにかく、C言語の登場によって、装置類に関する知識が最低限で済むようになった
これが、重要なポイント。要するに、装置類への命令の部分が抽象化されるので、
アプリケーション・ソフトウェアは、命令を中継してくれるプログラムに命令を出せば良い

実は、この仕組みこそが、オペレーティング・システム(OS)
最も重要な仕事の一つなのである。つまり、C言語が志向したような仕組みによって、
アプリケーション・ソフトウェアの開発者は、煩わしい装置類の制御から開放されたのである

今の人は笑うかもしれない。かつては、コンピュータが変わればプログラムを書き直し、
周辺機器は買い直さないといけない、そんな時代があった。OSの存在は偉大なのである。
幸運なことに、私は、恵まれた時代の人なのでそのような経験は無い。

実際には、どのOSC言語で作られているわけでは無いし、
サポートするCPUの規格の種類も、全てのCPUというわけには行かない。
CPUの規格の種類に合わせて、様々な種類のOSが存在し得るのである。

では、OSにはどのような種類が存在するのだろうか?
実を言うと、数えきれないほど存在している。パソコンで言えば、
Windows系OS、Mac OS、Linux系OSが、現在の主流であろう。

携帯電話にだって、OSは存在している。最近では、iOSAndroidが有名であるし、
ちょっと前には、Symbian OS というOSもあった。ちょっと、マニアックかな?
そうそう、Blackberry OS や、携帯電話でないけれど、Palm OS というのもあった。

他にも色々。家電製品や車などには、国産のTRONというOSも存在している。
要するに、装置類とのやり取りが必要で、そのやり取りの部分を共通化する必要があれば、
目的に応じて様々なOSが必要となってくるのである。

かつて、OSというのは、愛想の無いものであったが、特にパソコン携帯電話OSは、
色々と「見た目」も凝ってきていて、OSの定義も大分変わってきたようである。
単に、様々な装置類との中継だけでなく、OS自身が提供する機能もかなり多い。

ここまでに解説した「OS」というのは、非常に限定された「狭義のOS」の話であって、
一般的に「OS」と呼ばれているのは、そうした、様々な機能を包括している。

さてさて、なぜ、わざわざこのような話をこのような話をこのブログで取り上げたのか?
実は、「OSの選択」という問題を議論しなければならないからである。
大半の人が、Windows を使用していると思うが、その前提を改める時期が来ている

OSは、アプリケーション・ソフトCPUを含めた様々な装置との連携の手段を提供し、
その一方で、アプリケーション・ソフトの多くはOSの機能に大きく依存する
一般的に言われている事で、実感することで、基本はそのようになっている。

ところが、最近では、OSへの依存度が急激に低減し始めているのである。
つまり、これまでは、Windowsしか選択できない状況が多大にあったのであるが、
現在では、場合によってはWindows である必要が無い。

これは、Windows の「是非」を問いているのではなく、
全世界的に「選択の幅」が広くなり始めていている、
そういう状況を、しっかりと認識しておくことが重要なのである。

逆に、MacLinux に乗り換えようと考える人には、
これらのOSが潜在的に持っている問題を認識する必要があるし、
一方的なWindows 批判をするべきでは無いだろう。

いずれにせよ、もはや、Windows の事だけ考えていれば良い時代は終わっていて、
情報管理の観点からは、OSに依存しない情報管理の方法を考える必要がある。
それは、情報管理の習慣、技術、手法の全てに及ぶ。

したがって、当然、文系の情報教育においても、
特定の環境アプリケーション・ソフトウェアへの依存も避けなくてはならないし
自律した環境の構築方法についても整理するべきなのである。

0 件のコメント:

コメントを投稿