質問

私はちょうど参加したテクノロジースタートアップのプロトタイプを作成しようとしています。使用する言語を決定しようとしています。これは、バックグラウンドでMySQLデータベースを使用し、その間にいくつかのAIを使用するシンプルなWebツールになります。私は過去に妥当な量のRubyとPHPを使用しましたが、PythonやPerlを使用したほうが良いのではないかと考えています。私の主なプログラミングの経験はC / C ++ / Javaですが、プロトタイプを開発しているだけなので、人生をできるだけ楽にするものを探したいと思います。

私が探しているのは次のとおりです:

  • 開発の速度
  • 既存のAIライブラリ(SVM、ニューラルネットワーク、ベイジアン分類器など)
  • ウェブインターフェースとのやり取りの容易さ

誰もこれについて何か考えがありますか?

役に立ちましたか?

解決

プロトタイプを作成するかどうかにかかわらず、大量の数値を処理する場合は、少なくともAIパーツについてはJavaまたはC / C ++の速度が必要になる場合があります。私はあなたが何をしているのか正確にはわかりませんが、AIの多くは計算集中型です。 Python VS Cが10分から2時間以上(または1日から1か月)の違いをもたらすことがあります。

おそらく最善の策は、ハイブリッドアプローチです。 Java / C ++またはAI用の何か(Javaには多くのライブラリがあるため、Javaとだけ言いますが、Javaのいくつかのライブラリを自由に利用でき、いくつかの手法を実行することを議論するデータマイニングに関する本もあります)。その他のすべて(Webパーツなど)のPython / Ruby / Perl。

自分が何をしているのかわからないので、PHPを推奨するのをためらいます。 PHPはWeb上およびWeb関連のもので本当に輝いているように見えますが、Web以外の使用が必要になると、何よりも扱いにくいように見えます(通常、Perl / Python /などのように使用されるPHPへの参照を見てきました)一部の人々によるスクリプト言語)。

Python / Ruby / Perlの選択は、ほとんど好みの問題です。 PerlがCPANを持っていることを除けば、PythonとRubyが今持っているものを超えています。あなたはスタートアップにいるので、一緒に平手打ちできるCPAN上のモジュールの幅広い選択は、より早く物事を成し遂げることにあなたに価値を提供するかもしれません。個人的に私は、PerlよりPythonが好きです(独自のオブジェクトを作成する場合、Perlのオブジェクトシステムは見苦しいと感じます。また、数か月前に書いたコードがどのように機能するかを理解するのに少し時間がかかります)。しかし、CPANの価値を否定することはできません。

つまり、要するに、おそらくAIの一部にはパフォーマンス言語が必要であり、他のすべてにはスクリプト言語の開発の容易さと速度が必要です。なぜなら、スタートアップは製品をできるだけ早く完成させて打つことだからです。競合他社を市場に投入します。 Pythonをお勧めしますが、スタートアップについて知っていることを基に、意思決定プロセスでCPANを評価する必要があります。たくさんのモジュールを一緒に平手打ちして、必要なことをすばやく実行できるということは、起動時に非常に価値があります。

また、PerlとPython(Rubyについてはわかりませんが、Rubyについては確信しています)がCコードをかなり簡単に呼び出すことができることを追加する必要があります。そのため、言語へのバインディングのセットを作成することにより、CまたはC ++ライブラリを使用できます。また、Perl / Python / Rubyですべてを書いてみて、遅すぎる場合はその部分をCまたはC ++で書き直して、スクリプト言語から呼び出すこともできます。スタートアップ全体で、このような書き直しは、何かを成し遂げるという点で非常に高価になる可能性があります。また、C、C ++、またはJavaに最も慣れているので、最初からそこに行く価値があるかもしれません。

他のヒント

Ruby、Python、Perlの3つはすべて、迅速な開発、プロトタイプ、Webアプリに適しています。あなたの質問から、このプロジェクトの最も重要な部分はAIピースであると推測しています。 Perlには、CPANにかなり多くのAI関連ライブラリがあります。サンプリングについては、 AI名前空間をご覧ください。他の名前空間にもモジュールがあるので、「Bayes」などの特定のものを必ず検索してください。または" SVM"。

PythonまたはRubyのAIライブラリオプションについてあまり知りません。私の推奨事項は、1、2日かけて、Perl、Python、Rubyのそれぞれのライブラリについて真剣に調査することです。以前にRubyを使用したことがあるので、必要なライブラリがあればそれは簡単です。Rubyは確かにWebフレンドリーです。

Pythonに関しては、Pythonの場合、 Django について多くの良いことを聞いています。 。 Perlについては、 Catalyst をご覧になることをお勧めします。

PHPを無視したことに注意してください。それは私ができる限りやろうとしていることです;)

仕事に適したツールであるため、言語を選択しますが、仕事の内容はまだ教えていない。どのような種類のライブラリが必要か、業界内の他の人々が同じ仕事にどのように使用しているかなどはわかりません。ほとんどの人は、あなたが実際に何をする必要があるかを完全に知らない何かを勧めているようです。つまり、彼らは本当にあなたを助ける方法がわからないことを意味します。

すでに指摘したとおり:

  • もしあなたが言語Xであなたの仕事をしている唯一の人なら、あなたは他の誰かから助けを得るのに苦労するでしょう。他の人がすでに同様のタスクを実行するために使用しているものを見つけます。

  • タスクに適したすべてのライブラリが別の言語で作成されている場合、多くの車輪を再発明する必要があります。あなたの質問の代わりに、どのライブラリがあなたの仕事の重要な部分をしているのか尋ねてから、それらを調べてください。 " AI"あまりにも大きすぎて何も推奨できません。

  • 使用する言語を職場の誰も知らない場合は、たとえラピッドプロトタイピング言語であっても、言語を習得しなければならないため、迅速性が失われます。言語を学ぶことは、その構文を知ること以上のものです。イディオム、ライブラリ、ドキュメントなどを知っています。職場の人々はすでに何を知っていますか?彼らは何を許容しますか?

  • あなたの人生をもっと楽にしたいのか、それとも顧客にとって楽にしたいのか?これらは時々対立するため、顧客が必要とする価値を本当に提供しているかどうかを検討する必要があります。プロトタイプは多くの場合、実動コードに変わるように見えるため、一度開始すると、多くの場合それで行き詰まります。

私が本当にコメントできるのはこれだけです:PHPは基本的にWebのDSLであり、他の3つ(Perl、Ruby、Python)は特定のドメインを持たない汎用言語ですが、すべてが間違いなくウェブ対応。

2番目の箇条書きの点では、PHPはおそらくあなたのリストから最悪の選択肢になると思います。

AI?間違いなく LISP

Javaはあなたの人生を楽にしてくれると思います。

  • 開発の速度-あなたはすでにそれに慣れていると言いました。

  • 既存のAIライブラリ-参加

  • Webインターフェースとの対話のしやすさ-サーブレット、JSP、リストするには多すぎるWebフレームワーク。

JavaもJDBCを使用してMySQLと簡単に統合できます。

Javaを推奨する他の回答には同意します。特にAIコードの速度や、利用可能なライブラリなどに必要な場合があります。

Java(サーブレット)とJSPの組み合わせはおそらくうまくいくでしょう。

ただし、この回答を書く理由は次のとおりです。

ご存知のとおりに進みます。

新しい言語または「並べ替える」言語楽しいもの、そしていくつかの開発プロジェクトやプロトタイピングにも最適です。しかし、長期的に機能する何かが必要な場合は、すでに知っているタスクに最適な言語を使用してください。この場合、(あなたの投稿から)それはJavaになると思います。

また、これは現在プロトタイプですが、動作する場合、実際のアプリケーションのデフォルトの開始になることをほぼ保証できます。私は本当にあなたが別の言語でアプリケーションを一から書き直す時間の余裕があるのではないかと疑っています。あなたとあなたは配達しなければなりません。

乾杯、

-R

Perlが道を行くと思います。 Perl OOPの Moose をチェックしてください。あなたが探している他のライブラリは、 CPAN (おそらくベイジアンモジュール

Unixのスタック/環境に慣れているなら、Pythonを使います-素晴らしく簡単です。

編集:CまたはC ++で数値演算部を実装し、Pythonコードで使用するモジュールにすることができます。これにより、高速な数値計算コードとプログラムしやすい接着剤が得られます。

Lispが言及されましたが、Scheme(特に plt-scheme )はRuby / Python / Perl / PHPと同じくらい良い選択があります。それらのいくつかほど良いライブラリはありませんが、それはマイナスですが、ほとんどのスキームには優れたffi(外部関数インターフェース)があり、外部(Cコード)ライブラリを統合するのは簡単です。スキームのもう1つの強みは、そのパフォーマンスプロファイルです。多くの場合、数値演算処理でCコード型のパフォーマンスに近いものが得られます。

Glass、smalltalk、seaside、gemstoneオブジェクトデータベースをご覧ください。ルビーよりも優れたウェブ、ノーオーム、そして最高のモデリング言語。

私は次に、聖杯を見てみます。 1時間以内にセットアップして作業を開始するのは間違いなく簡単で、その下にもJavaのパワーがあります。

また、将来的に考えていることを確認するという人々にも同意します。私はそうしなかった人たちの受益者の道を何回もしました。

私なら、すべてをpythonで記述し、プロファイルを作成して pyrex 。複雑なAIタイプのアルゴリズムを開発している場合、(1)高レベル言語で開発してさまざまなアプローチをすばやく試すことができます。(2)高レベル言語で参照実装を行うと便利です。 C / C ++実装をテストします。私は常にこの方法でpython / pyrexを使用していますが、私にとってはうまく機能します。

素早い汚いプロトタイプを作成する場合、特にプロトタイプが他の派手な機能を披露する場合は、すでに知っていることにこだわることに関心があるでしょう。ここでは、パフォーマンスは大きな関心事ではありません。

Mod_Pythonを使用してPythonを試してください。言語として、すばらしい機械学習と自然言語処理モジュールがたくさんあり、読みやすく、学びやすく、使いやすいです。

単純なCRUDアプリではないことを考えると、Javaは良い選択肢かもしれません。 Grails( http://grails.org/ )を見てください。Grailsは、足場とコード生成の多くを提供します。 Railsのようなフレームワークが提供しますが、他のJavaライブラリまたはフレームワークとのシームレスな統合を提供します。

PHPまたはSSIが、この場合のプロトタイピングに私の選択です。私の推論:どちらもテンプレートシステムなので、テンプレートシステムについて心配する必要はありません。単なるプロトタイプのテンプレートシステムを決定するのに時間を無駄にすることはありません。特にSSIは魅力的な選択肢であり、CGI処理用の言語を選択することができます。非原子データを返す場合は、JSONを出力し、Javascriptを使用してUIが返されたデータ構造をループできるようにします。 / p>

あなたのためにメモリを管理する何か。彼らは、生産性の最大の向上をもたらすのは技術の変化であると主張しています。ポンド単位のC#は、信じられないほど勝ちにくいと思います。

Pythonについて:

計算負荷の高いもののパフォーマンスが必要な場合は、数値Python http://numpy.scipy.org/をご覧ください。 およびPyrex http://www.cosc.canterbury .ac.nz / greg.ewing / python / Pyrex / 。 Numeric Pythonは、高速なCコード(ベクトル演算(ANN作業に不可欠なツール)など)として多くの旧式の数値機能を提供するPython拡張機能です。Pyrexは、Pythonコードを基本的にコンパイルできるツールです。ネイティブ実行可能ファイル。

Pyrexでは、特定のリフレクティブコンストラクト(特にlocals()およびglobals())を使用するコードを完全にコンパイルできないため、リフレクションの使用に注意する必要があります。この制限について言及するのは、AIと探索コーディング(「プロトタイプ」の発言で暗示される)の両方が、他の種類のアプリケーション領域よりもリフレクションを活用することが多いためです。

Macユーザーの場合は、 WebObjects を見てすべてのことを実行してください。フレームワークを使用すれば、Javaで意味のあるニューラルコードを書くことに集中できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top