6

私は最初の独立した営利目的のベンチャーを始めています。どの言語を使用するかを決めるのに苦労しています。Perl でアプリを作成したいのですが、コンパイルするほど単純ではないと思います。Perl で書かない場合は、C++ で書きます。

このアプリケーションには、 wxwidgetsインターフェイス、Deal with SDL、タイマー、いくつかのスレッド、オーディオ処理など、多くの機能があります。プログラム自体は多少複雑になりますが、それほど大きくはありません。

だから私の質問は次のとおりです。

  1. PAR、​​Perl2exe、または同等のプログラムは、基本的なテスト ケース以上のものをコンパイルできますか?
  2. 速度とコンパイルは別として、Perl ではなく C++ を使用する必要があるのはなぜですか?

編集:私のプロジェクト仕様の一部。

  • マルチプラットフォーム。ユーザーの 50% 以上が Mac を所有しており、残りのほとんどが Windows ユーザーであると予想しています。Linux は私の毎日のオペレーティング システムであるため、可能であれば Linux もサポートしたいと考えています。
  • マルチ プラットフォームなので、統合された GUI 作成ツールが必要です。基本型を使用できる必要があり、カスタム イベント ハンドラーとカスタム GUI オブジェクトを作成できる必要があります。
  • 音声処理が必要です。wav や mp3 を読み、再生します。また、いくつかのカスタム アルゴリズムを使用して、オーディオ ファイルの特別なプロパティを決定します。テンポ、パターンなど。
  • SDL/OpenGL のサポートは必要ありませんが、必要です。

他のすべてはかなり平凡です。いくつかの異なるクラスとコンテナー。いくつかのカスタム GUI コントロール。

4

8 に答える 8

12

私は C++ と Perl の両方のプログラマーです。C++ は優れた言語ですが、選択肢があるときはいつでも Perl を使用します。これは、開発がはるかに迅速に進行するためです。

いくつかのコメント:

  1. PAR、​​perlapp、および perl2exe はコンパイラではありません。彼らはパッケージャーです。perl 自体以外に Perl コンパイラはありません。Perl コードのバイトコード形式が必要な場合は、Parrot の Perl 6 を待つ必要があります。
  2. 私は PAR を使用して、perl 自体を含まない合計約 500k SLOC のアプリケーションをパッケージ化しました。それは正常に動作し、perl 自体と同じ速度で実行されましたが、起動は遅くなりました。これは 2005 年のことです。それ以来、プログラムをパッケージ化する開発マシンに Archive::Unzip::Burst モジュールをインストールすると、起動時のパフォーマンスが大幅に改善されました。私は、小さなものから前述の 500k 行まで、さまざまなサイズのさまざまなアプリケーションに PAR を使用して成功しました。PAR に関するヘルプが必要な場合は、アクティブでフレンドリーなメーリング リストがあります。「OMG、何もうまくいかない、助けて、kthx!」と鳴らないようにしてください。人々は常にそれを行っています (そして、時にはまだ助けが得られます)。:)
  3. Perl のスレッディングは良くありません。代わりに、POE のようなものがあなたの法案に適合するかどうかを確認してください。私はthreads.pmのユーザーですが、そうではありません。勤勉なメンテナである Jerry D. Hedden に適切な謝罪を。
  4. wxPerl は非常に良好な状態にあり、その周辺にはコミュニティがあります。当然のことながら、wxWidgets は C++ であるため、常に少し最新で完全です。
  5. SDL Perl は、ライブラリのストレート ラッパーです。(小さな)ドキュメントは、あなたがすでにそれを知っていることを前提としています。私の経験では、ライブラリのドキュメントを別の言語で読むのは少し面倒です。
  6. タイマーは perl で問題ありません: Time::HiRes
  7. 携帯性は難しいです。C++ では Perl よりもそうですが、実際には常に規律と、多くのプラットフォームでテストできるようになります。
  8. Windows 上の Perl については、Strawberry Perl を確認してください。
于 2008-10-09T07:28:29.870 に答える
11

C++ を使用します。タイマー、スレッド化、オーディオ、SDL、wxwidgets、これらはすべて Perl で実行できますが、実際には得意ではありません。また、PAR や perl2exe は配布用の扱いにくいメカニズムです。それらは機能しますが、理想的ではありません。一方、C++ (およびBoostの使用を検討することを強くお勧めします) は、この役割にうまく適合します。

于 2008-10-09T03:53:29.057 に答える
9

両方のハイブリッドを使用してみませんか?これは一般的に、最近多くの開発が進んでいる方法です。

Lua /C++またはPython/C ++コンボをお勧めします(Perl / C ++コンボがどれだけうまく機能するかはわかりませんが、それも良いオプションかもしれません)。

個人的に私はLua/C ++コンボでたくさんのことをしました、そしてそれはかなり素晴らしいです。

于 2008-10-09T04:10:17.820 に答える
6

Perl を使用する大きな理由は、メタプログラミングです。

Perl は柔軟性があり、コードを書くためのコードを書くことができます (これが Moose の魔法のやり方です)。時間を節約し、潰す必要のあるバグの数を減らすことができます。

Perl を使用する最大の理由は CPAN です。

于 2008-10-10T00:33:17.523 に答える
5

私は PAR を使用して、実質的な Windows 用の Perl/Tk プログラムをパッケージ化しました。少しいじりましたが、うまくいきました。

少なくとも C++ と同じくらい Perl の経験があれば、Perl での開発はより速くなるはずです。ただし、同等のプログラムの実行速度は遅くなります。残りのすべての基準はどちらでも満たすことができるので、個人的な選択になると思います.

于 2008-10-09T04:29:45.957 に答える
4

個人的に?私はこれにあまり長く立ち往生しないでください。どちらの方法にも長所と短所がありますが、「分析麻痺」に陥りそうな危険なほど近づいているように思えます。他に何もない場合は、コインを投げるか、最も美しい名前を持っていると思うものを選択してください.

于 2008-10-09T04:30:03.770 に答える
1

機能は重要です。特に同じライブラリとコンポーネントを使用している場合、コードは言語に関係なく同様のことを行います。ライブラリとツールキットを使用して正確な関数を作成していない限り、Perl でプロトタイプを作成します。

動的言語では開発に時間がかからないという議論があります。Perl と C++ には、適切な場所にドロップダウンを取得し、適切な値を入力し、ユーザー入力からプログラムの状態を適切に変更する際に、同様の問題があります。

Perl が特定のプラットフォームで実行できない場合は、コードを C++ に変換します。

おそらく、このアプローチに役立つヒントがいくつかあります。

  1. つまり、OO Perl でプロトタイプを作成する可能性が高いということです。高レベルの機能を 1 つのプラットフォームに固定化すると (Perl でそこまで到達できる場合)、C++ は多かれ少なかれ最適化されます。

  2. おそらく、プロトタイプを多かれ少なかれ C++ の同族に限定するかもしれません。しかし、これについてはよくわかりません。mapa をループに分解するか、テスト関数の関数ポインターで呼び出されるフィルター関数に置き換えることもできます。

于 2008-10-09T15:09:15.697 に答える
-1

コア機能を C++ で記述してから、問題のプラットフォーム用のツールでアプリケーションのフロントエンドを記述します。つまり、Mac OS X の場合は Cocoa、Windows の場合は .NET/Delphi/MFC などです。

これは、クロスプラットフォームのデスクトップ アプリケーションを開発するための私の好みの方法です。もちろん、私はあなたが達成しようとしていることについてほとんど知らないので、あなたには太りすぎかもしれません.

于 2008-10-09T15:22:17.153 に答える