37

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

提案された言語を使用すると、任意の AI 技術 (または少なくともそれらのほとんど) を使用できる必要があることに注意してください。

4

12 に答える 12

43

AI研究の残りの部分にいるすべてのクールなひげを生やした達人は、Lispを使用しています:)

Common Lisp と Scheme という 2 つの大きな陣営があります。それらは異なる構文などを持っています。両方のために書かれたたくさんの良いものがあります。

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

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

Haskell でプログラミングするクールだが変な人たちもいます。優れたパフォーマンスを備えた、適度に最新の FP 言語。一度試してみましたが、脳が痛くなりました。しかし、あなたは私より賢いかもしれません。


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

  1. 私は Unix 版にお金を払うつもりはありません。それが企業や研究機関です。アイデアは、ハードウェアに数百万ドルを投入し、オペレーティング システムに数千ドルを支払うことを厭わない組織のために AI 研究を行いたいということです。それは、カフェテリアでおいしい食事をしたり、楽しい仕事をすることで十分なお金を払ったりする可能性が高い種類の服装です. しかし、決して Linux を否定しているわけではありません。

  2. F# はクールかもしれませんが、Linux やその他の Unix で実行するには多くの問題があり (これが "windowsy" の意味です)、Windows で作業したくありません (これが "windowsy" の意味です)。個人の好み")。

  3. 「windowsy」テーマについて詳しく説明するには: F# は OCaml のバリアントであると述べています。私自身の簡単な調査によると、F# にはファンクター、OCaml スタイルのオブジェクト、ポリモーフィック バリアント、camlp4 プリプロセッサが欠けているようです。ファンクターのない関数型言語? 本当に?私が認めているように、マイクロソフトが嫌いな人がいるとすれば、彼らは先に進んで、完全に優れた関数型言語である 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# の他の特性についてコメントすることはできませんが、私と同じように推奨事項を作成していただければ幸いです。

于 2009-12-09T23:10:41.653 に答える
19

Pythonは、一般的な科学界で多く使用されているようです。利用可能なライブラリがたくさんあり、簡単に学ぶことができます。

于 2009-12-12T12:56:30.290 に答える
14

Scala をポットに投入します。

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

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

于 2009-12-10T08:56:44.370 に答える
12

私は個人的にAIプログラミングにClojureを使用しており、それが優れたオールラウンダーAI言語であることがわかりました。

理由:

  • それはLispであり、Lispは歴史的にAI分野で非常に強力でした
  • これは強力なマクロを備えた同像性言語であり、コード生成や遺伝的プログラミングに最適です。これはAIプログラミングにとって驚くほど便利なプロパティです(そしておそらくこの分野でのLispの成功のいくつかを説明しています)
  • これはJVM上で実行され、数を計算するためにすべてのJavaライブラリ(Weka、Coltなど)に簡単にアクセスできます。
  • 迅速なインタラクティブ開発に適しています。非常に動的であり、実行中のClojureREPLでほとんどすべてをインタラクティブに実行できます。再コンパイルなどの必要はありません。
于 2011-10-13T05:22:48.843 に答える
7

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

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

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

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

プログラミングのほとんどのことと同様に、AI 開発でどの言語を使用するかについての最良の答えは、最終的にはプロジェクトのニーズによって異なります。

于 2010-06-20T10:36:01.967 に答える
4

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

  • あなたが解決しようとしている問題は何ですか?

  • その言語で利用できる適切なサポートはありますか?
  • 顧客の要件は何ですか?

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

于 2009-12-09T23:17:23.387 に答える
4

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

于 2009-12-09T23:02:35.770 に答える
3

「最高の」言語はありません。それぞれにメリットがあります。私が AI を勉強していたときは、主に Lisp と Prolog を使っていましたが、AI では Java/C# と F# を使ったほうが生産的でした。

于 2009-12-09T23:04:43.440 に答える
2

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

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

于 2010-11-18T13:05:29.710 に答える
2

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

于 2010-11-19T21:01:44.040 に答える
1

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

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

于 2009-12-12T13:03:21.130 に答える