2016-02-27 4 views
6

Prologの何が問題なのですか?PrologとErlang(その他の関数言語)

Prologはリストとパターンマッチングではかなり優れており、ボーナスとしてバックトラックを提供しています。それでも何十年にもわたって言語は離れていますが、関数型言語は盛んで繁栄しています。

例としてErlangを取ってください。その構文はPrologから借用されています。最初はPrologで実装されていますが、これは本当に面白いです。つまり、Erlangの立場からは、Prologに根本的に何か不具合があるか、Prologをニーズに適合させることになりました。

+1

[プロローグとは何か](https://www.sics.se/projects/sicstus-prolog-leading-prolog-technology)より大きいErlangを実行するシステムはありますか? – false

答えて

13

私の見解では、Prologは今やを開始し始めており、陪審員はまだこの質問には出ていません。

はい、PrologはErlangよりはるかに長い伝統を持っています。そして、それは多くの実装の観点からより複雑な言語です!例えばPrologの初心者の初めのいくつかの例として、他の言語の初心者のためにはまだ解決できないタスクが伝統的に与えられているという事実によって悪化することも、教えるのがずっと難しくなります。

はバックトラック、ガベージコレクション、エイリアシングの取得、プロローグは、その多くの場合、非常に微妙な相互依存性を尊重しながら、あなたに右と効率的なを与える当然のことながら、単に内で達成することができない何かであることを、変数、制約、例外を処理し、他の多くのものを帰せ最も才能のある教育を受けたプログラマーの何人かが参加しても、数十年はかかります。現在利用可能な多くのPrologシステムは、本番環境で真に使用できるようになっています。

Prologのダウンバージョンを効率的かつ正確にすることは比較的簡単です。本当のことではありません。

比較のために、のいずれかの重大なプログラムを実行し、その実装がどのくらいの期間行われたかを確認してください。最も興味深いプログラムは、最初のリリースから数十年後もまだ深刻な開発を受けています。 Prologと同じで、本格的なPrologシステムは他の多くの言語実装よりもはるかに多くを提供します。

そして、我々はがほしいと思っています本物!だから、はい、Prologに何か問題があります。正しい実装は難しいです。しかし、Prologは完全に実装された後、という驚くべきと驚くべきことですが、定理証明からウェブホスティングまで、あらゆる種類のタスクのための比類なき開発環境です。コンビナトリアル最適化問題、テストケース生成、および現在発生している他の多くのアプリケーションを解決します。

例えば、Erlang形式のプロセスは現在、Prolog用に開発されています。たとえば、TorbjörnLagerのPenginesを参照してください。

Prologでこれが現在(つまり、過去2年程度)使用できるようになるのはなぜですか?非常にシンプルです:多くのPrologシステム(この場合はSWI-Prolog)は、最近まで、24時間365日のWebサーバーを堅牢に稼働させるにはあまり似ていませんでした。 それはなぜですか? Prologの多くの高度な機能の微妙な相互依存性のために、この権利を得ることは難しいからです。ゆっくりと、私たちは最後にそこに着いています。

Prolog for the win!

+0

FWIWはTorbjornと電子メールを交換しただけで、プロセスは死んでいると彼は言う。しかし、penginesは確かにそうではありません – Anniepoo

+0

私はあなたが(オープンな)システムが現在、彼らが実際の仕事のために面白くなる成熟度に達しているという意味で正しいと思います。私はそれがずっと長いことが主な理由だと思いますが、それほど難しくありませんが、実装リソースが多すぎると開発リソースが細分化されています。さて、私たちはいくつかの良い実装を行っています。それでも、それぞれには非常に異なる点があります。理想的には、一緒に座って、YAPの速度とXSBの表、ECLiPSeの制約、SWI-Prologの環境とインターフェースを組み合わせた新しいシステムを組み立てるべきです。 –

+2

適合は役に立ちます – false

3

言語は、現実の問題を他の言語よりもよく主流に分類することができる必要があります。 Erlangについて言えば、何百万もの並行タスクを処理できるプリエンプティブなマルチタスキングによるソフトリアルタイムプログラミングの能力ではないなら、それは他の機能的な言語以上のものではありません。これに加えて、VMで実行できることが真に強力な組み合わせになります。その意味で、これらの追加はErlangをユニークにしました。実際には、業界で広く使用されているプログラミング言語はactor-orientedのみです。

C/C++のいくつかの方言が作成されていて、しかもC/C++が主流になっているかを調べます。これらの新しい方言は、既にそこにあったもの(あるいは、とにかく十分ではないもの)を上回っただけでは、何の利点も与えなかっただけです。

私はPrologがそのニッチを持っていると確信していますが、他の言語が提供できるものをあまり提供していないし、shortlist of problems on Wikipediaもいくつか価値ある考えを示唆しています。

+2

これは別の質問に対する答えのようです。 –

+0

なぜですか?問題は、Prologが主流にならず、Erlangが(少なくともある程度は)存在している理由でした。 ErlangがPrologにない要素を追加し、Erlangがユーザーを勝ち抜くためにどのように役立つかを説明します。 – Amiramix

関連する問題