0

在浏览了大型项目的源代码后,尤其是像这样的应用程序服务器,我了解到这些项目不是用一种语言开发的。他们中的许多人使用 python 作为辅助语言。

现在我有四个问题:

  1. 为什么使用不止一种语言?
  2. 为什么python经常被用于次要?
  3. 为什么不使用 python 来开发项目的所有部分,他们仍然使用 c/c++?
  4. 哪些项目应该使用python开发,哪些项目使用c/c++?
4

4 回答 4

2

硬层和软层

编程语言设计倾向于在“高级”特性和“低级”特性之间进行权衡,“高级”特性以速度为代价提高了程序员的生产力,而“低级”特性需要程序员付出大量努力,但生成的代码非常快。

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

  1. 用易于编写和维护的富有表现力的高级语言编写 90% 的代码。
  2. 用更难编写但允许全面优化的低级语言编写 10% 的性能关键代码。

c2wiki 将此称为HardAndSoftLayers模式:

凭借第一条优化规则,继续用你能找到的最高级语言编写大部分代码。

凭借优化的第三条规则,当你必须的时候,使用探查器并找到程序的慢部分。取出这些部分,并用较低级别的语言编写它们。

作为参考,优化的规则是:

  1. 优化的第一条规则——不要。
  2. 优化的第二条规则 - 不要……暂时
  3. 优化前的配置文件
于 2012-05-14T12:33:49.407 回答
1

The rule is pretty simple: the developers choose the language(s) based more or less on the following criterias:

  1. their familiarity with it
  2. how easily you can do the task using that language
  3. how well is suited the language to the specific task

Today most of the development done in this multilingual environments are huge solutions, where different components need to communicate, exchange data or simply do work which is comprised of more than one step. It is easier to write the communication/data interpretation/whatever wrapping necessary part in a language such as python and then leave the real time and speed needy work to be done by some lower level language which compiles directly without the need for an interpreter.

Let's dig a little bit deeper.

  1. How familiar are the developers with the programming language depends on the background of each developer. If they are given a free choice, obviously they will pick the language they know the best, unless there is a lobby from someone else... usually higher in the management chain. Python is not necessarily the language of choice, python is simply an easy to use and learn language, which is well suited for most tasks. Our project has no bit of python in it, only tons of ruby code. Because the main developer liked ruby at that time, so we're stuck with it.

  2. If you know more than one programming language you know that each of them is doing the same thing differently. For example, creating a socket, connecting to a server, reading the stuff and printing it out is just a few lines of Erlang code, but it takes a lot more to do it in C++ (for example...) So again, if you have a task you know how to solve easily in a specific language you are going to stuck to it. People are lazy, they don't necessarily learn new stuff unless needed.

  3. Obviously you are not going to write a device driver in python, and it is much easier to create a complete web service with java than with plain C... but you still would need the part of the solution that does the hardware close thing. When you have a task you carefully measure the requirements and implications and wisely choose the language you will do it in. Because it will stuck to it forever.

于 2012-05-14T12:39:18.603 回答
0

不提及你发送的项目,我会给你我的 50c,为什么我工作的公司,为什么我们在项目中经常使用 python。

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

  1. 为什么使用不止一种语言?

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

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

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

  1. 为什么python经常被用于次要?

就个人而言,除了我上面解释的原因之外,我们不使用 python 'secondary often'。我们使用 C++/C# 作为最常见的对,但取决于平台,可能是其他对。

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

Python 非常适合快速解决方案和做你希望你的 shell 可以做的事情。这主要涉及文件管理等。

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

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

  1. 哪些项目应该使用python开发,哪些项目使用c/c++?

我相信我可能已经在上面解决了这个问题。

-

我希望我能帮上忙,请记住这只是我的个人观点,绝不应将其视为事实。

于 2012-05-14T12:40:04.630 回答
0
  1. 有时python不够好。

    处理计算机视觉、图像或声音处理、计算数据的色调并不是 Python 真正擅长的。C 或 C++ 等其他语言在这些领域非常擅长。

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

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

  4. 需要速度。选择 C ​​或 C++ 。更关心生产力,使用 Python。

于 2012-05-14T12:33:22.680 回答