より高レベルの言語
次のステップは、C言語からもっと高レベルの言語を使うということだ。 python には組み込みプロセッサ用のバージョンがある。 BASIC や FORTH などもある。 これはプロセッサのためのコマンドシェルだ。 そして、これらは組み込みプロセッサ用の全てのバージョンのJavaScriptだ。
高レベルの言語を使うべきでない理由 僕はこれから、少しばかり、なぜ君たちはこれらの言語を用いるべきではないのかを説明しようと思う。 しかし、その前にそれらの言語を(一応)紹介しておこう。これはpython。これはBASIC。こちらはFOURTHだ。そして、これはコマンドインタープリターだ。それから、これは Espruino と言って、JavaScriptの一種だ。こちらは Tessel 。これは、もうひとつのJava Scriptだ。 では、問題について話そう。
●Samの実験 ここに僕の教え子が作成した Webページ があるんだけれども、僕の教え子であるSamはこの素晴らしい実験をやり始めた。彼がやろうとしているのは、君たちがひとつのピンから信号を送って、もうひとつのピンでそれを読み込み、ソフトウェアにその情報をインプットするというものだ。そして、これはリング・オシレータソフトウェアの画面だ。 この散布図は基板の価格と基板のスピードの関係を示したものだ。君たちは Rasberry Pi 上でpythonを動かした場合などのデータが見えるだろう。もしくは、 Arduino はキロヘルツオーダーと言うことも見て取れる。とあるARMはメガヘルツオーダーだ。他のARMファミリはもっと速いし、Rasberry Piは数MHz程度だ。XMEGAはそれより数倍速い。そして PSoC はそれよりも数倍程度速い。
●翻訳により処理速度が劇的に遅くなる で、問題点は、ここには書いていないんだけれども、先程紹介した言語は全て、翻訳された言語だということだ。処理が千倍遅くなる。 先程紹介したページに行けば、上位のレベルの言語を用いる環境を手に入れることができる。しかし、スピード対ハードウェアへの書き込みの比較を行うと約1,000倍の時間がかかってしまうんだ。
●ハードウェアに近い言語は軽快 君たちはこれらのナイスなプログラム言語を使うことができる。しかし、パフォーマンスを気にかけるのであれば、これらの言語を用いることによって、大きな代償を支払うことになる。こういう理由から僕は一般的にこれらの言語を組み込みシステムのプロジェクトに使用することはオススメしない。 なぜならば、一般的に言って、君たちは最小のプロセッサを用いたいと思っているだろうし、消費電力も最小にし、ピンも必要最低限にしようと思っているだろうからね。その代わりに、君たちは最速のパフォーマンスのものを使いたいと思っているだろうし、その為には君たちはハードウェアに近い言語を使いたいと思うんだ。
(つづく)
講義の目次は 【和訳版】FabAcademy 2016 からご覧ください。 ※この記事は FabAcademy 2016 におけるニール・ガーシェンフェルド教授(MIT)による講義動画をもとに作成しました。正確な訳ではないので間違っていたら指摘いただけるとありがたいです。