私は、すべてのビデオを追跡し、まだ見ていないビデオとこのような統計を追跡するビデオ ライブラリ ソフトウェアを作成することを考えています。統計は、ソフトウェアを使用する各ユーザーに固有のものになります。
私の質問は、このソフトウェアを作成するのに Python が適切か、それとも C++ のようなものが必要かということです。
私は、すべてのビデオを追跡し、まだ見ていないビデオとこのような統計を追跡するビデオ ライブラリ ソフトウェアを作成することを考えています。統計は、ソフトウェアを使用する各ユーザーに固有のものになります。
私の質問は、このソフトウェアを作成するのに Python が適切か、それとも C++ のようなものが必要かということです。
Python はそのようなタスクに完全に適しています。実際、最も人気のあるビデオ サイトである YouTube は、基本的に Python でプログラムされています (もちろん、Web サービス、リレーショナル データベース、ビデオ トランスコーディングなどのタスクのために Python から呼び出される下位レベルのコンポーネントを使用します。これらすべての種類のタスクに対応する再利用可能なオープンソース コンポーネントはたくさんありますが、アプリケーションのロジック フローとすべてのアプリケーション レベルのロジックは完全に Python で作成できます)。
ちょうど昨日の夕方、マウンテン ビューで開催された地元の Python インタレスト グループ ミーティングで、ビデオ業界で Python ベースの仕事をするためにシリコン バレーに引っ越したばかりの新しいメンバーが参加しました。また、ますます Python に傾倒しています。Pixar や ILM などの重鎮はずっと Python を使用していましたが、ここ 1、2 年で、業界では Python の採用が殺到しました。
もちろん、ほとんどすべてのタスクにほとんどすべてのプログラミング言語を使用できます。しかし、それに注意した後、さまざまな言語がさまざまなタスクにさまざまにうまく適応していることも明らかです。
C / C ++は、非常に「ハードウェアに優しい」言語です。基本的に、言語はアセンブラの1つ上の抽象化レベルであり、Cはポインタなどを使用します。C++は、面白くしたい場合は、(セミ)ポータブルオブジェクト指向アセンブラのようなものです。:)これにより、C / C ++が高速になり、ハードウェアとの通信が上手になります。
しかし、それらの同じ機能は、他の場合には誤った機能になります。ポインタを使用すると、メモリ全体を歩くことができます。注意しないと、メモリがいたるところにリークしてしまいます。ですから、C / C ++は実際にはあなたがやりたいことには直接不適切であると私は言います(そして今やCの人々は怒ります) 。
より高度で、メモリ管理などの多くのことを自動的かつ目に見えない形で実行する言語が必要です。そこから選択できるものはたくさんありますが、間違いなくPythonがこれに非常に適しています。Pythonは、この種のソフトウェアを作成するための新しいクール言語としてここ数年登場しており、Freevoやすでに述べたMoovidaなどの多くのマルチメディアソフトウェアはPythonで作成されています。
コードを REAL FAST にしたい場合は、C++ (または並列 Fortran) を使用してください。
ただし、アプリケーションでは、実行時間の 99% はコードではなく、GUI ライブラリ、OS 呼び出し、ユーザー操作の待機、(C で記述された) ライブラリの呼び出しでビデオ ファイルを開き、サムネイルを作成します。 、そのようなもの。
したがって、C++ を使用すると、コードが 100 倍速くなり、その結果、アプリケーションが 1% 速くなり、まったく役に立ちません。また、C++ で作成する場合は数か月かかりますが、Python を使用すると、はるかに早く完了し、より多くの楽しみを得ることができます。
Python では、ハッシュ、セット、ジェネレーターなどの非常に強力なプリミティブを使用して、よりスケーラブルなアルゴリズムを非常に簡単に構築できるため、C++ を使用するとさらに遅くなる可能性があります。すでに作業の 90% を行っているライブラリなど。
Pythonで書いてください。
はい。このような場合、Python は c++ よりもはるかに使いやすいです。sqlite3 などの DB のフロントエンドとして使用することもできます。
たぶん、このプロジェクトを見てください: Moovida
これは完全なメディア センターであり、オープン ソースであり、拡張が容易な Python で書かれています。箱から出してすぐに必要な機能を正確に実行できるかどうかはわかりませんが、必要な機能を簡単に追加できるでしょう。