2kバイトの壁なのだ。
う〜んどうしよう・・・・
どうも!
キテレツです。
部品を揃えてソフトウェアの設計に入ったのですが・・・・順調に思えた設計が後半になって大きな壁にぶつかりました。
メモリが足らない!!
のです。
キテレツが利用しようとしているのは、とても安価なメモリマップドI/OなCPUです。
なぜそんなCPUなのかと言うと・・・・安いからです。
もちろん、使いやすいのも理由の一つです。
そんなCPUでソフトウェアを設計していたら、あるライブラリの容量がかなり大きいことに気が付きまして、急遽様々な設計部分を変更しなければならなくなったのです。
どうする!?
キテレツが考案する道具は、初心者向けなモノですので、初心者が簡単に使えて楽しめるものでなければなりません。
あくまでも道具なので、道具を使うための道具の勉強を頑張らなければならないのでは意味がないのです。
少ないメモリでやりくりしようとすると・・・・どうしても複雑になってしまうので面白くなくなります。
独自の切り口を見つけよう
当初の設計から、大幅な見直しを余儀なくされている状況なのですが、利用者が楽しみながら試行錯誤できる道具を開発するって部分さえブレなければ大丈夫なので、多角的な角度からそれを考えてみよう。
マイコンを触っているのは楽しいんです。
マイコンを触っていて楽しいのは「創造性」の部分ですね。
同じコアを使っていても、接続するセンサーや動力によって様々なものに変化します。
プログラミングが面白いんじゃないんです。
プログラミングが面白ければ、パソコンに向かってLispでも勉強してれば一生勉強できます。
プログラミングはあくまでも、楽しむための道具の一つにすぎません。
本当の楽しみは、簡単に制御できるマイコンを駆使して、自分だけの何かを想像することなんです。
コンピュータ創世記の傑作
として名高いTK-85と呼ばれるマイコンがありました。
表示装置はランプで数字を表現する7セグメントLEDと呼ばれる物が8つ並んでいるだけ。
つまり、8桁の数字が電卓みたいに並んでるんですね。
操作盤は25個のボタンだけ。
まるで電卓のようないでたちです。
でも、組み立てただけでは電卓の機能すらありません。
つまり、組み立てただけじゃ何もできないんです。
今のようにC言語やBASICなんて動くようなシロモノじゃないから、マシン語と呼ばれる究極の低レベル言語でプログラミングしなきゃだめだったわけです。
マシン語プログラミングの経験がある方なら理解できる想いますが、アレは苦行ですね。(^^;
でも、コレがマニアに受けたわけです。
当時仕事で利用されていたオフィスコンピュータやミニコンほどの機能も持っておらず、どちらかというと「こんなもんどうやって使うんだ!?」ってノリの製品だったんですが、開発者もびっくりするほどのヒットになったんですね。
人気が日本全国に広がって、部品供給がi追いつかないところまで行っちゃった。
開発者もなぜ??って首をかしげたらしいんですが、キテレツには「なぜ売れたのか」が想像できます。
まぁ、あくまでもキテレツの考える明確な理由なんですけれどね。
その理由とは、「使えば使うほど手に馴染む、自分だけの道具(コンピュータ)で・・・携帯性と創造性に優れていた」からだと考えます。
モノ作りって楽しい
スパコンやオフコン、ミニコンなどと比べると機能は限定されているし電卓以下の状態で販売されていたわけです。
しかし、しばらく触りながら勉強してコツをつかめば、自分だけの電子コントローラーになるわけですね。
だって、立派なマイコンなんだもの。
中の仕組みを理解できれば、それをどうやって応用しようかと考えられる。
その試行錯誤が楽しいわけです。
そんな気持ちを多くの人に感じて欲しいなぁ
って思う、今日このごろです。
パソコンは複雑になりすぎてすべてを掌握することは不可能に近い状況にあります。
電卓ですら高機能すぎてびっくりするような製品が出てきてます。
最新のCPUなんて、素人が操作できるようなレベルのものじゃなくなってます。
つまり、全体的に敷居がたかくなっちゃって事なんですね。
んで、さらに・・・・悲しいことですが、コンピュータを勉強するのではなくWindowsを勉強するとか特定のプログラミング言語を勉強するってスタイルに変わってきてる。
たぶん、未来はプログラミング言語を勉強する必要すらなくなってしまって、ロジックを考えることに集中できるんだろうなってキテレツは想像してます。
基本に立ち返る
って事も忘れないでいたいなぁって思うんです。
ウン十年前からコンピュータはノイマンタイプのアーキテクチャが主流です。
自分の父親くらいの人が設計した内容のモノが現在でも動作しており、その思想は変わらず受け継がれていたりしています。
時計機能の作り方とかね。
そんな技術だからこそ、基本に立ち返り、古きを知ることで新しい何かを得る事が出来るってのもアリなんじゃないかなと。
プログラミング言語なら・・・・
Lispかな。
CommonLispとかEmacsLispとか。
びっくりするんだけれど、話題の最新言語の機能をすでに実装していたりするんですよね。
Lispなんてプログラミング言語の世界では化石くらい昔からある言語なのに、今の最新のプログラミング言語がLispの機能を強襲して「強力!!」って言われてる。
ガベージコレクションとか構造化とかオブジェクト指向とか・・・・当時のコンピュータではおよそ利用できないであろう重たい処理や難しい設計を実装してたなんて驚きです。
なので、キテレツはLispの勉強を少しずつ続けてるわけです。
実世界じゃ、なかなか使うチャンスは無いんですけれどね。
エディタのテキスト処理くらいかな。(Emacsなので)
ふぅ。
明日と明後日で、ソフトウェアの設計を再構成して、製造に入らなければ!!