使用Python构建了哪些应用程序?

时间:2009-09-21 01:24:34

标签: python

我想知道

Python适用于哪种应用程序?

我是Python世界的新手,但我知道它是像Perl这样的脚本语言,但我不确定使用Python构建的那种应用程序,如果有人可以提供一些有用的信息,肯定会感激。

9 个答案:

答案 0 :(得分:32)

很难想象Python不适合的一般应用程序,但有几种类型,就像所有类似于它的高级语言一样,它可能被认为是一种特殊的可能是次等的选择。

在“硬实时”应用程序中,所有动态内存分配和释放以及尤其是垃圾收集,都是可以理解的不赞成的;这排除了几乎所有现代语言(包括Python,还有Java,C#等等),因为它们几乎都依赖于动态内存处理和某种类型的垃圾收集。

如果你正在为一个“嵌入式设备”进行编程,你希望它能够大量生产和销售,那么ROM的每一部分都可能会大大增加总体成本,因此你需要一种专注于将应用程序压缩到最后一点 - 任何依赖于丰富的支持运行时环境或操作系统的语言(包括Python,还有Java,C#等等)无疑会迫使你在更多的ROM上花费额外的时间(考虑使用线程解释语言,比如旧的Forth:它们可以使实际应用程序的代码比直接的机器代码更紧凑!)。

还有许多其他壁龛具有相似的约束(主要集中在MEMORY:专注于使用尽可能少的位和/或严格限制执行在精确预定义的限制内 - 没有动态,没有分配,没有垃圾收集等,等等,基本上情况会再次以类似的方式倾斜(例如,有服务器应用程序,打算在无数的服务器上运行,如果用C ++编码,每个服务器可以节省很多兆字节[特别是如果没有“涉嫌智能” “指针;-)]而不是Java,Python,C#等等。

当然,大多数现代语言(Python,Java,C#等)选择进行动态内存分配,垃圾收集等等都有很好的理由,尽管这些技术是消极方面的应用领域的重要性:如果你可以负担得起这么好的内存处理,那么编写应用程序会变得更加容易,并且如果你缺乏这样的支持,那么需要仔细管理内存的一大堆问题和错误就会消失 - 程序员的工作效率真的会飙升。如果可以提供垃圾收集等,那就是。例如,如果一个应用程序要在几百或几千台服务器上运行,我可能不会用C ++编写带有手动内存管理的代码来节省内存;只有成千上万的服务器,所有这些额外兆字节的经济性才真正开始。

请注意,尽管常见的误解是“解释型语言”(具有丰富的底层运行时或虚拟机,如Java,C#,Python等)“很慢”,实际上对于大多数CPU密集型应用程序(例如科学计算),Python是完全合适的,只要“富支持运行时环境”(例如numpy)被考虑在内。所以,这不是一个真正的因素 - 尽管内存消耗和垃圾收集可以,在一些利基市场。

答案 1 :(得分:21)

回顾:

  • Web应用程序(Django,Pylons)
  • 游戏(Eve Online - MMORPG)
  • 软件开发(项目管理Trac)
  • 对象数据库(ZODB / Durus)
  • 网络编程(Bittorent)
  • 移动应用程序

还有更多......

答案 2 :(得分:10)

你说:

  

我是Python世界的新手,但我知道它是一种脚本语言。

我认为“脚本语言”和“编程语言”之间的区别是非常随意的。在过去10到20年中开发的几乎所有语言都具有某种运行时支持,通常采用字节码解释器或虚拟机的形式。 Python也不例外:它被编译为字节码,字节码由Python运行时执行。关键是,我想说你在Java,C#,Ruby等方面做的事情很少,你在无法用做的事情。

然而,不过,不同的语言有不同的优势。因此,肯定有一些类型的程序更适合用Python编写。这实际上取决于您希望编程语言为您做什么,以及您想要自己做什么。正确的答案取决于您有兴趣解决的问题类型。

答案 3 :(得分:5)

我知道它有点晚了,但如果有帮助的话。

Civilization IV
OpenStack
Bazaar
Mercurial
Blender 3D
TwistedMatrix 
Trac
Allura (source project for SourceForge.net)
BitTorrent(<5.3)
Gwibber
Ubuntu Software Center
YUM
OpenERP
journyx

请注意,我已经避免了整个网络框架的工作,IDE(Eric Python IDE,Ninja-ide,PIDA -ide,Wing IDE,Stani的Python编辑器和工具(Pygame,PyGTK,wxPython,mod python, IPython)和webservices(youtube.com,reddit.com,quora.com,dropbox.com)

答案 4 :(得分:1)

嗯,简单的回答是,既然你提到了Perl,你可以用Perl构建的任何东西都可以用Python构建。您可以使用任何语言构建任何内容,如果语言具有简单的C绑定,您甚至可以有效地执行此操作。

现在,在这种情况下,这个问题变得有点哲学了。 Python有一个关键的原则“只应该有一种方法来实现它”。 Perl恰恰相反。 Perl的关键原则是“有多种方式去做”(TIMTOWTDI)或(Tim Toady,对他的朋友来说;))如何喜欢做事?一条清晰而闪亮的道路,大多数人都同意了吗?或者你可能重视Perl中任何任务所拥有的几乎无限数量的解决方案路径?

因此,假设您的任务是I / O绑定(像大多数事情)而不是CPU绑定(实时编程或游戏,或乳头皱纹数字运算),那么Python将是合适的。它的理念是否适合是关键问题。

答案 5 :(得分:1)

如今,大多数3D软件包,如Maya,SoftImage,Houdini,RealFlow,Blender等都使用Python作为嵌入式脚本和插件语言。

答案 6 :(得分:0)

它是计算机编程语言,因此理论上任何计算机程序都可以用它构建。见here for an example

答案 7 :(得分:0)

Bittorrent是基于Python构建的。

答案 8 :(得分:0)

http://en.wikipedia.org/wiki/List_of_Python_software 按照链接,你会看到很多东西。其实我也愿意学习Python,这就是为什么我一直在寻找像你这样的答案,我得到了这个链接。祝你好运。