2008-10-09 28 views
5

我开始了我的第一个独立盈利项目。我很难决定使用哪种语言。我想用Perl编写我的应用程序,但我认为编译起来不够简单。如果我不用Perl写它,我会用C++编写它。新项目:我遇到了挑选语言的困难

该应用程序将具有许多功能,包括接口,处理SDL,定时器,一些线程和音频处理。程序本身会有些复杂,但不是非常大。

所以我的问题的是:

  1. 可以PAR,Perl2exe,或等效比基本测试用例编写更多?
  2. 速度和编译放在一边为什么我应该在Perl上使用C++?

编辑: 我的一些项目规范。

  • 多平台。我期望50%或更多的用户拥有自己的Mac,其余大部分都是Windows用户。如果可能的话,我也想支持Linux,因为它是我的日常操作系统。
  • 由于它是多平台我需要一个统一的GUI创建工具。它需要能够使用基本类型,并允许我创建自定义事件处理程序和自定义GUI对象。
  • 它需要音频处理。阅读和播放,WAV和/或MP3的。此外,我将使用一些自定义算法来确定音频文件的特殊属性;诸如节奏,模式等等。
  • 我想但不要求SDL/OpenGL支持。

其他一切都很平凡。一些不同的类和容器。一些自定义的GUI控件。

回答

9

为什么不使用两者的混合?这是近来很多发展的方式。我建议一个Lua/C++或Python/C++组合(我不确定Perl/C++组合的效果如何,但也可能是个不错的选择)。

就我个人而言,我已经做了一堆与Lua/C + +组合,它是非常棒的。

+0

有趣的想法。你如何去做呢?将速度依赖和复杂的东西提取到C++,并将其包装在你的Lua/Python代码中? – 2008-10-09 04:14:54

+0

是的,这是最好的方法。许多时候,许多速度依赖的事物在现实中并不那么重要。此外,如果你做了很多的数学,只是交换你的Lua核心到LuaCoCo核心可以增加Lua边数学10倍 – 2008-10-09 04:51:38

+0

我正在研究一个项目,使Perl/C++更容易组合。谷歌我的名字和Perl的更多信息。 – 2008-10-09 12:53:14

11

Go to C++。定时器,线程,音频,SDL,wxwidgets,这些都是Perl可以做的事情,但并不是真正擅长的。另外,PAR或perl2exe是分发的笨重机制。他们工作,但他们不理想。同时,C++(我强烈建议你使用Boost)很适合这个角色。

5

我已经使用PAR来为Windows打包实质的Perl/Tk程序。它花了一些小把戏,但它的工作。

如果你至少在Perl和C++方面经验丰富,Perl开发应该更快。但同等程序的运行速度会更慢。所有其他的标准都可以满足,所以我认为这归结于个人选择。

4

个人?我说不要被这个问题困住太久。无论哪种方式都有优点和缺点,但这听起来像是越来越危险地陷入“分析瘫痪”之中。“如果没有其他的东西,请翻转一个硬币或者选择一个你认为最漂亮的名字。

11

我既是C++和Perl程序员,C++是一种很好的语言,但每当我有选择时,我都会用Perl因为发展简单地继续这么多快

一对夫妇的意见:

  1. PAR,perlapp和perl2exe而不是编译器它们打包没有Perl编译除了Perl本身如果你想。某些形式的Perl代码的字节码形式,您必须等待Parrot上的Perl 6。
  2. 我已经使用d PAR打包一个总共大约500k SLOC的应用程序,不包括perl本身。它运行良好,运行速度与perl相同,但启动速度较慢。这是2005年。从那时起,如果您在打包程序的开发机器上安装Archive :: Unzip :: Burst模块,启动性能会大大提高。我已经成功地将PAR用于从小到上述500k线的大小不同的各种应用。如果您需要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。
1

功能很重要。不管语言如何,代码都会做类似的事情,尤其是使用相同的库和组件时。除非你有通过库和工具包制定的确切功能,否则用Perl原型。

有一种说法认为,动态语言的开发将花费更少的时间。在Perl和C++中,在正确的位置获取下拉菜单时会出现类似的问题,使用正确的值填充它,从用户输入中对程序状态进行适当更改。

如果Perl没有在某些平台上完成它,请将代码转换为C++。

可能有一些指针,这将有助于在这种方法:

  1. 这意味着,你可能会写原型OO Perl的。一旦你在一个平台上确定了高级功能 - 只要你可以在Perl中获得那么多 - 那么C++或多或少地是一种优化。也许你可能会限制原型或多或少的C++同源。但是我不确定这一点,你可以将map分解成一个循环,或者甚至用一个用函数指针调用的过滤函数替换它以用于测试函数。

0

C++编写的核心功能,然后编写前端,在该平台的问题,即工具应用程序,可可的Mac OS X,.NET /德尔福/ MFC适用于Windows,等。

这是我开发跨平台桌面应用程序的首选方式。当然,我对你想要完成的事情知之甚少,所以对你来说可能太胖了。

5

使用Perl的一个很好的理由是元编程。

Perl足够灵活,可以让你编写代码来编写代码(这就是Moose的神奇之处)。您将节省时间并减少需要压缩的错误数量。

使用Perl的重要原因是CPAN。