web-dev-qa-db-ja.com

人工知能プログラミング用の言語を選ぶには?

人工知能の目的に最適なプログラミング言語は何ですか?

提案された言語を使用して、私は任意のAIテクニック(または少なくともそのほとんど)を使用できなければならないことに注意してください。

38
mary.ja45

AI研究の残されたすべてのクールなひげを生やした教祖は、LISPを使用します:)

2つの大きなキャンプがあります。CommonLISPとSchemeです。それらは異なる構文などを持っています。両方のために書かれた良いものがたくさんあります。

Javaは非常に人気のある多目的言語ですが、クロージャーを1次オブジェクトとして渡すなど、AI /関数型プログラミングの興味深い機能の多くは、Javaで行うのが不格好です。

私の個人的な好みは、C#やF#などのWindowsy言語から離れることです。クールな人々はUnixの下で成長します。または、Linuxがクールでも貧弱な場合は。

Haskellでは、クールだが奇妙な人々がプログラムを組んでいます。かなり現代的なFPパフォーマンスの高い言語。一度試してみたところ、頭が痛くなりましたが、あなたは私よりも賢いかもしれません。


更新:スティーブの質問への回答。

  1. 私はUnixの変種にお金を払う人ではないでしょう。それが企業や研究機関が行うことです。アイデアは、何百万ものハードウェアに沈み込み、オペレーティングシステムに数千を払うことを躊躇しない衣装のAI調査をしたいということです。それは、カフェテリアで美味しい食べ物を食べたり、楽しい仕事をしたりするためによく支払う種類の服です。しかし、私は確かにLinuxをたたくわけではありません。

  2. F#はかっこいいかもしれませんが、Linuxやその他のUnixで実行するためにさまざまな問題が発生します(これが「windowsy」で意味したことです)、Windowsで動作したくない(つまり「」で意味したことです)。個人の好み")。

  3. 「windowsy」テーマについて詳しく説明すると、F#はOCamlのバリアントであると説明しました。私自身の確かに簡単な調査から、F#にはファンクター、OCamlスタイルのオブジェクト、ポリモーフィックバリアント、およびcamlp4プリプロセッサーが欠けているようです。ファンクタのない関数型言語?本当に?私が確かにそうであるように、Microsoftが嫌いな場合、彼らは先に進んで、完全に優れた関数型言語であるOCamlをCLRで実行できるようにクローバーしたため、「持っている」と主張することができました。関数型言語。最後に、私は疑っていないので、私はMicrosoftが常に製品の品質よりも市場の優位性を優先することを知っていますので、F#に触れるつもりはありません。しかし、これは私の個人的な好みであり、そのように明確に識別されていますが、私たちはmary.ja45に良い推奨を行うことを本当に重視しています。

私は、F#やOCamlやHaskellよりもLISPを推奨するより良い理由があります。これらは主に、AI分野の他の言語に対するLISPの歴史的な優勢に基づいています。

  • AI文学の大部分は、LISPまたはPrologで書かれたプログラムに基づいています。他に何もなければ、LISPについての十分な知識があれば、学生はサンプルプログラムを理解できます。私の個人的なお気に入りのAIメガプロジェクトであるCycには、Common LISPまたはCを選択できるランタイムがあります。

  • プログラミング言語のTIOBEインデックス(業界で見られ、使用されている)では、LISPが15位、Haskellが43位、F#およびOCamlが50位未満です。当然のことながら、市場での存在感は雇用機会と相関しています。

とはいえ、多くの若い「AIの興味深い」言語が急上昇する可能性は十分にあります。いくつかの主要な研究所がたとえばScalaで画期的なフィールド定義研究を発表した場合、Scalaの人気は研究コミュニティで急速に進歩し、産業界でも遅れをとっています。

私は(明らかに)F#の他の品質についてコメントすることはできませんが、あなたは私と同じように推奨を行うことができます。

43
Carl Smotricz

Pythonは、一般的な科学コミュニティで多く使用されているようです。多くのライブラリが利用可能で、簡単に学ぶことができます。

19

私はScala=をポットに投げます。

  • 関数型プログラミングに使用できます
  • それはJavaと同じくらい速く作ることができます
  • それは多くのニースの側面を持つ現代の言語です
  • JavaもAIで少し人気があるようで、それらすべてを使用できますJava Scalaのライブラリ

Scalaの基本的なAIコースのすべての演習を解きました。それは本当にうまくいきました。

14
ziggystar

私は個人的にAIプログラミングに Clojure を使用しており、それが優れた万能AI言語であることを発見しました。

理由:

  • それは[〜#〜] lisp [〜#〜]であり、Lispは歴史的にAIフィールドを非常に強力にしてきました
  • homoiconic 強力なマクロを備えた言語なので、コード生成や遺伝的プログラミングに最適です。これはAIプログラミングにとって驚くほど有用な特性です(この領域でのLISPの一般的な成功の一部を説明している可能性があります)。
  • それは、JVMで実行され、簡単にすべてのJavaライブラリにアクセスして、数値演算(Weka、Coltなど)を実行します)。
  • 迅速なインタラクティブ開発に適しています。これは非常に動的であり、実行中のClojure REPLでインタラクティブにほとんどすべてを行うことができます。再コンパイルなどは必要ありません。
12
mikera

「すべてのAI」とは、機械学習を意味する場合もあると思いますが、Matlab、R、Python + Scipyについては間違いなく言及する必要があります。

12
bayer

プログラミング環境がアカデミックかどうかはおそらく問題ですが、ほとんどの非アカデミックAIアプリケーション開発では、JavaまたはC++のような主流の言語を使用することをお勧めします。インターフェイスできるようにする必要があります。他の [〜#〜] cots [〜#〜] またはオープンソースのソフトウェアパッケージですぐに使用できます。これは、より「エキゾチック」な言語では困難または不可能になる場合があります。学術研究では、これは重要度の低い問題。

さらに、パフォーマンスは多くのアプリケーションにとって重要である可能性があり、主流の言語は通常、C++やJavaなどの最も高度に最適化されたコンパイラーを備えています。

LISP、Schemeなどの関数型プログラミング言語には、特定のAIメソッドの実装を容易にする特殊な機能があることは事実ですが、AIに関連するプログラミング全体(たとえば、定量的機械学習)には当てはまらないと思いますメソッドは通常、関数型言語を必要としません。機能的な構成と一般的なソフトウェアパッケージの両方にアクセスする必要がある場合、これを支援するためにいくつかの tools for LISP があり、最近開発された Clojure はLISPバリアントです。 JVMで実行され、Javaライブラリにアクセスできます。また、 Groovy は、クロージャのサポートを含む別のJVMベースの言語です。

最後に、一部のプログラマーは、パラダイムの柔軟性やAIプロジェクトの高速プロトタイピングを好みます。 RubyとPythonはどちらも、この理由から、スクリプトにも使用できるマルチパラダイム言語として、AI関連の使用法をいくつか見ています。

プログラミングのほとんどのことと同様に、AI開発で使用する言語の最良の答えは、最終的にはプロジェクトのニーズに依存します。

7
Joel Hoff

それは本当にあなたが見ている問題の種類に依存します。また、AIの分野にどのくらい「深く」入りたいのか。基本から学び、理論的なAIのものを実装するだけの場合は、LISPなどの関数型プログラミング(およびAIで実証済み)やプロローグなどの高レベル言語を使用してください。処理している問題セットがわかっていて、効率的にしたい場合は、Java、C++などのツールを使用して、ツールキットを使用してください。機械学習について言及しているため、JavaでWeka Toolkitを調べてください。

4
prasanna

他のプロジェクトの言語を選択するのと同じ方法で、AIテクニックを使用してプログラミング言語を選択します。

  • 解決しようとしている問題は何ですか?
  • 良いサポートはありますか
    言語?
  • お客様の要件は何ですか?

AIシステムの実装に使用する非常に優れたプログラミング言語として、Prologをお勧めします。

4
Davie

「最良の」言語はありません。それぞれにメリットがあります。私がAIを研究したときは、主にLISPとプロローグを使用していましたが、Java/C#を使用したAIで最も生産性が高く、F#には多くの機能があります。

3
spender

また、データセットのサイズにも依存します。 Webスケールのデータセットの場合、Map-Reduceを使用することができ、これはHadoopを意味します。 HadoopはJava-にありますが、Map-Reduce関数には任意の言語(Pythonなど)を使用できます。

2
mkbubba

「ハイレベルロジック」とエージェントスタイルの通信をサポートする、Javaで記述されたフレームワークはどうですか。

http://highlevellogic.blogspot.com/2010/11/when-will-we-have-artificial.html

2
Roger F. Gay

ワイカト大学が開発したJava weka と呼ばれるフレームワーク)もあります。質問の答えになるかどうかはわかりませんが、役立つかもしれません。

引用 wikipedia :"Wekaは、いくつかの標準的なデータマイニングタスク、より具体的には、データの前処理、クラスタリング、分類、回帰、視覚化"などをサポートしています。

1
Aif