memo/20120824
created 2012-08-24 modified 2012-08-24
スタックとキュー
ベストキッド:
「ワックス塗る。ワックスふき取る」 「ねぇコレ何の意味があるの?」 「これがすべての基本なんじゃよ」
PCキッド(旧時代):
「スタックにつむ。スタックからおろす」 以下同
PCキッド(これから):
「キューに入れる。キューから出す」 以下同
...ノイマン型コンピュータの基本の仕組みを変えなくていいけど、スタック方式じゃなくてキュー方式に変えようよ。
スタック方式ってのは、関数を呼び出して、戻ってくるっていう抽象化方式。シングルコア時代にはこれでよかった。
キュー方式ってのは、ベルトコンベア上のデータを加工するっていう抽象化方式。Unixパイプライン風、とも言う。マルチコア時代にはこれだ。
キューの実装はリングバッファでよい。
Indigo Girls の Ghost という曲の歌詞で、
I go follow to the river play your memory like the piper
という一節があります。これ、コンピュータプログラミングにも発想応用できると思う。
Stack and Queue
The Karate Kid (1984):
"Wax the wall. Wipe the wall." "What does it mean ?" "That is the BASIC of all."
The PC Kid (old era):
"Pushing to the stack. Poping from the stack." (same)
The PC Kid (new era):
"Pushing to the queue. Poping from the queue." (same)
... We don't need change the Neumann architecture, but I prefer not a stack, but a queue.
Stack Method is the abstraction of a function call and return.
In the times of Single Core, it was enough.
Queue Method is the abstraction of processing a data on a belt conveyor.
It is just like a Unix Pipe Lining.
In the times of Multi Core, that's it.
The ring buffer may be good for implementation.
There is a song called "Ghost", Indigo Girls sing like that:
I go follow to the river play your memory like the piper
I think it can be applied in Computer Programmings.
Thank you for your attention for my poor English. chao.