約1年間、プログラムを書くプログラムを書くことを考えていました。これは主に、いくつかの新しい概念を教えてくれる遊び心のある演習になります。私のインスピレーションは、ネゲントロピーと、秩序が混沌から出現し、新しい混沌が無秩序に無限に連続して発生する能力から来ました。
より具体的には、プログラムは短いランダムな文字列を書き込むことから始めます。文字列がコンパイルされると、プログラムは後で比較するためにログに記録します。文字列がコンパイルされない場合、プログラムはコンパイルされるまで書き直そうとします。より多くの文字列 (ミニ「役に立たない」プログラム) がログに記録されると、それらは類似性について解析され、文法の生成に使用されます。次に、この文法を利用して、純粋にランダムな文字列よりもコンパイルの可能性が高いより多くの文字列を書き込むことができます。
これは明らかにばかげたことではありませんが、このようなプログラムを試して成長させるのは楽しいだろうと思いました. そして副産物として、視覚化してアートと呼ぶことができるユニークなプログラムをたくさん手に入れました。
単純な構文と動的コンパイルのため、おそらくこれを Ruby で記述し、その後、ruby-processing を使用して処理で視覚化します。
私が知りたいのは:
- このタイプのプログラミングに名前はありますか?
- この分野には現在何が存在しますか?
- 主な貢献者は誰ですか?
- ボーナス!- コンパイルを超えて出力プログラムに手続き的に値を割り当てるには、どのような方法がありますか (y/n)?
このプログラムの機能を拡張して、パラメーターに基づいてプログラムを生成することもできますが、コンパイルするプログラムを実行し、プログラムの出力に意味を割り当てることによって、プログラムにこれらのパラメーターを定義させたいと考えています。この質問は、おまけとして妥当というよりはおそらく複雑ですが、このようなことを 23 行または 1 つのハイパーリンク未満で行う簡単な方法を考えられる場合は、それを回答に追加してください。
私はこれがメタプログラミングではないことを知っています.AIと生成アルゴリズムについて私が知っていることはほとんどありませんが、それらは通常、私が考えているよりも目標指向です. 最適なのは、自分自身を継続的に書き換えて改善するプログラムであり、その必要はありません ^_^