我应该从C ++转到Python吗? ...还是另一种语言?

时间:2020-03-05 18:39:10  来源:igfitidea点击:

在我工作的公司中,我们进行了大量基于文件的交易处理。处理围绕围绕多种格式之间的文件转换以适合众多公司的多种系统进行。

处理几乎总是涉及一个XML阶段,并且可以包括很多文本解析,数据库查找,数据转换和数据验证。

当前,执行所有这些任务的程序都用C ++编写,并且它们在一台普通服务器上的执行速度非常快。我正在研究使用较新的研究生程序员更可能熟悉的"更现代"语言的可能性。 (最近,C ++中正确的内存分配似乎导致许多​​新程序员遇到问题)

根据提供的简短信息,诸如python之类的语言能否提供所需的功能和性能,以及解决出现的内存分配问题(以及与其他各种" C ++"相关的问题)?

我喜欢这样的想法,即每次我们进行更改时都不需要编译程序。我知道解释型语言可能不会达到我们目前获得的相同性能。

我们的系统基于" Linux",这也限制了某些选项。

任何有关Python可用功能和性能的评论,或者其他语言的建议,将不胜感激。

解决方案

回答

Python可能会删除我们在应用程序中使用的大多数低级内容。内存分配不再是问题。另外,至少我的大学似乎正在将Python视为一种编程语言,因为学生不必编写所有正式的材料即可上手。我们唯一的问题是性能部分,因为Python可能永远不会像编译的C ++程序那样快。

我建议我们花几个星期来了解我们正在考虑的编程语言。我也会检查Ruby。也许和Haskell在一起玩吗?

据我了解,Python似乎可以很好地处理我们所谈论的一切。 XML,数据库查找,验证,解析。通常,这是一个安全的选择,这不仅是因为简单而有趣的编程经验,而且如果我们受困于该语言,那么周围会有一个很棒的社区,他们乐于为我们提供帮助。

回答

I like the idea of not needing to compile the programs each time we make a change. I understand that the interpreted languages probably wont hit the same performance we currently get.

这是最大的问题;你能忍受性能冲击吗?我们可以尝试使用Python并将其与当前的C ++模块一起扩展,以提高性能。但是,如果唯一的原因是缺乏C ++才能,那么切换整个系统似乎是一项艰巨的工作。雇用了解C ++的人似乎是更便宜的选择。

回答

快速使程序运行或者快速运行哪个更重要?

如果我们要处理大量的大文件,那么最好还是使用C ++并教研究生程序员什么是指针(!)。

否则,我强烈建议我们使用基于脚本的解决方案,因为一旦我们加快了速度,就可以在其中进行开发。坦白讲,至少对于大多数人来说,它还有趣得多。

如果每个记录的处理负载不高,我们可能会惊讶地损失很少的性能:文件IO几乎肯定会在已编译的(C)库中进行处理,因此解释器的开销可能相对较低。值得尝试,我建议。

在命令式语言中,Perl是一个明显的选择,Python很流行,而Ruby具有很高的知名度(并且可能比前两个更干净的OO功能)。然后是功能语言的更多,更深奥的领域,但是我没有资格对此发表评论。

回答

另一种选择是将Python嵌入C ++程序。我们可以使大部分应用程序保持不变,并向Python发出经常更改的部分的调用,或者需要脚本语言提供的灵活性。

来自Python文档

The previous chapters discussed how to
  extend Python, that is, how to extend
  the functionality of Python by
  attaching a library of C functions to
  it. It is also possible to do it the
  other way around: enrich your C/C++
  application by embedding Python in it.
  Embedding provides your application
  with the ability to implement some of
  the functionality of your application
  in Python rather than C or C++. This
  can be used for many purposes; one
  example would be to allow users to
  tailor the application to their needs
  by writing some scripts in Python. You
  can also use it yourself if some of
  the functionality can be written in
  Python more easily.

回答

或者应该尝试将解析规则存储在数据库中,而不是将其硬编码在代码中。正如Ken Downs正确引用的那样,最小化代码,最大化数据。这样,我们无需在每次微小规则更改时都重新编译。

回答

我不想这么说,但是如果我们想让新来的开发人员会熟悉的东西,请使用Java。 Java是应届毕业生最熟悉的语言。我们仍然必须进行编译,但是编译时间将比C ++短。它可以在Linux以及几乎其他任何地方运行。它有一个很好的垃圾收集器。非常快。我是否提到过开发人员会熟悉它?不,它不像Python那样"酷",但它是一种非常可靠的语言。

老实说,我怀疑我们有很多新进来的开发人员都喜欢C ++,但无论如何都会对Python很棒。善于使用Python的人通常对手动内存管理很满意。那些对内存管理不好的人实际上往往对所有语言都不好。

我确实感到担心的是,开发人员对内存管理非常不满意,以至于我们想切换语言。那是表明有问题的迹象,但是我不确定问题出在语言上。

回答

如果我们可以摆脱使用Python,Ruby,Groovy或者Perl vs. C ++的困扰,那么最好使用这些高级语言之一。生产率将大大提高。如果发现需要更高的性能,请使用Java。每个人都应该了解并至少使用一种动态类型的语言。

回答

如果我们需要更快地移至c / c ++,则应该移至languange使联网成为可能的python