我有很强的C风格语言背景。并参与了几个不同类型的项目。在阅读Programming Collective Intelligence之后,我刚开始认真研究Python。我知道Python可以解决C#可以解决的任何问题,反之亦然。但我很好奇地从那些经常使用它们的人那里知道,当他们选择一个而不是另一个。删除其他因素,如同事经历等。
您何时选择使用Python创建应用程序而不是静态类型,纯粹的OO语言,如C#或Java?
我担心我们会在这个问题上稍微讨论一下话题。 Python是一种面向对象的语言。但是,如下所述,当您的应用程序具有非常繁重的业务域等时,它可能不是首选语言。我知道Python广泛使用对象,甚至函数都是对象,这在某些情况下都不是真的。我之前提到的“OO”语言。
尽管我在问题中选择的单词很糟糕(几乎没有任何语言能很好地融入两三个单词的描述中,如果没有它出现在某种类型的开发人员面前,很难指出语言的差异。),当你更喜欢Python到其他语言时,我仍然非常感兴趣。
答案 0 :(得分:10)
我的座右铭是(并且长期以来)“我可以使用Python,我必须使用C ++”(有一天我会找到机会在现实世界中实际使用Java,C#,& c& C项目,但我还没有,除了Java 1.1中的试点项目,十年前更多... ;-) - 当代码必须在客户端的浏览器中运行时,Javascript(带有dojo),以及SQL时它当然,必须在数据库服务器上运行,但C ++和Python是我开发的“普通”服务器和客户端的日常面包,Google的所有部分都是如此,我已经工作了4年多(还有很多使用Java的部分,我从来没有碰巧在那里工作;-)。嗯,当我正在研究Python核心和相关扩展时,还有纯C;当然; - )。
Python和C ++都不是“严格的OO” - 它们是多范式的,并且在OO 和其他方面具有高技能的程序员手中占据了很大的优势范例,例如功能,通用,声明等。我认为C#已经引入了其中的一些(有时超过C ++,例如通过提供lambdas),甚至Java也不得不屈服于某些(至少是通用的)到一定程度,所以肯定很明显“一个尺寸”适合所有“不 - 多范式编程活得很好! -
C ++(比如C)迫使我小心翼翼地控制所有内存(我们的内部c ++风格指南禁止使用“智能指针”,相当于糟糕的垃圾收集实现! - ),这使我的工作倍增,但有助于确保我不会在任何时候使用超过严格需要的一位内存:因此,当内存紧凑且珍贵时,C ++(或需要时的C)是选择。否则,Python的极高生产力(以及Ruby或Javascript并没有那么不同,如果这是你习惯的那样)使它更受欢迎。
我确信在垃圾收集的语言之间存在一个利基,但大多数是静态的,比如Java(或C#开始堆积越来越多的功能,包括4.0中的动态功能,我听到),或者否则那些语言和同类语言就不会那么普遍 - 我从来没有发现自己居住在那个特殊的利基市场。
答案 1 :(得分:4)
我尽可能经常选择Python。它是我所知道的最有用和最有效的编程环境。
如果我遇到无法直接使用Python或整个项目(例如基于.NET的应用程序服务器)的项目,我的方法通常是尽可能多地使用Python。视情况而定:
从my answer到上一个问题:I know C#. Will I be more productive with Python?
根据我的经验,使我在Python与C#方面更有效率的是:
web.config
文件更少的代码行创建基于WSGI的Python Web框架: - )答案 2 :(得分:3)
我几乎完全使用Python来支持我用其他语言开发软件。我应该强调,这不是Python中某些失败的结果,而是我正在使用的软件域倾向于使用更合适的其他语言/框架,或者只是唯一的选择:
但是,对于所有这些应用程序域,我使用Python定期编写工具,处理数据并通常简化我的开发工作。这里的一些例子可能是描述我倾向于使用Python的最佳方式:
Python是一种赋权和有用的语言,虽然我从未将它用作软件开发的主要语言,但我想。
答案 3 :(得分:2)
现在,即使在C语言中,JavaScript和Python也影响了我的编程方式。我认为了解多种语言的最佳方法是,您可以获得更多使用心理的工具,因为您通常无法选择使用哪种语言。
答案 4 :(得分:1)
Python比Java和C#严格要求OO。
但是,如果您的问题是何时使用Python以及何时使用Java或C#,我发现Python对于基于现有库构建且不涉及太多域建模的小程序非常有用。例如,使用Python Gtk绑定编写的小型桌面实用程序或使用lxml和elementtree编写的网站维护脚本。
当有很多应用程序领域建模要做时,特别是如果领域知之甚少或变化不快,我发现Python的有限工具使得与Java相比更改代码非常艰巨(因为.NET工具与C#不太相关)几年后支持Java。所以对于那样的项目,我将使用Java和IntelliJ。
答案 5 :(得分:0)
C和python都是我选择的语言,但我几乎总是开始在python中做一些正确的事情,然后在需要时潜入C语言。我主要使用编程用于研究/数字代码,其中规范不断变化,C是原型设计的一种糟糕的语言(根据我的经验,这对大多数静态类型的语言都是如此)。如果你有一些在C中工作的东西,你很少会改变它以使它“更好”,因为你没有时间。但有时候,当你需要控制资源(无论是CPU,内存等等)时,C比python更容易。
所以问题确实是“什么时候python不足以完成任务”,而不是相反。
答案 6 :(得分:0)
一般来说,语言取决于工作,谁想要完成的工作以及你正在与谁合作。我只使用java和c / c ++来满足我的编程需求,主要是因为我工作的人使用它。据说我已经使用python进行快速原型设计等等。
答案 7 :(得分:0)
所有。
除了已经用不同语言编写的代码外,很明显。
即使某些东西看起来太大而且python无法处理,我通常也会制作Python原型,主要是因为它非常流畅。通常我会坚持使用Python,只需使用C API或ctypes来解决瓶颈问题(在我以一种干净的方式重写原型之后)。