私は、意図的に (設計により) 同じコードを 2 回評価できない (つまり、ループできない) 専用の「プログラミング言語」を作成しました。基本的に、フローチャートの各要素が同じデータセットに対して異なるテストを実行する条件である、フローチャートのようなプロセスを説明するために作られています (変更することはできません)。ブランチは分割およびマージできますが、循環することはありません。フローチャートはそれ自体にループバックできません。分岐の最後に到達すると、現在の状態が返され、プログラムが終了します。
書き留めると、典型的なプログラムは表面的には純粋関数型言語のプログラムに似ていますが、再帰の形式が許可されておらず、関数が何も返すことができないという点が異なります。関数を終了する唯一の方法は、別の関数を呼び出すか、現在の状態を返す一般的な exit ステートメントを呼び出すことです。同様の効果は、構造化プログラミング言語を使用してすべてのループ ステートメントを削除するか、「非構造化」プログラミング言語を使用して、コード内で逆方向に進む goto または jmp ステートメントを禁止することによっても実現できます。
ここで私の質問は次のとおりです。そのような言語を簡潔かつ正確に説明する方法はありますか? 私は正式な CS のバックグラウンドがなく、オートマトン理論や形式言語理論に関する記事を理解するのが難しいので、少し途方に暮れています。私は自分の言語がチューリング完全ではないことを知っており、苦労して、自分の言語がおそらく「通常の言語」(つまり、読み取り専用のチューリング マシンによって評価できる言語) として分類できることを確信することができました。もっと具体的な用語はありますか?
一般的なプログラミングの概念に精通しているが、正式な CS のバックグラウンドを持っていない聴衆にとって、用語が直感的に理解できる場合はボーナス ポイントです。また、そのような言語を評価する特定の種類の機械または自動機械があれば、ボーナス ポイントも得られます。そうそう、データ ストリームを評価しているわけではないことに注意してください。すべての要素は、入力データの完全なセットに (読み取り専用で) アクセスできます。:)