Troff Turingは完成しましたか?


9

Troffは、マクロ定義の使用.deと分岐の両方をサポートしています.ifTroffユーザーマニュアルの 5ページと6ページを参照)。これら2つの点で、TeXと非常によく似ています。ただし、Troffで書かれた非常に複雑なプログラムについては知りません(TeXのTikZとは異なります)。Troff Turingは完成しましたか?

回答:


12

ESRのThe Art of Unix Programmingは次のように主張しています:

troffについては、第18章で詳しく説明します。今のところ、それは本格的なインタプリタであることを境界とする命令型ミニ言語の良い例であることを指摘するだけで十分です(条件付きと再帰はありますが、ループはありません。誤ってチューリング完全です)。

(「m4意図的にチューリング完全」と言われているとは対照的に、「偶然」。)


13

はい、troffはチューリング完全です。任意の再帰と条件付き分岐をサポートしていますが、これで十分です。また、データを保存するためのレジスタやその他のさまざまな方法があり、再び別のパスを提供します。

チューリングの完全性は、非常に複雑なプログラムが実用的であることを意味するのではなく、何らかの理由で削除のレベルで理論的に可能であることを意味しません。また、その欠如は、そうでないことを意味しないため、troffがチューリング完全であることも、複雑なプログラムがないからといって、そのことについては、どちらかと言えば何も示唆されません。


チューリングの完全性は、一般的に、ユーザーに役立つ何かを意味するプロパティではありません。つまり、チューリングマシンをシミュレートできるということです。望んでいることではなく、そこから得られる出力が期待どおりのものであるということでもありません。入力または出力は、単なる数値ではなく、何かが現れる回数でさえあり、有用なものではなく、シミュレーションを行うマシンの種類とそのプログラムは、最初はほとんど理解できない場合があります。

多くの言語やシステムが偶然にチューリング完全さではなく、合理的に適用可能なそのサブセットのいずれかの実際のプログラミングのために(例えば、コンウェイのライフやCSSのゲーム)、およびいくつかの言語です実際のプログラミングに便利なチューリング完全ではないされている(例えば、 Agda)。明確な特徴は本当にあなたができることです

  • 永遠に進み続ける
  • 好きなだけデータを覚えてください
  • 次に何をすべきかを選択します

多くの場合、これらのプロパティ-特に非終了-は実際には望ましくなく、おそらくtroffを含みます。理論的なコンピュータサイエンスと言語設計以外では、チューリングの完全性は、キャッチーであるにもかかわらず、事実上、それほど興味深いものではありません。


もちろん、それ自体はそれほど有用ではありませんが、それでも興味深いものです。たとえば、mov命令でさえチューリング完全です。
cutculus

4
@theindigamer- x86mov命令はチューリング完全です。(ルックアップテーブルを使用できるアドレッシングモードであり、同じニーモニックがロード、ストア、およびmov-immediateを使用して登録されます。)mov命令を持つ他の多くのISA (ARMなど)では、これは単なるreg-reg moveです。チューリング完全ではありません。(ただし、ARMではシフト/回転を実行できます。)また、命令ポインターが64kコードセグメントでラップして16ビットモードになっている場合を除いて、実際にjmpmov命令ブロックの周りにループを作成する必要があります。暗黙的にループします。
Peter Cordes

6
@SpaceBisonはもちろんあります:-) github.com/Battelle/movfuscator
ダニエルNäslund

2
@PeterCordes:ああ; 昔は、メモリにマップされたALUとIPを備えたMOVアーキテクチャがあり、JMPも別のMOVでした。
ジョシュア

1
@ジョシュア:面白い事実:32ビットARMは、PCを16個の汎用整数レジスタの1つとして公開します。 push {r4, lr}/ pop {r4,pc}は、1つの呼び出し保存レジスタを保存/復元し、スタックを揃えておく必要がある関数で一般的です。また、リンクregを保存し、プログラムカウンターにポップして戻ります。(32ビットARMのストア/ロード複数命令は、ビットフィールドを使用して、どのレジスタをストア/ロードするかを示します。)そして、そうですmov、命令の宛先としてPCを使用できます。でもそれが昔から一般的だったとは知りませんでした。しかし、私はトランスポートトリガーISAについて聞いていました。
Peter Cordes
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.