使用Python构建的应用程序有哪些?
我想知道
Python适合用来做什么样的应用?
我刚接触Python,但我知道它是一种脚本语言,跟Perl类似。不过我不太确定用Python可以做哪些应用。如果有人能提供一些有用的信息,我会非常感激。
9 个回答
你说:
我刚接触Python,但我知道它是一种脚本语言。
我觉得“脚本语言”和“编程语言”之间的区别其实有点随意。近10到20年里几乎每种语言都有某种运行时支持,通常是通过字节码解释器或虚拟机来实现的。Python也不例外:它会被编译成字节码,然后由Python的运行时来执行。我的意思是,Java、C#、Ruby等语言里有的功能,Python几乎都能做到。
不过,不同的语言各有优缺点。所以确实有些类型的程序用Python写会更合适。这完全取决于你希望编程语言为你做什么,以及你想自己做什么。正确的选择取决于你想解决什么样的问题。
总结一下:
- 网页应用(比如Django和Pylons)
- 游戏(例如Eve Online - 一款大型多人在线角色扮演游戏)
- 软件开发(使用Trac来管理项目)
- 对象数据库(像ZODB和Durus)
- 网络编程(比如Bittorent)
- 手机应用
还有更多...
很难想象有哪些通用的应用场景是不适合用Python的,但确实有一些情况,像其他高级语言一样,可能会觉得用Python不太合适,甚至可能是个劣选。
在“硬实时”应用中,动态内存的分配和释放,尤其是垃圾回收,都是被普遍不赞成的;这就排除了几乎所有现代语言(包括Python,还有Java、C#等),因为几乎所有这些语言都依赖于动态内存处理和某种形式的垃圾回收。
如果你是在为一个“嵌入式设备”编程,而这个设备预计会大量生产和销售,那么每一小块ROM都可能增加整体成本,因此你需要一种语言,能够把应用程序压缩到尽可能小的尺寸——任何依赖于丰富的运行时环境或操作系统的语言(包括Python,还有Java、C#等)无疑会让你在ROM上花费更多的钱(想想像老式Forth这样的线程解释语言:它们可以让一个大型应用的代码比简单的机器代码更紧凑!)。
还有其他一些特定领域也有类似的限制(主要是关注内存:尽量使用最少的位数,或者严格限制在预定义的范围内执行——没有动态性,没有分配,没有垃圾回收等等),基本上情况也会类似(例如,有些服务器应用,打算在成千上万的服务器上运行,如果用C++编写的话,每台服务器可以节省很多兆字节的内存,而不是用Java、Python、C#等等)。
当然,大多数现代语言(Python、Java、C#等)选择动态内存分配、垃圾回收等技术是有很好的理由的,尽管在某些应用领域这些技术可能是个负担:基本上,如果你能负担得起这种优雅的内存处理,编写应用程序就会变得简单得多,很多与内存管理相关的问题和bug也会消失——程序员的工作效率会大大提高……当然,前提是你能负担得起垃圾回收等技术。如果一个应用程序只会在几百或几千台服务器上运行,我可能不会为了节省内存而选择用C++手动管理内存;只有在成千上万台服务器的情况下,额外的兆字节才会真正影响成本。
需要注意的是,尽管大家常常误以为“解释型语言”(像Java、C#、Python等有丰富底层运行时或虚拟机的语言)“速度慢”,但实际上对于大多数CPU密集型的应用(比如科学计算),只要考虑到“丰富的支持运行时环境”(例如numpy
),Python是完全合适的。所以,这并不是一个决定性因素——不过在某些领域,内存消耗和垃圾回收确实可能是个问题。