2011年4月16日土曜日

またつまらないものを作ってしまった

あー、新学期が5月からになってしまい、呆けているこすげです

キラカフェでの放射線の話も終わって、当面の目標がなくなってしまったのを、これ幸いに力一杯呆けているわけですが、またつまらんものを作ってしまいました。

いや、はじめは、まじめに実用品を作っていたんですね。学生の実習課題の管理システムなんですけど。。。それがなぜか、いつの間にか、algolAlpha ってプログラミング言語のバージョンアップを始めてしまって・・・
あ、algolAlphaってのは、表向き「教育用プログラミング言語」なんですけどね。それは表向きであって、、実際は怪しい実装満載のとてつもなく危険なプログラミング言語なんですな
まず、怪しい実装というのは、ソースコードの見た目、フツーの癖のない構造化言語なんですけどね。実は要素が、演算子として実装してあってですな。関数が存在しない(笑
で、とてつもなく危険というのは、データとプログラムの差がない。データがフツーに実行できちゃう訳ですな(爆笑。だからalgolAlphaにalgolAlphaのプログラムを書かせて、それが実行できちゃう自己増殖型。。。あまりの恐ろしさに門外不出にして、息子が成長するまで封印して・・・、おお、ついに「一子相伝のプログラミング言語」ができてしまったと。言語の名前も algolAlpha とか洋風の名前じゃなくて、「北斗真語」とかすればよかったかなと妄想に浸ることしばし。そういえば algolAlpha の Alpha ってうちの息子の名前(有羽 - アルファ)から取ったというか、わはは、思いっきり趣味に走った名前ですな。そういえば、algolAlphaのソースコードの一番はじめのコメントには「神は言った、まず、値あれ」とか、「演算子は知っている」なんて、怪しげなコメントがついていたりします(笑。

で、そんなこんなしているうちに、こんどは、やっぱり以前作った教育用のプログラムである Nuclear Robot Kaffir(原子力ロボットカフィール)の改造を始めてしまいました。もともと、Nuclear Robot Kaffir は、迷路中のロボットを出口まで誘導するプログラムを書いて、プログラムの制御構造が学べるよ~ん、ってモンだんだんですけどね
ええと、これ、僕が1993年にうちの学校の体験入学にために作ったんですけど、コンセプトがぱくられまくりで、あ、コンセプトをぱくるのは全く問題ないんですけどね、ぱくった物が「劣化コピー」ばかりで、かなーり不愉快な思いをしました。「ぱくるならオリジナルを超えろよ」って言いたいんですけどね。で、悪貨に良貨は駆逐されちゃったというか、自ら身を引いちゃったわけです

で、そんで、作り直したのは、迷路を誘導するわけじゃなくて、逆に軌跡を描いて遊ぶプログラムにしちゃえということで、プログラミング言語の構造としてスタック型の物を採用しました。それと同時に、継承とか多態性とかのオブジェクト指向的な要素と、メソッドの再帰呼び出しも(スタック型の言語だから当然)できるようにして脳内設計して作り出したんですけど、これもできてしまいました。


上は、代表的なフラクタル図形であるコッホ曲線で作った、コッホ雪片を描かせている動画で、下は僕が勝手に「無限の3分木」と呼んでいる図形を描かせたものです


いやー、実はアプリケーションに与えるプログラムがバグっているので、左から風が吹いて来ちゃっているんですけど(大笑。でも、結構気に入っていたりするので載せちゃいます
コッホ曲線のプログラムは、けっこーシンプルで

def   execKoch
<2> plus setLimit
EAST turnTo
<-75, 40> moveTo
<50> Koch <-120> turn
<50> Koch <-120> turn
<50> Koch <-120> turn
enddef

def Koch
$ISLIMIT KochLine
dup <3> div
Koch <60> turn
Koch <-120> turn
Koch <60> turn
Koch
dispose
enddef

def KochLine
dup forward <60> turn
dup forward <-120> turn
dup forward <60> turn
dup forward
enddef
こんな感じ。これを定義した後、コンソールから「<次数> execKoch」と入力すると、指定した次数のコッホ雪片を描いてくれます。命令は、まあ、見る人が見ればどんな動作をするのか分かっちゃうと思うので、勝手に想像してください

という訳で、「またつまらない物をつくってしまった」というお話でした。

2011年4月5日火曜日

2011年4月1日金曜日

与太話

ちょいとインターミッション

あるところで
「マクスウェルは、どうやって光速度不変を予言できたんですか?」
という質問?を聞きました。僕は予言なんかしていねぇと思うけどって答えたんですけど、
「マクスウェルが、光速度不変を、方程式から導いたと、最近聞いた。」
「それを再発見したのがアインシュタインなので、」
って言うんですね。で、それをテレビで聞いたと・・・。で、そこにトンデモさんがいて話に火を注ぐわけです。

うーん、こりゃいかん。

僕はそりゃないでしょ、って思ったのですが、残念ながら相対論から離れて20年以上、すぐにはちゃんと解説できる自信がなかったんで、保留にしたんですが・・・、で、以下がその保留にした僕なりの解凍です。

まず、光速度不変の原理とは、「真空中の光の速さは、光源の運動状態に影響されない」という原理です。
一方マックスウェルの方程式ってのは、


って4つの式からなる、電磁気学に関する法則です。そしてアインシュタインの特殊相対性理論以前に発表されている法則です。そして確かに電磁波の速度cを求めることは可能です。
しかし、そのことを持ってして、「マックスウェルが(アインシュタインに先立って)光速度不変を予言してたか」、「アインシュタインは(マックスウェルを)ぱくったのか」(←これは質問された方の発言ではなく、その場に居合わせたトンデモさんの発言ですが・・・)と言われると、「違う」というのが僕の考えです。

それを以下で説明したいと思います。

マックスウェルの方程式から電磁波の速度を求めることが可能であることは、先にも述べましたがが、マックスウェル自身はそのことに戸惑っていたと思われるのですね。
それはなぜかというと、電磁波というように光は波と考えられていたのですが、波が存在するためには、その波を伝える物質が必要になります。例えば「音」は空気が波を伝える物質になります。空気がないところでは、音は伝わりません。
なので、電磁波(光)が波である以上、電磁波(波)を伝える物質があるに違いないという推測が成り立ちます。そこで当時のその電磁波(波)を伝える物質の捜索が大々的に行われていました。
また、マックスウェルの方程式で導かれた電磁波(光)の速度は、誰から見た速度なのかという問題も出てきます。

いま、ある観測者に固定された慣性系からみて、光源がある速度vで動いているとしたら、観測者が観測する電磁波(光の速度は、光速度をcとすると、c+v または c-vになりマックスウェルの法則が成り立たなくなってしまいます。
そこで、無数に考えることができる慣性系のうち、マックスウェルの法則が厳密に成り立つ(光速度がcとなる)慣性系を「絶対慣性系」と名付け、その慣性系と地球との相対速度を観測してやろうという動きが出てきました。
そのなかで一番有名な実験が「マイケルソン・モーレイの実験」なのですが、その結果は、頸をかしげたくなる物だったのです。「マイケルソン・モーレイの実験」では、「絶対慣性系」と地球の相対速度は限りなく0だったんです。要は、どっち向きの光の速度を測定しても同じだという結果が得られました。

そこで、この現象の説明が数々考えられたのですが、それが有名な「ローレンツの収縮仮説」というものです。これは、絶対慣性系に対して物体が運動している時、その運動方向に向かって物質が収縮するという仮説で、この仮説を認めれば光の速度の観測から「絶対慣性系」と地球の相対速度の測定ができないという説明になります。

すなわち、マックスウェルをはじめとする、アインシュタインの特殊相対性理論以前の学者は、エーテルの存在を信じ、光速度が一定ではないのに一定として測定される矛盾を如何に説明するか、という立場に立っていたのだと思われます。

これでは、「光速度一定を予言したことにはならない」です。事実を知っていたとしても、その意味に気づかなかったのでは、意味がない・・・と、僕は思いますし、現代の物理学も、僕と同じように考えると思います。

さて、このことで実は僕は、すげぇ腹が立ったんですね。それは間違った認識を持ってしまった質問をした人に対してではありません。
質問をした人は、この話を「私は、テレビで聞いただけなので、原典までは知らないです。」と言っていました。これまでもテレビは、科学的事実とは異なる単なる与太話を、あたかも事実であるかのように無責任に発信したことが、何度もありました。かなり腹の立つ話です。