
お惚け老人、高々10日余り、病室に密閉。小人閑居して不善をなす? 突如、長年気になっていたFORTHを勉強すべしと思う。多分、この機会を逃したら死ぬまで無縁。やったら何かいい事あるのかは全く知らず。ただただ衝動に動かされるのみ。マニュアル読んでいると意見が一致、現代じゃ捻くれた見解かもだが。捻くれているのは当方もか。
※動作確認に使用させていただいているのは gforth 0.7.3 です。ホームページが以下に。
https://www.gnu.org/software/gforth/
※以下でのマニュアルの引用は以下のPDFファイルを参照させていただいとります。
Gforth for version 0.7.0, November 2, 2008
レイヤ一枚下はハード
FORTH言語は、半世紀以上も前に現れた古代の言語であります。まあ、FORTRANとかLispとかに比べると「新しい」けれども。そして登場の当初から今にいたるまで「マイナー言語」だったように思います(個人の見解です。すみません。)使った記憶のあるヒトもあまり居ないのでは?そもそも知らない?
しかし、半世紀以上前の登場から今にいたるまで、FORTHとその末裔どもは深く静かに「ニッチ」に生息しているみたいです。1980年代、お惚け老人(当時はまだ老人ではなかったが)は、某i社のICE(インサーキット・エミュレータ)の制御ソフトは実はFORTHで出来ていたと聞きました(今となっては真偽は不明。)最近でもブートローダとかファームウエアの世界で生き延びてるという噂。まあともかく「表の世界」に登場すること自体が稀。ソフトウエアにおける忍者のような存在かと。
華やかな表の世界に出てこない理由が、「板子一枚下は地獄」ならぬ「レイヤ一枚下はハード」な局面で暗躍する場合が多いから。言語仕様としては別にハードウエア制御に限定する必要はないと思うのだけれど。その特徴故か、組み込みシステムのそのまた奥で使われているイメージ。
FORTHと言えばスタックだが
FORTHと問えば「スタック」と答える人が多数、多分。RPN(リバース・ポーリッシュ・ノーテーション)オタクにはたまらぬ言語デス。しかし、お惚け老人思うに特徴の一つが以下す。以下は、マニュアルP.16からの引用です。
Forth does not perform type checking, neither at compile time, nor at run time.
つまり、「Forthには型チェックなんかねえ」ってこってす。マニュアル書いている中の人も、最近の若い衆(いや中年もか)は「タイプチェックが無いなんてなんて野蛮」とパニックを起こすんじゃないかと予想しているみたい。しかしそのおかげで自由なビットの海が広かっておると。もう一か所引用させていただきます。
you never have to work around the type system, so in most situations the lack of type-checking seems to be a win
私も常々思うのだけれども、モダーンな言語はみな堅牢な型システムがあるおかげでキビシーっす。まあ完璧な型チェックのお陰でバグが無くなるのだというけれども。こちとら、やりたいことは分かっているんだ、ビットパターンのレベルで。ソフトウエアのレイヤを下に降りていったら、あるのは0と1のビットのみ、その下はトランジスタっす。そこをちょいと弄りたいのに何やらお作法の厳しい型システムはメンドイばかり。そんなことを思っている時代遅れの捻くれものにはFORTHは嬉しい。この自由さはアセンブラと双璧。そして記述はアセンブラより遥かに簡潔。ただし慣れんと何が何やらサッパリだけれども。
次回からはGnu様のANS Forth準拠の処理系、Gforthを使わせていただいて実習を行っていきたいと思います。
May the Forth be with you
