コンピュータ観

コンピュータ観というのは,人それぞれが持っているコンピュータとはこんな感じ,というイメージのことです.

BASICから入った人は,繰り返し,条件分岐,変数といったものがコンピュータのように思っているのでしょうか.今のプログラミング教育でそういう教材だらけなのは,ほとんどの人がBASICやそれに似た言語を最初に触ったからなのかもしれません.

僕のコンピュータ観はちょっと違っています.僕はコンピュータを初めて触る前に,電子回路で遊んでました.トランジスタとかコンデンサーとかです.遊んでいたというのは,回路をちゃんと設計するにはきちんとした計算をしなければならないのですが,中学生の頃でしたからそんなことがわかるはずもなく,まずはちゃんと動く回路をそっくりコピーして,その後,一つずつ部品を入れ替えてはどうなるかを見る,ということをしてました.トランジスタが触れなくなるくらい熱くなるとか普通です.

その後,論理回路で遊びました.TTLというICです.論理回路の方はなんと中学生でもわかるのです.回路を設計するのに難しい計算はいりません.そうなるようにつなげば,ちゃんとそうなります.回路を作る前に予想を立てることができて,ちゃんとその予想通りに動くということです.

TTLは5Vという電源で動きます.まずICの2つの端子に0Vと5Vの電圧をかけます.そうすると残りの端子が動くようになると.その端子に0Vをつなぐと0,5Vをつなぐと1として計算してくれます.端子の出力には計算結果の0か1に応じて0Vか5Vが出てくるわけです.

どんな計算ができたかというと,僕が通販で買った一番すごいICは4桁の2進数を2つ足したり引いたり,いろんな計算ができる,というものでした.いろんな計算は足し算引き算のほかにANDとかORといった計算ができまして,全部で16種類の計算が用意されていました.

入力は4桁の2進数が2つで,出力は4桁の2進数が1つです.たしか入力には下の桁からの桁上がりの端子があったように思います.出力には上の桁への桁上がりがあります.それから16種類の計算を表すのに4つの端子が必要です.電源とかもろもろ含めて全部で20本くらいの端子があったように思います.

他にはラッチと呼ばれるICもありました.これは入力に来た0か1の数を記憶しておいて,入力の数が変わったとしても,出力は変わらないというものです.記憶する瞬間はシャッターのボタンを押したタイミングみたいな感じの端子もありました.その端子への入力が1から0に変わる瞬間を記憶するのです.ラッチはどれくらいの2進数の桁を覚えるかというのがありました.8ビットのラッチは8桁の2進数を覚えます.

他にはカウンターというICもありました.入力の端子が1から0に変わる瞬間に,自分が覚えている2進数を一つ数を増やします.数を増やすのと,覚えている数字を0にするという端子がありました.特殊なカウンターで,数を減らす端子を持っているのもありました.アップダウンカウンターといいます.どちらかの端子が1から0に変わる瞬間に覚えている数を増やしたり減らしたりします.2進法的にです.

デコーダーというICもありました.これは2進数がなんの数を表しているか変換する装置です.たとえば3桁のデコーダーは0から7までの数を表すので,8つの出力をもっています,入力の数に応じて出力はどれか一つが1になるというものです.

ドライバーというICもありました.ほとんどのICの出力は弱く大きな電流を流すことはできませんでした.LEDを光らせることもできませんでした.そこでドライバーというのを通してLEDにつなぎます.ドライバーは入力に対して大きな電流を流せるようにするICです.

実はこれらのICは全部等価回路といって,もっと小さな機能の組み合わせで表現してました.ラッチやカウンターはフリップフロップというものが桁の数だけ組み合わさって作られていました.フリップフロップはAND回路やOR回路というもっと基本的な機能の組み合わせで作られています.

すべての機能は最終的にはトランジスタの組み合わせになります.

一番最初に話した,計算するICですがトランジスタは何百個になったんだと思います.中学生のときの記憶だけでこのブログを書いているので,まちがっていたらすみません.

アップダウンカウンターとデコーダーとドライバーとLEDを何個か.それにプッシュスイッチが2つ.これで相撲ゲームをつくりました.2つのスイッチはカウンターの増える端子と減る端子につながれています.カウンターの4本の出力はデコーダーにつながれ4桁の2進数が16本の出力のどれかの端子にでてきます.それをドライバーで電流を大きくしてLEDを光らせます.カウンターを増やすか減らすかして真ん中のLEDを光らせるようにします.その後よーいドンで,二人で二つのスイッチを押し続けます.LEDは数によってずれてゆきますから,どちらかの土俵を超えた時点で負けになります.

実際にこれを僕は作って動かしたのか,作ったけどうまく動かなかったのか,それとも単に自分で作った回路を眺めてて作った気になってただけなのか覚えていません.全部作るだけのお金はなかったと思いますし.スイッチのチャタリングといって押したか押さないかの状態にしたときノイズのようなものが入って,1回で3回ぐらい押したことになってしまうということがあって,このゲームは簡単にずるができてしまったような気もします.

でもお金とアイデアがあればなんでもできたわけです.TTL規格表という本があってそこに全種類のTTLが等価回路付きでのっていて.僕はそれをむさぼるように読んでいたという中学生でした.コンピュータがなかったからやっていたのかもしれませんね.

僕のコンピュータ観はここからきています.いろんな小さな機能のブロックがあって,それをつなぐことでいろんなものが作れる.コンピュータのプログラムはその端子と端子をつなぐということを半田つけじゃなくて,これまた0と1の情報でやっているということなんだと.

いま,あっさりと端子と端子をつなぎかえること,と言ってしまいましたが,ここにすごいギャップがあります.

回路のつなぎかえを指定する方法はいろんなやりかたがあるはずで,現にいろんな方法が発明されてきたわけです.その一つが,みんなが知っている条件分岐とか繰り返しとか変数とかですが,当然それ以外にもありそうですよね.こういった認識の違いはコンピュータに最初に触れた経験からなのかなと思います.

中学になってまで,コンピュータに触れずに論理回路で遊べてた,という人は非常にまれなんでしょうね.

シェアする

  • このエントリーをはてなブックマークに追加

フォローする