2005年05月26日
川俣晶の縁側ソフトウェア技術雑記total 5454 count

実はとても価値がある? Whitespace言語の実装は教育的に価値があるか!?

Written By: 川俣 晶連絡先

 話題の(?)Whitespace言語ですが、檜山さんがJavaで実装しました。

 以下にそれがあります。

 これを見て思いましたね。

 私も実装したい!

 これでも、子供の頃はいくつもトイ言語の言語仕様を作ったり実装をも書いていました。

 まさに、趣味にジャストミートなテーマです。

 もちろん私が書くなら、Javaのごとき古くつまらない言語は使いません。今ならC++/CLIで書くのが楽しそうですね。

 しかし、時間がないので断念しました。とても辛いね~。

Whitespace言語の実装の教育的価値 §

 その代わりに、別の話題について書きます。

 檜山さんは以下のように書いています。

というのは、Whitespace言語ってすごく教育的な感じがしたのです。ここで「教育的」とは、皮肉とか逆説的な意味ではなくて、ほんとに教育に役立つってことですよ。このことを説明すると長くなりそうなので、それもキマイラ・サイト番外編かな。

 言語仕様をチェックして、これが実感として良く分かりました。(檜山さんの趣旨と同じかどうかは分かりませんが)

 このWhitespace言語というのは、シンプルで素直なスタックマシンを扱う言語です。

 スタックマシンは、プログラム言語で言うと私が大好きなFORTHが典型的でしょうか。ちなみに、私はFORTHのインタプリタを実装するのは大好きでしたが、FORTHでコーディングするのは大嫌いでした (汗。

 ここでは、スタックマシンの例としてFORTHの価値を語るのは不適切でしょう。

 それよりも、プログラム言語の処理系を実現する際の、多くの中間コード、仮想コードが、スタックマシンとして実現されていることに注目しましょう。

 つまり、我々がよく使うプログラム言語の処理系の一部が、ソースコードから実行可能なマシンコードに変換されていく過程で、スタックマシンというモデルを経由していると言うことです。

 なぜ、スタックマシンを経由するのかと言えば、これが非常にシンプルかつ強力な表現であるからです。普通のマシン語の命令体系では、たいてい複雑なアドレス指定が付いていて、それらを活かすようなプログラムは複雑化します。それに対して、スタックマシンは全ての操作がスタックを対象としていて、かつ、スタックは暗黙的に存在が仮定されるために、それを指定するパラメタもありません。つまり、複雑なアドレス指定のようなものは、一切存在しません。(それが必要なら、間接的な表現で実現する)

 この相違は、普通のよくあるCPUのエミュレータと、スタックマシンの仮想マシン語のエミュレータを両方実装してみると良く分かります。後者の方が圧倒的にシンプルです。

 そして、シンプルなモデルは、様々な付加価値的な機能の実装をやりやすくします。たとえば、コードの最適化など。

 つまり、スタックマシンは、プログラム言語処理系を学ぶ上で避けては通れない基本の1つです。いや、偉そうなことを言いつつ、私はきちんとプログラム言語処理系を学んだことなど無いのだけど (汗。

 しかし単に避けて通れないだけではありません。人の都合に偏りすぎた高級言語のソースコードの表現でもない。マシンの都合に偏り過ぎた低レベルのマシン語の表現でもない。その中間に位置する抽象的かつシンプルで美しい表現を知ることは、一種の快楽であるとも言えるでしょう。

 (うーん、プログラム言語ミーハー冥利に尽きる一言が書けて嬉しい)

Facebook

トラックバック一覧

2005年05月27日[雑記/備忘]Whitespace言語が教育的な理由From: 檜山正幸のキマイラ飼育記

2005-05-23 「Whitespace(6):続きはあるのか?」より: >> 同じネタ(しかもあのテの)で、あまりに引っ張ると鬱陶しい、シツコイ、っていうか自分でもしんどくなる(笑)から、…(省略) 「実はとても価値がある? Whitespace言語の実装は教育的に価値があるか!?」 さて、日常雑談からソフトウェアの話題に格上げ(?)して話を続行します。 僕が「Whitespace言語は教育的だ」と思った理由のひとつは、川俣さんと同様に、スタックマシン(仮想機械)を体験できることです。が、それ ... 続きを読む

キーワード【 川俣晶の縁側ソフトウェア技術雑記
【技術雑記】の次のコンテンツ
2005年
05月
30日
それがスタックマシンの威力だ! Whitespace言語の字句解析や構文解析が簡単である必然性
3days 0 count
total 2671 count
【技術雑記】の前のコンテンツ
2005年
05月
23日
大ざっぱで当てにならないW3C XML Schema問題の要約
3days 0 count
total 5162 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

https://mag.autumn.org/tb.aspx/20050526165549
サイトの表紙【技術雑記】の表紙【技術雑記】のコンテンツ全リスト 【技術雑記】の入手全リスト 【技術雑記】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.