Python与C:代码比较行与开发时间

时间:2010-09-15 21:33:10

标签: python c comparison

您好我正在学习Python,因为语法非常简洁,习语与我的心理模型很匹配。

然而,我也有兴趣了解操作系统内部和逆向工程软件,这最终意味着以相当全面的身份了解C语言。

当我最初选择一种语言时,我进行了大量的阅读和比较,而且似乎抛出的很多数字是在Python中编写简短的惯用语句需要相当于几百行的C(我是猜猜内存管理的代码,编写字典,列表等代码,我们认为这些代码是Python语言中内置的。

1)对于一个普通的C程序员来说,每个Python习惯用法的代码是100到200行吗?

因为C不是内置的类似Python的结构,如字典/列表(包括所有好的方法等):

2)C程序员是否倾向于从头开始构建这些构造,然后在项目之间重新使用它们,以大大减少其项目的手工编码的实际数量?

我假设再次使用像boost :: stuff这样的库,也减少了一些样板手动编码......

3)但是,使用流行的库并重新使用之前在C语言中为基本构造/等编写的公共代码,修改用C编写的代码行与使用大小的Python中的代码进行修改的程度是多少代码库?

我知道具体的数字是不可能的,但是如果没有Linus Torvalds风格的编码机,可以使用库,代码重用等来使C的开发时间接近Python的开发时间吗?

谢谢!

6 个答案:

答案 0 :(得分:10)

  

但是库,代码重用等可以使C的开发时间接近Python的开发时间

没有

你错过了最重要的一点。

Python的互动。它不是edit-compile-link-execute-break-debug。这是编辑调试。

答案 1 :(得分:6)

Boost是C ++,而不是C(显然不是C - 几乎所有这些都使使用模板而不是C的一部分)。

是的,C程序员倾向于为各种“东西”构建个人代码库 - 数据结构,算法,用户界面等等。从基本的字符串操作到数据库连接,用户界面,基本算法和数据结构等,还有相当多的其他库。

比较两者之间的生产力可能很困难 - 即使可以通过一行代码完成某些方式,C程序员最终可能会做更多工作来查找并学习使用该特定代码图书馆。 OTOH,如果他之前使用过它,那么这两者可能是直接竞争的(在少数情况下)C可能更有效率。

我猜Python会更频繁地提高效率,但是想要猜测多少就很困难(而且代码行通常也不会成为一个好的指示)。

答案 2 :(得分:1)

  1. 当我做了严肃的c编程时,我读了一本声称库值得写的书。 (特别是在考虑低级语言的C语言中)

  2. 构建库以供重用。

  3. 如果你使用库,你写一行如detectFace( faceDesriptor )renderPDF( document)并不重要另一种语言中的成语是否更简洁。 代码行不是一个适当的指标,如果它是关于什么会更有效。

答案 3 :(得分:1)

这取决于。

尝试在python中编写中断处理程序。有人可能会让它发挥作用,但它会成为一只跳舞的熊,跳舞并不好,但熊可以做到这一点令人惊讶。想写一个OS或做一些embedded programming你将无法使用python。它告诉我们主要的python实现是用C语言编写的。

话虽如此,我对使用python可以做的一些low-level stuff感到惊讶。如果你在测量代码行,那么高级的东西几乎是给定的。 Python只是一种更高级的语言。

它们都是非常有用的工具,仅适用于不同类型的项目。知道两者都非常有用,特别是当你需要在python中接口到一些还没有python绑定的新功能时。

对于大多数开发人员在python上工作的项目类型,编写和调试会更加简洁和快捷。您可以创建一个可重用的C代码库,但是一个优秀的python程序员将使用他们的python代码在更高级别上做同样的事情。

答案 4 :(得分:1)

我认为Python对于小型项目(高达几千行代码)更有效率。

另一方面,C更适合大型项目(尽管IMHO有更好的语言,例如Ada):静态类型检查允许在编译时发现许多错误,这些错误更难以检测在运行时,特别是在大型程序中。

在较大的C项目中,可以通过实现或使用自定义库来补偿Python中缺少列表和其他强大的数据结构。我同意用户堆栈器,通过使用设计良好的库,您的C代码可以非常简洁。

答案 5 :(得分:0)

在很大程度上取决于项目的任务和规模。对于许多有趣的小任务,我不会对100:1较小的Python代码感到惊讶,因为标准库非常好。如果您找到,购买或构建符合您需要的C / C ++库,我想在大型项目中,该比例将更像是3:1。

但是,查找,购买和构建C / C ++库需要花费时间和精力,所以我相信在绝大多数情况下,Python的开发速度会快得多。