いやいや、goo blogを検索してたら凄い人がいた。
こういうブログを書いてるんだが。
75才からのプログラミング挑戦らしい。
んで、やっぱこういう人が凄いのって検索能力が高いんだよな。
この人、良く知らんが、MIT App Inverntorというプログラミング言語を「探し当てた」らしい。これが凄い。僕も正直言って初めて聞いたわ。
いや、「プログラミングをしたい!」とか言う「だけ」の人ってのは結構現れるんだけど(笑)、そもそも検索能力が低い人ばっかなんで、検索結果が良くない。
で、いきなりJavaScriptとかをはじめて、失敗して「やーめた!」ってなるんだよ(笑)。
検索能力が低いから、だ。
一方この人の場合は「やりたい/作りたい目的を」明確に定めて「一番目的に合致するツール」を探し出してきてる。
恐らく、ものすごく検索能力が高い。で、そういった人って元々アタマがいいんだよな(笑)。
しかも、失礼だけど(笑)、年齢的に既に定年してるわけじゃない(笑)。だから、「就職の為に」とか余計なノイズが入らないんだよな。直球勝負で「自分がやりたい事に合致するツール」を迷いなく選んでる。こういう事って通常、すごく決定しづらいんだよな。
「みんなに人気の言語」とか「就職するには」とか考えるとしばしば「言語選択に於いて決定を間違える」んだ。
大方の人って、マジな話、「色気を出して」失敗するんだよ。余計な「就職の為」とか言う情報を重要視して、「やりたい事/やれる事」自体が分かってないわけ。だからプログラミング言語を学ぶ = 暗号解読みたいになって辟易して「やーめた」になる。逆に言うと、殆どの人って「何かしたい」が明確じゃないんだ(「就職したい」は言語の外にあるんで、実はモティベーションにはならない、んだ)。
この人には全くそういうトコが見えないわけ。
すげぇな。大したモンだ。
んで、この人が選んだApp Inventor。見た目はこんなんだ。
「Scratchだ!」って思った(笑)。
Scratch。こんな見た目でもプログラミング言語処理系だ。MIT メディアラボ謹製。元々、子供へのプログラミング教育用として開発された。「コードを書く」のではなく、コード要素の「構文」をブロックとして組み合わせる事でプログラミングする。日本でも一部の人には絶大な人気を誇る。
App Inventor自体は元々Googleが自社製のスマートフォン用OS、Androidに向けて「簡単にプログラムが組めるように」と開発したらしい。それを今は、同様のインターフェースを持つScratchを開発したMITに寄贈したらしい。
いやでも簡単にAndroid用にアプリを作れる、ってぇのなら良いツールだと思う。貴方の持ってるスマホがAndroidで、なおかつアプリを作ってみたい、ってのなら良い選択肢だろう・・・・・・ただ、現時点では「要英語」らしいけどね(日本語化がまだ成されてない、との話だ)。
さて、Googleが開発した、と言うより「買収した」スマホ用OS、Androidだが、知ってる人は知ってるだろうが、実はこれはLinux系OSだ。つまり、カーネル自体は僕が使ってるPCのOS、Linuxと全く同じだ。
しかし「スマホ用」なんでカーネル周り以外はスマホに特化したアプリケーションに囲まれていて、それらはJavaで書かれてる。つまり、単純にはLinux + JavaってのがAndroidと言うOSだ。
そのため、Android用開発言語は、基本的にはJavaになっていて、あるいはJavaのJVM(Java仮想マシン)上で動くプログラミング言語を利用してアプリを記述する。
つまり、理論的には、App Inventorと言うプログラミング言語処理系はJVM上で動かないとならないわけなんだけれども・・・。
Wikipediaで確認すると面白い記述を発見した。
Android上で履行するためのビジュアルブロック言語を変換するコンパイラはパー・ボスナーが開発し、フリーソフトウェア財団によるGNUオペレーティングシステムの一部になっているKawaランゲージフレームワークやSchemeプログラミング言語におけるKawaの方言が使用されている。
ひゃあ!奥さん!App InventorのコンパイラではSchemeが使われてるんですってよ(笑)!
これすげぇな。「実用性に乏しい」って言われてるSchemeのかなり実用的な、ほぼ初めての(ある意味インフラ的な・笑)使用例じゃなかろうか。
コンパイラに使われてる、って事は恐らく、App Inventorの内部表現がSchemeコードになってて、JVM向けにコンパイルしてる、って事なんじゃないか。多分。
「Lispはそもそも汎用的なアセンブリ言語として作られた」を地で行ってる利用例だと思う。
なお、Kawaってのはこれで、Lisp系言語Scheme実装なんだけど、Javaで書かれている。つまり、KawaはJVM言語でもあり、JVM上で動くのを念頭に置かれた言語なのね。
要は、
App Inventor -> 低レベル -> Kawa -> 低レベル -> JVM on Android
と言うレイヤーの重なりになってる、ってこった。
これは朗報だよなぁ。App Inventorを使わないにしても、Android上ではScheme実装(Kawa)を使ってプログラミングが可能だ、って事じゃない。「非実用的だ」って言われてるSchemeでプログラミングが出来るかもしんない、ってのは夢が広がりんぐ、だ。
あ、俺のスマホはiPhoneだから関係なかったorz
余談だけど、Kawaはポーランド語で「コーヒー」の意味らしく、Javaがコーヒーをアイコンにしてる(ジャワコーヒー)にちなんで名付けられたらしい。
Javaのアイコン。コーヒーカップと「香り立つ湯気」がアイコンのモティーフになっている。そもそも、「Java」と言う名前になったのは、開発者達が通ってたコーヒーショップのメニューに「ジャワコーヒー」があったから、らしい。それを飲みまくってた、と(笑)。
残念!カレーじゃなかったね(笑)。
日本語では「ジャワ」だが、英語表記を見ると、キチンとJAVA CURRYになっている。