Python与C:代码行数比较与开发时间
你好,我现在正在学习Python,因为它的语法很简洁,而且它的用法和我的思维方式很契合。
不过,我也对操作系统内部原理和软件逆向工程感兴趣,这最终意味着我需要深入了解C语言。
当我最初选择编程语言时,我做了很多阅读和比较,发现很多人提到,要在Python中写出简短的代码,可能需要用C语言写几百行代码(我猜是关于内存管理、字典、列表等的代码),这些在Python中都是内置的,我们用起来很方便。
1) 对于一个普通的C程序员来说,写出一个Python的用法需要100到200行C代码,这个说法准确吗?
因为C语言没有像Python那样内置的字典和列表(以及它们的各种好用的方法):
2) C程序员通常会从头开始构建这些结构,然后在不同项目之间重复使用它们,以大大减少实际需要手动编写的代码量吗?
我想,像boost这样的库的重复使用,也能减少一些重复的手动编码……
3) 但是,使用流行的库和重复使用之前在C中写的常用代码,比如基本结构等,这样做会在多大程度上减少C语言中写的代码行数,与Python中相同规模的代码相比?
我知道具体的数字很难说,但通过使用库、代码重用等,是否有可能在C语言的开发时间接近Python,而不需要像Linus Torvalds那样的编码机器呢?
谢谢!
6 个回答
这要看情况。
试着用Python写一个中断处理程序。可能有人能做到,但这就像一只跳舞的熊,虽然跳得不好,但你会惊讶于熊居然会跳舞。如果你想写一个操作系统或者做一些嵌入式编程,你就不能用Python。值得注意的是,Python的主要实现是用C语言写的。
不过,我对用Python能做的一些底层操作
感到惊讶。高层的东西几乎是理所当然的,特别是如果你在计算代码行数的话。Python就是一种更高级的语言。这两种工具都很有用,只是适合不同类型的项目。了解这两者会非常有帮助,尤其是在你需要与一些尚未有Python绑定的新功能进行接口时。
对于大多数开发者所做的项目,Python会更简洁,写起来和调试起来都更快。你可能能做一个可重用的C代码库,但一个优秀的Python程序员会用他们的Python代码做同样的事情,而且是在更高的层次上。
但是通过使用库、代码重用等,是否有可能让C语言的开发时间接近Python呢?
不可能。
你忽略了一个最重要的点。
Python是交互式的。它不是那种先编辑、再编译、链接、执行、出错、再调试的过程。它只需要编辑和调试。
Boost是C++的,不是C(强调一下,绝对不是C——几乎所有的内容都大量使用了模板等C语言没有的东西)。
是的,C程序员通常会自己积累一些代码库,用来处理各种“东西”——比如数据结构、算法、用户界面等等。还有很多其他的库,可以用来做从基本的字符串处理到数据库连接、用户界面、基本算法和数据结构等各种事情。
不过,比较这两者的工作效率可能会有点困难——即使在某种情况下,C程序员也许能用一行代码完成某个任务,但他们可能需要花更多时间去寻找和学习如何使用那个特定的库。另一方面,如果他们之前用过这个库,那么两者的效率可能会直接竞争(在某些情况下,C可能会更高效)。
我猜Python的工作效率更高的情况会更多,但具体有多少就很难说了(而且代码行数通常也不会是一个好的衡量标准)。