web-dev-qa-db-ja.com

すべての文字列が有効なプログラムであるプログラミング言語はありますか?

固定アルファベット(ASCIIなど)の場合、これらの文字の可能なすべての置換が、実行可能な意味的に有効なプログラムであるようなチューリング完全プログラミング言語は存在しますか?

無限ループも意味的に有効であると見なします。

Markdownなどの一部のデータ形式は、普遍的な意味の有効性(すべての入力が有効)を持っていることは知っていますが、このプロパティを備えたプログラミング言語を思いのままにすることはできません。

10
mp-

無効なオペコードや引数がないため、すべてのオクテットシーケンスを有効なZ80コードとして解釈できます。同じことが他のさまざまなプロセッサにも当てはまると思いますが、私は個人的にZ80を知っています。

このような低レベルのものについては、「プログラムを実行する」とはどういう意味かという疑問にぶつかる可能性があります。

  • 初期化された空間の外にジャンプするとどうなりますか?
  • とにかく「プログラム」はどのように終了しますか?
10
Philip Kendall

プログラミング言語についてのそのような質問は、ほぼ普遍的に「はい」で答えられます。要求されたプロパティを持つ言語が現在ない場合、そのプロパティを持つ(おもちゃの)言語を作成するための挑戦として誰かがそれを見ると思うかもしれません。

アルファベット文字のすべての順列が構文的に有効である言語の例として、 空白文字言語 があります。この言語のアルファベット自体は、スペース、タブ、および改行で構成されています。

(文字の)文字列を解決する理由その質問を「任意の一連のトークン」に言い換える必要があります。ビットではなく、ビットは非常に20世紀のコンピューター風です。

したがって、無限ループは問題ありません。ゼロ除算はどうですか?有効性の定義に十分寛容であれば、「はい」になる可能性がありますが、ほとんどの組み合わせはまだ意味がありません。したがって、常に技術的に有効なプログラムを取得する可能性がありますが、意味的に有効なプログラムを取得することはほとんどありません。

0
Martin Maat