まあまあ、何はともあれググってみると、「二進法の基本である1ビットの情報を一時的に”0″または”1″の状態として保持する(記憶する)ことができる論理回路」by wikipedia
フリップフロップで構成するRAMをSRAMというらしい。むむむ〜?SRAMなんて今どき使われていないだろう?DRAMだろう?DDR SDRAM。ダンスダンスレボリューションじゃなくて、だぶるでーたれいとしんくろなすでーらむなんじゃないかな?とか思ったが、どうやらぼくの思考回路の方がおかしかったらしい。
もう少しじっくりコトコトWikipediaを読んでみると、レジスタやキャッシュメモリに使われているのだそうだ。あ〜そうか。CPUの中に居る方の揮発性メモリの事だったようだ。L2とかL3とか。CPUのスペック表とかカタログを見るとよく見かけるアレの事だった。
そこそこググった結果から考えてみるとどうもこのくらいの事は一般的な知識の部類になるようで、どのくらい一般的かということを例えてみると、インフラをやりたいのであれば、Webエンジニアが知っておきたいインフラの基本を読んで、あぁこれくらいの内容は知っていて当然の事なんだなぁ…とか言っちゃってそっと棚に戻しちゃうくらいの事で、そんな感じに、IT業界にいるのであればそれくらいは嗜む程度には知っておいた方がいいんじゃないかなぁ?と言えるくらいの話だろう。
正直に書くと、Webエンジニアが知っておきたいインフラの基本にはとてもタメになることが書いてあり、Webエンジニアでもこれくらい知っている事なのか!とガクガクブルブルする本なのだけれど、それぐらいの強がりを言えるくらいがいいよね!言っていたいよね!
いにしえの授業の中でたしかに聞いた事のある単語だけれど、フリップフロップという名前だけを残して頭の中のメモリからはすっかり消えてしまったようだ。
さすが揮発性メモリに利用されるだけの事はある。
さて、実はここからが本題なのだ。何故フリップフロップを調べようと思ったのか思い出してみよう。
それは、プログラミング言語Rubyのなかで、論理フリップフロップ。フリップフロップ式。という単語がいきなり登場してきて、頭の中のブルースクリーンが崩壊したのだ。
もう意味が分かりません。
今回の疑問に対して重要だったことは一番最初の行にある
「二進法の基本である1ビットの情報を一時的に”0″または”1″の状態として保持する(記憶する)ことができる論理回路」by wikipedia
という、実はこの部分だけでした。レジスタとかキャッシュメモリというのはフリップフロップを利用していますよ〜。というだけで今回の疑問を解消してくれる答えではなかったのだ。しっかり読んでくれた人が居たらごめんなさいだ。敏感な人は「フリップフロップで構成するRAMを」という部分まで読んだ段階で、なんでこいついきなりRAMの話になってるの?バカなの?死ぬの?と思った事だろう。
こんな話に巻き込んでしまって本当にすまないと思っている。
重要なニュアンスは、「TrueかFalseに評価されるべく前回の状態・値を保持しているという事※1。」だと思われる。ので、それを踏まえて下記の式を確認してみる。
irb(main):034:0> (1..7).each {|x| print x if x==3..x==5 } 345=> 1..7
フリップフロップを作っているのは2個目の”..”ということになるらしい。先に述べた※1に添って考えてみると1個目の”..”な気がしてしまうのだが…
またじっくりコトコトと説明を読んでいくと謎は全て解けた。じっちゃんのナニ。
どうやら分からなかったのは文章を最後まで読まなかったかららしい。
推理小説を最後からめくれるような筈はなかった。
上の式の説明を言葉で読んでみて、そして自分で書いて見るとよく分かった。
読書は「アウトプット」が99% というタイトルの書籍を本屋さんでよく見かけるのだが、それが良かったのかもしれない。中身は読んだ事はない。
フリップフロップは1から7までの値を取る間に繰り返し評価される。式がTrueになるまでFalseを返し続ける。よって、x==1、x==2の間はFalseを返し続ける。、x==3になるとTrueにフリップする。x==3、x==4、x==5の間はTrueを返し続ける。x==5の時にFalseにフロップする。x==6、x==7の間はFailseを返す。
うむむ〜。授業の内容を一瞬思い出したような気がしたのだけれど、記憶のかけらが繋がりそうで繋がらない。今回は、見える。私にも見えるぞ!というところまでは行かないようです。
後半はわりと真面目に書いたので、見捨てないでください!
あじゃじゃしたー。