数十年の間、AIに選ばれたプログラミング言語はPrologまたはLISP でしたが、あまり知られていない他の言語もいくつかありました。それらのほとんどは、70年代以前に設計されました。
他の多くのドメイン固有の言語では多くの変更が発生しますが、AIドメインではWeb固有の言語やスクリプトなどほど表面化されていませんでした。
AIのゲームを変更し、以前の言語の不足から学ぶことを目的とした最近のプログラミング言語はありますか?
数十年の間、AIに選ばれたプログラミング言語はPrologまたはLISP でしたが、あまり知られていない他の言語もいくつかありました。それらのほとんどは、70年代以前に設計されました。
他の多くのドメイン固有の言語では多くの変更が発生しますが、AIドメインではWeb固有の言語やスクリプトなどほど表面化されていませんでした。
AIのゲームを変更し、以前の言語の不足から学ぶことを目的とした最近のプログラミング言語はありますか?
回答:
スタンフォード大学で教えたオンラインで参加したAIコースでは、宿題にPythonを使用することを推奨しました。ジョージア工科大学はまだLISPを使用していると思います。
ここでの誤fallは「新しい」ことは「良い」ことです。AI研究は、最も古いコンピューティング研究分野の1つです。人々は、それからの技術が他の場所で使用できることを理解するので、サブフィールドから離れ続けます。言語処理、機械学習、およびデータマイニングはすべて、膨大な数の言語を使用する「実用的な」アプリケーションの例です。
そのため、関連する分野の膨大な配列に洗練されたよりも、メインフィールドが変わったということはありません。「科学計算」と言って、線形方程式を解くことを意味することを期待しているようなものです。
あなたが言及した言語は、過去20年か30年でかなり進化しました。LispはCommon LispとClojureを生み出しました。Prologは、Visual Prolog(オブジェクトを持っています...)とMercury(HaskellとPrologを一緒に部屋に閉じ込めて...遠くに立って実行する準備をしました)を生み出しました。
AI研究がより理論的であることを考えると、実用性(言語)ではなく理論(数学)に焦点を当てることは理にかなっています。
そうは言っても、私が賭けたいAIテクノロジーの最大の革新者はGoogleです。彼らはPythonを好む傾向があります(そしてGoとDartですが、それは重要ではありません)。したがって、Pythonは「最近選択された言語」であると思いますが、HaskellまたはOCamlまたはF#またはC#またはJavaを使用することもできます。
あなたの質問に対する答えは、Springerが発行したドイツのAIジャーナルKI-KünstlicheIntelligenz、Volume 26、Number 1の最近の特別号「Sprachen der KI」(「Languages of AI」)にあります。私はそれに含まれるディスカッションペーパーの一部の共著者です。「AIプログラムを作成するために使用する言語とその理由」を次に示します。http : //ai.cs.unibas.ch /papers/schmid-et-al-kijournal2012.pdf
要約すると、一部のAI研究者は、依然として古典的なAI言語LispおよびPrologを誓っています。その他は、C ++、Java、Pythonなどの主流言語を使用します。さらに、新しい難解なプログラミング言語を探求することを好む人もいます。
AIには特別なプログラミング言語を必要とする特別なものは何もないと思います。一般に研究者が望むのは、ラピッドプロトタイピングを可能にするプログラミング言語です。これは古いAI言語(Lisp、Prolog)と新しい「スクリプト」言語(Perl、Python、Ruby、またはClojureなどの最近のJVM言語)が最適です。
一部の研究者は、プロトタイピングを超えたい、または特別な要件(ビッグデータなど)を持ち、探索的プログラミングフェーズが終了してC、C ++、Javaなどのコンパイル済みまたは強く型付けされた言語でアルゴリズムを再実装する必要がある問題のより良い把握。ある人は、その時点で(問題がよく理解されているとき)、あなたはもはやAIを扱っていないと言うでしょう。
最後の質問に戻って、私が知っている新しいAI言語の重要な開発はすべて、制約ベースのプログラミングに触発されています。SICStusやSWIなどのProlog実装に入った人もいれば、MercuryやMozart / OzなどのPrologに似た言語を生み出した人もいます。もちろん、私が知らない重要な新しい開発がある可能性があります。
これらの回答のほとんどは、あなたが質問で使用したため、「言語」という言葉に焦点を当てていますが、AIを考える際に特定の言語を考える必要があるとは思いません。
私はこのテクノロジーを長年使用しており、現在はProof Assistantsを使用しており、一部のコードをOCamlからF#に変換しています。AIを実現するのは言語ではなく、その言語に実装された特定のアルゴリズムです。PROLOGの場合、これは統合に基づく推論エンジンです。統一から始めて、それが長年にわたってどのようにカスタマイズされ、進歩してきたかを見てみると、あなたが求めている進歩の進行を見つけると思います。言語に集中せず、アルゴリズムに集中してください。
例として、関数型言語の型推論では、統一に基づくHindley–Milnerを使用します。
証明支援への別の例を具体的には、あるここで、通知prolog.ml。プロローグの推論エンジンはOCamlで実装され、F#に変換されます。そのため、OCamlとF#は通常AI言語として言及されていませんが、AIアルゴリズムを完全に実装できます。
AIの意味に依存すると思います。一般に機械学習では、ツールの急速な進化が見られるため、特に確率的なグラフィカルモデルを使用した分類、クラスタリング、およびその他の形式の教師あり学習と教師なし学習のアルゴリズムが、Python、C#、Ruby、OCaml、およびJava、ほんの数例を挙げます。
推奨エンジン、協調フィルタリング、またはその他の種類の教師なしまたは教師あり学習問題のようなものを構築するためにデータの大規模な操作を行っている場合は、Mahoutをご覧ください。それ自体は実際には「プログラミング言語」ではありませんが、この種の問題に対するツールのセットです。モデルコードは、Javaで作成することも、groovy(動的で適度に表現力のある言語)やclojure(lispのような)などの他のJVM言語で作成することもできます。
あなたがLispを日付付きと考える理由がわかりません。他の言語(クロージャなど)の「新しい」言語機能のほとんどが起源である場所です。
もちろん、機械学習技術は一般に、バイナリロジックよりも確率モデルに向かって動いており、最も初期のAIの取り組みが始まった決定木スタイルのアプローチであるため、機械学習は分岐または大きなテントからの転換であると主張することができますAIの。
私が数年前に使用したAIの言語はPrologで、DelphiのようなIDEに付属するVisual Prologバージョンがあります。
Prolog(およびそのGUIバージョンVisual Prolog)は、人工知能と計算言語学に関連付けられた汎用ロジックプログラミング言語です。
ただし、最近の傾向は、C#、Java、Python、HaskellなどのOOP言語がAIアプリケーション向けにプログラム可能になっていることを示しています。