为什么在应用程序服务器项目中使用多种语言?

时间:2012-05-14 12:19:27

标签: c++ python application-server

经过一段时间浏览大项目的源代码,特别是像this这样的应用服务器,我明白这些项目不是用一种语言开发的。他们中的许多人都使用python作为第二语言。

现在我有四个问题:

  1. 为什么使用多种语言?
  2. 为什么python常用于辅助?
  3. 为什么python不用于开发项目的所有部分,他们仍在使用c / c ++?
  4. 项目的哪些部分应该用python开发,哪个部分的项目使用c / c ++?

4 个答案:

答案 0 :(得分:2)

硬层和软层

编程语言设计倾向于在“高级”功能和“低级”功能之间进行权衡,这些功能以速度为代价提高了程序员的工作效率,而“低级”功能则需要大量的程序员工作但产生非常快的代码。

因此,有时在项目中使用两种语言是有意义的:

  1. 使用富有表现力的高级语言编写90%的代码,易于编写和维护。
  2. 将10%的 性能关键 代码编写为较难编写的低级语言,但可以进行全面优化。
  3. c2wiki称之为HardAndSoftLayers模式:

      

    根据第一个优化规则,继续使用您能找到的最高级语言编写大部分代码。

         

    根据第三个优化规则,必要时,使用分析器并找到程序的慢速部分。拿这些部分,用较低级别的语言写下来。

    作为参考,rules of optimisation是:

      
        
    1. 优化的第一条规则 - 不要。
    2.   
    3. 优化的第二条规则 - ...
    4.   
    5. 个人资料优化之前
    6.   

答案 1 :(得分:1)

规则很简单:开发人员根据以下标准或多或少地选择语言:

  1. 他们对它的熟悉程度
  2. 使用该语言轻松完成任务
  3. 语言与特定任务的匹配程度
  4. 今天,在这种多语言环境中完成的大部分开发都是巨大的解决方案,其中不同的组件需要进行通信,交换数据或仅仅执行由多个步骤组成的工作。用python这样的语言编写通信/数据解释/任何包装必要部分更容易,然后通过一些直接编译而不需要翻译的低级语言来完成实时和速度的工作。< / p>

    让我们深入挖掘一下。

    1. 开发人员对编程语言的熟悉程度取决于每个开发人员的背景。如果他们有自由选择,显然他们会选择他们最熟悉的语言,除非有其他人的大厅......通常在管理链中更高。 Python不一定是选择的语言,python只是一种易于使用和学习的语言,非常适合大多数任务。我们的项目中没有任何python,只有大量的ruby代码。因为主要的开发人员当时喜欢红宝石,所以我们坚持使用它。

    2. 如果您了解多种编程语言,您就会知道每种语言都以不同的方式做同样的事情。例如,创建套接字,连接到服务器,读取内容并将其打印出来只是几行Erlang代码,但是在C ++中需要做更多的事情(例如...)所以再次,如果你有一个任务,你知道如何用你将要坚持的特定语言轻松解决。人们很懒惰,除非需要,否则他们不一定学习新东西。

    3. 显然你不打算在python中编写设备驱动程序,使用java创建一个完整的Web服务比使用普通的C更容易......但是你仍然需要解决方案的一部分硬件关闭的事情。当你有一个任务时,你要仔细衡量要求和含义,并明智地选择你将要做的语言。因为它将永远坚持下去。

答案 2 :(得分:0)

  1. 有时python不够好。

    处理计算机视觉,图像或声音处理,计算数据音调并不是python擅长的。其他语言如C或C ++在这些领域非常擅长。

  2. 支持您的主要语言是java,并且您希望将其他语言粘合到一个项目中。我们需要Python的地方。 Python是众所周知的胶水语言。你可以使用ctype,SWIG,Jython,ironPython或其他方法来绑定多种语言。

  3. 猜猜我在1回答了这个问题。

  4. 需要速度。去C或C ++。关注生产力,关注Python。

答案 3 :(得分:0)

如果不参考您发送的项目,我会告诉您50c为什么我工作的公司,以及为什么我们在项目中经常使用python。

首先,我们没有与软件解决方案本身相关的python代码。所有python代码都与协助开发,机器设置,用于测试的通用框架工具部署以及代码生成有很大关系。

  
      
  1. 为什么使用多种语言?
  2.   

在查看我们所有的企业级解决方案或大规模实施时,我们所处理的任何项目都只有一种语言。

这主要是因为我们的层级是用语言编写的,这些语言分别在每个级别提供最佳性能和可用性。

例如,C ++用于快速核心后端服务,C#.NET用于快速开发,并为前端提供良好的UI。

  
      
  1. 为什么python常用于辅助?
  2.   

就个人而言,除了我上面解释的原因,我们不会经常使用python'secondary secondary'。我们使用C ++ / C#作为最常见的一对,但根据平台,可能是其他对。

  
      
  1. 为什么python不用于开发项目的所有部分,他们仍在使用c / c ++?
  2.   

Python非常适合快速解决方案和您希望shell可以执行的操作。这主要涉及文件管理等。

C ++可能是最快的编译语言,为核心和大量使用的操作提供了最佳使用。

基于此,以及市场在C ++方面拥有更多知识和经验(由于多种原因),C ++是更受欢迎的选择。

  
      
  1. 项目的哪些部分应该用python开发,哪个部分的项目使用c / c ++?
  2.   

我相信我可能已经解决了上述问题。

-

我希望我能提供帮助,请记住这只是我个人的意见,绝不应该将其视为事实。