您好我正在学习Python,因为语法非常简洁,习语与我的心理模型很匹配。
然而,我也有兴趣了解操作系统内部和逆向工程软件,这最终意味着以相当全面的身份了解C语言。
当我最初选择一种语言时,我进行了大量的阅读和比较,而且似乎抛出的很多数字是在Python中编写简短的惯用语句需要相当于几百行的C(我是猜猜内存管理的代码,编写字典,列表等代码,我们认为这些代码是Python语言中内置的。
1)对于一个普通的C程序员来说,每个Python习惯用法的代码是100到200行吗?
因为C不是内置的类似Python的结构,如字典/列表(包括所有好的方法等):
2)C程序员是否倾向于从头开始构建这些构造,然后在项目之间重新使用它们,以大大减少其项目的手工编码的实际数量?
我假设再次使用像boost :: stuff这样的库,也减少了一些样板手动编码......
3)但是,使用流行的库并重新使用之前在C语言中为基本构造/等编写的公共代码,修改用C编写的代码行与使用大小的Python中的代码进行修改的程度是多少代码库?
我知道具体的数字是不可能的,但是如果没有Linus Torvalds风格的编码机,可以使用库,代码重用等来使C的开发时间接近Python的开发时间吗?
谢谢!
答案 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)
当我做了严肃的c编程时,我读了一本声称库值得写的书。 (特别是在考虑低级语言的C语言中)
构建库以供重用。
如果你使用库,你写一行如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的开发速度会快得多。