3

個人的な実験として、プログラミングや形式言語理論などについてよりよく学ぼうとするために、基本的に一連の方程式を取り込んで未知数を多かれ少なかれ自動的にまたはヒューリスティックに解く言語を書こうとしています。私はCでインタプリタを書くことでこれをやろうとしています.

それほど重要ではありませんが...もっと重要なことに、私はここ数日で関数型プログラミングを発見しました (つまり、ウィキペディアのエントリと簡単な Haskell チュートリアルを読んだことを意味します)。やりたいことに。

私が疑問に思っているのは、私が調べるべき他の言語、または同様のことをしようとするライブラリまたはプログラムを持つ非機能的な言語があるので、私が何であるかをよりよく理解できるようになるということです。するつもりですか?

また、インタープリターなどを書くための良い参考文献はありますか?

ありがとう。

PS ああ、私は Google を使用できるし、使用する必要があることを認識しています。私は側にいます。何よりも、何が良いのか、人々が以前に使用したものについて、「セカンドオピニオン」の集合体を探しています. また、私はここに来たばかりなので、コミュニティをもう少しよく知ろうとしています. お待ち頂きまして、ありがとうございます :-)

4

2 に答える 2

4

免責事項: 私はこの分野を真剣に調査したわけではありませんが、この小さな記事が役立つことを願っています。また、他の方からの回答をお待ちしています。

1つの中に複数の質問があると思います:

1) 方程式ソルバー。

象徴的に「未知数を解く」ことを意味する場合-それはあなたが始めようとしている仕事のかなり大きな山です, IMHO :-) あなたはコンピューター代数システムの作成に着手しようとしています.

用語の書き換えは、それ自体がかなり大きなトピックです。このレベルでの操作に特に関心がある場合、C を使用するのは最も簡単ではないかもしれません。おそらく、そのタスクについては Lisp を使用する方が簡単でしょう。

特に、方程式のすべてのセットに解があるわけではなく、解があるかどうかという事実を「ただ」把握することは、それ自体が難しい作業です。

一方、方程式を数値的に解くことに目を向けると、このようなものを見ると面白いかもしれません。

2) 関数型プログラミング全般。

Haskell はそのための優れた言語です (私はまだ初心者ですが、最もエレガントな言語の 1 つかもしれません)。OCaml は探求すべき別の道かもしれません。それから、もちろん、Scheme があります。Web プログラミングを扱っている場合、すぐに実用的な意味を持つ言語は XSLT です。

そしてもちろん、Ruby や Python で簡単に関数型スタイルを作成できます。新しい言語を学ぶと、「メイン」言語全体のプログラミング パターンがどのように変化するかを観察するのは非常に興味深いことです。つまり、言語理論であろうとなかろうと、触れる言語が多ければ多いほど良いのです。

3) 通訳等の執筆

質問の趣向を考えると、あなたがやりたいことの最も興味深い実用的なアプリケーションは、インタープリターではなく、コンパイラーの最適化コードになると思います。そのためには、ドラゴンブックMITコンピューター言語工学コースが最初に役立つと思います。次に、たとえばTCCのコピーを取得して、それで遊ぶことができます。慣習的でない何かをいじくり回したい場合は、ポーションを見てください。これは、x86 マシン コードを「バイトコード」として使用する非常に興味深い言語実験です (したがって、x86 マシンでのパフォーマンスは非常に優れています)。

SOに関するこの質問は、実際には上記の(3)からのリンクのほとんどを参照しており、さらにかなりの数のリンクを参照しています。

于 2009-08-10T23:05:09.830 に答える
2

Andrewが示唆したように、あなたが説明するものの中心は「コンピュータ代数システム」、より一般的には「用語書き換えシステム」として知られています。これらの2つの領域を読むことで、方向性を理解できるはずです。

そして、はい、関数型プログラミングが適切なパラダイムであることがわかると思います。おそらく論理プログラミングも。

私の勘は、通訳についてのあなたの質問は銃を飛び越えて、グリーンスパンの10番目のルールから生じるということです。

十分に複雑なCまたはFortranプログラムには、アドホックで非公式に指定された、バグの多い、CommonLispの半分の遅い実装が含まれています。

ここで、「CommonLisp」を「関数型プログラミング言語」に置き換えることができます。

言い換えれば、(数式処理システム用に)意識的に設計された関数型プログラミング言語を選択して採用する場合、無意識のうちに(そしてひどく)作成する必要はありません。

関数型言語の中で私の個人的なお気に入りはHaskellです。初心者にとって、Haskellには、まだプログラミングをしているときに、静的型付けを介して認めさせるという利点があります。

于 2009-08-11T17:31:30.543 に答える