我正在开始我的第一个独立盈利企业.我很难决定使用哪种语言.我想在Perl中编写我的应用程序,但我认为编译它不够简单.如果我不在Perl中编写它,我将用C++编写它.
该应用程序将具有许多功能,包括wxwidgets接口,处理SDL,定时器,一些线程和音频处理.该程序本身有点复杂,但不是非常大.
所以我的问题是:
PAR,Perl2exe或等效编译可以编译多个基本测试用例吗?
速度和编译不谈为什么我应该使用C++而不是Perl?
编辑:我的一些项目规范.
多平台.我期待50%或更多的用户拥有自己的Mac,其余大部分都是Windows用户.如果可能的话,我也想支持Linux,因为它是我的日常操作系统.
由于它是多平台,我需要一个统一的GUI创建工具.它需要能够使用基本类型,并允许我创建自定义事件处理程序和自定义GUI对象.
它需要音频处理.阅读和播放,wav和/或mp3.此外,我将使用一些自定义算法来确定音频文件的特殊属性; 节奏,模式等等.
我想但不需要SDL/OpenGL支持.
其他一切都很平凡.一些不同的类和容器.一些自定义GUI控件.
我既是C++又是Perl程序员.C++是一种很好的语言,但每当我有选择时,我就会使用Perl,因为开发只是进行得更快.
几条评论:
PAR,perlapp和perl2exe不是编译器.他们是包装商.除了perl本身之外,没有Perl编译器.如果你想要某种形式的字节码形式的Perl代码,你将不得不等待Parrot上的Perl 6.
我使用PAR来打包一个总共大约500k SLOC的应用程序,不包括perl本身.它运行良好,运行速度与perl本身相同,但启动速度较慢.这是2005年.从那时起,如果在打包程序的开发机器上安装Archive :: Unzip :: Burst模块,启动性能会大大提高.我已经成功地将PAR用于各种尺寸从微小到上述500k线的应用.如果您需要PAR的帮助,那么有一个活跃且友好的邮件列表.只是做我们和你自己的好处,不要与"OMG,没有任何作用,帮助我,kthx!".人们一直这样做(有时候仍然得到帮助).:)
Perl的线程不是很好.检查POE之类的东西是否符合您的账单.我是一个threads.pm用户,但我宁愿不是.对于努力工作的维护者,Jerry D. Hedden表示道歉.
wxPerl状态非常好,周围有一个社区.当然,由于wxWidgets是C++,它总是有点更新和更完整.
SDL Perl是库的直接包装器.(小)文档假定您已经知道它.根据我的经验,用不同语言阅读图书馆的文档可能会有点麻烦.
定时器在perl中很好:Time :: HiRes
便携性很难.在C++中比在Perl中更多,但它总是归结为纪律,并能够在许多平台上进行测试.
对于Windows上的Perl,请务必查看Strawberry Perl.
使用C++.定时器,线程,音频,SDL,wxwidgets,这些都是Perl可以做的事情,但并不擅长.此外,PAR或perl2exe是分布的笨重机制.他们工作,但他们并不理想.同时,C++(我非常鼓励你看看使用Boost)很适合这个角色.
为什么不使用两者的混合?这通常是现在很多发展的方式.
我建议使用Lua/C++或Python/C++组合(我不确定Perl/C++组合的工作情况如何,但这也是一个不错的选择).
就个人而言,我已经完成了一堆Lua/C++组合,这非常棒.
使用Perl的一个很好的理由是元编程.
Perl足够灵活,可以让你编写代码来编写代码(这就是Moose的神奇之处).您将节省时间并减少压缩所需的错误数量.
使用Perl的最大理由是CPAN.
我已经使用PAR来为Windows打包一个实质性的Perl/Tk程序.它需要一些摆弄,但它确实奏效了.
如果你至少在Perl和C++一样经验丰富,那么Perl的开发应该更快.但是等效程序的运行时速度会变慢.所有其他标准都可以满足,所以我说这取决于个人选择.