草庐IT

c++ - 新项目 : I am having troubles picking a language to use

coder 2023-11-17 原文

我正在开始我的第一家独立营利企业。我很难决定使用哪种语言。我想用 Perl 编写我的应用程序,但我认为编译起来不够简单。如果我不用 Perl 编写,我会用 C++ 编写。

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

所以我的问题是:

  1. PAR、Perl2exe 或等效程序能否编译出基本测试用例以外的内容?
  2. 撇开速度和编译不谈,为什么我应该使用 C++ 而不是 Perl?

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

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

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

最佳答案

我既是 C++ 程序员又是 Perl 程序员。 C++ 是一种不错的语言,但每当我有选择的时候,我都会选择 Perl,因为开发的速度要快得多。

一些评论:

  1. PAR、perlapp 和 perl2exe 不是编译器。他们是包装商。除了 perl 本身,没有 Perl 编译器。如果您想要某种形式的字节码形式的 Perl 代码,则必须等待 Parrot 上的 Perl 6。
  2. 我已经使用 PAR 打包了一个总共有大约 500k SLOC 的应用程序,不包括 perl 本身。它运行良好,运行速度与 perl 本身相同,但启动速度较慢。那是 2005 年,从那时起,如果在打包程序的开发机器上安装 Archive::Unzip::Burst 模块,启动性能将得到显着提高。我已经成功地将 PAR 用于各种大小从微小到上述 500k 行的应用程序。如果您需要 PAR 方面的帮助,可以使用一个活跃且友好的邮件列表。只是帮我们和你自己的忙,不要附和“天哪,什么都不管用,帮帮我,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。

关于c++ - 新项目 : I am having troubles picking a language to use,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/185862/

有关c++ - 新项目 : I am having troubles picking a language to use的更多相关文章

  1. ruby - 如何在 buildr 项目中使用 Ruby 代码? - 2

    如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby​​

  2. ruby-on-rails - 如何优雅地重启 thin + nginx? - 2

    我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server

  3. ruby-on-rails - 项目升级后 Pow 不会更改 ruby​​ 版本 - 2

    我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby​​版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby​​版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘

  4. ruby-on-rails - 新 Rails 项目 : 'bundle install' can't install rails in gemfile - 2

    我已经像这样安装了一个新的Rails项目:$railsnewsite它执行并到达:bundleinstall但是当它似乎尝试安装依赖项时我得到了这个错误Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcheckingforlibkern/OSAtomic.h...yescreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="

  5. Ruby 从大范围中获取第 n 个项目 - 2

    假设我有这个范围:("aaaaa".."zzzzz")如何在不事先/每次生成整个项目的情况下从范围中获取第N个项目? 最佳答案 一种快速简便的方法:("aaaaa".."zzzzz").first(42).last#==>"aaabp"如果出于某种原因你不得不一遍又一遍地这样做,或者如果你需要避免为前N个元素构建中间数组,你可以这样写:moduleEnumerabledefskip(n)returnto_enum:skip,nunlessblock_given?each_with_indexdo|item,index|yieldit

  6. ruby - 使用 `+=` 和 `send` 方法 - 2

    如何将send与+=一起使用?a=20;a.send"+=",10undefinedmethod`+='for20:Fixnuma=20;a+=10=>30 最佳答案 恐怕你不能。+=不是方法,而是语法糖。参见http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_expressions.html它说Incommonwithmanyotherlanguages,Rubyhasasyntacticshortcut:a=a+2maybewrittenasa+=2.你能做的最好的事情是:

  7. ruby - 如何计算 Liquid 中的变量 +1 - 2

    我对如何计算通过{%assignvar=0%}赋值的变量加一完全感到困惑。这应该是最简单的任务。到目前为止,这是我尝试过的:{%assignamount=0%}{%forvariantinproduct.variants%}{%assignamount=amount+1%}{%endfor%}Amount:{{amount}}结果总是0。也许我忽略了一些明显的东西。也许有更好的方法。我想要存档的只是获取运行的迭代次数。 最佳答案 因为{{incrementamount}}将输出您的变量值并且不会影响{%assign%}定义的变量,我

  8. ruby - 如何在 Ruby 字符串中插入项目符号字符? - 2

    我正在尝试创建一个带有项目符号字符的Ruby1.9.3字符串。str="•"+"helloworld"但是,当我输入它时,我收到有关非ASCII字符的语法错误。我该怎么做? 最佳答案 你可以把Unicode字符放在那里。str="\u2022"+"helloworld" 关于ruby-如何在Ruby字符串中插入项目符号字符?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1195

  9. ruby - 在 Rails 项目中测试本地版本的 gem - 2

    我的Rails站点使用了一个确实不是很好的gem。每次我需要做一些新的事情时,我最终不得不花费与向实际Rails项目添加代码一样多的时间来为gem添加功能。但我不介意,我将我的Gemfile设置为指向我的gem的GitHub分支(我尝试提交PR,但维护者似乎已经下台)。问题是我真的没有找到一种合理的方法来测试我添加到gem的新东西。在railsc中测试它会特别好,但我能想到的唯一方法是a)更改~/.rvm/gems/.../foo。rb,这看起来不对或者b)升级版本,推送到Github,然后运行​​bundleup,这除了耗时之外显然是一场灾难,因为我不确定我所做的promise是否正

  10. arrays - Ruby 数组 += vs 推送 - 2

    我有一个数组数组,想将元素附加到子数组。+=做我想做的,但我想了解为什么push不做。我期望的行为(并与+=一起工作):b=Array.new(3,[])b[0]+=["apple"]b[1]+=["orange"]b[2]+=["frog"]b=>[["苹果"],["橙子"],["Frog"]]通过推送,我将推送的元素附加到每个子数组(为什么?):a=Array.new(3,[])a[0].push("apple")a[1].push("orange")a[2].push("frog")a=>[[“苹果”、“橙子”、“Frog”]、[“苹果”、“橙子”、“Frog”]、[“苹果”、“

随机推荐